{
  "contractName": "VendingMachine",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_systemAddress",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract TBTCToken",
          "name": "_tbtcToken",
          "type": "address"
        },
        {
          "internalType": "contract TBTCDepositToken",
          "name": "_tbtcDepositToken",
          "type": "address"
        },
        {
          "internalType": "contract FeeRebateToken",
          "name": "_feeRebateToken",
          "type": "address"
        }
      ],
      "name": "setExternalAddresses",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_tdtId",
          "type": "uint256"
        }
      ],
      "name": "tbtcToTdt",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_tdtId",
          "type": "uint256"
        }
      ],
      "name": "tdtToTbtc",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "canMint",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address payable",
          "name": "_depositAddress",
          "type": "address"
        }
      ],
      "name": "isQualified",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getMintedSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getMaxSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address payable",
          "name": "_depositAddress",
          "type": "address"
        },
        {
          "internalType": "bytes4",
          "name": "_txVersion",
          "type": "bytes4"
        },
        {
          "internalType": "bytes",
          "name": "_txInputVector",
          "type": "bytes"
        },
        {
          "internalType": "bytes",
          "name": "_txOutputVector",
          "type": "bytes"
        },
        {
          "internalType": "bytes4",
          "name": "_txLocktime",
          "type": "bytes4"
        },
        {
          "internalType": "uint8",
          "name": "_fundingOutputIndex",
          "type": "uint8"
        },
        {
          "internalType": "bytes",
          "name": "_merkleProof",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "_txIndexInBlock",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_bitcoinHeaders",
          "type": "bytes"
        }
      ],
      "name": "unqualifiedDepositToTbtc",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address payable",
          "name": "_depositAddress",
          "type": "address"
        },
        {
          "internalType": "bytes8",
          "name": "_outputValueBytes",
          "type": "bytes8"
        },
        {
          "internalType": "bytes",
          "name": "_redeemerOutputScript",
          "type": "bytes"
        }
      ],
      "name": "tbtcToBtc",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_systemAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"canMint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMaxSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMintedSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_depositAddress\",\"type\":\"address\"}],\"name\":\"isQualified\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract TBTCToken\",\"name\":\"_tbtcToken\",\"type\":\"address\"},{\"internalType\":\"contract TBTCDepositToken\",\"name\":\"_tbtcDepositToken\",\"type\":\"address\"},{\"internalType\":\"contract FeeRebateToken\",\"name\":\"_feeRebateToken\",\"type\":\"address\"}],\"name\":\"setExternalAddresses\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_depositAddress\",\"type\":\"address\"},{\"internalType\":\"bytes8\",\"name\":\"_outputValueBytes\",\"type\":\"bytes8\"},{\"internalType\":\"bytes\",\"name\":\"_redeemerOutputScript\",\"type\":\"bytes\"}],\"name\":\"tbtcToBtc\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tdtId\",\"type\":\"uint256\"}],\"name\":\"tbtcToTdt\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tdtId\",\"type\":\"uint256\"}],\"name\":\"tdtToTbtc\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_depositAddress\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"_txVersion\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"_txInputVector\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_txOutputVector\",\"type\":\"bytes\"},{\"internalType\":\"bytes4\",\"name\":\"_txLocktime\",\"type\":\"bytes4\"},{\"internalType\":\"uint8\",\"name\":\"_fundingOutputIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_merkleProof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_txIndexInBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_bitcoinHeaders\",\"type\":\"bytes\"}],\"name\":\"unqualifiedDepositToTbtc\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The Vending Machine should have exclusive TBTC and FRT (`FeeRebateToken`) minting         privileges.\",\"methods\":{\"canMint(uint256)\":{\"details\":\"This function is also used by TBTCSystem to decide whether to allow a new deposit.\",\"return\":\"True if the amount can be minted without hitting the max supply, false otherwise.\"},\"getMaxSupply()\":{\"return\":\"The max supply in weitoshis (BTC * 10 ** 18).\"},\"isQualified(address)\":{\"params\":{\"_depositAddress\":\"The address of the deposit\"}},\"setExternalAddresses(address,address,address)\":{\"details\":\"Addresses are used to update the local contract instance.\",\"params\":{\"_feeRebateToken\":\"FeeRebateToken (FRT) contract. More info in `FeeRebateToken`.\",\"_tbtcDepositToken\":\"TBTCDepositToken (TDT) contract. More info in `TBTCDepositToken`.\",\"_tbtcToken\":\"TBTCToken contract. More info in `TBTCToken`.\"}},\"tbtcToBtc(address,bytes8,bytes)\":{\"details\":\"Vending Machine transfers TBTC allowance to Deposit.\",\"params\":{\"_depositAddress\":\"The address of the Deposit to redeem.\",\"_outputValueBytes\":\"The 8-byte Bitcoin transaction output size in Little Endian.\",\"_redeemerOutputScript\":\"The redeemer's length-prefixed output script.\"}},\"tbtcToTdt(uint256)\":{\"details\":\"We burn the lotSize of the Deposit in order to maintain         the TBTC supply peg in the Vending Machine. VendingMachine must be approved         by the caller to burn the required amount.\",\"params\":{\"_tdtId\":\"ID of tBTC Deposit Token to buy.\"}},\"tdtToTbtc(uint256)\":{\"details\":\"Transfers TDT from caller to vending machine, and mints TBTC to caller.         Vending Machine must be approved to transfer TDT by the caller.\",\"params\":{\"_tdtId\":\"ID of tBTC Deposit Token to sell.\"}},\"unqualifiedDepositToTbtc(address,bytes4,bytes,bytes,bytes4,uint8,bytes,uint256,bytes)\":{\"details\":\"User must allow VendingManchine to transfer TDT.\"}},\"title\":\"Vending Machine\"},\"userdoc\":{\"methods\":{\"canMint(uint256)\":{\"notice\":\"Return whether an amount of TBTC can be minted according to the supply cap         schedule\"},\"getMaxSupply()\":{\"notice\":\"Get the maximum TBTC token supply based on the age of the         contract deployment. The supply cap starts at 2 BTC for the two         days, 100 for the first week, 250 for the next, then 500, 750,         1000, 1500, 2000, 2500, and 3000... finally removing the minting         restriction after 9 weeks and returning 21M BTC as a sanity         check.\"},\"getMintedSupply()\":{\"notice\":\"Return the minted TBTC supply in weitoshis (BTC * 10 ** 18).\"},\"isQualified(address)\":{\"notice\":\"Determines whether a deposit is qualified for minting TBTC.\"},\"setExternalAddresses(address,address,address)\":{\"notice\":\"Set external contracts needed by the Vending Machine.\"},\"tbtcToBtc(address,bytes8,bytes)\":{\"notice\":\"Redeems a Deposit by purchasing a TDT with TBTC for _finalRecipient,         and using the TDT to redeem corresponding Deposit as _finalRecipient.         This function will revert if the Deposit is not in ACTIVE state.\"},\"tbtcToTdt(uint256)\":{\"notice\":\"Burns TBTC and transfers the tBTC Deposit Token to the caller         as long as it is qualified.\"},\"tdtToTbtc(uint256)\":{\"notice\":\"Transfer the tBTC Deposit Token and mint TBTC.\"},\"unqualifiedDepositToTbtc(address,bytes4,bytes,bytes,bytes4,uint8,bytes,uint256,bytes)\":{\"notice\":\"Qualifies a deposit and mints TBTC.\"}},\"notice\":\"The Vending Machine swaps TDTs (`TBTCDepositToken`)         to TBTC (`TBTCToken`) and vice versa.\"}},\"settings\":{\"compilationTarget\":{\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/VendingMachine.sol\":\"VendingMachine\"},\"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/Deposit.sol\":{\"keccak256\":\"0x4e25c6bfe874c5254659e99b5d87ad0bd6299468106c8f955e973a0431367dec\",\"urls\":[\"bzz-raw://c54c7e956fee91813946745f23d11062a9dd2c07d916979871f7468509295de4\",\"dweb:/ipfs/QmQ1qFjzq9uY7SmdUqzwNM7z8AAnCbji2joqkJYJSBaJyW\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositFunding.sol\":{\"keccak256\":\"0xe223f4e039e347d3eec8eea8d30d6f87f25ab3f8839e96b5da608c6a012db2c2\",\"urls\":[\"bzz-raw://48435948a4b232a3c610f7ac51e5c87a27aa10f92775bc95cd2068dd07b69a70\",\"dweb:/ipfs/Qmd7PeN1uovU8BqyrPuLkKf4U1DENt9S7hFr6G5cXFamim\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositLiquidation.sol\":{\"keccak256\":\"0x6ec98705ac0cfc20f2e94069ba88c74816c40283c47b3086cf619b69d8a15379\",\"urls\":[\"bzz-raw://981e7e1ababfe4bb7bb35251679f59d188348c416af29822794011a0e48f2cd3\",\"dweb:/ipfs/QmTpPQCYP3qzKdcMBLBZGRSM2X6rgR1CZmYDQ7SHP4pjrb\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositRedemption.sol\":{\"keccak256\":\"0xe40c0cbb443715c4f587b78f568348276fabae9a2f77645596367a1f65b1fae5\",\"urls\":[\"bzz-raw://310d07df39ad769b5ffca044a1a589686268d72ac36d568360da3a4a9ab16f93\",\"dweb:/ipfs/QmT9stQ2AVkF7i9nvDSTswhD6EkfNHVCtTmRENsVqYxwso\"]},\"/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/TBTCSystemAuthority.sol\":{\"keccak256\":\"0xc072c71402f122e3ae148000b95559169cb39b8752977817f4f88b372e7d77dd\",\"urls\":[\"bzz-raw://9c91b71602bf36f66d6ab24156777a2ef18c027f09055232011f9012387e6c70\",\"dweb:/ipfs/QmYAEZ8ithnhVcdCt76mqeJg6P8ZY3VejsV7pQNvMMFqc2\"]},\"/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/VendingMachine.sol\":{\"keccak256\":\"0x26caaccd71277d1807d40553f4e7291307d4db9c292bc28a9d8cbee94b5c3e40\",\"urls\":[\"bzz-raw://b7ec73a87fe902bfc5d0fcda5fcc16d2dc025e685fc7b7876ec1a1da65cf0ede\",\"dweb:/ipfs/QmcBkU6Ze8T3ewqZZmUiniTKZkVaQTaNFejXXRgvfiTrPE\"]},\"/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/CheckBitcoinSigs.sol\":{\"keccak256\":\"0x2fcbfa2440f69e346d5e14d960b14498f6484f83713fe7cec1ecf4abea3835a1\",\"urls\":[\"bzz-raw://4a385ef55a53dd0dcd1b687a47dbf6785580883a0be0cb10c617c338a35f3a8b\",\"dweb:/ipfs/QmZp9AT146beL3SoETJCWsJ4zzAZQavy9oGCYPiwAofEtq\"]},\"@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": "0x608060405234801561001057600080fd5b506040516119c83803806119c88339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b03199092169190911790554260045561195f806100696000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063ac37d7ce11610066578063ac37d7ce14610143578063ba2238d014610160578063be138da71461017d578063efa4b19914610240578063f2113b5a146104b457610093565b806335205794146100985780634c0f38c2146100d25780635dd871a3146100ec578063a421d6681461011d575b600080fd5b6100d0600480360360608110156100ae57600080fd5b506001600160a01b0381358116916020810135821691604090910135166104bc565b005b6100da610544565b60408051918252519081900360200190f35b6101096004803603602081101561010257600080fd5b5035610680565b604080519115158252519081900360200190f35b6101096004803603602081101561013357600080fd5b50356001600160a01b03166106a9565b6100d06004803603602081101561015957600080fd5b5035610716565b6100d06004803603602081101561017657600080fd5b5035610afd565b6100d06004803603606081101561019357600080fd5b6001600160a01b03823516916001600160c01b031960208201351691810190606081016040820135600160201b8111156101cc57600080fd5b8201836020820111156101de57600080fd5b803590602001918460018302840111600160201b831117156101ff57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506110b1945050505050565b6100d0600480360361012081101561025757600080fd5b6001600160a01b03823516916001600160e01b031960208201351691810190606081016040820135600160201b81111561029057600080fd5b8201836020820111156102a257600080fd5b803590602001918460018302840111600160201b831117156102c357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561031557600080fd5b82018360208201111561032757600080fd5b803590602001918460018302840111600160201b8311171561034857600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160e01b03198535169560ff60208701351695919450925060608101915060400135600160201b8111156103b357600080fd5b8201836020820111156103c557600080fd5b803590602001918460018302840111600160201b831117156103e657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050600160201b81111561044057600080fd5b82018360208201111561045257600080fd5b803590602001918460018302840111600160201b8311171561047357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611526945050505050565b6100da61178c565b6000546001600160a01b031633146105055760405162461bcd60e51b81526004018080602001828103825260228152602001806118c16022913960400191505060405180910390fd5b600180546001600160a01b039485166001600160a01b031991821617909155600280549385169382169390931790925560038054919093169116179055565b60045460009042036202a30081101561056857671bc16d674ec8000091505061067d565b62093a808110156105855768056bc75e2d6310000091505061067d565b621275008110156105a257680d8d726b7177a8000091505061067d565b621baf808110156105bf57681b1ae4d6e2ef50000091505061067d565b6224ea008110156105dc576828a857425466f8000091505061067d565b622e24808110156105f957683635c9adc5dea0000091505061067d565b62375f0081101561061657685150ae84a8cdf0000091505061067d565b6240998081101561063357686c6b935b8bbd40000091505061067d565b6249d4008110156106505768878678326eac90000091505061067d565b62530e8081101561066d5768a2a15d09519be0000091505061067d565b6a115eec47f6cf7e350000009150505b90565b600061068a610544565b6106a28361069661178c565b9063ffffffff61180216565b1092915050565b6000816001600160a01b031663f97a02fa6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106e457600080fd5b505afa1580156106f8573d6000803e3d6000fd5b505050506040513d602081101561070e57600080fd5b505192915050565b60025460408051634f558e7960e01b81526004810184905290516001600160a01b0390921691634f558e7991602480820192602092909190829003018186803b15801561076257600080fd5b505afa158015610776573d6000803e3d6000fd5b505050506040513d602081101561078c57600080fd5b50516107c95760405162461bcd60e51b815260040180806020018281038252602181526020018061190a6021913960400191505060405180910390fd5b6107d2816106a9565b61081f576040805162461bcd60e51b815260206004820152601960248201527811195c1bdcda5d081b5d5cdd081899481c5d585b1a599a5959603a1b604482015290519081900360640190fd5b6000816001600160a01b031663946fbf4c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561085a57600080fd5b505afa15801561086e573d6000803e3d6000fd5b505050506040513d602081101561088457600080fd5b5051600154604080516370a0823160e01b8152336004820152905192935083926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156108d657600080fd5b505afa1580156108ea573d6000803e3d6000fd5b505050506040513d602081101561090057600080fd5b50511015610955576040805162461bcd60e51b815260206004820181905260248201527f4e6f7420656e6f756768205442544320666f72205444542065786368616e6765604482015290519081900360640190fd5b6001546040805163079cc67960e41b81523360048201526024810184905290516001600160a01b03909216916379cc67909160448082019260009290919082900301818387803b1580156109a857600080fd5b505af11580156109bc573d6000803e3d6000fd5b5050600254604080516331a9108f60e11b81526004810187905290513094506001600160a01b039092169250636352211e916024808301926020929190829003018186803b158015610a0d57600080fd5b505afa158015610a21573d6000803e3d6000fd5b505050506040513d6020811015610a3757600080fd5b50516001600160a01b031614610a88576040805162461bcd60e51b815260206004820152601160248201527011195c1bdcda5d081a5cc81b1bd8dad959607a1b604482015290519081900360640190fd5b600254604080516323b872dd60e01b81523060048201523360248201526044810185905290516001600160a01b03909216916323b872dd9160648082019260009290919082900301818387803b158015610ae157600080fd5b505af1158015610af5573d6000803e3d6000fd5b505050505050565b60025460408051634f558e7960e01b81526004810184905290516001600160a01b0390921691634f558e7991602480820192602092909190829003018186803b158015610b4957600080fd5b505afa158015610b5d573d6000803e3d6000fd5b505050506040513d6020811015610b7357600080fd5b5051610bb05760405162461bcd60e51b815260040180806020018281038252602181526020018061190a6021913960400191505060405180910390fd5b610bb9816106a9565b610c06576040805162461bcd60e51b815260206004820152601960248201527811195c1bdcda5d081b5d5cdd081899481c5d585b1a599a5959603a1b604482015290519081900360640190fd5b600254604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd9160648082019260009290919082900301818387803b158015610c5f57600080fd5b505af1158015610c73573d6000803e3d6000fd5b5050505060008190506000816001600160a01b031663058d37036040518163ffffffff1660e01b815260040160206040518083038186803b158015610cb757600080fd5b505afa158015610ccb573d6000803e3d6000fd5b505050506040513d6020811015610ce157600080fd5b50516040805163251befd360e21b815290519192506000916001600160a01b0385169163946fbf4c916004808301926020929190829003018186803b158015610d2957600080fd5b505afa158015610d3d573d6000803e3d6000fd5b505050506040513d6020811015610d5357600080fd5b50519050610d6081610680565b610d9b5760405162461bcd60e51b81526004018080602001828103825260278152602001806118e36027913960400191505060405180910390fd5b600154604080516370a0823160e01b81526001600160a01b0387811660048301529151859392909216916370a0823191602480820192602092909190829003018186803b158015610deb57600080fd5b505afa158015610dff573d6000803e3d6000fd5b505050506040513d6020811015610e1557600080fd5b50511015610f42576001546001600160a01b03166340c10f1933610e3f848663ffffffff61186316565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610e8e57600080fd5b505af1158015610ea2573d6000803e3d6000fd5b505050506040513d6020811015610eb857600080fd5b5050600154604080516340c10f1960e01b81526001600160a01b03878116600483015260248201869052915191909216916340c10f199160448083019260209291908290030181600087803b158015610f1057600080fd5b505af1158015610f24573d6000803e3d6000fd5b505050506040513d6020811015610f3a57600080fd5b50610fc39050565b600154604080516340c10f1960e01b81523360048201526024810184905290516001600160a01b03909216916340c10f19916044808201926020929091908290030181600087803b158015610f9657600080fd5b505af1158015610faa573d6000803e3d6000fd5b505050506040513d6020811015610fc057600080fd5b50505b60035460408051634f558e7960e01b81526004810187905290516001600160a01b0390921691634f558e7991602480820192602092909190829003018186803b15801561100f57600080fd5b505afa158015611023573d6000803e3d6000fd5b505050506040513d602081101561103957600080fd5b50516110ab57600354604080516340c10f1960e01b81523360048201526024810187905290516001600160a01b03909216916340c10f199160448082019260009290919082900301818387803b15801561109257600080fd5b505af11580156110a6573d6000803e3d6000fd5b505050505b50505050565b60025460408051634f558e7960e01b81526001600160a01b03868116600483015291519190921691634f558e79916024808301926020929190829003018186803b1580156110fe57600080fd5b505afa158015611112573d6000803e3d6000fd5b505050506040513d602081101561112857600080fd5b50516111655760405162461bcd60e51b815260040180806020018281038252602181526020018061190a6021913960400191505060405180910390fd5b6001546040805163251befd360e21b8152905185926001600160a01b03908116926379cc679092339286169163946fbf4c916004808301926020929190829003018186803b1580156111b657600080fd5b505afa1580156111ca573d6000803e3d6000fd5b505050506040513d60208110156111e057600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b15801561123057600080fd5b505af1158015611244573d6000803e3d6000fd5b50506002546040805163095ea7b360e01b81526001600160a01b03898116600483018190526024830152915191909216935063095ea7b39250604480830192600092919082900301818387803b15801561129d57600080fd5b505af11580156112b1573d6000803e3d6000fd5b505060408051630d8d023360e41b81523360048201529051600093506001600160a01b038516925063d8d0233091602480820192602092909190829003018186803b1580156112ff57600080fd5b505afa158015611313573d6000803e3d6000fd5b505050506040513d602081101561132957600080fd5b50519050801561143c57600154604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b15801561138d57600080fd5b505af11580156113a1573d6000803e3d6000fd5b505050506040513d60208110156113b757600080fd5b50506001546040805163095ea7b360e01b81526001600160a01b038881166004830152602482018590529151919092169163095ea7b39160448083019260209291908290030181600087803b15801561140f57600080fd5b505af1158015611423573d6000803e3d6000fd5b505050506040513d602081101561143957600080fd5b50505b604051637dbe2c9560e11b81526001600160c01b031985166004820190815233604483018190526060602484019081528651606485015286516001600160a01b0387169463fb7c592a948a948a94909391929091608490910190602086019080838360005b838110156114b95781810151838201526020016114a1565b50505050905090810190601f1680156114e65780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561150757600080fd5b505af115801561151b573d6000803e3d6000fd5b505050505050505050565b6000899050806001600160a01b031663d9f74b0e8a8a8a8a8a8a8a8a6040518963ffffffff1660e01b815260040180896001600160e01b0319166001600160e01b03191681526020018060200180602001886001600160e01b0319166001600160e01b03191681526020018760ff1660ff168152602001806020018681526020018060200185810385528c818151815260200191508051906020019080838360005b838110156115e05781810151838201526020016115c8565b50505050905090810190601f16801561160d5780820380516001836020036101000a031916815260200191505b5085810384528b5181528b516020918201918d019080838360005b83811015611640578181015183820152602001611628565b50505050905090810190601f16801561166d5780820380516001836020036101000a031916815260200191505b5085810383528851815288516020918201918a019080838360005b838110156116a0578181015183820152602001611688565b50505050905090810190601f1680156116cd5780820380516001836020036101000a031916815260200191505b50858103825286518152865160209182019188019080838360005b838110156117005781810151838201526020016116e8565b50505050905090810190601f16801561172d5780820380516001836020036101000a031916815260200191505b509c50505050505050505050505050600060405180830381600087803b15801561175657600080fd5b505af115801561176a573d6000803e3d6000fd5b505050506117808a6001600160a01b0316610afd565b50505050505050505050565b600154604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b1580156117d157600080fd5b505afa1580156117e5573d6000803e3d6000fd5b505050506040513d60208110156117fb57600080fd5b5051905090565b60008282018381101561185c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000828211156118ba576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe43616c6c6572206d757374206265207462746353797374656d20636f6e747261637443616e2774206d696e74206d6f7265207468616e20746865206d617820737570706c792063617074425443204465706f73697420546f6b656e20646f6573206e6f74206578697374a265627a7a723158204f9ad6edb6df9d5bfc60da7ec83d831ddb880729c34ce5e01e7be06aa60951d464736f6c63430005110032",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100935760003560e01c8063ac37d7ce11610066578063ac37d7ce14610143578063ba2238d014610160578063be138da71461017d578063efa4b19914610240578063f2113b5a146104b457610093565b806335205794146100985780634c0f38c2146100d25780635dd871a3146100ec578063a421d6681461011d575b600080fd5b6100d0600480360360608110156100ae57600080fd5b506001600160a01b0381358116916020810135821691604090910135166104bc565b005b6100da610544565b60408051918252519081900360200190f35b6101096004803603602081101561010257600080fd5b5035610680565b604080519115158252519081900360200190f35b6101096004803603602081101561013357600080fd5b50356001600160a01b03166106a9565b6100d06004803603602081101561015957600080fd5b5035610716565b6100d06004803603602081101561017657600080fd5b5035610afd565b6100d06004803603606081101561019357600080fd5b6001600160a01b03823516916001600160c01b031960208201351691810190606081016040820135600160201b8111156101cc57600080fd5b8201836020820111156101de57600080fd5b803590602001918460018302840111600160201b831117156101ff57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506110b1945050505050565b6100d0600480360361012081101561025757600080fd5b6001600160a01b03823516916001600160e01b031960208201351691810190606081016040820135600160201b81111561029057600080fd5b8201836020820111156102a257600080fd5b803590602001918460018302840111600160201b831117156102c357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561031557600080fd5b82018360208201111561032757600080fd5b803590602001918460018302840111600160201b8311171561034857600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160e01b03198535169560ff60208701351695919450925060608101915060400135600160201b8111156103b357600080fd5b8201836020820111156103c557600080fd5b803590602001918460018302840111600160201b831117156103e657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050600160201b81111561044057600080fd5b82018360208201111561045257600080fd5b803590602001918460018302840111600160201b8311171561047357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611526945050505050565b6100da61178c565b6000546001600160a01b031633146105055760405162461bcd60e51b81526004018080602001828103825260228152602001806118c16022913960400191505060405180910390fd5b600180546001600160a01b039485166001600160a01b031991821617909155600280549385169382169390931790925560038054919093169116179055565b60045460009042036202a30081101561056857671bc16d674ec8000091505061067d565b62093a808110156105855768056bc75e2d6310000091505061067d565b621275008110156105a257680d8d726b7177a8000091505061067d565b621baf808110156105bf57681b1ae4d6e2ef50000091505061067d565b6224ea008110156105dc576828a857425466f8000091505061067d565b622e24808110156105f957683635c9adc5dea0000091505061067d565b62375f0081101561061657685150ae84a8cdf0000091505061067d565b6240998081101561063357686c6b935b8bbd40000091505061067d565b6249d4008110156106505768878678326eac90000091505061067d565b62530e8081101561066d5768a2a15d09519be0000091505061067d565b6a115eec47f6cf7e350000009150505b90565b600061068a610544565b6106a28361069661178c565b9063ffffffff61180216565b1092915050565b6000816001600160a01b031663f97a02fa6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106e457600080fd5b505afa1580156106f8573d6000803e3d6000fd5b505050506040513d602081101561070e57600080fd5b505192915050565b60025460408051634f558e7960e01b81526004810184905290516001600160a01b0390921691634f558e7991602480820192602092909190829003018186803b15801561076257600080fd5b505afa158015610776573d6000803e3d6000fd5b505050506040513d602081101561078c57600080fd5b50516107c95760405162461bcd60e51b815260040180806020018281038252602181526020018061190a6021913960400191505060405180910390fd5b6107d2816106a9565b61081f576040805162461bcd60e51b815260206004820152601960248201527811195c1bdcda5d081b5d5cdd081899481c5d585b1a599a5959603a1b604482015290519081900360640190fd5b6000816001600160a01b031663946fbf4c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561085a57600080fd5b505afa15801561086e573d6000803e3d6000fd5b505050506040513d602081101561088457600080fd5b5051600154604080516370a0823160e01b8152336004820152905192935083926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156108d657600080fd5b505afa1580156108ea573d6000803e3d6000fd5b505050506040513d602081101561090057600080fd5b50511015610955576040805162461bcd60e51b815260206004820181905260248201527f4e6f7420656e6f756768205442544320666f72205444542065786368616e6765604482015290519081900360640190fd5b6001546040805163079cc67960e41b81523360048201526024810184905290516001600160a01b03909216916379cc67909160448082019260009290919082900301818387803b1580156109a857600080fd5b505af11580156109bc573d6000803e3d6000fd5b5050600254604080516331a9108f60e11b81526004810187905290513094506001600160a01b039092169250636352211e916024808301926020929190829003018186803b158015610a0d57600080fd5b505afa158015610a21573d6000803e3d6000fd5b505050506040513d6020811015610a3757600080fd5b50516001600160a01b031614610a88576040805162461bcd60e51b815260206004820152601160248201527011195c1bdcda5d081a5cc81b1bd8dad959607a1b604482015290519081900360640190fd5b600254604080516323b872dd60e01b81523060048201523360248201526044810185905290516001600160a01b03909216916323b872dd9160648082019260009290919082900301818387803b158015610ae157600080fd5b505af1158015610af5573d6000803e3d6000fd5b505050505050565b60025460408051634f558e7960e01b81526004810184905290516001600160a01b0390921691634f558e7991602480820192602092909190829003018186803b158015610b4957600080fd5b505afa158015610b5d573d6000803e3d6000fd5b505050506040513d6020811015610b7357600080fd5b5051610bb05760405162461bcd60e51b815260040180806020018281038252602181526020018061190a6021913960400191505060405180910390fd5b610bb9816106a9565b610c06576040805162461bcd60e51b815260206004820152601960248201527811195c1bdcda5d081b5d5cdd081899481c5d585b1a599a5959603a1b604482015290519081900360640190fd5b600254604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd9160648082019260009290919082900301818387803b158015610c5f57600080fd5b505af1158015610c73573d6000803e3d6000fd5b5050505060008190506000816001600160a01b031663058d37036040518163ffffffff1660e01b815260040160206040518083038186803b158015610cb757600080fd5b505afa158015610ccb573d6000803e3d6000fd5b505050506040513d6020811015610ce157600080fd5b50516040805163251befd360e21b815290519192506000916001600160a01b0385169163946fbf4c916004808301926020929190829003018186803b158015610d2957600080fd5b505afa158015610d3d573d6000803e3d6000fd5b505050506040513d6020811015610d5357600080fd5b50519050610d6081610680565b610d9b5760405162461bcd60e51b81526004018080602001828103825260278152602001806118e36027913960400191505060405180910390fd5b600154604080516370a0823160e01b81526001600160a01b0387811660048301529151859392909216916370a0823191602480820192602092909190829003018186803b158015610deb57600080fd5b505afa158015610dff573d6000803e3d6000fd5b505050506040513d6020811015610e1557600080fd5b50511015610f42576001546001600160a01b03166340c10f1933610e3f848663ffffffff61186316565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610e8e57600080fd5b505af1158015610ea2573d6000803e3d6000fd5b505050506040513d6020811015610eb857600080fd5b5050600154604080516340c10f1960e01b81526001600160a01b03878116600483015260248201869052915191909216916340c10f199160448083019260209291908290030181600087803b158015610f1057600080fd5b505af1158015610f24573d6000803e3d6000fd5b505050506040513d6020811015610f3a57600080fd5b50610fc39050565b600154604080516340c10f1960e01b81523360048201526024810184905290516001600160a01b03909216916340c10f19916044808201926020929091908290030181600087803b158015610f9657600080fd5b505af1158015610faa573d6000803e3d6000fd5b505050506040513d6020811015610fc057600080fd5b50505b60035460408051634f558e7960e01b81526004810187905290516001600160a01b0390921691634f558e7991602480820192602092909190829003018186803b15801561100f57600080fd5b505afa158015611023573d6000803e3d6000fd5b505050506040513d602081101561103957600080fd5b50516110ab57600354604080516340c10f1960e01b81523360048201526024810187905290516001600160a01b03909216916340c10f199160448082019260009290919082900301818387803b15801561109257600080fd5b505af11580156110a6573d6000803e3d6000fd5b505050505b50505050565b60025460408051634f558e7960e01b81526001600160a01b03868116600483015291519190921691634f558e79916024808301926020929190829003018186803b1580156110fe57600080fd5b505afa158015611112573d6000803e3d6000fd5b505050506040513d602081101561112857600080fd5b50516111655760405162461bcd60e51b815260040180806020018281038252602181526020018061190a6021913960400191505060405180910390fd5b6001546040805163251befd360e21b8152905185926001600160a01b03908116926379cc679092339286169163946fbf4c916004808301926020929190829003018186803b1580156111b657600080fd5b505afa1580156111ca573d6000803e3d6000fd5b505050506040513d60208110156111e057600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b15801561123057600080fd5b505af1158015611244573d6000803e3d6000fd5b50506002546040805163095ea7b360e01b81526001600160a01b03898116600483018190526024830152915191909216935063095ea7b39250604480830192600092919082900301818387803b15801561129d57600080fd5b505af11580156112b1573d6000803e3d6000fd5b505060408051630d8d023360e41b81523360048201529051600093506001600160a01b038516925063d8d0233091602480820192602092909190829003018186803b1580156112ff57600080fd5b505afa158015611313573d6000803e3d6000fd5b505050506040513d602081101561132957600080fd5b50519050801561143c57600154604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b15801561138d57600080fd5b505af11580156113a1573d6000803e3d6000fd5b505050506040513d60208110156113b757600080fd5b50506001546040805163095ea7b360e01b81526001600160a01b038881166004830152602482018590529151919092169163095ea7b39160448083019260209291908290030181600087803b15801561140f57600080fd5b505af1158015611423573d6000803e3d6000fd5b505050506040513d602081101561143957600080fd5b50505b604051637dbe2c9560e11b81526001600160c01b031985166004820190815233604483018190526060602484019081528651606485015286516001600160a01b0387169463fb7c592a948a948a94909391929091608490910190602086019080838360005b838110156114b95781810151838201526020016114a1565b50505050905090810190601f1680156114e65780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561150757600080fd5b505af115801561151b573d6000803e3d6000fd5b505050505050505050565b6000899050806001600160a01b031663d9f74b0e8a8a8a8a8a8a8a8a6040518963ffffffff1660e01b815260040180896001600160e01b0319166001600160e01b03191681526020018060200180602001886001600160e01b0319166001600160e01b03191681526020018760ff1660ff168152602001806020018681526020018060200185810385528c818151815260200191508051906020019080838360005b838110156115e05781810151838201526020016115c8565b50505050905090810190601f16801561160d5780820380516001836020036101000a031916815260200191505b5085810384528b5181528b516020918201918d019080838360005b83811015611640578181015183820152602001611628565b50505050905090810190601f16801561166d5780820380516001836020036101000a031916815260200191505b5085810383528851815288516020918201918a019080838360005b838110156116a0578181015183820152602001611688565b50505050905090810190601f1680156116cd5780820380516001836020036101000a031916815260200191505b50858103825286518152865160209182019188019080838360005b838110156117005781810151838201526020016116e8565b50505050905090810190601f16801561172d5780820380516001836020036101000a031916815260200191505b509c50505050505050505050505050600060405180830381600087803b15801561175657600080fd5b505af115801561176a573d6000803e3d6000fd5b505050506117808a6001600160a01b0316610afd565b50505050505050505050565b600154604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b1580156117d157600080fd5b505afa1580156117e5573d6000803e3d6000fd5b505050506040513d60208110156117fb57600080fd5b5051905090565b60008282018381101561185c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000828211156118ba576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe43616c6c6572206d757374206265207462746353797374656d20636f6e747261637443616e2774206d696e74206d6f7265207468616e20746865206d617820737570706c792063617074425443204465706f73697420546f6b656e20646f6573206e6f74206578697374a265627a7a723158204f9ad6edb6df9d5bfc60da7ec83d831ddb880729c34ce5e01e7be06aa60951d464736f6c63430005110032",
  "sourceMap": "635:8488:28:-;;;845:143;8:9:-1;5:2;;;30:1;27;20:12;5:2;845:143:28;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;845:143:28;435:17:25;:38;;-1:-1:-1;;;;;435:38:25;;;-1:-1:-1;;;;;;435:38:25;;;;;;;;;966:15:28;954:9;:27;635:8488;;;;;;",
  "deployedSourceMap": "635:8488:28:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;635:8488:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1411:301;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1411:301:28;;;;;;;;;;;;;;;;;;;:::i;:::-;;5819:874;;;:::i;:::-;;;;;;;;;;;;;;;;4713:130;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4713:130:28;;:::i;:::-;;;;;;;;;;;;;;;;;;4983:168;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4983:168:28;-1:-1:-1;;;;;4983:168:28;;:::i;2118:848::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2118:848:28;;:::i;3259:1138::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3259:1138:28;;:::i;8193:928::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;8193:928:28;;;;-1:-1:-1;;;;;;8193:928:28;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;8193:928:28;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8193:928:28;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;8193:928:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;8193:928:28;;-1:-1:-1;8193:928:28;;-1:-1:-1;;;;;8193:928:28:i;6830:784::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;6830:784:28;;;;-1:-1:-1;;;;;;6830:784:28;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6830:784:28;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6830:784:28;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6830:784:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6830:784:28;;;;;;;;-1:-1:-1;6830:784:28;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;6830:784:28;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6830:784:28;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6830:784:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6830:784:28;;-1:-1:-1;;;;;;6830:784:28;;;;;;;;;;;;;-1:-1:-1;6830:784:28;-1:-1:-1;6830:784:28;;;;-1:-1:-1;6830:784:28;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6830:784:28;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6830:784:28;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6830:784:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6830:784:28;;;;;;;;;-1:-1:-1;6830:784:28;;;;-1:-1:-1;6830:784:28;;;;-1:-1:-1;;;;5:28;;2:2;;;46:1;43;36:12;2:2;6830:784:28;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6830:784:28;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6830:784:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6830:784:28;;-1:-1:-1;6830:784:28;;-1:-1:-1;;;;;6830:784:28:i;5234:104::-;;;:::i;1411:301::-;647:17:25;;-1:-1:-1;;;;;647:17:25;633:10;:31;612:112;;;;-1:-1:-1;;;612:112:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1595:9:28;:22;;-1:-1:-1;;;;;1595:22:28;;;-1:-1:-1;;;;;;1595:22:28;;;;;;;1627:16;:36;;;;;;;;;;;;;;;1673:14;:32;;;;;;;;;;;1411:301::o;5819:874::-;5915:9;;5864:7;;5897:15;:27;5945:6;5939:12;;5935:60;;;5974:10;5967:17;;;;;5935:60;6015:6;6009:3;:12;6005:62;;;6044:12;6037:19;;;;;6005:62;6087:7;6081:3;:13;6077:63;;;6117:12;6110:19;;;;;6077:63;6160:7;6154:3;:13;6150:63;;;6190:12;6183:19;;;;;6150:63;6233:7;6227:3;:13;6223:63;;;6263:12;6256:19;;;;;6223:63;6306:7;6300:3;:13;6296:64;;;6336:13;6329:20;;;;;6296:64;6380:7;6374:3;:13;6370:64;;;6410:13;6403:20;;;;;6370:64;6454:7;6448:3;:13;6444:64;;;6484:13;6477:20;;;;;6444:64;6528:7;6522:3;:13;6518:64;;;6558:13;6551:20;;;;;6518:64;6602:7;6596:3;:13;6592:64;;;6632:13;6625:20;;;;;6592:64;6673:13;6666:20;;;5819:874;;:::o;4713:130::-;4767:4;4822:14;:12;:14::i;:::-;4790:29;4812:6;4790:17;:15;:17::i;:::-;:21;:29;:21;:29;:::i;:::-;:46;;4713:130;-1:-1:-1;;4713:130:28:o;4983:168::-;5082:4;5117:15;-1:-1:-1;;;;;5109:33:28;;:35;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5109:35:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5109:35:28;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5109:35:28;;4983:168;-1:-1:-1;;4983:168:28:o;2118:848::-;2193:16;;:31;;;-1:-1:-1;;;2193:31:28;;;;;;;;;;-1:-1:-1;;;;;2193:16:28;;;;:23;;:31;;;;;;;;;;;;;;;:16;:31;;;5:2:-1;;;;30:1;27;20:12;5:2;2193:31:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2193:31:28;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2193:31:28;2172:111;;;;-1:-1:-1;;;2172:111:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2301:28;2321:6;2301:11;:28::i;:::-;2293:66;;;;;-1:-1:-1;;;2293:66:28;;;;;;;;;;;;-1:-1:-1;;;2293:66:28;;;;;;;;;;;;;;;2370:20;2417:6;-1:-1:-1;;;;;2393:45:28;;:47;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2393:47:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2393:47:28;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2393:47:28;2471:9;;:31;;;-1:-1:-1;;;2471:31:28;;2491:10;2471:31;;;;;;2393:47;;-1:-1:-1;2393:47:28;;-1:-1:-1;;;;;2471:9:28;;;;:19;;:31;;;;;2393:47;;2471:31;;;;;;;;:9;:31;;;5:2:-1;;;;30:1;27;20:12;5:2;2471:31:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2471:31:28;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2471:31:28;:47;;2450:126;;;;;-1:-1:-1;;;2450:126:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2586:9;;:44;;;-1:-1:-1;;;2586:44:28;;2605:10;2586:44;;;;;;;;;;;;-1:-1:-1;;;;;2586:9:28;;;;:18;;:44;;;;;:9;;:44;;;;;;;;:9;;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;2586:44:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2793:16:28;;:32;;;-1:-1:-1;;;2793:32:28;;;;;;;;;;2837:4;;-1:-1:-1;;;;;;2793:16:28;;;;-1:-1:-1;2793:24:28;;:32;;;;;;;;;;;;;;:16;:32;;;5:2:-1;;;;30:1;27;20:12;5:2;2793:32:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2793:32:28;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2793:32:28;-1:-1:-1;;;;;2793:49:28;;2772:113;;;;;-1:-1:-1;;;2772:113:28;;;;;;;;;;;;-1:-1:-1;;;2772:113:28;;;;;;;;;;;;;;;2895:16;;:64;;;-1:-1:-1;;;2895:64:28;;2933:4;2895:64;;;;2940:10;2895:64;;;;;;;;;;;;-1:-1:-1;;;;;2895:16:28;;;;:29;;:64;;;;;:16;;:64;;;;;;;;:16;;:64;;;5:2:-1;;;;30:1;27;20:12;5:2;2895:64:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2895:64:28;;;;2118:848;;:::o;3259:1138::-;3332:16;;:31;;;-1:-1:-1;;;3332:31:28;;;;;;;;;;-1:-1:-1;;;;;3332:16:28;;;;:23;;:31;;;;;;;;;;;;;;;:16;:31;;;5:2:-1;;;;30:1;27;20:12;5:2;3332:31:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3332:31:28;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3332:31:28;3311:111;;;;-1:-1:-1;;;3311:111:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3440:28;3460:6;3440:11;:28::i;:::-;3432:66;;;;;-1:-1:-1;;;3432:66:28;;;;;;;;;;;;-1:-1:-1;;;3432:66:28;;;;;;;;;;;;;;;3509:16;;:64;;;-1:-1:-1;;;3509:64:28;;3539:10;3509:64;;;;3559:4;3509:64;;;;;;;;;;;;-1:-1:-1;;;;;3509:16:28;;;;:29;;:64;;;;;:16;;:64;;;;;;;;:16;;:64;;;5:2:-1;;;;30:1;27;20:12;5:2;3509:64:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3509:64:28;;;;3584:15;3626:6;3584:51;;3645:17;3665:7;-1:-1:-1;;;;;3665:21:28;;:23;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3665:23:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3665:23:28;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3665:23:28;3721:21;;;-1:-1:-1;;;3721:21:28;;;;3665:23;;-1:-1:-1;3698:20:28;;-1:-1:-1;;;;;3721:19:28;;;;;:21;;;;;3665:23;;3721:21;;;;;;;:19;:21;;;5:2:-1;;;;30:1;27;20:12;5:2;3721:21:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3721:21:28;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3721:21:28;;-1:-1:-1;3774:21:28;3721;3774:7;:21::i;:::-;3753:107;;;;-1:-1:-1;;;3753:107:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3956:9;;:36;;;-1:-1:-1;;;3956:36:28;;-1:-1:-1;;;;;3956:36:28;;;;;;;;;3995:9;;3956;;;;;:19;;:36;;;;;;;;;;;;;;;:9;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;3956:36:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3956:36:28;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3956:36:28;:48;3952:261;;;4020:9;;-1:-1:-1;;;;;4020:9:28;:14;4035:10;4047:27;:12;4064:9;4047:27;:16;:27;:::i;:::-;4020:55;;;;;;;;;;;;;-1:-1:-1;;;;;4020:55:28;-1:-1:-1;;;;;4020:55:28;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4020:55:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4020:55:28;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;4089:9:28;;:42;;;-1:-1:-1;;;4089:42:28;;-1:-1:-1;;;;;4089:42:28;;;;;;;;;;;;;;;:9;;;;;:14;;:42;;;;;4020:55;;4089:42;;;;;;;:9;;:42;;;5:2:-1;;;;30:1;27;20:12;5:2;4089:42:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4089:42:28;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3952:261:28;;-1:-1:-1;3952:261:28;;4162:9;;:40;;;-1:-1:-1;;;4162:40:28;;4177:10;4162:40;;;;;;;;;;;;-1:-1:-1;;;;;4162:9:28;;;;:14;;:40;;;;;;;;;;;;;;;:9;;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;4162:40:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4162:40:28;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;3952:261:28;4296:14;;:29;;;-1:-1:-1;;;4296:29:28;;;;;;;;;;-1:-1:-1;;;;;4296:14:28;;;;:21;;:29;;;;;;;;;;;;;;;:14;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;4296:29:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4296:29:28;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4296:29:28;4291:100;;4341:14;;:39;;;-1:-1:-1;;;4341:39:28;;4361:10;4341:39;;;;;;;;;;;;-1:-1:-1;;;;;4341:14:28;;;;:19;;:39;;;;;:14;;:39;;;;;;;;:14;;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;4341:39:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4341:39:28;;;;4291:100;3259:1138;;;;:::o;8193:928::-;8432:16;;:49;;;-1:-1:-1;;;8432:49:28;;-1:-1:-1;;;;;8456:24:28;;;8432:49;;;;;;:16;;;;;:23;;:49;;;;;;;;;;;;;;:16;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;8432:49:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8432:49:28;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8432:49:28;8411:129;;;;-1:-1:-1;;;8411:129:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8598:9;;8629:16;;;-1:-1:-1;;;8629:16:28;;;;8571:15;;-1:-1:-1;;;;;8598:9:28;;;;:18;;8617:10;;8629:14;;;;;:16;;;;;;;;;;;;;;:14;:16;;;5:2:-1;;;;30:1;27;20:12;5:2;8629:16:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8629:16:28;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8629:16:28;8598:48;;;-1:-1:-1;;;;;;8598:48:28;;;;;;;-1:-1:-1;;;;;8598:48:28;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8598:48:28;;;;;;;-1:-1:-1;8598:48:28;;;;5:2:-1;;;;30:1;27;20:12;5:2;8598:48:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;8656:16:28;;:67;;;-1:-1:-1;;;8656:67:28;;-1:-1:-1;;;;;8698:24:28;;;8656:67;;;;;;;;;;;;:16;;;;;-1:-1:-1;8656:24:28;;-1:-1:-1;8656:67:28;;;;;:16;;:67;;;;;;;:16;;:67;;;5:2:-1;;;;30:1;27;20:12;5:2;8656:67:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;8753:48:28;;;-1:-1:-1;;;8753:48:28;;8790:10;8753:48;;;;;;8734:16;;-1:-1:-1;;;;;;8753:36:28;;;-1:-1:-1;8753:36:28;;:48;;;;;;;;;;;;;;;:36;:48;;;5:2:-1;;;;30:1;27;20:12;5:2;8753:48:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8753:48:28;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8753:48:28;;-1:-1:-1;8816:13:28;;8812:161;;8845:9;;:59;;;-1:-1:-1;;;8845:59:28;;8868:10;8845:59;;;;8888:4;8845:59;;;;;;;;;;;;-1:-1:-1;;;;;8845:9:28;;;;:22;;:59;;;;;;;;;;;;;;;:9;;:59;;;5:2:-1;;;;30:1;27;20:12;5:2;8845:59:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8845:59:28;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;8918:9:28;;:44;;;-1:-1:-1;;;8918:44:28;;-1:-1:-1;;;;;8918:44:28;;;;;;;;;;;;;;;:9;;;;;:17;;:44;;;;;8845:59;;8918:44;;;;;;;:9;;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;8918:44:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8918:44:28;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;8812:161:28;8983:131;;-1:-1:-1;;;8983:131:28;;-1:-1:-1;;;;;;8983:131:28;;;;;;;;9094:10;8983:131;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8983:31:28;;;;;9028:17;;9059:21;;9094:10;;8983:131;;;;;;;;;;;;;;;;-1:-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;8983:131:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8983:131:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8983:131:28;;;;8193:928;;;;;:::o;6830:784::-;7256:10;7277:15;7256:37;;7303:2;-1:-1:-1;;;;;7303:25:28;;7342:10;7366:14;7394:15;7423:11;7448:19;7481:12;7507:15;7536;7303:258;;;;;;;;;;;;;-1:-1:-1;;;;;7303:258:28;;-1:-1:-1;;;;;7303:258:28;;;;;;;;;;;;;-1:-1:-1;;;;;7303:258:28;;-1:-1:-1;;;;;7303:258:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;7303:258:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7303:258:28;;;;;;;;;;;;;;;;;;;;;;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;7303:258:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7303:258:28;;;;;;;;;;;;;;;;;;;;;;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;7303:258:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7303:258:28;;;;;;;;;;;;;;;;;;;;;;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;7303:258:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7303:258:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7303:258:28;;;;7572:35;7590:15;-1:-1:-1;;;;;7582:24:28;7572:9;:35::i;:::-;6830:784;;;;;;;;;;:::o;5234:104::-;5308:9;;:23;;;-1:-1:-1;;;5308:23:28;;;;5282:7;;-1:-1:-1;;;;;5308:9:28;;:21;;:23;;;;;;;;;;;;;;:9;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;5308:23:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5308:23:28;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5308:23:28;;-1:-1:-1;5234:104:28;:::o;834:176:60:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:60:o;1274:179::-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:60;;;1274:179::o",
  "source": "pragma solidity 0.5.17;\n\nimport {SafeMath} from \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport {TBTCDepositToken} from \"./TBTCDepositToken.sol\";\nimport {FeeRebateToken} from \"./FeeRebateToken.sol\";\nimport {TBTCToken} from \"./TBTCToken.sol\";\nimport {TBTCConstants} from \"./TBTCConstants.sol\";\nimport \"../deposit/Deposit.sol\";\nimport \"./TBTCSystemAuthority.sol\";\n\n/// @title  Vending Machine\n/// @notice The Vending Machine swaps TDTs (`TBTCDepositToken`)\n///         to TBTC (`TBTCToken`) and vice versa.\n/// @dev    The Vending Machine should have exclusive TBTC and FRT (`FeeRebateToken`) minting\n///         privileges.\ncontract VendingMachine is TBTCSystemAuthority {\n    using SafeMath for uint256;\n\n    TBTCToken tbtcToken;\n    TBTCDepositToken tbtcDepositToken;\n    FeeRebateToken feeRebateToken;\n\n    uint256 createdAt;\n\n    constructor(address _systemAddress)\n        public\n        TBTCSystemAuthority(_systemAddress)\n    {\n        createdAt = block.timestamp;\n    }\n\n    /// @notice Set external contracts needed by the Vending Machine.\n    /// @dev    Addresses are used to update the local contract instance.\n    /// @param _tbtcToken        TBTCToken contract. More info in `TBTCToken`.\n    /// @param _tbtcDepositToken TBTCDepositToken (TDT) contract. More info in `TBTCDepositToken`.\n    /// @param _feeRebateToken   FeeRebateToken (FRT) contract. More info in `FeeRebateToken`.\n    function setExternalAddresses(\n        TBTCToken _tbtcToken,\n        TBTCDepositToken _tbtcDepositToken,\n        FeeRebateToken _feeRebateToken\n    ) external onlyTbtcSystem {\n        tbtcToken = _tbtcToken;\n        tbtcDepositToken = _tbtcDepositToken;\n        feeRebateToken = _feeRebateToken;\n    }\n\n    /// @notice Burns TBTC and transfers the tBTC Deposit Token to the caller\n    ///         as long as it is qualified.\n    /// @dev    We burn the lotSize of the Deposit in order to maintain\n    ///         the TBTC supply peg in the Vending Machine. VendingMachine must be approved\n    ///         by the caller to burn the required amount.\n    /// @param _tdtId ID of tBTC Deposit Token to buy.\n    function tbtcToTdt(uint256 _tdtId) external {\n        require(\n            tbtcDepositToken.exists(_tdtId),\n            \"tBTC Deposit Token does not exist\"\n        );\n        require(isQualified(address(_tdtId)), \"Deposit must be qualified\");\n\n        uint256 depositValue = Deposit(address(uint160(_tdtId))).lotSizeTbtc();\n        require(\n            tbtcToken.balanceOf(msg.sender) >= depositValue,\n            \"Not enough TBTC for TDT exchange\"\n        );\n        tbtcToken.burnFrom(msg.sender, depositValue);\n\n        // TODO do we need the owner check below? transferFrom can be approved for a user, which might be an interesting use case.\n        require(\n            tbtcDepositToken.ownerOf(_tdtId) == address(this),\n            \"Deposit is locked\"\n        );\n        tbtcDepositToken.transferFrom(address(this), msg.sender, _tdtId);\n    }\n\n    /// @notice Transfer the tBTC Deposit Token and mint TBTC.\n    /// @dev    Transfers TDT from caller to vending machine, and mints TBTC to caller.\n    ///         Vending Machine must be approved to transfer TDT by the caller.\n    /// @param _tdtId ID of tBTC Deposit Token to sell.\n    function tdtToTbtc(uint256 _tdtId) public {\n        require(\n            tbtcDepositToken.exists(_tdtId),\n            \"tBTC Deposit Token does not exist\"\n        );\n        require(isQualified(address(_tdtId)), \"Deposit must be qualified\");\n\n        tbtcDepositToken.transferFrom(msg.sender, address(this), _tdtId);\n\n        Deposit deposit = Deposit(address(uint160(_tdtId)));\n        uint256 signerFee = deposit.signerFeeTbtc();\n        uint256 depositValue = deposit.lotSizeTbtc();\n\n        require(\n            canMint(depositValue),\n            \"Can't mint more than the max supply cap\"\n        );\n\n        // If the backing Deposit does not have a signer fee in escrow, mint it.\n        if (tbtcToken.balanceOf(address(_tdtId)) < signerFee) {\n            tbtcToken.mint(msg.sender, depositValue.sub(signerFee));\n            tbtcToken.mint(address(_tdtId), signerFee);\n        } else {\n            tbtcToken.mint(msg.sender, depositValue);\n        }\n\n        // owner of the TDT during first TBTC mint receives the FRT\n        if (!feeRebateToken.exists(_tdtId)) {\n            feeRebateToken.mint(msg.sender, _tdtId);\n        }\n    }\n\n    /// @notice Return whether an amount of TBTC can be minted according to the supply cap\n    ///         schedule\n    /// @dev This function is also used by TBTCSystem to decide whether to allow a new deposit.\n    /// @return True if the amount can be minted without hitting the max supply, false otherwise.\n    function canMint(uint256 amount) public view returns (bool) {\n        return getMintedSupply().add(amount) < getMaxSupply();\n    }\n\n    /// @notice Determines whether a deposit is qualified for minting TBTC.\n    /// @param _depositAddress The address of the deposit\n    function isQualified(address payable _depositAddress)\n        public\n        view\n        returns (bool)\n    {\n        return Deposit(_depositAddress).inActive();\n    }\n\n    /// @notice Return the minted TBTC supply in weitoshis (BTC * 10 ** 18).\n    function getMintedSupply() public view returns (uint256) {\n        return tbtcToken.totalSupply();\n    }\n\n    /// @notice Get the maximum TBTC token supply based on the age of the\n    ///         contract deployment. The supply cap starts at 2 BTC for the two\n    ///         days, 100 for the first week, 250 for the next, then 500, 750,\n    ///         1000, 1500, 2000, 2500, and 3000... finally removing the minting\n    ///         restriction after 9 weeks and returning 21M BTC as a sanity\n    ///         check.\n    /// @return The max supply in weitoshis (BTC * 10 ** 18).\n    function getMaxSupply() public view returns (uint256) {\n        uint256 age = block.timestamp - createdAt;\n\n        if (age < 2 days) {\n            return 2 * 10**18;\n        }\n\n        if (age < 7 days) {\n            return 100 * 10**18;\n        }\n\n        if (age < 14 days) {\n            return 250 * 10**18;\n        }\n\n        if (age < 21 days) {\n            return 500 * 10**18;\n        }\n\n        if (age < 28 days) {\n            return 750 * 10**18;\n        }\n\n        if (age < 35 days) {\n            return 1000 * 10**18;\n        }\n\n        if (age < 42 days) {\n            return 1500 * 10**18;\n        }\n\n        if (age < 49 days) {\n            return 2000 * 10**18;\n        }\n\n        if (age < 56 days) {\n            return 2500 * 10**18;\n        }\n\n        if (age < 63 days) {\n            return 3000 * 10**18;\n        }\n\n        return 21e6 * 10**18;\n    }\n\n    // WRAPPERS\n\n    /// @notice Qualifies a deposit and mints TBTC.\n    /// @dev User must allow VendingManchine to transfer TDT.\n    function unqualifiedDepositToTbtc(\n        address payable _depositAddress,\n        bytes4 _txVersion,\n        bytes memory _txInputVector,\n        bytes memory _txOutputVector,\n        bytes4 _txLocktime,\n        uint8 _fundingOutputIndex,\n        bytes memory _merkleProof,\n        uint256 _txIndexInBlock,\n        bytes memory _bitcoinHeaders\n    ) public {\n        // not external to allow bytes memory parameters\n        Deposit _d = Deposit(_depositAddress);\n        _d.provideBTCFundingProof(\n            _txVersion,\n            _txInputVector,\n            _txOutputVector,\n            _txLocktime,\n            _fundingOutputIndex,\n            _merkleProof,\n            _txIndexInBlock,\n            _bitcoinHeaders\n        );\n\n        tdtToTbtc(uint256(_depositAddress));\n    }\n\n    /// @notice Redeems a Deposit by purchasing a TDT with TBTC for _finalRecipient,\n    ///         and using the TDT to redeem corresponding Deposit as _finalRecipient.\n    ///         This function will revert if the Deposit is not in ACTIVE state.\n    /// @dev Vending Machine transfers TBTC allowance to Deposit.\n    /// @param  _depositAddress     The address of the Deposit to redeem.\n    /// @param  _outputValueBytes   The 8-byte Bitcoin transaction output size in Little Endian.\n    /// @param  _redeemerOutputScript The redeemer's length-prefixed output script.\n    function tbtcToBtc(\n        address payable _depositAddress,\n        bytes8 _outputValueBytes,\n        bytes memory _redeemerOutputScript\n    ) public {\n        // not external to allow bytes memory parameters\n        require(\n            tbtcDepositToken.exists(uint256(_depositAddress)),\n            \"tBTC Deposit Token does not exist\"\n        );\n        Deposit _d = Deposit(_depositAddress);\n\n        tbtcToken.burnFrom(msg.sender, _d.lotSizeTbtc());\n        tbtcDepositToken.approve(_depositAddress, uint256(_depositAddress));\n\n        uint256 tbtcOwed = _d.getOwnerRedemptionTbtcRequirement(msg.sender);\n\n        if (tbtcOwed != 0) {\n            tbtcToken.transferFrom(msg.sender, address(this), tbtcOwed);\n            tbtcToken.approve(_depositAddress, tbtcOwed);\n        }\n\n        _d.transferAndRequestRedemption(\n            _outputValueBytes,\n            _redeemerOutputScript,\n            msg.sender\n        );\n    }\n}\n",
  "sourcePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/VendingMachine.sol",
  "ast": {
    "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/VendingMachine.sol",
    "exportedSymbols": {
      "VendingMachine": [
        9123
      ]
    },
    "id": 9124,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 8563,
        "literals": [
          "solidity",
          "0.5",
          ".17"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:28"
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "id": 8565,
        "nodeType": "ImportDirective",
        "scope": 9124,
        "sourceUnit": 16856,
        "src": "25:75:28",
        "symbolAliases": [
          {
            "foreign": 8564,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCDepositToken.sol",
        "file": "./TBTCDepositToken.sol",
        "id": 8567,
        "nodeType": "ImportDirective",
        "scope": 9124,
        "sourceUnit": 6845,
        "src": "101:56:28",
        "symbolAliases": [
          {
            "foreign": 8566,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/FeeRebateToken.sol",
        "file": "./FeeRebateToken.sol",
        "id": 8569,
        "nodeType": "ImportDirective",
        "scope": 9124,
        "sourceUnit": 6301,
        "src": "158:52:28",
        "symbolAliases": [
          {
            "foreign": 8568,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCToken.sol",
        "file": "./TBTCToken.sol",
        "id": 8571,
        "nodeType": "ImportDirective",
        "scope": 9124,
        "sourceUnit": 8562,
        "src": "211:42:28",
        "symbolAliases": [
          {
            "foreign": 8570,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCConstants.sol",
        "file": "./TBTCConstants.sol",
        "id": 8573,
        "nodeType": "ImportDirective",
        "scope": 9124,
        "sourceUnit": 6758,
        "src": "254:50:28",
        "symbolAliases": [
          {
            "foreign": 8572,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/Deposit.sol",
        "file": "../deposit/Deposit.sol",
        "id": 8574,
        "nodeType": "ImportDirective",
        "scope": 9124,
        "sourceUnit": 1135,
        "src": "305:32:28",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCSystemAuthority.sol",
        "file": "./TBTCSystemAuthority.sol",
        "id": 8575,
        "nodeType": "ImportDirective",
        "scope": 9124,
        "sourceUnit": 8400,
        "src": "338:35:28",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8576,
              "name": "TBTCSystemAuthority",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8399,
              "src": "662:19:28",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_TBTCSystemAuthority_$8399",
                "typeString": "contract TBTCSystemAuthority"
              }
            },
            "id": 8577,
            "nodeType": "InheritanceSpecifier",
            "src": "662:19:28"
          }
        ],
        "contractDependencies": [
          8399
        ],
        "contractKind": "contract",
        "documentation": "@title  Vending Machine\n @notice The Vending Machine swaps TDTs (`TBTCDepositToken`)\n         to TBTC (`TBTCToken`) and vice versa.\n @dev    The Vending Machine should have exclusive TBTC and FRT (`FeeRebateToken`) minting\n         privileges.",
        "fullyImplemented": true,
        "id": 9123,
        "linearizedBaseContracts": [
          9123,
          8399
        ],
        "name": "VendingMachine",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 8580,
            "libraryName": {
              "contractScope": null,
              "id": 8578,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 16855,
              "src": "694:8:28",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$16855",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "688:27:28",
            "typeName": {
              "id": 8579,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "707:7:28",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": false,
            "id": 8582,
            "name": "tbtcToken",
            "nodeType": "VariableDeclaration",
            "scope": 9123,
            "src": "721:19:28",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_TBTCToken_$8561",
              "typeString": "contract TBTCToken"
            },
            "typeName": {
              "contractScope": null,
              "id": 8581,
              "name": "TBTCToken",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8561,
              "src": "721:9:28",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_TBTCToken_$8561",
                "typeString": "contract TBTCToken"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 8584,
            "name": "tbtcDepositToken",
            "nodeType": "VariableDeclaration",
            "scope": 9123,
            "src": "746:33:28",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_TBTCDepositToken_$6844",
              "typeString": "contract TBTCDepositToken"
            },
            "typeName": {
              "contractScope": null,
              "id": 8583,
              "name": "TBTCDepositToken",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6844,
              "src": "746:16:28",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_TBTCDepositToken_$6844",
                "typeString": "contract TBTCDepositToken"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 8586,
            "name": "feeRebateToken",
            "nodeType": "VariableDeclaration",
            "scope": 9123,
            "src": "785:29:28",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_FeeRebateToken_$6300",
              "typeString": "contract FeeRebateToken"
            },
            "typeName": {
              "contractScope": null,
              "id": 8585,
              "name": "FeeRebateToken",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6300,
              "src": "785:14:28",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_FeeRebateToken_$6300",
                "typeString": "contract FeeRebateToken"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 8588,
            "name": "createdAt",
            "nodeType": "VariableDeclaration",
            "scope": 9123,
            "src": "821:17:28",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 8587,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "821:7:28",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 8601,
              "nodeType": "Block",
              "src": "944:44:28",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8599,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 8596,
                      "name": "createdAt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8588,
                      "src": "954:9:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 8597,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18350,
                        "src": "966:5:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 8598,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "timestamp",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "966:15:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "954:27:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 8600,
                  "nodeType": "ExpressionStatement",
                  "src": "954:27:28"
                }
              ]
            },
            "documentation": null,
            "id": 8602,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 8593,
                    "name": "_systemAddress",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8590,
                    "src": "924:14:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 8594,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8592,
                  "name": "TBTCSystemAuthority",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8399,
                  "src": "904:19:28",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_TBTCSystemAuthority_$8399_$",
                    "typeString": "type(contract TBTCSystemAuthority)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "904:35:28"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8591,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8590,
                  "name": "_systemAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 8602,
                  "src": "857:22:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8589,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "857:7:28",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "856:24:28"
            },
            "returnParameters": {
              "id": 8595,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "944:0:28"
            },
            "scope": 9123,
            "src": "845:143:28",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8625,
              "nodeType": "Block",
              "src": "1585:127:28",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8615,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 8613,
                      "name": "tbtcToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8582,
                      "src": "1595:9:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_TBTCToken_$8561",
                        "typeString": "contract TBTCToken"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 8614,
                      "name": "_tbtcToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8604,
                      "src": "1607:10:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_TBTCToken_$8561",
                        "typeString": "contract TBTCToken"
                      }
                    },
                    "src": "1595:22:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_TBTCToken_$8561",
                      "typeString": "contract TBTCToken"
                    }
                  },
                  "id": 8616,
                  "nodeType": "ExpressionStatement",
                  "src": "1595:22:28"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8619,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 8617,
                      "name": "tbtcDepositToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8584,
                      "src": "1627:16:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_TBTCDepositToken_$6844",
                        "typeString": "contract TBTCDepositToken"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 8618,
                      "name": "_tbtcDepositToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8606,
                      "src": "1646:17:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_TBTCDepositToken_$6844",
                        "typeString": "contract TBTCDepositToken"
                      }
                    },
                    "src": "1627:36:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_TBTCDepositToken_$6844",
                      "typeString": "contract TBTCDepositToken"
                    }
                  },
                  "id": 8620,
                  "nodeType": "ExpressionStatement",
                  "src": "1627:36:28"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8623,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 8621,
                      "name": "feeRebateToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8586,
                      "src": "1673:14:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_FeeRebateToken_$6300",
                        "typeString": "contract FeeRebateToken"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 8622,
                      "name": "_feeRebateToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8608,
                      "src": "1690:15:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_FeeRebateToken_$6300",
                        "typeString": "contract FeeRebateToken"
                      }
                    },
                    "src": "1673:32:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_FeeRebateToken_$6300",
                      "typeString": "contract FeeRebateToken"
                    }
                  },
                  "id": 8624,
                  "nodeType": "ExpressionStatement",
                  "src": "1673:32:28"
                }
              ]
            },
            "documentation": "@notice Set external contracts needed by the Vending Machine.\n @dev    Addresses are used to update the local contract instance.\n @param _tbtcToken        TBTCToken contract. More info in `TBTCToken`.\n @param _tbtcDepositToken TBTCDepositToken (TDT) contract. More info in `TBTCDepositToken`.\n @param _feeRebateToken   FeeRebateToken (FRT) contract. More info in `FeeRebateToken`.",
            "id": 8626,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 8611,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8610,
                  "name": "onlyTbtcSystem",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8398,
                  "src": "1570:14:28",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1570:14:28"
              }
            ],
            "name": "setExternalAddresses",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8609,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8604,
                  "name": "_tbtcToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 8626,
                  "src": "1450:20:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TBTCToken_$8561",
                    "typeString": "contract TBTCToken"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8603,
                    "name": "TBTCToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8561,
                    "src": "1450:9:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_TBTCToken_$8561",
                      "typeString": "contract TBTCToken"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8606,
                  "name": "_tbtcDepositToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 8626,
                  "src": "1480:34:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TBTCDepositToken_$6844",
                    "typeString": "contract TBTCDepositToken"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8605,
                    "name": "TBTCDepositToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6844,
                    "src": "1480:16:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_TBTCDepositToken_$6844",
                      "typeString": "contract TBTCDepositToken"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8608,
                  "name": "_feeRebateToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 8626,
                  "src": "1524:30:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_FeeRebateToken_$6300",
                    "typeString": "contract FeeRebateToken"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8607,
                    "name": "FeeRebateToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6300,
                    "src": "1524:14:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_FeeRebateToken_$6300",
                      "typeString": "contract FeeRebateToken"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1440:120:28"
            },
            "returnParameters": {
              "id": 8612,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1585:0:28"
            },
            "scope": 9123,
            "src": "1411:301:28",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 8702,
              "nodeType": "Block",
              "src": "2162:804:28",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8634,
                            "name": "_tdtId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8628,
                            "src": "2217:6:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 8632,
                            "name": "tbtcDepositToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8584,
                            "src": "2193:16:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_TBTCDepositToken_$6844",
                              "typeString": "contract TBTCDepositToken"
                            }
                          },
                          "id": 8633,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "exists",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6810,
                          "src": "2193:23:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256) view external returns (bool)"
                          }
                        },
                        "id": 8635,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2193:31:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74425443204465706f73697420546f6b656e20646f6573206e6f74206578697374",
                        "id": 8636,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2238:35:28",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7dc83a5a17125a17ee5b2d669dbee7923570818e4951396bb4642237d0a2bbe4",
                          "typeString": "literal_string \"tBTC Deposit Token does not exist\""
                        },
                        "value": "tBTC Deposit Token does not exist"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7dc83a5a17125a17ee5b2d669dbee7923570818e4951396bb4642237d0a2bbe4",
                          "typeString": "literal_string \"tBTC Deposit Token does not exist\""
                        }
                      ],
                      "id": 8631,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "2172:7:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 8637,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2172:111:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8638,
                  "nodeType": "ExpressionStatement",
                  "src": "2172:111:28"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8642,
                                "name": "_tdtId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8628,
                                "src": "2321:6:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 8641,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2313:7:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 8643,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2313:15:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 8640,
                          "name": "isQualified",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8851,
                          "src": "2301:11:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_payable_$returns$_t_bool_$",
                            "typeString": "function (address payable) view returns (bool)"
                          }
                        },
                        "id": 8644,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2301:28:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4465706f736974206d757374206265207175616c6966696564",
                        "id": 8645,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2331:27:28",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c21bbbdd48d64ddf86406b2b294c1812da230a697a7327d81acdb47492a78bee",
                          "typeString": "literal_string \"Deposit must be qualified\""
                        },
                        "value": "Deposit must be qualified"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c21bbbdd48d64ddf86406b2b294c1812da230a697a7327d81acdb47492a78bee",
                          "typeString": "literal_string \"Deposit must be qualified\""
                        }
                      ],
                      "id": 8639,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "2293:7:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 8646,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2293:66:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8647,
                  "nodeType": "ExpressionStatement",
                  "src": "2293:66:28"
                },
                {
                  "assignments": [
                    8649
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8649,
                      "name": "depositValue",
                      "nodeType": "VariableDeclaration",
                      "scope": 8702,
                      "src": "2370:20:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8648,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2370:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 8659,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 8653,
                                    "name": "_tdtId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8628,
                                    "src": "2417:6:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8652,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2409:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": "uint160"
                                },
                                "id": 8654,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2409:15:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 8651,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2401:7:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 8655,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2401:24:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 8650,
                          "name": "Deposit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1134,
                          "src": "2393:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Deposit_$1134_$",
                            "typeString": "type(contract Deposit)"
                          }
                        },
                        "id": 8656,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2393:33:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Deposit_$1134",
                          "typeString": "contract Deposit"
                        }
                      },
                      "id": 8657,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "lotSizeTbtc",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 578,
                      "src": "2393:45:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 8658,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2393:47:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2370:70:28"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 8667,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8663,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18360,
                                "src": "2491:3:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 8664,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2491:10:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 8661,
                              "name": "tbtcToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8582,
                              "src": "2471:9:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_TBTCToken_$8561",
                                "typeString": "contract TBTCToken"
                              }
                            },
                            "id": 8662,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17007,
                            "src": "2471:19:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 8665,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2471:31:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 8666,
                          "name": "depositValue",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8649,
                          "src": "2506:12:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2471:47:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4e6f7420656e6f756768205442544320666f72205444542065786368616e6765",
                        "id": 8668,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2532:34:28",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_f95a7dd47660fc63dd51c6ca8448832be948519badc589a89c702a3dfe207602",
                          "typeString": "literal_string \"Not enough TBTC for TDT exchange\""
                        },
                        "value": "Not enough TBTC for TDT exchange"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_f95a7dd47660fc63dd51c6ca8448832be948519badc589a89c702a3dfe207602",
                          "typeString": "literal_string \"Not enough TBTC for TDT exchange\""
                        }
                      ],
                      "id": 8660,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "2450:7:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 8669,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2450:126:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8670,
                  "nodeType": "ExpressionStatement",
                  "src": "2450:126:28"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 8674,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18360,
                          "src": "2605:3:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 8675,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2605:10:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8676,
                        "name": "depositValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8649,
                        "src": "2617:12:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 8671,
                        "name": "tbtcToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8582,
                        "src": "2586:9:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_TBTCToken_$8561",
                          "typeString": "contract TBTCToken"
                        }
                      },
                      "id": 8673,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "burnFrom",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8512,
                      "src": "2586:18:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 8677,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2586:44:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8678,
                  "nodeType": "ExpressionStatement",
                  "src": "2586:44:28"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 8687,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8682,
                              "name": "_tdtId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8628,
                              "src": "2818:6:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 8680,
                              "name": "tbtcDepositToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8584,
                              "src": "2793:16:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_TBTCDepositToken_$6844",
                                "typeString": "contract TBTCDepositToken"
                              }
                            },
                            "id": 8681,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "ownerOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17591,
                            "src": "2793:24:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view external returns (address)"
                            }
                          },
                          "id": 8683,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2793:32:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8685,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18460,
                              "src": "2837:4:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_VendingMachine_$9123",
                                "typeString": "contract VendingMachine"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_VendingMachine_$9123",
                                "typeString": "contract VendingMachine"
                              }
                            ],
                            "id": 8684,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2829:7:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 8686,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2829:13:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2793:49:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4465706f736974206973206c6f636b6564",
                        "id": 8688,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2856:19:28",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1b6051e6b5b6abd7e8969dde06da062cc87a0aba61cd0b3291aa6014f6cd874e",
                          "typeString": "literal_string \"Deposit is locked\""
                        },
                        "value": "Deposit is locked"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1b6051e6b5b6abd7e8969dde06da062cc87a0aba61cd0b3291aa6014f6cd874e",
                          "typeString": "literal_string \"Deposit is locked\""
                        }
                      ],
                      "id": 8679,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "2772:7:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 8689,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2772:113:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8690,
                  "nodeType": "ExpressionStatement",
                  "src": "2772:113:28"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8695,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18460,
                            "src": "2933:4:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_VendingMachine_$9123",
                              "typeString": "contract VendingMachine"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_VendingMachine_$9123",
                              "typeString": "contract VendingMachine"
                            }
                          ],
                          "id": 8694,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2925:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 8696,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2925:13:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 8697,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18360,
                          "src": "2940:3:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 8698,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2940:10:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8699,
                        "name": "_tdtId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8628,
                        "src": "2952:6:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 8691,
                        "name": "tbtcDepositToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8584,
                        "src": "2895:16:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_TBTCDepositToken_$6844",
                          "typeString": "contract TBTCDepositToken"
                        }
                      },
                      "id": 8693,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferFrom",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17730,
                      "src": "2895:29:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256) external"
                      }
                    },
                    "id": 8700,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2895:64:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8701,
                  "nodeType": "ExpressionStatement",
                  "src": "2895:64:28"
                }
              ]
            },
            "documentation": "@notice Burns TBTC and transfers the tBTC Deposit Token to the caller\n         as long as it is qualified.\n @dev    We burn the lotSize of the Deposit in order to maintain\n         the TBTC supply peg in the Vending Machine. VendingMachine must be approved\n         by the caller to burn the required amount.\n @param _tdtId ID of tBTC Deposit Token to buy.",
            "id": 8703,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "tbtcToTdt",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8629,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8628,
                  "name": "_tdtId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8703,
                  "src": "2137:14:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8627,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2137:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2136:16:28"
            },
            "returnParameters": {
              "id": 8630,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2162:0:28"
            },
            "scope": 9123,
            "src": "2118:848:28",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 8819,
              "nodeType": "Block",
              "src": "3301:1096:28",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8711,
                            "name": "_tdtId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8705,
                            "src": "3356:6:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 8709,
                            "name": "tbtcDepositToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8584,
                            "src": "3332:16:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_TBTCDepositToken_$6844",
                              "typeString": "contract TBTCDepositToken"
                            }
                          },
                          "id": 8710,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "exists",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6810,
                          "src": "3332:23:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256) view external returns (bool)"
                          }
                        },
                        "id": 8712,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3332:31:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74425443204465706f73697420546f6b656e20646f6573206e6f74206578697374",
                        "id": 8713,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3377:35:28",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7dc83a5a17125a17ee5b2d669dbee7923570818e4951396bb4642237d0a2bbe4",
                          "typeString": "literal_string \"tBTC Deposit Token does not exist\""
                        },
                        "value": "tBTC Deposit Token does not exist"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7dc83a5a17125a17ee5b2d669dbee7923570818e4951396bb4642237d0a2bbe4",
                          "typeString": "literal_string \"tBTC Deposit Token does not exist\""
                        }
                      ],
                      "id": 8708,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "3311:7:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 8714,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3311:111:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8715,
                  "nodeType": "ExpressionStatement",
                  "src": "3311:111:28"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8719,
                                "name": "_tdtId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8705,
                                "src": "3460:6:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 8718,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3452:7:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 8720,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3452:15:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 8717,
                          "name": "isQualified",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8851,
                          "src": "3440:11:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_payable_$returns$_t_bool_$",
                            "typeString": "function (address payable) view returns (bool)"
                          }
                        },
                        "id": 8721,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3440:28:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4465706f736974206d757374206265207175616c6966696564",
                        "id": 8722,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3470:27:28",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c21bbbdd48d64ddf86406b2b294c1812da230a697a7327d81acdb47492a78bee",
                          "typeString": "literal_string \"Deposit must be qualified\""
                        },
                        "value": "Deposit must be qualified"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c21bbbdd48d64ddf86406b2b294c1812da230a697a7327d81acdb47492a78bee",
                          "typeString": "literal_string \"Deposit must be qualified\""
                        }
                      ],
                      "id": 8716,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "3432:7:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 8723,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3432:66:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8724,
                  "nodeType": "ExpressionStatement",
                  "src": "3432:66:28"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 8728,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18360,
                          "src": "3539:3:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 8729,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3539:10:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8731,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18460,
                            "src": "3559:4:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_VendingMachine_$9123",
                              "typeString": "contract VendingMachine"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_VendingMachine_$9123",
                              "typeString": "contract VendingMachine"
                            }
                          ],
                          "id": 8730,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3551:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 8732,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3551:13:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8733,
                        "name": "_tdtId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8705,
                        "src": "3566:6:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 8725,
                        "name": "tbtcDepositToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8584,
                        "src": "3509:16:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_TBTCDepositToken_$6844",
                          "typeString": "contract TBTCDepositToken"
                        }
                      },
                      "id": 8727,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferFrom",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17730,
                      "src": "3509:29:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256) external"
                      }
                    },
                    "id": 8734,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3509:64:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8735,
                  "nodeType": "ExpressionStatement",
                  "src": "3509:64:28"
                },
                {
                  "assignments": [
                    8737
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8737,
                      "name": "deposit",
                      "nodeType": "VariableDeclaration",
                      "scope": 8819,
                      "src": "3584:15:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Deposit_$1134",
                        "typeString": "contract Deposit"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 8736,
                        "name": "Deposit",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1134,
                        "src": "3584:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Deposit_$1134",
                          "typeString": "contract Deposit"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 8745,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8741,
                                "name": "_tdtId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8705,
                                "src": "3626:6:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 8740,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3618:7:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint160_$",
                                "typeString": "type(uint160)"
                              },
                              "typeName": "uint160"
                            },
                            "id": 8742,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3618:15:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          ],
                          "id": 8739,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3610:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 8743,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3610:24:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 8738,
                      "name": "Deposit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1134,
                      "src": "3602:7:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_Deposit_$1134_$",
                        "typeString": "type(contract Deposit)"
                      }
                    },
                    "id": 8744,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3602:33:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Deposit_$1134",
                      "typeString": "contract Deposit"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3584:51:28"
                },
                {
                  "assignments": [
                    8747
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8747,
                      "name": "signerFee",
                      "nodeType": "VariableDeclaration",
                      "scope": 8819,
                      "src": "3645:17:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8746,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3645:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 8751,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 8748,
                        "name": "deposit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8737,
                        "src": "3665:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Deposit_$1134",
                          "typeString": "contract Deposit"
                        }
                      },
                      "id": 8749,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "signerFeeTbtc",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 588,
                      "src": "3665:21:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 8750,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3665:23:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3645:43:28"
                },
                {
                  "assignments": [
                    8753
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8753,
                      "name": "depositValue",
                      "nodeType": "VariableDeclaration",
                      "scope": 8819,
                      "src": "3698:20:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8752,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3698:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 8757,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 8754,
                        "name": "deposit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8737,
                        "src": "3721:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Deposit_$1134",
                          "typeString": "contract Deposit"
                        }
                      },
                      "id": 8755,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "lotSizeTbtc",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 578,
                      "src": "3721:19:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 8756,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3721:21:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3698:44:28"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8760,
                            "name": "depositValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8753,
                            "src": "3782:12:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8759,
                          "name": "canMint",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8837,
                          "src": "3774:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256) view returns (bool)"
                          }
                        },
                        "id": 8761,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3774:21:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "43616e2774206d696e74206d6f7265207468616e20746865206d617820737570706c7920636170",
                        "id": 8762,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3809:41:28",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_592c424b1b5690f35dbcaa5e3b2a844fc0cc00f8bdf8e48ecd0f0db7dc515880",
                          "typeString": "literal_string \"Can't mint more than the max supply cap\""
                        },
                        "value": "Can't mint more than the max supply cap"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_592c424b1b5690f35dbcaa5e3b2a844fc0cc00f8bdf8e48ecd0f0db7dc515880",
                          "typeString": "literal_string \"Can't mint more than the max supply cap\""
                        }
                      ],
                      "id": 8758,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "3753:7:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 8763,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3753:107:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8764,
                  "nodeType": "ExpressionStatement",
                  "src": "3753:107:28"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8772,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8768,
                              "name": "_tdtId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8705,
                              "src": "3984:6:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8767,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3976:7:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 8769,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3976:15:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 8765,
                          "name": "tbtcToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8582,
                          "src": "3956:9:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_TBTCToken_$8561",
                            "typeString": "contract TBTCToken"
                          }
                        },
                        "id": 8766,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "balanceOf",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17007,
                        "src": "3956:19:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                          "typeString": "function (address) view external returns (uint256)"
                        }
                      },
                      "id": 8770,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3956:36:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 8771,
                      "name": "signerFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8747,
                      "src": "3995:9:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3956:48:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 8802,
                    "nodeType": "Block",
                    "src": "4148:65:28",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8797,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18360,
                                "src": "4177:3:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 8798,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4177:10:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8799,
                              "name": "depositValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8753,
                              "src": "4189:12:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 8794,
                              "name": "tbtcToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8582,
                              "src": "4162:9:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_TBTCToken_$8561",
                                "typeString": "contract TBTCToken"
                              }
                            },
                            "id": 8796,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8499,
                            "src": "4162:14:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 8800,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4162:40:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8801,
                        "nodeType": "ExpressionStatement",
                        "src": "4162:40:28"
                      }
                    ]
                  },
                  "id": 8803,
                  "nodeType": "IfStatement",
                  "src": "3952:261:28",
                  "trueBody": {
                    "id": 8793,
                    "nodeType": "Block",
                    "src": "4006:136:28",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8776,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18360,
                                "src": "4035:3:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 8777,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4035:10:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 8780,
                                  "name": "signerFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8747,
                                  "src": "4064:9:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8778,
                                  "name": "depositValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8753,
                                  "src": "4047:12:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 8779,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 16774,
                                "src": "4047:16:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 8781,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4047:27:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 8773,
                              "name": "tbtcToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8582,
                              "src": "4020:9:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_TBTCToken_$8561",
                                "typeString": "contract TBTCToken"
                              }
                            },
                            "id": 8775,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8499,
                            "src": "4020:14:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 8782,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4020:55:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8783,
                        "nodeType": "ExpressionStatement",
                        "src": "4020:55:28"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 8788,
                                  "name": "_tdtId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8705,
                                  "src": "4112:6:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 8787,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4104:7:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 8789,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4104:15:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8790,
                              "name": "signerFee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8747,
                              "src": "4121:9:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 8784,
                              "name": "tbtcToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8582,
                              "src": "4089:9:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_TBTCToken_$8561",
                                "typeString": "contract TBTCToken"
                              }
                            },
                            "id": 8786,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8499,
                            "src": "4089:14:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 8791,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4089:42:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8792,
                        "nodeType": "ExpressionStatement",
                        "src": "4089:42:28"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 8808,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "4295:30:28",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 8806,
                          "name": "_tdtId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8705,
                          "src": "4318:6:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 8804,
                          "name": "feeRebateToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8586,
                          "src": "4296:14:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_FeeRebateToken_$6300",
                            "typeString": "contract FeeRebateToken"
                          }
                        },
                        "id": 8805,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "exists",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 6299,
                        "src": "4296:21:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_bool_$",
                          "typeString": "function (uint256) view external returns (bool)"
                        }
                      },
                      "id": 8807,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4296:29:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 8818,
                  "nodeType": "IfStatement",
                  "src": "4291:100:28",
                  "trueBody": {
                    "id": 8817,
                    "nodeType": "Block",
                    "src": "4327:64:28",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8812,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18360,
                                "src": "4361:3:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 8813,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4361:10:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8814,
                              "name": "_tdtId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8705,
                              "src": "4373:6:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 8809,
                              "name": "feeRebateToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8586,
                              "src": "4341:14:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_FeeRebateToken_$6300",
                                "typeString": "contract FeeRebateToken"
                              }
                            },
                            "id": 8811,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6287,
                            "src": "4341:19:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 8815,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4341:39:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8816,
                        "nodeType": "ExpressionStatement",
                        "src": "4341:39:28"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice Transfer the tBTC Deposit Token and mint TBTC.\n @dev    Transfers TDT from caller to vending machine, and mints TBTC to caller.\n         Vending Machine must be approved to transfer TDT by the caller.\n @param _tdtId ID of tBTC Deposit Token to sell.",
            "id": 8820,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "tdtToTbtc",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8706,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8705,
                  "name": "_tdtId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8820,
                  "src": "3278:14:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8704,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3278:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3277:16:28"
            },
            "returnParameters": {
              "id": 8707,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3301:0:28"
            },
            "scope": 9123,
            "src": "3259:1138:28",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8836,
              "nodeType": "Block",
              "src": "4773:70:28",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8834,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 8830,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8822,
                          "src": "4812:6:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 8827,
                            "name": "getMintedSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8861,
                            "src": "4790:15:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                              "typeString": "function () view returns (uint256)"
                            }
                          },
                          "id": 8828,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4790:17:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8829,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16749,
                        "src": "4790:21:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 8831,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4790:29:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 8832,
                        "name": "getMaxSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8990,
                        "src": "4822:12:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                          "typeString": "function () view returns (uint256)"
                        }
                      },
                      "id": 8833,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4822:14:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4790:46:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 8826,
                  "id": 8835,
                  "nodeType": "Return",
                  "src": "4783:53:28"
                }
              ]
            },
            "documentation": "@notice Return whether an amount of TBTC can be minted according to the supply cap\n         schedule\n @dev This function is also used by TBTCSystem to decide whether to allow a new deposit.\n @return True if the amount can be minted without hitting the max supply, false otherwise.",
            "id": 8837,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "canMint",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8823,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8822,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 8837,
                  "src": "4730:14:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8821,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4730:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4729:16:28"
            },
            "returnParameters": {
              "id": 8826,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8825,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8837,
                  "src": "4767:4:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8824,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4767:4:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4766:6:28"
            },
            "scope": 9123,
            "src": "4713:130:28",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8850,
              "nodeType": "Block",
              "src": "5092:59:28",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8845,
                            "name": "_depositAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8839,
                            "src": "5117:15:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 8844,
                          "name": "Deposit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1134,
                          "src": "5109:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Deposit_$1134_$",
                            "typeString": "type(contract Deposit)"
                          }
                        },
                        "id": 8846,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5109:24:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Deposit_$1134",
                          "typeString": "contract Deposit"
                        }
                      },
                      "id": 8847,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "inActive",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 609,
                      "src": "5109:33:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$",
                        "typeString": "function () view external returns (bool)"
                      }
                    },
                    "id": 8848,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5109:35:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 8843,
                  "id": 8849,
                  "nodeType": "Return",
                  "src": "5102:42:28"
                }
              ]
            },
            "documentation": "@notice Determines whether a deposit is qualified for minting TBTC.\n @param _depositAddress The address of the deposit",
            "id": 8851,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isQualified",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8840,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8839,
                  "name": "_depositAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 8851,
                  "src": "5004:31:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "typeName": {
                    "id": 8838,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5004:15:28",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5003:33:28"
            },
            "returnParameters": {
              "id": 8843,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8842,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8851,
                  "src": "5082:4:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8841,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5082:4:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5081:6:28"
            },
            "scope": 9123,
            "src": "4983:168:28",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8860,
              "nodeType": "Block",
              "src": "5291:47:28",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 8856,
                        "name": "tbtcToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8582,
                        "src": "5308:9:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_TBTCToken_$8561",
                          "typeString": "contract TBTCToken"
                        }
                      },
                      "id": 8857,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "totalSupply",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16995,
                      "src": "5308:21:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 8858,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5308:23:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 8855,
                  "id": 8859,
                  "nodeType": "Return",
                  "src": "5301:30:28"
                }
              ]
            },
            "documentation": "@notice Return the minted TBTC supply in weitoshis (BTC * 10 ** 18).",
            "id": 8861,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getMintedSupply",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8852,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5258:2:28"
            },
            "returnParameters": {
              "id": 8855,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8854,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8861,
                  "src": "5282:7:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8853,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5282:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5281:9:28"
            },
            "scope": 9123,
            "src": "5234:104:28",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8989,
              "nodeType": "Block",
              "src": "5873:820:28",
              "statements": [
                {
                  "assignments": [
                    8867
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8867,
                      "name": "age",
                      "nodeType": "VariableDeclaration",
                      "scope": 8989,
                      "src": "5883:11:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8866,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5883:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 8872,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8871,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 8868,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18350,
                        "src": "5897:5:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 8869,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "timestamp",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5897:15:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 8870,
                      "name": "createdAt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8588,
                      "src": "5915:9:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5897:27:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5883:41:28"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8875,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 8873,
                      "name": "age",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8867,
                      "src": "5939:3:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "32",
                      "id": 8874,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5945:6:28",
                      "subdenomination": "days",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_172800_by_1",
                        "typeString": "int_const 172800"
                      },
                      "value": "2"
                    },
                    "src": "5939:12:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 8883,
                  "nodeType": "IfStatement",
                  "src": "5935:60:28",
                  "trueBody": {
                    "id": 8882,
                    "nodeType": "Block",
                    "src": "5953:42:28",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_rational_2000000000000000000_by_1",
                            "typeString": "int_const 2000000000000000000"
                          },
                          "id": 8880,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 8876,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5974:1:28",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            },
                            "id": 8879,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "hexValue": "3130",
                              "id": 8877,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5978:2:28",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10_by_1",
                                "typeString": "int_const 10"
                              },
                              "value": "10"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "**",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "3138",
                              "id": 8878,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5982:2:28",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_18_by_1",
                                "typeString": "int_const 18"
                              },
                              "value": "18"
                            },
                            "src": "5978:6:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            }
                          },
                          "src": "5974:10:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2000000000000000000_by_1",
                            "typeString": "int_const 2000000000000000000"
                          }
                        },
                        "functionReturnParameters": 8865,
                        "id": 8881,
                        "nodeType": "Return",
                        "src": "5967:17:28"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8886,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 8884,
                      "name": "age",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8867,
                      "src": "6009:3:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "37",
                      "id": 8885,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6015:6:28",
                      "subdenomination": "days",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_604800_by_1",
                        "typeString": "int_const 604800"
                      },
                      "value": "7"
                    },
                    "src": "6009:12:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 8894,
                  "nodeType": "IfStatement",
                  "src": "6005:62:28",
                  "trueBody": {
                    "id": 8893,
                    "nodeType": "Block",
                    "src": "6023:44:28",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_rational_100000000000000000000_by_1",
                            "typeString": "int_const 100000000000000000000"
                          },
                          "id": 8891,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "313030",
                            "id": 8887,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6044:3:28",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            },
                            "value": "100"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            },
                            "id": 8890,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "hexValue": "3130",
                              "id": 8888,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6050:2:28",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10_by_1",
                                "typeString": "int_const 10"
                              },
                              "value": "10"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "**",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "3138",
                              "id": 8889,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6054:2:28",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_18_by_1",
                                "typeString": "int_const 18"
                              },
                              "value": "18"
                            },
                            "src": "6050:6:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            }
                          },
                          "src": "6044:12:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_100000000000000000000_by_1",
                            "typeString": "int_const 100000000000000000000"
                          }
                        },
                        "functionReturnParameters": 8865,
                        "id": 8892,
                        "nodeType": "Return",
                        "src": "6037:19:28"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8897,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 8895,
                      "name": "age",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8867,
                      "src": "6081:3:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3134",
                      "id": 8896,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6087:7:28",
                      "subdenomination": "days",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1209600_by_1",
                        "typeString": "int_const 1209600"
                      },
                      "value": "14"
                    },
                    "src": "6081:13:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 8905,
                  "nodeType": "IfStatement",
                  "src": "6077:63:28",
                  "trueBody": {
                    "id": 8904,
                    "nodeType": "Block",
                    "src": "6096:44:28",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_rational_250000000000000000000_by_1",
                            "typeString": "int_const 250000000000000000000"
                          },
                          "id": 8902,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "323530",
                            "id": 8898,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6117:3:28",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_250_by_1",
                              "typeString": "int_const 250"
                            },
                            "value": "250"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            },
                            "id": 8901,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "hexValue": "3130",
                              "id": 8899,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6123:2:28",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10_by_1",
                                "typeString": "int_const 10"
                              },
                              "value": "10"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "**",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "3138",
                              "id": 8900,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6127:2:28",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_18_by_1",
                                "typeString": "int_const 18"
                              },
                              "value": "18"
                            },
                            "src": "6123:6:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            }
                          },
                          "src": "6117:12:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_250000000000000000000_by_1",
                            "typeString": "int_const 250000000000000000000"
                          }
                        },
                        "functionReturnParameters": 8865,
                        "id": 8903,
                        "nodeType": "Return",
                        "src": "6110:19:28"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8908,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 8906,
                      "name": "age",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8867,
                      "src": "6154:3:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3231",
                      "id": 8907,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6160:7:28",
                      "subdenomination": "days",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1814400_by_1",
                        "typeString": "int_const 1814400"
                      },
                      "value": "21"
                    },
                    "src": "6154:13:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 8916,
                  "nodeType": "IfStatement",
                  "src": "6150:63:28",
                  "trueBody": {
                    "id": 8915,
                    "nodeType": "Block",
                    "src": "6169:44:28",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_rational_500000000000000000000_by_1",
                            "typeString": "int_const 500000000000000000000"
                          },
                          "id": 8913,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "353030",
                            "id": 8909,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6190:3:28",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_500_by_1",
                              "typeString": "int_const 500"
                            },
                            "value": "500"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            },
                            "id": 8912,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "hexValue": "3130",
                              "id": 8910,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6196:2:28",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10_by_1",
                                "typeString": "int_const 10"
                              },
                              "value": "10"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "**",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "3138",
                              "id": 8911,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6200:2:28",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_18_by_1",
                                "typeString": "int_const 18"
                              },
                              "value": "18"
                            },
                            "src": "6196:6:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            }
                          },
                          "src": "6190:12:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_500000000000000000000_by_1",
                            "typeString": "int_const 500000000000000000000"
                          }
                        },
                        "functionReturnParameters": 8865,
                        "id": 8914,
                        "nodeType": "Return",
                        "src": "6183:19:28"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8919,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 8917,
                      "name": "age",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8867,
                      "src": "6227:3:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3238",
                      "id": 8918,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6233:7:28",
                      "subdenomination": "days",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_2419200_by_1",
                        "typeString": "int_const 2419200"
                      },
                      "value": "28"
                    },
                    "src": "6227:13:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 8927,
                  "nodeType": "IfStatement",
                  "src": "6223:63:28",
                  "trueBody": {
                    "id": 8926,
                    "nodeType": "Block",
                    "src": "6242:44:28",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_rational_750000000000000000000_by_1",
                            "typeString": "int_const 750000000000000000000"
                          },
                          "id": 8924,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "373530",
                            "id": 8920,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6263:3:28",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_750_by_1",
                              "typeString": "int_const 750"
                            },
                            "value": "750"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            },
                            "id": 8923,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "hexValue": "3130",
                              "id": 8921,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6269:2:28",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10_by_1",
                                "typeString": "int_const 10"
                              },
                              "value": "10"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "**",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "3138",
                              "id": 8922,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6273:2:28",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_18_by_1",
                                "typeString": "int_const 18"
                              },
                              "value": "18"
                            },
                            "src": "6269:6:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            }
                          },
                          "src": "6263:12:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_750000000000000000000_by_1",
                            "typeString": "int_const 750000000000000000000"
                          }
                        },
                        "functionReturnParameters": 8865,
                        "id": 8925,
                        "nodeType": "Return",
                        "src": "6256:19:28"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8930,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 8928,
                      "name": "age",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8867,
                      "src": "6300:3:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3335",
                      "id": 8929,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6306:7:28",
                      "subdenomination": "days",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_3024000_by_1",
                        "typeString": "int_const 3024000"
                      },
                      "value": "35"
                    },
                    "src": "6300:13:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 8938,
                  "nodeType": "IfStatement",
                  "src": "6296:64:28",
                  "trueBody": {
                    "id": 8937,
                    "nodeType": "Block",
                    "src": "6315:45:28",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_rational_1000000000000000000000_by_1",
                            "typeString": "int_const 1000000000000000000000"
                          },
                          "id": 8935,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "31303030",
                            "id": 8931,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6336:4:28",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1000_by_1",
                              "typeString": "int_const 1000"
                            },
                            "value": "1000"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            },
                            "id": 8934,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "hexValue": "3130",
                              "id": 8932,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6343:2:28",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10_by_1",
                                "typeString": "int_const 10"
                              },
                              "value": "10"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "**",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "3138",
                              "id": 8933,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6347:2:28",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_18_by_1",
                                "typeString": "int_const 18"
                              },
                              "value": "18"
                            },
                            "src": "6343:6:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            }
                          },
                          "src": "6336:13:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1000000000000000000000_by_1",
                            "typeString": "int_const 1000000000000000000000"
                          }
                        },
                        "functionReturnParameters": 8865,
                        "id": 8936,
                        "nodeType": "Return",
                        "src": "6329:20:28"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8941,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 8939,
                      "name": "age",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8867,
                      "src": "6374:3:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3432",
                      "id": 8940,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6380:7:28",
                      "subdenomination": "days",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_3628800_by_1",
                        "typeString": "int_const 3628800"
                      },
                      "value": "42"
                    },
                    "src": "6374:13:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 8949,
                  "nodeType": "IfStatement",
                  "src": "6370:64:28",
                  "trueBody": {
                    "id": 8948,
                    "nodeType": "Block",
                    "src": "6389:45:28",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_rational_1500000000000000000000_by_1",
                            "typeString": "int_const 1500000000000000000000"
                          },
                          "id": 8946,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "31353030",
                            "id": 8942,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6410:4:28",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1500_by_1",
                              "typeString": "int_const 1500"
                            },
                            "value": "1500"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            },
                            "id": 8945,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "hexValue": "3130",
                              "id": 8943,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6417:2:28",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10_by_1",
                                "typeString": "int_const 10"
                              },
                              "value": "10"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "**",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "3138",
                              "id": 8944,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6421:2:28",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_18_by_1",
                                "typeString": "int_const 18"
                              },
                              "value": "18"
                            },
                            "src": "6417:6:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            }
                          },
                          "src": "6410:13:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1500000000000000000000_by_1",
                            "typeString": "int_const 1500000000000000000000"
                          }
                        },
                        "functionReturnParameters": 8865,
                        "id": 8947,
                        "nodeType": "Return",
                        "src": "6403:20:28"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8952,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 8950,
                      "name": "age",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8867,
                      "src": "6448:3:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3439",
                      "id": 8951,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6454:7:28",
                      "subdenomination": "days",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_4233600_by_1",
                        "typeString": "int_const 4233600"
                      },
                      "value": "49"
                    },
                    "src": "6448:13:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 8960,
                  "nodeType": "IfStatement",
                  "src": "6444:64:28",
                  "trueBody": {
                    "id": 8959,
                    "nodeType": "Block",
                    "src": "6463:45:28",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_rational_2000000000000000000000_by_1",
                            "typeString": "int_const 2000000000000000000000"
                          },
                          "id": 8957,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "32303030",
                            "id": 8953,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6484:4:28",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2000_by_1",
                              "typeString": "int_const 2000"
                            },
                            "value": "2000"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            },
                            "id": 8956,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "hexValue": "3130",
                              "id": 8954,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6491:2:28",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10_by_1",
                                "typeString": "int_const 10"
                              },
                              "value": "10"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "**",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "3138",
                              "id": 8955,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6495:2:28",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_18_by_1",
                                "typeString": "int_const 18"
                              },
                              "value": "18"
                            },
                            "src": "6491:6:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            }
                          },
                          "src": "6484:13:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2000000000000000000000_by_1",
                            "typeString": "int_const 2000000000000000000000"
                          }
                        },
                        "functionReturnParameters": 8865,
                        "id": 8958,
                        "nodeType": "Return",
                        "src": "6477:20:28"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8963,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 8961,
                      "name": "age",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8867,
                      "src": "6522:3:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3536",
                      "id": 8962,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6528:7:28",
                      "subdenomination": "days",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_4838400_by_1",
                        "typeString": "int_const 4838400"
                      },
                      "value": "56"
                    },
                    "src": "6522:13:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 8971,
                  "nodeType": "IfStatement",
                  "src": "6518:64:28",
                  "trueBody": {
                    "id": 8970,
                    "nodeType": "Block",
                    "src": "6537:45:28",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_rational_2500000000000000000000_by_1",
                            "typeString": "int_const 2500000000000000000000"
                          },
                          "id": 8968,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "32353030",
                            "id": 8964,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6558:4:28",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2500_by_1",
                              "typeString": "int_const 2500"
                            },
                            "value": "2500"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            },
                            "id": 8967,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "hexValue": "3130",
                              "id": 8965,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6565:2:28",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10_by_1",
                                "typeString": "int_const 10"
                              },
                              "value": "10"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "**",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "3138",
                              "id": 8966,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6569:2:28",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_18_by_1",
                                "typeString": "int_const 18"
                              },
                              "value": "18"
                            },
                            "src": "6565:6:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            }
                          },
                          "src": "6558:13:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2500000000000000000000_by_1",
                            "typeString": "int_const 2500000000000000000000"
                          }
                        },
                        "functionReturnParameters": 8865,
                        "id": 8969,
                        "nodeType": "Return",
                        "src": "6551:20:28"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8974,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 8972,
                      "name": "age",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8867,
                      "src": "6596:3:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3633",
                      "id": 8973,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6602:7:28",
                      "subdenomination": "days",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_5443200_by_1",
                        "typeString": "int_const 5443200"
                      },
                      "value": "63"
                    },
                    "src": "6596:13:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 8982,
                  "nodeType": "IfStatement",
                  "src": "6592:64:28",
                  "trueBody": {
                    "id": 8981,
                    "nodeType": "Block",
                    "src": "6611:45:28",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_rational_3000000000000000000000_by_1",
                            "typeString": "int_const 3000000000000000000000"
                          },
                          "id": 8979,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "33303030",
                            "id": 8975,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6632:4:28",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_3000_by_1",
                              "typeString": "int_const 3000"
                            },
                            "value": "3000"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            },
                            "id": 8978,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "hexValue": "3130",
                              "id": 8976,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6639:2:28",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10_by_1",
                                "typeString": "int_const 10"
                              },
                              "value": "10"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "**",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "3138",
                              "id": 8977,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6643:2:28",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_18_by_1",
                                "typeString": "int_const 18"
                              },
                              "value": "18"
                            },
                            "src": "6639:6:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                              "typeString": "int_const 1000000000000000000"
                            }
                          },
                          "src": "6632:13:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_3000000000000000000000_by_1",
                            "typeString": "int_const 3000000000000000000000"
                          }
                        },
                        "functionReturnParameters": 8865,
                        "id": 8980,
                        "nodeType": "Return",
                        "src": "6625:20:28"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_rational_21000000000000000000000000_by_1",
                      "typeString": "int_const 21000000000000000000000000"
                    },
                    "id": 8987,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "hexValue": "32316536",
                      "id": 8983,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6673:4:28",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_21000000_by_1",
                        "typeString": "int_const 21000000"
                      },
                      "value": "21e6"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                        "typeString": "int_const 1000000000000000000"
                      },
                      "id": 8986,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "hexValue": "3130",
                        "id": 8984,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6680:2:28",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_10_by_1",
                          "typeString": "int_const 10"
                        },
                        "value": "10"
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "**",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "3138",
                        "id": 8985,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6684:2:28",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_18_by_1",
                          "typeString": "int_const 18"
                        },
                        "value": "18"
                      },
                      "src": "6680:6:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                        "typeString": "int_const 1000000000000000000"
                      }
                    },
                    "src": "6673:13:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_21000000000000000000000000_by_1",
                      "typeString": "int_const 21000000000000000000000000"
                    }
                  },
                  "functionReturnParameters": 8865,
                  "id": 8988,
                  "nodeType": "Return",
                  "src": "6666:20:28"
                }
              ]
            },
            "documentation": "@notice Get the maximum TBTC token supply based on the age of the\n         contract deployment. The supply cap starts at 2 BTC for the two\n         days, 100 for the first week, 250 for the next, then 500, 750,\n         1000, 1500, 2000, 2500, and 3000... finally removing the minting\n         restriction after 9 weeks and returning 21M BTC as a sanity\n         check.\n @return The max supply in weitoshis (BTC * 10 ** 18).",
            "id": 8990,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getMaxSupply",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8862,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5840:2:28"
            },
            "returnParameters": {
              "id": 8865,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8864,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8990,
                  "src": "5864:7:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8863,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5864:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5863:9:28"
            },
            "scope": 9123,
            "src": "5819:874:28",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9036,
              "nodeType": "Block",
              "src": "7189:425:28",
              "statements": [
                {
                  "assignments": [
                    9012
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9012,
                      "name": "_d",
                      "nodeType": "VariableDeclaration",
                      "scope": 9036,
                      "src": "7256:10:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Deposit_$1134",
                        "typeString": "contract Deposit"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 9011,
                        "name": "Deposit",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1134,
                        "src": "7256:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Deposit_$1134",
                          "typeString": "contract Deposit"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9016,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9014,
                        "name": "_depositAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8992,
                        "src": "7277:15:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 9013,
                      "name": "Deposit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1134,
                      "src": "7269:7:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_Deposit_$1134_$",
                        "typeString": "type(contract Deposit)"
                      }
                    },
                    "id": 9015,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7269:24:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Deposit_$1134",
                      "typeString": "contract Deposit"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7256:37:28"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9020,
                        "name": "_txVersion",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8994,
                        "src": "7342:10:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9021,
                        "name": "_txInputVector",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8996,
                        "src": "7366:14:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9022,
                        "name": "_txOutputVector",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8998,
                        "src": "7394:15:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9023,
                        "name": "_txLocktime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9000,
                        "src": "7423:11:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9024,
                        "name": "_fundingOutputIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9002,
                        "src": "7448:19:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9025,
                        "name": "_merkleProof",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9004,
                        "src": "7481:12:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9026,
                        "name": "_txIndexInBlock",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9006,
                        "src": "7507:15:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9027,
                        "name": "_bitcoinHeaders",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9008,
                        "src": "7536:15:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "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": 9017,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9012,
                        "src": "7303:2:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Deposit_$1134",
                          "typeString": "contract Deposit"
                        }
                      },
                      "id": 9019,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "provideBTCFundingProof",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 842,
                      "src": "7303:25:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes4_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes4_$_t_uint8_$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes4,bytes memory,bytes memory,bytes4,uint8,bytes memory,uint256,bytes memory) external"
                      }
                    },
                    "id": 9028,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7303:258:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9029,
                  "nodeType": "ExpressionStatement",
                  "src": "7303:258:28"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9032,
                            "name": "_depositAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8992,
                            "src": "7590:15:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 9031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7582:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": "uint256"
                        },
                        "id": 9033,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7582:24:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 9030,
                      "name": "tdtToTbtc",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8820,
                      "src": "7572:9:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 9034,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7572:35:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9035,
                  "nodeType": "ExpressionStatement",
                  "src": "7572:35:28"
                }
              ]
            },
            "documentation": "@notice Qualifies a deposit and mints TBTC.\n @dev User must allow VendingManchine to transfer TDT.",
            "id": 9037,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "unqualifiedDepositToTbtc",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9009,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8992,
                  "name": "_depositAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 9037,
                  "src": "6873:31:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "typeName": {
                    "id": 8991,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6873:15:28",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8994,
                  "name": "_txVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 9037,
                  "src": "6914:17:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 8993,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "6914:6:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8996,
                  "name": "_txInputVector",
                  "nodeType": "VariableDeclaration",
                  "scope": 9037,
                  "src": "6941:27:28",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 8995,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6941:5:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8998,
                  "name": "_txOutputVector",
                  "nodeType": "VariableDeclaration",
                  "scope": 9037,
                  "src": "6978:28:28",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 8997,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6978:5:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9000,
                  "name": "_txLocktime",
                  "nodeType": "VariableDeclaration",
                  "scope": 9037,
                  "src": "7016:18:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 8999,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "7016:6:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9002,
                  "name": "_fundingOutputIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 9037,
                  "src": "7044:25:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 9001,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "7044:5:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9004,
                  "name": "_merkleProof",
                  "nodeType": "VariableDeclaration",
                  "scope": 9037,
                  "src": "7079:25:28",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9003,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7079:5:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9006,
                  "name": "_txIndexInBlock",
                  "nodeType": "VariableDeclaration",
                  "scope": 9037,
                  "src": "7114:23:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9005,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7114:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9008,
                  "name": "_bitcoinHeaders",
                  "nodeType": "VariableDeclaration",
                  "scope": 9037,
                  "src": "7147:28:28",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9007,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7147:5:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6863:318:28"
            },
            "returnParameters": {
              "id": 9010,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7189:0:28"
            },
            "scope": 9123,
            "src": "6830:784:28",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9121,
              "nodeType": "Block",
              "src": "8344:777:28",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 9050,
                                "name": "_depositAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9039,
                                "src": "8464:15:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "id": 9049,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8456:7:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": "uint256"
                            },
                            "id": 9051,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8456:24:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9047,
                            "name": "tbtcDepositToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8584,
                            "src": "8432:16:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_TBTCDepositToken_$6844",
                              "typeString": "contract TBTCDepositToken"
                            }
                          },
                          "id": 9048,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "exists",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6810,
                          "src": "8432:23:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256) view external returns (bool)"
                          }
                        },
                        "id": 9052,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8432:49:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74425443204465706f73697420546f6b656e20646f6573206e6f74206578697374",
                        "id": 9053,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8495:35:28",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7dc83a5a17125a17ee5b2d669dbee7923570818e4951396bb4642237d0a2bbe4",
                          "typeString": "literal_string \"tBTC Deposit Token does not exist\""
                        },
                        "value": "tBTC Deposit Token does not exist"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7dc83a5a17125a17ee5b2d669dbee7923570818e4951396bb4642237d0a2bbe4",
                          "typeString": "literal_string \"tBTC Deposit Token does not exist\""
                        }
                      ],
                      "id": 9046,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "8411:7:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 9054,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8411:129:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9055,
                  "nodeType": "ExpressionStatement",
                  "src": "8411:129:28"
                },
                {
                  "assignments": [
                    9057
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9057,
                      "name": "_d",
                      "nodeType": "VariableDeclaration",
                      "scope": 9121,
                      "src": "8550:10:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Deposit_$1134",
                        "typeString": "contract Deposit"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 9056,
                        "name": "Deposit",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1134,
                        "src": "8550:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Deposit_$1134",
                          "typeString": "contract Deposit"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9061,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9059,
                        "name": "_depositAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9039,
                        "src": "8571:15:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 9058,
                      "name": "Deposit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1134,
                      "src": "8563:7:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_Deposit_$1134_$",
                        "typeString": "type(contract Deposit)"
                      }
                    },
                    "id": 9060,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8563:24:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Deposit_$1134",
                      "typeString": "contract Deposit"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8550:37:28"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9065,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18360,
                          "src": "8617:3:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9066,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "8617:10:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9067,
                            "name": "_d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9057,
                            "src": "8629:2:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Deposit_$1134",
                              "typeString": "contract Deposit"
                            }
                          },
                          "id": 9068,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "lotSizeTbtc",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 578,
                          "src": "8629:14:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                            "typeString": "function () view external returns (uint256)"
                          }
                        },
                        "id": 9069,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8629:16:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9062,
                        "name": "tbtcToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8582,
                        "src": "8598:9:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_TBTCToken_$8561",
                          "typeString": "contract TBTCToken"
                        }
                      },
                      "id": 9064,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "burnFrom",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8512,
                      "src": "8598:18:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 9070,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8598:48:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9071,
                  "nodeType": "ExpressionStatement",
                  "src": "8598:48:28"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9075,
                        "name": "_depositAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9039,
                        "src": "8681:15:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9077,
                            "name": "_depositAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9039,
                            "src": "8706:15:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 9076,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8698:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": "uint256"
                        },
                        "id": 9078,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8698:24:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9072,
                        "name": "tbtcDepositToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8584,
                        "src": "8656:16:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_TBTCDepositToken_$6844",
                          "typeString": "contract TBTCDepositToken"
                        }
                      },
                      "id": 9074,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "approve",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17638,
                      "src": "8656:24:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 9079,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8656:67:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9080,
                  "nodeType": "ExpressionStatement",
                  "src": "8656:67:28"
                },
                {
                  "assignments": [
                    9082
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9082,
                      "name": "tbtcOwed",
                      "nodeType": "VariableDeclaration",
                      "scope": 9121,
                      "src": "8734:16:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9081,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8734:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9088,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9085,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18360,
                          "src": "8790:3:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9086,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "8790:10:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9083,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9057,
                        "src": "8753:2:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Deposit_$1134",
                          "typeString": "contract Deposit"
                        }
                      },
                      "id": 9084,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getOwnerRedemptionTbtcRequirement",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 965,
                      "src": "8753:36:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 9087,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8753:48:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8734:67:28"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 9091,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 9089,
                      "name": "tbtcOwed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9082,
                      "src": "8816:8:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 9090,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8828:1:28",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "8816:13:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 9111,
                  "nodeType": "IfStatement",
                  "src": "8812:161:28",
                  "trueBody": {
                    "id": 9110,
                    "nodeType": "Block",
                    "src": "8831:142:28",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9095,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18360,
                                "src": "8868:3:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 9096,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "8868:10:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 9098,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18460,
                                  "src": "8888:4:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_VendingMachine_$9123",
                                    "typeString": "contract VendingMachine"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_VendingMachine_$9123",
                                    "typeString": "contract VendingMachine"
                                  }
                                ],
                                "id": 9097,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8880:7:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 9099,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8880:13:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9100,
                              "name": "tbtcOwed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9082,
                              "src": "8895:8:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 9092,
                              "name": "tbtcToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8582,
                              "src": "8845:9:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_TBTCToken_$8561",
                                "typeString": "contract TBTCToken"
                              }
                            },
                            "id": 9094,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17096,
                            "src": "8845:22:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,address,uint256) external returns (bool)"
                            }
                          },
                          "id": 9101,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8845:59:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9102,
                        "nodeType": "ExpressionStatement",
                        "src": "8845:59:28"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9106,
                              "name": "_depositAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9039,
                              "src": "8936:15:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9107,
                              "name": "tbtcOwed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9082,
                              "src": "8953:8:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 9103,
                              "name": "tbtcToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8582,
                              "src": "8918:9:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_TBTCToken_$8561",
                                "typeString": "contract TBTCToken"
                              }
                            },
                            "id": 9105,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17061,
                            "src": "8918:17:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 9108,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8918:44:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9109,
                        "nodeType": "ExpressionStatement",
                        "src": "8918:44:28"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9115,
                        "name": "_outputValueBytes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9041,
                        "src": "9028:17:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9116,
                        "name": "_redeemerOutputScript",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9043,
                        "src": "9059:21:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9117,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18360,
                          "src": "9094:3:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9118,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "9094:10:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9112,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9057,
                        "src": "8983:2:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Deposit_$1134",
                          "typeString": "contract Deposit"
                        }
                      },
                      "id": 9114,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferAndRequestRedemption",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1124,
                      "src": "8983:31:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes8_$_t_bytes_memory_ptr_$_t_address_payable_$returns$__$",
                        "typeString": "function (bytes8,bytes memory,address payable) external"
                      }
                    },
                    "id": 9119,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8983:131:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9120,
                  "nodeType": "ExpressionStatement",
                  "src": "8983:131:28"
                }
              ]
            },
            "documentation": "@notice Redeems a Deposit by purchasing a TDT with TBTC for _finalRecipient,\n         and using the TDT to redeem corresponding Deposit as _finalRecipient.\n         This function will revert if the Deposit is not in ACTIVE state.\n @dev Vending Machine transfers TBTC allowance to Deposit.\n @param  _depositAddress     The address of the Deposit to redeem.\n @param  _outputValueBytes   The 8-byte Bitcoin transaction output size in Little Endian.\n @param  _redeemerOutputScript The redeemer's length-prefixed output script.",
            "id": 9122,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "tbtcToBtc",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9044,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9039,
                  "name": "_depositAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 9122,
                  "src": "8221:31:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "typeName": {
                    "id": 9038,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8221:15:28",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9041,
                  "name": "_outputValueBytes",
                  "nodeType": "VariableDeclaration",
                  "scope": 9122,
                  "src": "8262:24:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes8",
                    "typeString": "bytes8"
                  },
                  "typeName": {
                    "id": 9040,
                    "name": "bytes8",
                    "nodeType": "ElementaryTypeName",
                    "src": "8262:6:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes8",
                      "typeString": "bytes8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9043,
                  "name": "_redeemerOutputScript",
                  "nodeType": "VariableDeclaration",
                  "scope": 9122,
                  "src": "8296:34:28",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9042,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "8296:5:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8211:125:28"
            },
            "returnParameters": {
              "id": 9045,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8344:0:28"
            },
            "scope": 9123,
            "src": "8193:928:28",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 9124,
        "src": "635:8488:28"
      }
    ],
    "src": "0:9124:28"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/VendingMachine.sol",
      "exportedSymbols": {
        "VendingMachine": [
          9123
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "0.5",
            ".17"
          ]
        },
        "id": 8563,
        "name": "PragmaDirective",
        "src": "0:23:28"
      },
      {
        "attributes": {
          "SourceUnit": 16856,
          "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
          "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
          "scope": 9124,
          "symbolAliases": [
            {
              "foreign": 8564,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 8565,
        "name": "ImportDirective",
        "src": "25:75:28"
      },
      {
        "attributes": {
          "SourceUnit": 6845,
          "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCDepositToken.sol",
          "file": "./TBTCDepositToken.sol",
          "scope": 9124,
          "symbolAliases": [
            {
              "foreign": 8566,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 8567,
        "name": "ImportDirective",
        "src": "101:56:28"
      },
      {
        "attributes": {
          "SourceUnit": 6301,
          "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/FeeRebateToken.sol",
          "file": "./FeeRebateToken.sol",
          "scope": 9124,
          "symbolAliases": [
            {
              "foreign": 8568,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 8569,
        "name": "ImportDirective",
        "src": "158:52:28"
      },
      {
        "attributes": {
          "SourceUnit": 8562,
          "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCToken.sol",
          "file": "./TBTCToken.sol",
          "scope": 9124,
          "symbolAliases": [
            {
              "foreign": 8570,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 8571,
        "name": "ImportDirective",
        "src": "211:42:28"
      },
      {
        "attributes": {
          "SourceUnit": 6758,
          "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCConstants.sol",
          "file": "./TBTCConstants.sol",
          "scope": 9124,
          "symbolAliases": [
            {
              "foreign": 8572,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 8573,
        "name": "ImportDirective",
        "src": "254:50:28"
      },
      {
        "attributes": {
          "SourceUnit": 1135,
          "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/Deposit.sol",
          "file": "../deposit/Deposit.sol",
          "scope": 9124,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 8574,
        "name": "ImportDirective",
        "src": "305:32:28"
      },
      {
        "attributes": {
          "SourceUnit": 8400,
          "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCSystemAuthority.sol",
          "file": "./TBTCSystemAuthority.sol",
          "scope": 9124,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 8575,
        "name": "ImportDirective",
        "src": "338:35:28"
      },
      {
        "attributes": {
          "contractDependencies": [
            8399
          ],
          "contractKind": "contract",
          "documentation": "@title  Vending Machine\n @notice The Vending Machine swaps TDTs (`TBTCDepositToken`)\n         to TBTC (`TBTCToken`) and vice versa.\n @dev    The Vending Machine should have exclusive TBTC and FRT (`FeeRebateToken`) minting\n         privileges.",
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            9123,
            8399
          ],
          "name": "VendingMachine",
          "scope": 9124
        },
        "children": [
          {
            "attributes": {
              "arguments": null
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "TBTCSystemAuthority",
                  "referencedDeclaration": 8399,
                  "type": "contract TBTCSystemAuthority"
                },
                "id": 8576,
                "name": "UserDefinedTypeName",
                "src": "662:19:28"
              }
            ],
            "id": 8577,
            "name": "InheritanceSpecifier",
            "src": "662:19:28"
          },
          {
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "SafeMath",
                  "referencedDeclaration": 16855,
                  "type": "library SafeMath"
                },
                "id": 8578,
                "name": "UserDefinedTypeName",
                "src": "694:8:28"
              },
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 8579,
                "name": "ElementaryTypeName",
                "src": "707:7:28"
              }
            ],
            "id": 8580,
            "name": "UsingForDirective",
            "src": "688:27:28"
          },
          {
            "attributes": {
              "constant": false,
              "name": "tbtcToken",
              "scope": 9123,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "contract TBTCToken",
              "value": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "TBTCToken",
                  "referencedDeclaration": 8561,
                  "type": "contract TBTCToken"
                },
                "id": 8581,
                "name": "UserDefinedTypeName",
                "src": "721:9:28"
              }
            ],
            "id": 8582,
            "name": "VariableDeclaration",
            "src": "721:19:28"
          },
          {
            "attributes": {
              "constant": false,
              "name": "tbtcDepositToken",
              "scope": 9123,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "contract TBTCDepositToken",
              "value": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "TBTCDepositToken",
                  "referencedDeclaration": 6844,
                  "type": "contract TBTCDepositToken"
                },
                "id": 8583,
                "name": "UserDefinedTypeName",
                "src": "746:16:28"
              }
            ],
            "id": 8584,
            "name": "VariableDeclaration",
            "src": "746:33:28"
          },
          {
            "attributes": {
              "constant": false,
              "name": "feeRebateToken",
              "scope": 9123,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "contract FeeRebateToken",
              "value": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "FeeRebateToken",
                  "referencedDeclaration": 6300,
                  "type": "contract FeeRebateToken"
                },
                "id": 8585,
                "name": "UserDefinedTypeName",
                "src": "785:14:28"
              }
            ],
            "id": 8586,
            "name": "VariableDeclaration",
            "src": "785:29:28"
          },
          {
            "attributes": {
              "constant": false,
              "name": "createdAt",
              "scope": 9123,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "value": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 8587,
                "name": "ElementaryTypeName",
                "src": "821:7:28"
              }
            ],
            "id": 8588,
            "name": "VariableDeclaration",
            "src": "821:17:28"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": true,
              "kind": "constructor",
              "name": "",
              "scope": 9123,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_systemAddress",
                      "scope": 8602,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 8589,
                        "name": "ElementaryTypeName",
                        "src": "857:7:28"
                      }
                    ],
                    "id": 8590,
                    "name": "VariableDeclaration",
                    "src": "857:22:28"
                  }
                ],
                "id": 8591,
                "name": "ParameterList",
                "src": "856:24:28"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 8595,
                "name": "ParameterList",
                "src": "944:0:28"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 8399,
                      "type": "type(contract TBTCSystemAuthority)",
                      "value": "TBTCSystemAuthority"
                    },
                    "id": 8592,
                    "name": "Identifier",
                    "src": "904:19:28"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 8590,
                      "type": "address",
                      "value": "_systemAddress"
                    },
                    "id": 8593,
                    "name": "Identifier",
                    "src": "924:14:28"
                  }
                ],
                "id": 8594,
                "name": "ModifierInvocation",
                "src": "904:35:28"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8588,
                              "type": "uint256",
                              "value": "createdAt"
                            },
                            "id": 8596,
                            "name": "Identifier",
                            "src": "954:9:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "timestamp",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18350,
                                  "type": "block",
                                  "value": "block"
                                },
                                "id": 8597,
                                "name": "Identifier",
                                "src": "966:5:28"
                              }
                            ],
                            "id": 8598,
                            "name": "MemberAccess",
                            "src": "966:15:28"
                          }
                        ],
                        "id": 8599,
                        "name": "Assignment",
                        "src": "954:27:28"
                      }
                    ],
                    "id": 8600,
                    "name": "ExpressionStatement",
                    "src": "954:27:28"
                  }
                ],
                "id": 8601,
                "name": "Block",
                "src": "944:44:28"
              }
            ],
            "id": 8602,
            "name": "FunctionDefinition",
            "src": "845:143:28"
          },
          {
            "attributes": {
              "documentation": "@notice Set external contracts needed by the Vending Machine.\n @dev    Addresses are used to update the local contract instance.\n @param _tbtcToken        TBTCToken contract. More info in `TBTCToken`.\n @param _tbtcDepositToken TBTCDepositToken (TDT) contract. More info in `TBTCDepositToken`.\n @param _feeRebateToken   FeeRebateToken (FRT) contract. More info in `FeeRebateToken`.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "setExternalAddresses",
              "scope": 9123,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_tbtcToken",
                      "scope": 8626,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract TBTCToken",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "TBTCToken",
                          "referencedDeclaration": 8561,
                          "type": "contract TBTCToken"
                        },
                        "id": 8603,
                        "name": "UserDefinedTypeName",
                        "src": "1450:9:28"
                      }
                    ],
                    "id": 8604,
                    "name": "VariableDeclaration",
                    "src": "1450:20:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_tbtcDepositToken",
                      "scope": 8626,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract TBTCDepositToken",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "TBTCDepositToken",
                          "referencedDeclaration": 6844,
                          "type": "contract TBTCDepositToken"
                        },
                        "id": 8605,
                        "name": "UserDefinedTypeName",
                        "src": "1480:16:28"
                      }
                    ],
                    "id": 8606,
                    "name": "VariableDeclaration",
                    "src": "1480:34:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_feeRebateToken",
                      "scope": 8626,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract FeeRebateToken",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "FeeRebateToken",
                          "referencedDeclaration": 6300,
                          "type": "contract FeeRebateToken"
                        },
                        "id": 8607,
                        "name": "UserDefinedTypeName",
                        "src": "1524:14:28"
                      }
                    ],
                    "id": 8608,
                    "name": "VariableDeclaration",
                    "src": "1524:30:28"
                  }
                ],
                "id": 8609,
                "name": "ParameterList",
                "src": "1440:120:28"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 8612,
                "name": "ParameterList",
                "src": "1585:0:28"
              },
              {
                "attributes": {
                  "arguments": null
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 8398,
                      "type": "modifier ()",
                      "value": "onlyTbtcSystem"
                    },
                    "id": 8610,
                    "name": "Identifier",
                    "src": "1570:14:28"
                  }
                ],
                "id": 8611,
                "name": "ModifierInvocation",
                "src": "1570:14:28"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract TBTCToken"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8582,
                              "type": "contract TBTCToken",
                              "value": "tbtcToken"
                            },
                            "id": 8613,
                            "name": "Identifier",
                            "src": "1595:9:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8604,
                              "type": "contract TBTCToken",
                              "value": "_tbtcToken"
                            },
                            "id": 8614,
                            "name": "Identifier",
                            "src": "1607:10:28"
                          }
                        ],
                        "id": 8615,
                        "name": "Assignment",
                        "src": "1595:22:28"
                      }
                    ],
                    "id": 8616,
                    "name": "ExpressionStatement",
                    "src": "1595:22:28"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract TBTCDepositToken"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8584,
                              "type": "contract TBTCDepositToken",
                              "value": "tbtcDepositToken"
                            },
                            "id": 8617,
                            "name": "Identifier",
                            "src": "1627:16:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8606,
                              "type": "contract TBTCDepositToken",
                              "value": "_tbtcDepositToken"
                            },
                            "id": 8618,
                            "name": "Identifier",
                            "src": "1646:17:28"
                          }
                        ],
                        "id": 8619,
                        "name": "Assignment",
                        "src": "1627:36:28"
                      }
                    ],
                    "id": 8620,
                    "name": "ExpressionStatement",
                    "src": "1627:36:28"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract FeeRebateToken"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8586,
                              "type": "contract FeeRebateToken",
                              "value": "feeRebateToken"
                            },
                            "id": 8621,
                            "name": "Identifier",
                            "src": "1673:14:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8608,
                              "type": "contract FeeRebateToken",
                              "value": "_feeRebateToken"
                            },
                            "id": 8622,
                            "name": "Identifier",
                            "src": "1690:15:28"
                          }
                        ],
                        "id": 8623,
                        "name": "Assignment",
                        "src": "1673:32:28"
                      }
                    ],
                    "id": 8624,
                    "name": "ExpressionStatement",
                    "src": "1673:32:28"
                  }
                ],
                "id": 8625,
                "name": "Block",
                "src": "1585:127:28"
              }
            ],
            "id": 8626,
            "name": "FunctionDefinition",
            "src": "1411:301:28"
          },
          {
            "attributes": {
              "documentation": "@notice Burns TBTC and transfers the tBTC Deposit Token to the caller\n         as long as it is qualified.\n @dev    We burn the lotSize of the Deposit in order to maintain\n         the TBTC supply peg in the Vending Machine. VendingMachine must be approved\n         by the caller to burn the required amount.\n @param _tdtId ID of tBTC Deposit Token to buy.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "tbtcToTdt",
              "scope": 9123,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_tdtId",
                      "scope": 8703,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 8627,
                        "name": "ElementaryTypeName",
                        "src": "2137:7:28"
                      }
                    ],
                    "id": 8628,
                    "name": "VariableDeclaration",
                    "src": "2137:14:28"
                  }
                ],
                "id": 8629,
                "name": "ParameterList",
                "src": "2136:16:28"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 8630,
                "name": "ParameterList",
                "src": "2162:0:28"
              },
              {
                "children": [
                  {
                    "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"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_7dc83a5a17125a17ee5b2d669dbee7923570818e4951396bb4642237d0a2bbe4",
                                  "typeString": "literal_string \"tBTC Deposit Token does not exist\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 8631,
                            "name": "Identifier",
                            "src": "2172:7:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "exists",
                                  "referencedDeclaration": 6810,
                                  "type": "function (uint256) view external returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8584,
                                      "type": "contract TBTCDepositToken",
                                      "value": "tbtcDepositToken"
                                    },
                                    "id": 8632,
                                    "name": "Identifier",
                                    "src": "2193:16:28"
                                  }
                                ],
                                "id": 8633,
                                "name": "MemberAccess",
                                "src": "2193:23:28"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8628,
                                  "type": "uint256",
                                  "value": "_tdtId"
                                },
                                "id": 8634,
                                "name": "Identifier",
                                "src": "2217:6:28"
                              }
                            ],
                            "id": 8635,
                            "name": "FunctionCall",
                            "src": "2193:31:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "74425443204465706f73697420546f6b656e20646f6573206e6f74206578697374",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"tBTC Deposit Token does not exist\"",
                              "value": "tBTC Deposit Token does not exist"
                            },
                            "id": 8636,
                            "name": "Literal",
                            "src": "2238:35:28"
                          }
                        ],
                        "id": 8637,
                        "name": "FunctionCall",
                        "src": "2172:111:28"
                      }
                    ],
                    "id": 8638,
                    "name": "ExpressionStatement",
                    "src": "2172:111:28"
                  },
                  {
                    "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"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_c21bbbdd48d64ddf86406b2b294c1812da230a697a7327d81acdb47492a78bee",
                                  "typeString": "literal_string \"Deposit must be qualified\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 8639,
                            "name": "Identifier",
                            "src": "2293:7:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8851,
                                  "type": "function (address payable) view returns (bool)",
                                  "value": "isQualified"
                                },
                                "id": 8640,
                                "name": "Identifier",
                                "src": "2301:11:28"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "address payable",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)",
                                      "value": "address"
                                    },
                                    "id": 8641,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "2313:7:28"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8628,
                                      "type": "uint256",
                                      "value": "_tdtId"
                                    },
                                    "id": 8642,
                                    "name": "Identifier",
                                    "src": "2321:6:28"
                                  }
                                ],
                                "id": 8643,
                                "name": "FunctionCall",
                                "src": "2313:15:28"
                              }
                            ],
                            "id": 8644,
                            "name": "FunctionCall",
                            "src": "2301:28:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "4465706f736974206d757374206265207175616c6966696564",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Deposit must be qualified\"",
                              "value": "Deposit must be qualified"
                            },
                            "id": 8645,
                            "name": "Literal",
                            "src": "2331:27:28"
                          }
                        ],
                        "id": 8646,
                        "name": "FunctionCall",
                        "src": "2293:66:28"
                      }
                    ],
                    "id": 8647,
                    "name": "ExpressionStatement",
                    "src": "2293:66:28"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        8649
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "depositValue",
                          "scope": 8702,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 8648,
                            "name": "ElementaryTypeName",
                            "src": "2370:7:28"
                          }
                        ],
                        "id": 8649,
                        "name": "VariableDeclaration",
                        "src": "2370:20:28"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "lotSizeTbtc",
                              "referencedDeclaration": 578,
                              "type": "function () view external returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "contract Deposit",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1134,
                                      "type": "type(contract Deposit)",
                                      "value": "Deposit"
                                    },
                                    "id": 8650,
                                    "name": "Identifier",
                                    "src": "2393:7:28"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "address payable",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint160",
                                              "typeString": "uint160"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(address)",
                                          "value": "address"
                                        },
                                        "id": 8651,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "2401:7:28"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "type": "uint160",
                                          "type_conversion": true
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "type": "type(uint160)",
                                              "value": "uint160"
                                            },
                                            "id": 8652,
                                            "name": "ElementaryTypeNameExpression",
                                            "src": "2409:7:28"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 8628,
                                              "type": "uint256",
                                              "value": "_tdtId"
                                            },
                                            "id": 8653,
                                            "name": "Identifier",
                                            "src": "2417:6:28"
                                          }
                                        ],
                                        "id": 8654,
                                        "name": "FunctionCall",
                                        "src": "2409:15:28"
                                      }
                                    ],
                                    "id": 8655,
                                    "name": "FunctionCall",
                                    "src": "2401:24:28"
                                  }
                                ],
                                "id": 8656,
                                "name": "FunctionCall",
                                "src": "2393:33:28"
                              }
                            ],
                            "id": 8657,
                            "name": "MemberAccess",
                            "src": "2393:45:28"
                          }
                        ],
                        "id": 8658,
                        "name": "FunctionCall",
                        "src": "2393:47:28"
                      }
                    ],
                    "id": 8659,
                    "name": "VariableDeclarationStatement",
                    "src": "2370:70:28"
                  },
                  {
                    "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"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_f95a7dd47660fc63dd51c6ca8448832be948519badc589a89c702a3dfe207602",
                                  "typeString": "literal_string \"Not enough TBTC for TDT exchange\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 8660,
                            "name": "Identifier",
                            "src": "2450:7:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "balanceOf",
                                      "referencedDeclaration": 17007,
                                      "type": "function (address) view external returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 8582,
                                          "type": "contract TBTCToken",
                                          "value": "tbtcToken"
                                        },
                                        "id": 8661,
                                        "name": "Identifier",
                                        "src": "2471:9:28"
                                      }
                                    ],
                                    "id": 8662,
                                    "name": "MemberAccess",
                                    "src": "2471:19:28"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "sender",
                                      "referencedDeclaration": null,
                                      "type": "address payable"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 18360,
                                          "type": "msg",
                                          "value": "msg"
                                        },
                                        "id": 8663,
                                        "name": "Identifier",
                                        "src": "2491:3:28"
                                      }
                                    ],
                                    "id": 8664,
                                    "name": "MemberAccess",
                                    "src": "2491:10:28"
                                  }
                                ],
                                "id": 8665,
                                "name": "FunctionCall",
                                "src": "2471:31:28"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8649,
                                  "type": "uint256",
                                  "value": "depositValue"
                                },
                                "id": 8666,
                                "name": "Identifier",
                                "src": "2506:12:28"
                              }
                            ],
                            "id": 8667,
                            "name": "BinaryOperation",
                            "src": "2471:47:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "4e6f7420656e6f756768205442544320666f72205444542065786368616e6765",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Not enough TBTC for TDT exchange\"",
                              "value": "Not enough TBTC for TDT exchange"
                            },
                            "id": 8668,
                            "name": "Literal",
                            "src": "2532:34:28"
                          }
                        ],
                        "id": 8669,
                        "name": "FunctionCall",
                        "src": "2450:126:28"
                      }
                    ],
                    "id": 8670,
                    "name": "ExpressionStatement",
                    "src": "2450:126:28"
                  },
                  {
                    "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_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "burnFrom",
                              "referencedDeclaration": 8512,
                              "type": "function (address,uint256) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8582,
                                  "type": "contract TBTCToken",
                                  "value": "tbtcToken"
                                },
                                "id": 8671,
                                "name": "Identifier",
                                "src": "2586:9:28"
                              }
                            ],
                            "id": 8673,
                            "name": "MemberAccess",
                            "src": "2586:18:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18360,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 8674,
                                "name": "Identifier",
                                "src": "2605:3:28"
                              }
                            ],
                            "id": 8675,
                            "name": "MemberAccess",
                            "src": "2605:10:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8649,
                              "type": "uint256",
                              "value": "depositValue"
                            },
                            "id": 8676,
                            "name": "Identifier",
                            "src": "2617:12:28"
                          }
                        ],
                        "id": 8677,
                        "name": "FunctionCall",
                        "src": "2586:44:28"
                      }
                    ],
                    "id": 8678,
                    "name": "ExpressionStatement",
                    "src": "2586:44:28"
                  },
                  {
                    "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"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_1b6051e6b5b6abd7e8969dde06da062cc87a0aba61cd0b3291aa6014f6cd874e",
                                  "typeString": "literal_string \"Deposit is locked\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 8679,
                            "name": "Identifier",
                            "src": "2772:7:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "address",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "ownerOf",
                                      "referencedDeclaration": 17591,
                                      "type": "function (uint256) view external returns (address)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 8584,
                                          "type": "contract TBTCDepositToken",
                                          "value": "tbtcDepositToken"
                                        },
                                        "id": 8680,
                                        "name": "Identifier",
                                        "src": "2793:16:28"
                                      }
                                    ],
                                    "id": 8681,
                                    "name": "MemberAccess",
                                    "src": "2793:24:28"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8628,
                                      "type": "uint256",
                                      "value": "_tdtId"
                                    },
                                    "id": 8682,
                                    "name": "Identifier",
                                    "src": "2818:6:28"
                                  }
                                ],
                                "id": 8683,
                                "name": "FunctionCall",
                                "src": "2793:32:28"
                              },
                              {
                                "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$_VendingMachine_$9123",
                                          "typeString": "contract VendingMachine"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)",
                                      "value": "address"
                                    },
                                    "id": 8684,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "2829:7:28"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 18460,
                                      "type": "contract VendingMachine",
                                      "value": "this"
                                    },
                                    "id": 8685,
                                    "name": "Identifier",
                                    "src": "2837:4:28"
                                  }
                                ],
                                "id": 8686,
                                "name": "FunctionCall",
                                "src": "2829:13:28"
                              }
                            ],
                            "id": 8687,
                            "name": "BinaryOperation",
                            "src": "2793:49:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "4465706f736974206973206c6f636b6564",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Deposit is locked\"",
                              "value": "Deposit is locked"
                            },
                            "id": 8688,
                            "name": "Literal",
                            "src": "2856:19:28"
                          }
                        ],
                        "id": 8689,
                        "name": "FunctionCall",
                        "src": "2772:113:28"
                      }
                    ],
                    "id": 8690,
                    "name": "ExpressionStatement",
                    "src": "2772:113:28"
                  },
                  {
                    "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_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "transferFrom",
                              "referencedDeclaration": 17730,
                              "type": "function (address,address,uint256) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8584,
                                  "type": "contract TBTCDepositToken",
                                  "value": "tbtcDepositToken"
                                },
                                "id": 8691,
                                "name": "Identifier",
                                "src": "2895:16:28"
                              }
                            ],
                            "id": 8693,
                            "name": "MemberAccess",
                            "src": "2895:29:28"
                          },
                          {
                            "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$_VendingMachine_$9123",
                                      "typeString": "contract VendingMachine"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)",
                                  "value": "address"
                                },
                                "id": 8694,
                                "name": "ElementaryTypeNameExpression",
                                "src": "2925:7:28"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18460,
                                  "type": "contract VendingMachine",
                                  "value": "this"
                                },
                                "id": 8695,
                                "name": "Identifier",
                                "src": "2933:4:28"
                              }
                            ],
                            "id": 8696,
                            "name": "FunctionCall",
                            "src": "2925:13:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18360,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 8697,
                                "name": "Identifier",
                                "src": "2940:3:28"
                              }
                            ],
                            "id": 8698,
                            "name": "MemberAccess",
                            "src": "2940:10:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8628,
                              "type": "uint256",
                              "value": "_tdtId"
                            },
                            "id": 8699,
                            "name": "Identifier",
                            "src": "2952:6:28"
                          }
                        ],
                        "id": 8700,
                        "name": "FunctionCall",
                        "src": "2895:64:28"
                      }
                    ],
                    "id": 8701,
                    "name": "ExpressionStatement",
                    "src": "2895:64:28"
                  }
                ],
                "id": 8702,
                "name": "Block",
                "src": "2162:804:28"
              }
            ],
            "id": 8703,
            "name": "FunctionDefinition",
            "src": "2118:848:28"
          },
          {
            "attributes": {
              "documentation": "@notice Transfer the tBTC Deposit Token and mint TBTC.\n @dev    Transfers TDT from caller to vending machine, and mints TBTC to caller.\n         Vending Machine must be approved to transfer TDT by the caller.\n @param _tdtId ID of tBTC Deposit Token to sell.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "tdtToTbtc",
              "scope": 9123,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_tdtId",
                      "scope": 8820,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 8704,
                        "name": "ElementaryTypeName",
                        "src": "3278:7:28"
                      }
                    ],
                    "id": 8705,
                    "name": "VariableDeclaration",
                    "src": "3278:14:28"
                  }
                ],
                "id": 8706,
                "name": "ParameterList",
                "src": "3277:16:28"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 8707,
                "name": "ParameterList",
                "src": "3301:0:28"
              },
              {
                "children": [
                  {
                    "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"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_7dc83a5a17125a17ee5b2d669dbee7923570818e4951396bb4642237d0a2bbe4",
                                  "typeString": "literal_string \"tBTC Deposit Token does not exist\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 8708,
                            "name": "Identifier",
                            "src": "3311:7:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "exists",
                                  "referencedDeclaration": 6810,
                                  "type": "function (uint256) view external returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8584,
                                      "type": "contract TBTCDepositToken",
                                      "value": "tbtcDepositToken"
                                    },
                                    "id": 8709,
                                    "name": "Identifier",
                                    "src": "3332:16:28"
                                  }
                                ],
                                "id": 8710,
                                "name": "MemberAccess",
                                "src": "3332:23:28"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8705,
                                  "type": "uint256",
                                  "value": "_tdtId"
                                },
                                "id": 8711,
                                "name": "Identifier",
                                "src": "3356:6:28"
                              }
                            ],
                            "id": 8712,
                            "name": "FunctionCall",
                            "src": "3332:31:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "74425443204465706f73697420546f6b656e20646f6573206e6f74206578697374",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"tBTC Deposit Token does not exist\"",
                              "value": "tBTC Deposit Token does not exist"
                            },
                            "id": 8713,
                            "name": "Literal",
                            "src": "3377:35:28"
                          }
                        ],
                        "id": 8714,
                        "name": "FunctionCall",
                        "src": "3311:111:28"
                      }
                    ],
                    "id": 8715,
                    "name": "ExpressionStatement",
                    "src": "3311:111:28"
                  },
                  {
                    "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"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_c21bbbdd48d64ddf86406b2b294c1812da230a697a7327d81acdb47492a78bee",
                                  "typeString": "literal_string \"Deposit must be qualified\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 8716,
                            "name": "Identifier",
                            "src": "3432:7:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8851,
                                  "type": "function (address payable) view returns (bool)",
                                  "value": "isQualified"
                                },
                                "id": 8717,
                                "name": "Identifier",
                                "src": "3440:11:28"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "address payable",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)",
                                      "value": "address"
                                    },
                                    "id": 8718,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "3452:7:28"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8705,
                                      "type": "uint256",
                                      "value": "_tdtId"
                                    },
                                    "id": 8719,
                                    "name": "Identifier",
                                    "src": "3460:6:28"
                                  }
                                ],
                                "id": 8720,
                                "name": "FunctionCall",
                                "src": "3452:15:28"
                              }
                            ],
                            "id": 8721,
                            "name": "FunctionCall",
                            "src": "3440:28:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "4465706f736974206d757374206265207175616c6966696564",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Deposit must be qualified\"",
                              "value": "Deposit must be qualified"
                            },
                            "id": 8722,
                            "name": "Literal",
                            "src": "3470:27:28"
                          }
                        ],
                        "id": 8723,
                        "name": "FunctionCall",
                        "src": "3432:66:28"
                      }
                    ],
                    "id": 8724,
                    "name": "ExpressionStatement",
                    "src": "3432:66:28"
                  },
                  {
                    "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_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "transferFrom",
                              "referencedDeclaration": 17730,
                              "type": "function (address,address,uint256) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8584,
                                  "type": "contract TBTCDepositToken",
                                  "value": "tbtcDepositToken"
                                },
                                "id": 8725,
                                "name": "Identifier",
                                "src": "3509:16:28"
                              }
                            ],
                            "id": 8727,
                            "name": "MemberAccess",
                            "src": "3509:29:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18360,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 8728,
                                "name": "Identifier",
                                "src": "3539:3:28"
                              }
                            ],
                            "id": 8729,
                            "name": "MemberAccess",
                            "src": "3539:10:28"
                          },
                          {
                            "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$_VendingMachine_$9123",
                                      "typeString": "contract VendingMachine"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)",
                                  "value": "address"
                                },
                                "id": 8730,
                                "name": "ElementaryTypeNameExpression",
                                "src": "3551:7:28"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18460,
                                  "type": "contract VendingMachine",
                                  "value": "this"
                                },
                                "id": 8731,
                                "name": "Identifier",
                                "src": "3559:4:28"
                              }
                            ],
                            "id": 8732,
                            "name": "FunctionCall",
                            "src": "3551:13:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8705,
                              "type": "uint256",
                              "value": "_tdtId"
                            },
                            "id": 8733,
                            "name": "Identifier",
                            "src": "3566:6:28"
                          }
                        ],
                        "id": 8734,
                        "name": "FunctionCall",
                        "src": "3509:64:28"
                      }
                    ],
                    "id": 8735,
                    "name": "ExpressionStatement",
                    "src": "3509:64:28"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        8737
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "deposit",
                          "scope": 8819,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract Deposit",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Deposit",
                              "referencedDeclaration": 1134,
                              "type": "contract Deposit"
                            },
                            "id": 8736,
                            "name": "UserDefinedTypeName",
                            "src": "3584:7:28"
                          }
                        ],
                        "id": 8737,
                        "name": "VariableDeclaration",
                        "src": "3584:15:28"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract Deposit",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1134,
                              "type": "type(contract Deposit)",
                              "value": "Deposit"
                            },
                            "id": 8738,
                            "name": "Identifier",
                            "src": "3602:7:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "address payable",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)",
                                  "value": "address"
                                },
                                "id": 8739,
                                "name": "ElementaryTypeNameExpression",
                                "src": "3610:7:28"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint160",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(uint160)",
                                      "value": "uint160"
                                    },
                                    "id": 8740,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "3618:7:28"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8705,
                                      "type": "uint256",
                                      "value": "_tdtId"
                                    },
                                    "id": 8741,
                                    "name": "Identifier",
                                    "src": "3626:6:28"
                                  }
                                ],
                                "id": 8742,
                                "name": "FunctionCall",
                                "src": "3618:15:28"
                              }
                            ],
                            "id": 8743,
                            "name": "FunctionCall",
                            "src": "3610:24:28"
                          }
                        ],
                        "id": 8744,
                        "name": "FunctionCall",
                        "src": "3602:33:28"
                      }
                    ],
                    "id": 8745,
                    "name": "VariableDeclarationStatement",
                    "src": "3584:51:28"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        8747
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "signerFee",
                          "scope": 8819,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 8746,
                            "name": "ElementaryTypeName",
                            "src": "3645:7:28"
                          }
                        ],
                        "id": 8747,
                        "name": "VariableDeclaration",
                        "src": "3645:17:28"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "signerFeeTbtc",
                              "referencedDeclaration": 588,
                              "type": "function () view external returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8737,
                                  "type": "contract Deposit",
                                  "value": "deposit"
                                },
                                "id": 8748,
                                "name": "Identifier",
                                "src": "3665:7:28"
                              }
                            ],
                            "id": 8749,
                            "name": "MemberAccess",
                            "src": "3665:21:28"
                          }
                        ],
                        "id": 8750,
                        "name": "FunctionCall",
                        "src": "3665:23:28"
                      }
                    ],
                    "id": 8751,
                    "name": "VariableDeclarationStatement",
                    "src": "3645:43:28"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        8753
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "depositValue",
                          "scope": 8819,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 8752,
                            "name": "ElementaryTypeName",
                            "src": "3698:7:28"
                          }
                        ],
                        "id": 8753,
                        "name": "VariableDeclaration",
                        "src": "3698:20:28"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "lotSizeTbtc",
                              "referencedDeclaration": 578,
                              "type": "function () view external returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8737,
                                  "type": "contract Deposit",
                                  "value": "deposit"
                                },
                                "id": 8754,
                                "name": "Identifier",
                                "src": "3721:7:28"
                              }
                            ],
                            "id": 8755,
                            "name": "MemberAccess",
                            "src": "3721:19:28"
                          }
                        ],
                        "id": 8756,
                        "name": "FunctionCall",
                        "src": "3721:21:28"
                      }
                    ],
                    "id": 8757,
                    "name": "VariableDeclarationStatement",
                    "src": "3698:44:28"
                  },
                  {
                    "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"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_592c424b1b5690f35dbcaa5e3b2a844fc0cc00f8bdf8e48ecd0f0db7dc515880",
                                  "typeString": "literal_string \"Can't mint more than the max supply cap\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 8758,
                            "name": "Identifier",
                            "src": "3753:7:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8837,
                                  "type": "function (uint256) view returns (bool)",
                                  "value": "canMint"
                                },
                                "id": 8759,
                                "name": "Identifier",
                                "src": "3774:7:28"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8753,
                                  "type": "uint256",
                                  "value": "depositValue"
                                },
                                "id": 8760,
                                "name": "Identifier",
                                "src": "3782:12:28"
                              }
                            ],
                            "id": 8761,
                            "name": "FunctionCall",
                            "src": "3774:21:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "43616e2774206d696e74206d6f7265207468616e20746865206d617820737570706c7920636170",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Can't mint more than the max supply cap\"",
                              "value": "Can't mint more than the max supply cap"
                            },
                            "id": 8762,
                            "name": "Literal",
                            "src": "3809:41:28"
                          }
                        ],
                        "id": 8763,
                        "name": "FunctionCall",
                        "src": "3753:107:28"
                      }
                    ],
                    "id": 8764,
                    "name": "ExpressionStatement",
                    "src": "3753:107:28"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "balanceOf",
                                  "referencedDeclaration": 17007,
                                  "type": "function (address) view external returns (uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8582,
                                      "type": "contract TBTCToken",
                                      "value": "tbtcToken"
                                    },
                                    "id": 8765,
                                    "name": "Identifier",
                                    "src": "3956:9:28"
                                  }
                                ],
                                "id": 8766,
                                "name": "MemberAccess",
                                "src": "3956:19:28"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "address payable",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)",
                                      "value": "address"
                                    },
                                    "id": 8767,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "3976:7:28"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8705,
                                      "type": "uint256",
                                      "value": "_tdtId"
                                    },
                                    "id": 8768,
                                    "name": "Identifier",
                                    "src": "3984:6:28"
                                  }
                                ],
                                "id": 8769,
                                "name": "FunctionCall",
                                "src": "3976:15:28"
                              }
                            ],
                            "id": 8770,
                            "name": "FunctionCall",
                            "src": "3956:36:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8747,
                              "type": "uint256",
                              "value": "signerFee"
                            },
                            "id": 8771,
                            "name": "Identifier",
                            "src": "3995:9:28"
                          }
                        ],
                        "id": 8772,
                        "name": "BinaryOperation",
                        "src": "3956:48:28"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bool",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "mint",
                                      "referencedDeclaration": 8499,
                                      "type": "function (address,uint256) external returns (bool)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 8582,
                                          "type": "contract TBTCToken",
                                          "value": "tbtcToken"
                                        },
                                        "id": 8773,
                                        "name": "Identifier",
                                        "src": "4020:9:28"
                                      }
                                    ],
                                    "id": 8775,
                                    "name": "MemberAccess",
                                    "src": "4020:14:28"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "sender",
                                      "referencedDeclaration": null,
                                      "type": "address payable"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 18360,
                                          "type": "msg",
                                          "value": "msg"
                                        },
                                        "id": 8776,
                                        "name": "Identifier",
                                        "src": "4035:3:28"
                                      }
                                    ],
                                    "id": 8777,
                                    "name": "MemberAccess",
                                    "src": "4035:10:28"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "sub",
                                          "referencedDeclaration": 16774,
                                          "type": "function (uint256,uint256) pure returns (uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 8753,
                                              "type": "uint256",
                                              "value": "depositValue"
                                            },
                                            "id": 8778,
                                            "name": "Identifier",
                                            "src": "4047:12:28"
                                          }
                                        ],
                                        "id": 8779,
                                        "name": "MemberAccess",
                                        "src": "4047:16:28"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 8747,
                                          "type": "uint256",
                                          "value": "signerFee"
                                        },
                                        "id": 8780,
                                        "name": "Identifier",
                                        "src": "4064:9:28"
                                      }
                                    ],
                                    "id": 8781,
                                    "name": "FunctionCall",
                                    "src": "4047:27:28"
                                  }
                                ],
                                "id": 8782,
                                "name": "FunctionCall",
                                "src": "4020:55:28"
                              }
                            ],
                            "id": 8783,
                            "name": "ExpressionStatement",
                            "src": "4020:55:28"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bool",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "mint",
                                      "referencedDeclaration": 8499,
                                      "type": "function (address,uint256) external returns (bool)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 8582,
                                          "type": "contract TBTCToken",
                                          "value": "tbtcToken"
                                        },
                                        "id": 8784,
                                        "name": "Identifier",
                                        "src": "4089:9:28"
                                      }
                                    ],
                                    "id": 8786,
                                    "name": "MemberAccess",
                                    "src": "4089:14:28"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "address payable",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(address)",
                                          "value": "address"
                                        },
                                        "id": 8787,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "4104:7:28"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 8705,
                                          "type": "uint256",
                                          "value": "_tdtId"
                                        },
                                        "id": 8788,
                                        "name": "Identifier",
                                        "src": "4112:6:28"
                                      }
                                    ],
                                    "id": 8789,
                                    "name": "FunctionCall",
                                    "src": "4104:15:28"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8747,
                                      "type": "uint256",
                                      "value": "signerFee"
                                    },
                                    "id": 8790,
                                    "name": "Identifier",
                                    "src": "4121:9:28"
                                  }
                                ],
                                "id": 8791,
                                "name": "FunctionCall",
                                "src": "4089:42:28"
                              }
                            ],
                            "id": 8792,
                            "name": "ExpressionStatement",
                            "src": "4089:42:28"
                          }
                        ],
                        "id": 8793,
                        "name": "Block",
                        "src": "4006:136:28"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bool",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "mint",
                                      "referencedDeclaration": 8499,
                                      "type": "function (address,uint256) external returns (bool)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 8582,
                                          "type": "contract TBTCToken",
                                          "value": "tbtcToken"
                                        },
                                        "id": 8794,
                                        "name": "Identifier",
                                        "src": "4162:9:28"
                                      }
                                    ],
                                    "id": 8796,
                                    "name": "MemberAccess",
                                    "src": "4162:14:28"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "sender",
                                      "referencedDeclaration": null,
                                      "type": "address payable"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 18360,
                                          "type": "msg",
                                          "value": "msg"
                                        },
                                        "id": 8797,
                                        "name": "Identifier",
                                        "src": "4177:3:28"
                                      }
                                    ],
                                    "id": 8798,
                                    "name": "MemberAccess",
                                    "src": "4177:10:28"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8753,
                                      "type": "uint256",
                                      "value": "depositValue"
                                    },
                                    "id": 8799,
                                    "name": "Identifier",
                                    "src": "4189:12:28"
                                  }
                                ],
                                "id": 8800,
                                "name": "FunctionCall",
                                "src": "4162:40:28"
                              }
                            ],
                            "id": 8801,
                            "name": "ExpressionStatement",
                            "src": "4162:40:28"
                          }
                        ],
                        "id": 8802,
                        "name": "Block",
                        "src": "4148:65:28"
                      }
                    ],
                    "id": 8803,
                    "name": "IfStatement",
                    "src": "3952:261:28"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!",
                          "prefix": true,
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "exists",
                                  "referencedDeclaration": 6299,
                                  "type": "function (uint256) view external returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8586,
                                      "type": "contract FeeRebateToken",
                                      "value": "feeRebateToken"
                                    },
                                    "id": 8804,
                                    "name": "Identifier",
                                    "src": "4296:14:28"
                                  }
                                ],
                                "id": 8805,
                                "name": "MemberAccess",
                                "src": "4296:21:28"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8705,
                                  "type": "uint256",
                                  "value": "_tdtId"
                                },
                                "id": 8806,
                                "name": "Identifier",
                                "src": "4318:6:28"
                              }
                            ],
                            "id": 8807,
                            "name": "FunctionCall",
                            "src": "4296:29:28"
                          }
                        ],
                        "id": 8808,
                        "name": "UnaryOperation",
                        "src": "4295:30:28"
                      },
                      {
                        "children": [
                          {
                            "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_payable",
                                          "typeString": "address payable"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "mint",
                                      "referencedDeclaration": 6287,
                                      "type": "function (address,uint256) external"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 8586,
                                          "type": "contract FeeRebateToken",
                                          "value": "feeRebateToken"
                                        },
                                        "id": 8809,
                                        "name": "Identifier",
                                        "src": "4341:14:28"
                                      }
                                    ],
                                    "id": 8811,
                                    "name": "MemberAccess",
                                    "src": "4341:19:28"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "sender",
                                      "referencedDeclaration": null,
                                      "type": "address payable"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 18360,
                                          "type": "msg",
                                          "value": "msg"
                                        },
                                        "id": 8812,
                                        "name": "Identifier",
                                        "src": "4361:3:28"
                                      }
                                    ],
                                    "id": 8813,
                                    "name": "MemberAccess",
                                    "src": "4361:10:28"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8705,
                                      "type": "uint256",
                                      "value": "_tdtId"
                                    },
                                    "id": 8814,
                                    "name": "Identifier",
                                    "src": "4373:6:28"
                                  }
                                ],
                                "id": 8815,
                                "name": "FunctionCall",
                                "src": "4341:39:28"
                              }
                            ],
                            "id": 8816,
                            "name": "ExpressionStatement",
                            "src": "4341:39:28"
                          }
                        ],
                        "id": 8817,
                        "name": "Block",
                        "src": "4327:64:28"
                      }
                    ],
                    "id": 8818,
                    "name": "IfStatement",
                    "src": "4291:100:28"
                  }
                ],
                "id": 8819,
                "name": "Block",
                "src": "3301:1096:28"
              }
            ],
            "id": 8820,
            "name": "FunctionDefinition",
            "src": "3259:1138:28"
          },
          {
            "attributes": {
              "documentation": "@notice Return whether an amount of TBTC can be minted according to the supply cap\n         schedule\n @dev This function is also used by TBTCSystem to decide whether to allow a new deposit.\n @return True if the amount can be minted without hitting the max supply, false otherwise.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "canMint",
              "scope": 9123,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "amount",
                      "scope": 8837,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 8821,
                        "name": "ElementaryTypeName",
                        "src": "4730:7:28"
                      }
                    ],
                    "id": 8822,
                    "name": "VariableDeclaration",
                    "src": "4730:14:28"
                  }
                ],
                "id": 8823,
                "name": "ParameterList",
                "src": "4729:16:28"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 8837,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 8824,
                        "name": "ElementaryTypeName",
                        "src": "4767:4:28"
                      }
                    ],
                    "id": 8825,
                    "name": "VariableDeclaration",
                    "src": "4767:4:28"
                  }
                ],
                "id": 8826,
                "name": "ParameterList",
                "src": "4766:6:28"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 8826
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "add",
                                  "referencedDeclaration": 16749,
                                  "type": "function (uint256,uint256) pure returns (uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            null
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 8861,
                                          "type": "function () view returns (uint256)",
                                          "value": "getMintedSupply"
                                        },
                                        "id": 8827,
                                        "name": "Identifier",
                                        "src": "4790:15:28"
                                      }
                                    ],
                                    "id": 8828,
                                    "name": "FunctionCall",
                                    "src": "4790:17:28"
                                  }
                                ],
                                "id": 8829,
                                "name": "MemberAccess",
                                "src": "4790:21:28"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8822,
                                  "type": "uint256",
                                  "value": "amount"
                                },
                                "id": 8830,
                                "name": "Identifier",
                                "src": "4812:6:28"
                              }
                            ],
                            "id": 8831,
                            "name": "FunctionCall",
                            "src": "4790:29:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8990,
                                  "type": "function () view returns (uint256)",
                                  "value": "getMaxSupply"
                                },
                                "id": 8832,
                                "name": "Identifier",
                                "src": "4822:12:28"
                              }
                            ],
                            "id": 8833,
                            "name": "FunctionCall",
                            "src": "4822:14:28"
                          }
                        ],
                        "id": 8834,
                        "name": "BinaryOperation",
                        "src": "4790:46:28"
                      }
                    ],
                    "id": 8835,
                    "name": "Return",
                    "src": "4783:53:28"
                  }
                ],
                "id": 8836,
                "name": "Block",
                "src": "4773:70:28"
              }
            ],
            "id": 8837,
            "name": "FunctionDefinition",
            "src": "4713:130:28"
          },
          {
            "attributes": {
              "documentation": "@notice Determines whether a deposit is qualified for minting TBTC.\n @param _depositAddress The address of the deposit",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "isQualified",
              "scope": 9123,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_depositAddress",
                      "scope": 8851,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address payable",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "payable",
                          "type": "address payable"
                        },
                        "id": 8838,
                        "name": "ElementaryTypeName",
                        "src": "5004:15:28"
                      }
                    ],
                    "id": 8839,
                    "name": "VariableDeclaration",
                    "src": "5004:31:28"
                  }
                ],
                "id": 8840,
                "name": "ParameterList",
                "src": "5003:33:28"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 8851,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 8841,
                        "name": "ElementaryTypeName",
                        "src": "5082:4:28"
                      }
                    ],
                    "id": 8842,
                    "name": "VariableDeclaration",
                    "src": "5082:4:28"
                  }
                ],
                "id": 8843,
                "name": "ParameterList",
                "src": "5081:6:28"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 8843
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "inActive",
                              "referencedDeclaration": 609,
                              "type": "function () view external returns (bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "contract Deposit",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1134,
                                      "type": "type(contract Deposit)",
                                      "value": "Deposit"
                                    },
                                    "id": 8844,
                                    "name": "Identifier",
                                    "src": "5109:7:28"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8839,
                                      "type": "address payable",
                                      "value": "_depositAddress"
                                    },
                                    "id": 8845,
                                    "name": "Identifier",
                                    "src": "5117:15:28"
                                  }
                                ],
                                "id": 8846,
                                "name": "FunctionCall",
                                "src": "5109:24:28"
                              }
                            ],
                            "id": 8847,
                            "name": "MemberAccess",
                            "src": "5109:33:28"
                          }
                        ],
                        "id": 8848,
                        "name": "FunctionCall",
                        "src": "5109:35:28"
                      }
                    ],
                    "id": 8849,
                    "name": "Return",
                    "src": "5102:42:28"
                  }
                ],
                "id": 8850,
                "name": "Block",
                "src": "5092:59:28"
              }
            ],
            "id": 8851,
            "name": "FunctionDefinition",
            "src": "4983:168:28"
          },
          {
            "attributes": {
              "documentation": "@notice Return the minted TBTC supply in weitoshis (BTC * 10 ** 18).",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "getMintedSupply",
              "scope": 9123,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 8852,
                "name": "ParameterList",
                "src": "5258:2:28"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 8861,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 8853,
                        "name": "ElementaryTypeName",
                        "src": "5282:7:28"
                      }
                    ],
                    "id": 8854,
                    "name": "VariableDeclaration",
                    "src": "5282:7:28"
                  }
                ],
                "id": 8855,
                "name": "ParameterList",
                "src": "5281:9:28"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 8855
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "totalSupply",
                              "referencedDeclaration": 16995,
                              "type": "function () view external returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8582,
                                  "type": "contract TBTCToken",
                                  "value": "tbtcToken"
                                },
                                "id": 8856,
                                "name": "Identifier",
                                "src": "5308:9:28"
                              }
                            ],
                            "id": 8857,
                            "name": "MemberAccess",
                            "src": "5308:21:28"
                          }
                        ],
                        "id": 8858,
                        "name": "FunctionCall",
                        "src": "5308:23:28"
                      }
                    ],
                    "id": 8859,
                    "name": "Return",
                    "src": "5301:30:28"
                  }
                ],
                "id": 8860,
                "name": "Block",
                "src": "5291:47:28"
              }
            ],
            "id": 8861,
            "name": "FunctionDefinition",
            "src": "5234:104:28"
          },
          {
            "attributes": {
              "documentation": "@notice Get the maximum TBTC token supply based on the age of the\n         contract deployment. The supply cap starts at 2 BTC for the two\n         days, 100 for the first week, 250 for the next, then 500, 750,\n         1000, 1500, 2000, 2500, and 3000... finally removing the minting\n         restriction after 9 weeks and returning 21M BTC as a sanity\n         check.\n @return The max supply in weitoshis (BTC * 10 ** 18).",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "getMaxSupply",
              "scope": 9123,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 8862,
                "name": "ParameterList",
                "src": "5840:2:28"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 8990,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 8863,
                        "name": "ElementaryTypeName",
                        "src": "5864:7:28"
                      }
                    ],
                    "id": 8864,
                    "name": "VariableDeclaration",
                    "src": "5864:7:28"
                  }
                ],
                "id": 8865,
                "name": "ParameterList",
                "src": "5863:9:28"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        8867
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "age",
                          "scope": 8989,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 8866,
                            "name": "ElementaryTypeName",
                            "src": "5883:7:28"
                          }
                        ],
                        "id": 8867,
                        "name": "VariableDeclaration",
                        "src": "5883:11:28"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "-",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "timestamp",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18350,
                                  "type": "block",
                                  "value": "block"
                                },
                                "id": 8868,
                                "name": "Identifier",
                                "src": "5897:5:28"
                              }
                            ],
                            "id": 8869,
                            "name": "MemberAccess",
                            "src": "5897:15:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8588,
                              "type": "uint256",
                              "value": "createdAt"
                            },
                            "id": 8870,
                            "name": "Identifier",
                            "src": "5915:9:28"
                          }
                        ],
                        "id": 8871,
                        "name": "BinaryOperation",
                        "src": "5897:27:28"
                      }
                    ],
                    "id": 8872,
                    "name": "VariableDeclarationStatement",
                    "src": "5883:41:28"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8867,
                              "type": "uint256",
                              "value": "age"
                            },
                            "id": 8873,
                            "name": "Identifier",
                            "src": "5939:3:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "32",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": "days",
                              "token": "number",
                              "type": "int_const 172800",
                              "value": "2"
                            },
                            "id": 8874,
                            "name": "Literal",
                            "src": "5945:6:28"
                          }
                        ],
                        "id": 8875,
                        "name": "BinaryOperation",
                        "src": "5939:12:28"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 8865
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_2000000000000000000_by_1",
                                    "typeString": "int_const 2000000000000000000"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "operator": "*",
                                  "type": "int_const 2000000000000000000"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "32",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 2",
                                      "value": "2"
                                    },
                                    "id": 8876,
                                    "name": "Literal",
                                    "src": "5974:1:28"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                        "typeString": "int_const 1000000000000000000"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "operator": "**",
                                      "type": "int_const 1000000000000000000"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3130",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 10",
                                          "value": "10"
                                        },
                                        "id": 8877,
                                        "name": "Literal",
                                        "src": "5978:2:28"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3138",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 18",
                                          "value": "18"
                                        },
                                        "id": 8878,
                                        "name": "Literal",
                                        "src": "5982:2:28"
                                      }
                                    ],
                                    "id": 8879,
                                    "name": "BinaryOperation",
                                    "src": "5978:6:28"
                                  }
                                ],
                                "id": 8880,
                                "name": "BinaryOperation",
                                "src": "5974:10:28"
                              }
                            ],
                            "id": 8881,
                            "name": "Return",
                            "src": "5967:17:28"
                          }
                        ],
                        "id": 8882,
                        "name": "Block",
                        "src": "5953:42:28"
                      }
                    ],
                    "id": 8883,
                    "name": "IfStatement",
                    "src": "5935:60:28"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8867,
                              "type": "uint256",
                              "value": "age"
                            },
                            "id": 8884,
                            "name": "Identifier",
                            "src": "6009:3:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "37",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": "days",
                              "token": "number",
                              "type": "int_const 604800",
                              "value": "7"
                            },
                            "id": 8885,
                            "name": "Literal",
                            "src": "6015:6:28"
                          }
                        ],
                        "id": 8886,
                        "name": "BinaryOperation",
                        "src": "6009:12:28"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 8865
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_100000000000000000000_by_1",
                                    "typeString": "int_const 100000000000000000000"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "operator": "*",
                                  "type": "int_const 100000000000000000000"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "313030",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 100",
                                      "value": "100"
                                    },
                                    "id": 8887,
                                    "name": "Literal",
                                    "src": "6044:3:28"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                        "typeString": "int_const 1000000000000000000"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "operator": "**",
                                      "type": "int_const 1000000000000000000"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3130",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 10",
                                          "value": "10"
                                        },
                                        "id": 8888,
                                        "name": "Literal",
                                        "src": "6050:2:28"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3138",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 18",
                                          "value": "18"
                                        },
                                        "id": 8889,
                                        "name": "Literal",
                                        "src": "6054:2:28"
                                      }
                                    ],
                                    "id": 8890,
                                    "name": "BinaryOperation",
                                    "src": "6050:6:28"
                                  }
                                ],
                                "id": 8891,
                                "name": "BinaryOperation",
                                "src": "6044:12:28"
                              }
                            ],
                            "id": 8892,
                            "name": "Return",
                            "src": "6037:19:28"
                          }
                        ],
                        "id": 8893,
                        "name": "Block",
                        "src": "6023:44:28"
                      }
                    ],
                    "id": 8894,
                    "name": "IfStatement",
                    "src": "6005:62:28"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8867,
                              "type": "uint256",
                              "value": "age"
                            },
                            "id": 8895,
                            "name": "Identifier",
                            "src": "6081:3:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3134",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": "days",
                              "token": "number",
                              "type": "int_const 1209600",
                              "value": "14"
                            },
                            "id": 8896,
                            "name": "Literal",
                            "src": "6087:7:28"
                          }
                        ],
                        "id": 8897,
                        "name": "BinaryOperation",
                        "src": "6081:13:28"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 8865
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_250000000000000000000_by_1",
                                    "typeString": "int_const 250000000000000000000"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "operator": "*",
                                  "type": "int_const 250000000000000000000"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "323530",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 250",
                                      "value": "250"
                                    },
                                    "id": 8898,
                                    "name": "Literal",
                                    "src": "6117:3:28"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                        "typeString": "int_const 1000000000000000000"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "operator": "**",
                                      "type": "int_const 1000000000000000000"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3130",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 10",
                                          "value": "10"
                                        },
                                        "id": 8899,
                                        "name": "Literal",
                                        "src": "6123:2:28"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3138",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 18",
                                          "value": "18"
                                        },
                                        "id": 8900,
                                        "name": "Literal",
                                        "src": "6127:2:28"
                                      }
                                    ],
                                    "id": 8901,
                                    "name": "BinaryOperation",
                                    "src": "6123:6:28"
                                  }
                                ],
                                "id": 8902,
                                "name": "BinaryOperation",
                                "src": "6117:12:28"
                              }
                            ],
                            "id": 8903,
                            "name": "Return",
                            "src": "6110:19:28"
                          }
                        ],
                        "id": 8904,
                        "name": "Block",
                        "src": "6096:44:28"
                      }
                    ],
                    "id": 8905,
                    "name": "IfStatement",
                    "src": "6077:63:28"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8867,
                              "type": "uint256",
                              "value": "age"
                            },
                            "id": 8906,
                            "name": "Identifier",
                            "src": "6154:3:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3231",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": "days",
                              "token": "number",
                              "type": "int_const 1814400",
                              "value": "21"
                            },
                            "id": 8907,
                            "name": "Literal",
                            "src": "6160:7:28"
                          }
                        ],
                        "id": 8908,
                        "name": "BinaryOperation",
                        "src": "6154:13:28"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 8865
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_500000000000000000000_by_1",
                                    "typeString": "int_const 500000000000000000000"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "operator": "*",
                                  "type": "int_const 500000000000000000000"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "353030",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 500",
                                      "value": "500"
                                    },
                                    "id": 8909,
                                    "name": "Literal",
                                    "src": "6190:3:28"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                        "typeString": "int_const 1000000000000000000"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "operator": "**",
                                      "type": "int_const 1000000000000000000"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3130",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 10",
                                          "value": "10"
                                        },
                                        "id": 8910,
                                        "name": "Literal",
                                        "src": "6196:2:28"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3138",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 18",
                                          "value": "18"
                                        },
                                        "id": 8911,
                                        "name": "Literal",
                                        "src": "6200:2:28"
                                      }
                                    ],
                                    "id": 8912,
                                    "name": "BinaryOperation",
                                    "src": "6196:6:28"
                                  }
                                ],
                                "id": 8913,
                                "name": "BinaryOperation",
                                "src": "6190:12:28"
                              }
                            ],
                            "id": 8914,
                            "name": "Return",
                            "src": "6183:19:28"
                          }
                        ],
                        "id": 8915,
                        "name": "Block",
                        "src": "6169:44:28"
                      }
                    ],
                    "id": 8916,
                    "name": "IfStatement",
                    "src": "6150:63:28"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8867,
                              "type": "uint256",
                              "value": "age"
                            },
                            "id": 8917,
                            "name": "Identifier",
                            "src": "6227:3:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3238",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": "days",
                              "token": "number",
                              "type": "int_const 2419200",
                              "value": "28"
                            },
                            "id": 8918,
                            "name": "Literal",
                            "src": "6233:7:28"
                          }
                        ],
                        "id": 8919,
                        "name": "BinaryOperation",
                        "src": "6227:13:28"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 8865
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_750000000000000000000_by_1",
                                    "typeString": "int_const 750000000000000000000"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "operator": "*",
                                  "type": "int_const 750000000000000000000"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "373530",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 750",
                                      "value": "750"
                                    },
                                    "id": 8920,
                                    "name": "Literal",
                                    "src": "6263:3:28"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                        "typeString": "int_const 1000000000000000000"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "operator": "**",
                                      "type": "int_const 1000000000000000000"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3130",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 10",
                                          "value": "10"
                                        },
                                        "id": 8921,
                                        "name": "Literal",
                                        "src": "6269:2:28"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3138",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 18",
                                          "value": "18"
                                        },
                                        "id": 8922,
                                        "name": "Literal",
                                        "src": "6273:2:28"
                                      }
                                    ],
                                    "id": 8923,
                                    "name": "BinaryOperation",
                                    "src": "6269:6:28"
                                  }
                                ],
                                "id": 8924,
                                "name": "BinaryOperation",
                                "src": "6263:12:28"
                              }
                            ],
                            "id": 8925,
                            "name": "Return",
                            "src": "6256:19:28"
                          }
                        ],
                        "id": 8926,
                        "name": "Block",
                        "src": "6242:44:28"
                      }
                    ],
                    "id": 8927,
                    "name": "IfStatement",
                    "src": "6223:63:28"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8867,
                              "type": "uint256",
                              "value": "age"
                            },
                            "id": 8928,
                            "name": "Identifier",
                            "src": "6300:3:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3335",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": "days",
                              "token": "number",
                              "type": "int_const 3024000",
                              "value": "35"
                            },
                            "id": 8929,
                            "name": "Literal",
                            "src": "6306:7:28"
                          }
                        ],
                        "id": 8930,
                        "name": "BinaryOperation",
                        "src": "6300:13:28"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 8865
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_1000000000000000000000_by_1",
                                    "typeString": "int_const 1000000000000000000000"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "operator": "*",
                                  "type": "int_const 1000000000000000000000"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "31303030",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 1000",
                                      "value": "1000"
                                    },
                                    "id": 8931,
                                    "name": "Literal",
                                    "src": "6336:4:28"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                        "typeString": "int_const 1000000000000000000"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "operator": "**",
                                      "type": "int_const 1000000000000000000"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3130",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 10",
                                          "value": "10"
                                        },
                                        "id": 8932,
                                        "name": "Literal",
                                        "src": "6343:2:28"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3138",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 18",
                                          "value": "18"
                                        },
                                        "id": 8933,
                                        "name": "Literal",
                                        "src": "6347:2:28"
                                      }
                                    ],
                                    "id": 8934,
                                    "name": "BinaryOperation",
                                    "src": "6343:6:28"
                                  }
                                ],
                                "id": 8935,
                                "name": "BinaryOperation",
                                "src": "6336:13:28"
                              }
                            ],
                            "id": 8936,
                            "name": "Return",
                            "src": "6329:20:28"
                          }
                        ],
                        "id": 8937,
                        "name": "Block",
                        "src": "6315:45:28"
                      }
                    ],
                    "id": 8938,
                    "name": "IfStatement",
                    "src": "6296:64:28"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8867,
                              "type": "uint256",
                              "value": "age"
                            },
                            "id": 8939,
                            "name": "Identifier",
                            "src": "6374:3:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3432",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": "days",
                              "token": "number",
                              "type": "int_const 3628800",
                              "value": "42"
                            },
                            "id": 8940,
                            "name": "Literal",
                            "src": "6380:7:28"
                          }
                        ],
                        "id": 8941,
                        "name": "BinaryOperation",
                        "src": "6374:13:28"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 8865
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_1500000000000000000000_by_1",
                                    "typeString": "int_const 1500000000000000000000"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "operator": "*",
                                  "type": "int_const 1500000000000000000000"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "31353030",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 1500",
                                      "value": "1500"
                                    },
                                    "id": 8942,
                                    "name": "Literal",
                                    "src": "6410:4:28"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                        "typeString": "int_const 1000000000000000000"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "operator": "**",
                                      "type": "int_const 1000000000000000000"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3130",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 10",
                                          "value": "10"
                                        },
                                        "id": 8943,
                                        "name": "Literal",
                                        "src": "6417:2:28"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3138",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 18",
                                          "value": "18"
                                        },
                                        "id": 8944,
                                        "name": "Literal",
                                        "src": "6421:2:28"
                                      }
                                    ],
                                    "id": 8945,
                                    "name": "BinaryOperation",
                                    "src": "6417:6:28"
                                  }
                                ],
                                "id": 8946,
                                "name": "BinaryOperation",
                                "src": "6410:13:28"
                              }
                            ],
                            "id": 8947,
                            "name": "Return",
                            "src": "6403:20:28"
                          }
                        ],
                        "id": 8948,
                        "name": "Block",
                        "src": "6389:45:28"
                      }
                    ],
                    "id": 8949,
                    "name": "IfStatement",
                    "src": "6370:64:28"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8867,
                              "type": "uint256",
                              "value": "age"
                            },
                            "id": 8950,
                            "name": "Identifier",
                            "src": "6448:3:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3439",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": "days",
                              "token": "number",
                              "type": "int_const 4233600",
                              "value": "49"
                            },
                            "id": 8951,
                            "name": "Literal",
                            "src": "6454:7:28"
                          }
                        ],
                        "id": 8952,
                        "name": "BinaryOperation",
                        "src": "6448:13:28"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 8865
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_2000000000000000000000_by_1",
                                    "typeString": "int_const 2000000000000000000000"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "operator": "*",
                                  "type": "int_const 2000000000000000000000"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "32303030",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 2000",
                                      "value": "2000"
                                    },
                                    "id": 8953,
                                    "name": "Literal",
                                    "src": "6484:4:28"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                        "typeString": "int_const 1000000000000000000"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "operator": "**",
                                      "type": "int_const 1000000000000000000"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3130",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 10",
                                          "value": "10"
                                        },
                                        "id": 8954,
                                        "name": "Literal",
                                        "src": "6491:2:28"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3138",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 18",
                                          "value": "18"
                                        },
                                        "id": 8955,
                                        "name": "Literal",
                                        "src": "6495:2:28"
                                      }
                                    ],
                                    "id": 8956,
                                    "name": "BinaryOperation",
                                    "src": "6491:6:28"
                                  }
                                ],
                                "id": 8957,
                                "name": "BinaryOperation",
                                "src": "6484:13:28"
                              }
                            ],
                            "id": 8958,
                            "name": "Return",
                            "src": "6477:20:28"
                          }
                        ],
                        "id": 8959,
                        "name": "Block",
                        "src": "6463:45:28"
                      }
                    ],
                    "id": 8960,
                    "name": "IfStatement",
                    "src": "6444:64:28"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8867,
                              "type": "uint256",
                              "value": "age"
                            },
                            "id": 8961,
                            "name": "Identifier",
                            "src": "6522:3:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3536",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": "days",
                              "token": "number",
                              "type": "int_const 4838400",
                              "value": "56"
                            },
                            "id": 8962,
                            "name": "Literal",
                            "src": "6528:7:28"
                          }
                        ],
                        "id": 8963,
                        "name": "BinaryOperation",
                        "src": "6522:13:28"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 8865
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_2500000000000000000000_by_1",
                                    "typeString": "int_const 2500000000000000000000"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "operator": "*",
                                  "type": "int_const 2500000000000000000000"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "32353030",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 2500",
                                      "value": "2500"
                                    },
                                    "id": 8964,
                                    "name": "Literal",
                                    "src": "6558:4:28"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                        "typeString": "int_const 1000000000000000000"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "operator": "**",
                                      "type": "int_const 1000000000000000000"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3130",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 10",
                                          "value": "10"
                                        },
                                        "id": 8965,
                                        "name": "Literal",
                                        "src": "6565:2:28"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3138",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 18",
                                          "value": "18"
                                        },
                                        "id": 8966,
                                        "name": "Literal",
                                        "src": "6569:2:28"
                                      }
                                    ],
                                    "id": 8967,
                                    "name": "BinaryOperation",
                                    "src": "6565:6:28"
                                  }
                                ],
                                "id": 8968,
                                "name": "BinaryOperation",
                                "src": "6558:13:28"
                              }
                            ],
                            "id": 8969,
                            "name": "Return",
                            "src": "6551:20:28"
                          }
                        ],
                        "id": 8970,
                        "name": "Block",
                        "src": "6537:45:28"
                      }
                    ],
                    "id": 8971,
                    "name": "IfStatement",
                    "src": "6518:64:28"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8867,
                              "type": "uint256",
                              "value": "age"
                            },
                            "id": 8972,
                            "name": "Identifier",
                            "src": "6596:3:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3633",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": "days",
                              "token": "number",
                              "type": "int_const 5443200",
                              "value": "63"
                            },
                            "id": 8973,
                            "name": "Literal",
                            "src": "6602:7:28"
                          }
                        ],
                        "id": 8974,
                        "name": "BinaryOperation",
                        "src": "6596:13:28"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 8865
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_rational_3000000000000000000000_by_1",
                                    "typeString": "int_const 3000000000000000000000"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "operator": "*",
                                  "type": "int_const 3000000000000000000000"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "33303030",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 3000",
                                      "value": "3000"
                                    },
                                    "id": 8975,
                                    "name": "Literal",
                                    "src": "6632:4:28"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                        "typeString": "int_const 1000000000000000000"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "operator": "**",
                                      "type": "int_const 1000000000000000000"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3130",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 10",
                                          "value": "10"
                                        },
                                        "id": 8976,
                                        "name": "Literal",
                                        "src": "6639:2:28"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3138",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 18",
                                          "value": "18"
                                        },
                                        "id": 8977,
                                        "name": "Literal",
                                        "src": "6643:2:28"
                                      }
                                    ],
                                    "id": 8978,
                                    "name": "BinaryOperation",
                                    "src": "6639:6:28"
                                  }
                                ],
                                "id": 8979,
                                "name": "BinaryOperation",
                                "src": "6632:13:28"
                              }
                            ],
                            "id": 8980,
                            "name": "Return",
                            "src": "6625:20:28"
                          }
                        ],
                        "id": 8981,
                        "name": "Block",
                        "src": "6611:45:28"
                      }
                    ],
                    "id": 8982,
                    "name": "IfStatement",
                    "src": "6592:64:28"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 8865
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_rational_21000000000000000000000000_by_1",
                            "typeString": "int_const 21000000000000000000000000"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "operator": "*",
                          "type": "int_const 21000000000000000000000000"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "32316536",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 21000000",
                              "value": "21e6"
                            },
                            "id": 8983,
                            "name": "Literal",
                            "src": "6673:4:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                "typeString": "int_const 1000000000000000000"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "operator": "**",
                              "type": "int_const 1000000000000000000"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "3130",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 10",
                                  "value": "10"
                                },
                                "id": 8984,
                                "name": "Literal",
                                "src": "6680:2:28"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "3138",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 18",
                                  "value": "18"
                                },
                                "id": 8985,
                                "name": "Literal",
                                "src": "6684:2:28"
                              }
                            ],
                            "id": 8986,
                            "name": "BinaryOperation",
                            "src": "6680:6:28"
                          }
                        ],
                        "id": 8987,
                        "name": "BinaryOperation",
                        "src": "6673:13:28"
                      }
                    ],
                    "id": 8988,
                    "name": "Return",
                    "src": "6666:20:28"
                  }
                ],
                "id": 8989,
                "name": "Block",
                "src": "5873:820:28"
              }
            ],
            "id": 8990,
            "name": "FunctionDefinition",
            "src": "5819:874:28"
          },
          {
            "attributes": {
              "documentation": "@notice Qualifies a deposit and mints TBTC.\n @dev User must allow VendingManchine to transfer TDT.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "unqualifiedDepositToTbtc",
              "scope": 9123,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_depositAddress",
                      "scope": 9037,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address payable",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "payable",
                          "type": "address payable"
                        },
                        "id": 8991,
                        "name": "ElementaryTypeName",
                        "src": "6873:15:28"
                      }
                    ],
                    "id": 8992,
                    "name": "VariableDeclaration",
                    "src": "6873:31:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_txVersion",
                      "scope": 9037,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes4",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes4",
                          "type": "bytes4"
                        },
                        "id": 8993,
                        "name": "ElementaryTypeName",
                        "src": "6914:6:28"
                      }
                    ],
                    "id": 8994,
                    "name": "VariableDeclaration",
                    "src": "6914:17:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_txInputVector",
                      "scope": 9037,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 8995,
                        "name": "ElementaryTypeName",
                        "src": "6941:5:28"
                      }
                    ],
                    "id": 8996,
                    "name": "VariableDeclaration",
                    "src": "6941:27:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_txOutputVector",
                      "scope": 9037,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 8997,
                        "name": "ElementaryTypeName",
                        "src": "6978:5:28"
                      }
                    ],
                    "id": 8998,
                    "name": "VariableDeclaration",
                    "src": "6978:28:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_txLocktime",
                      "scope": 9037,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes4",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes4",
                          "type": "bytes4"
                        },
                        "id": 8999,
                        "name": "ElementaryTypeName",
                        "src": "7016:6:28"
                      }
                    ],
                    "id": 9000,
                    "name": "VariableDeclaration",
                    "src": "7016:18:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_fundingOutputIndex",
                      "scope": 9037,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint8",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint8",
                          "type": "uint8"
                        },
                        "id": 9001,
                        "name": "ElementaryTypeName",
                        "src": "7044:5:28"
                      }
                    ],
                    "id": 9002,
                    "name": "VariableDeclaration",
                    "src": "7044:25:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_merkleProof",
                      "scope": 9037,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 9003,
                        "name": "ElementaryTypeName",
                        "src": "7079:5:28"
                      }
                    ],
                    "id": 9004,
                    "name": "VariableDeclaration",
                    "src": "7079:25:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_txIndexInBlock",
                      "scope": 9037,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 9005,
                        "name": "ElementaryTypeName",
                        "src": "7114:7:28"
                      }
                    ],
                    "id": 9006,
                    "name": "VariableDeclaration",
                    "src": "7114:23:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_bitcoinHeaders",
                      "scope": 9037,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 9007,
                        "name": "ElementaryTypeName",
                        "src": "7147:5:28"
                      }
                    ],
                    "id": 9008,
                    "name": "VariableDeclaration",
                    "src": "7147:28:28"
                  }
                ],
                "id": 9009,
                "name": "ParameterList",
                "src": "6863:318:28"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9010,
                "name": "ParameterList",
                "src": "7189:0:28"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        9012
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_d",
                          "scope": 9036,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract Deposit",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Deposit",
                              "referencedDeclaration": 1134,
                              "type": "contract Deposit"
                            },
                            "id": 9011,
                            "name": "UserDefinedTypeName",
                            "src": "7256:7:28"
                          }
                        ],
                        "id": 9012,
                        "name": "VariableDeclaration",
                        "src": "7256:10:28"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract Deposit",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1134,
                              "type": "type(contract Deposit)",
                              "value": "Deposit"
                            },
                            "id": 9013,
                            "name": "Identifier",
                            "src": "7269:7:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8992,
                              "type": "address payable",
                              "value": "_depositAddress"
                            },
                            "id": 9014,
                            "name": "Identifier",
                            "src": "7277:15:28"
                          }
                        ],
                        "id": 9015,
                        "name": "FunctionCall",
                        "src": "7269:24:28"
                      }
                    ],
                    "id": 9016,
                    "name": "VariableDeclarationStatement",
                    "src": "7256:37:28"
                  },
                  {
                    "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_bytes4",
                                  "typeString": "bytes4"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                {
                                  "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": "provideBTCFundingProof",
                              "referencedDeclaration": 842,
                              "type": "function (bytes4,bytes memory,bytes memory,bytes4,uint8,bytes memory,uint256,bytes memory) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9012,
                                  "type": "contract Deposit",
                                  "value": "_d"
                                },
                                "id": 9017,
                                "name": "Identifier",
                                "src": "7303:2:28"
                              }
                            ],
                            "id": 9019,
                            "name": "MemberAccess",
                            "src": "7303:25:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8994,
                              "type": "bytes4",
                              "value": "_txVersion"
                            },
                            "id": 9020,
                            "name": "Identifier",
                            "src": "7342:10:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8996,
                              "type": "bytes memory",
                              "value": "_txInputVector"
                            },
                            "id": 9021,
                            "name": "Identifier",
                            "src": "7366:14:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8998,
                              "type": "bytes memory",
                              "value": "_txOutputVector"
                            },
                            "id": 9022,
                            "name": "Identifier",
                            "src": "7394:15:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9000,
                              "type": "bytes4",
                              "value": "_txLocktime"
                            },
                            "id": 9023,
                            "name": "Identifier",
                            "src": "7423:11:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9002,
                              "type": "uint8",
                              "value": "_fundingOutputIndex"
                            },
                            "id": 9024,
                            "name": "Identifier",
                            "src": "7448:19:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9004,
                              "type": "bytes memory",
                              "value": "_merkleProof"
                            },
                            "id": 9025,
                            "name": "Identifier",
                            "src": "7481:12:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9006,
                              "type": "uint256",
                              "value": "_txIndexInBlock"
                            },
                            "id": 9026,
                            "name": "Identifier",
                            "src": "7507:15:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9008,
                              "type": "bytes memory",
                              "value": "_bitcoinHeaders"
                            },
                            "id": 9027,
                            "name": "Identifier",
                            "src": "7536:15:28"
                          }
                        ],
                        "id": 9028,
                        "name": "FunctionCall",
                        "src": "7303:258:28"
                      }
                    ],
                    "id": 9029,
                    "name": "ExpressionStatement",
                    "src": "7303:258:28"
                  },
                  {
                    "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_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8820,
                              "type": "function (uint256)",
                              "value": "tdtToTbtc"
                            },
                            "id": 9030,
                            "name": "Identifier",
                            "src": "7572:9:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint256)",
                                  "value": "uint256"
                                },
                                "id": 9031,
                                "name": "ElementaryTypeNameExpression",
                                "src": "7582:7:28"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8992,
                                  "type": "address payable",
                                  "value": "_depositAddress"
                                },
                                "id": 9032,
                                "name": "Identifier",
                                "src": "7590:15:28"
                              }
                            ],
                            "id": 9033,
                            "name": "FunctionCall",
                            "src": "7582:24:28"
                          }
                        ],
                        "id": 9034,
                        "name": "FunctionCall",
                        "src": "7572:35:28"
                      }
                    ],
                    "id": 9035,
                    "name": "ExpressionStatement",
                    "src": "7572:35:28"
                  }
                ],
                "id": 9036,
                "name": "Block",
                "src": "7189:425:28"
              }
            ],
            "id": 9037,
            "name": "FunctionDefinition",
            "src": "6830:784:28"
          },
          {
            "attributes": {
              "documentation": "@notice Redeems a Deposit by purchasing a TDT with TBTC for _finalRecipient,\n         and using the TDT to redeem corresponding Deposit as _finalRecipient.\n         This function will revert if the Deposit is not in ACTIVE state.\n @dev Vending Machine transfers TBTC allowance to Deposit.\n @param  _depositAddress     The address of the Deposit to redeem.\n @param  _outputValueBytes   The 8-byte Bitcoin transaction output size in Little Endian.\n @param  _redeemerOutputScript The redeemer's length-prefixed output script.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "tbtcToBtc",
              "scope": 9123,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_depositAddress",
                      "scope": 9122,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address payable",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "payable",
                          "type": "address payable"
                        },
                        "id": 9038,
                        "name": "ElementaryTypeName",
                        "src": "8221:15:28"
                      }
                    ],
                    "id": 9039,
                    "name": "VariableDeclaration",
                    "src": "8221:31:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_outputValueBytes",
                      "scope": 9122,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes8",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes8",
                          "type": "bytes8"
                        },
                        "id": 9040,
                        "name": "ElementaryTypeName",
                        "src": "8262:6:28"
                      }
                    ],
                    "id": 9041,
                    "name": "VariableDeclaration",
                    "src": "8262:24:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_redeemerOutputScript",
                      "scope": 9122,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 9042,
                        "name": "ElementaryTypeName",
                        "src": "8296:5:28"
                      }
                    ],
                    "id": 9043,
                    "name": "VariableDeclaration",
                    "src": "8296:34:28"
                  }
                ],
                "id": 9044,
                "name": "ParameterList",
                "src": "8211:125:28"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9045,
                "name": "ParameterList",
                "src": "8344:0:28"
              },
              {
                "children": [
                  {
                    "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"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_7dc83a5a17125a17ee5b2d669dbee7923570818e4951396bb4642237d0a2bbe4",
                                  "typeString": "literal_string \"tBTC Deposit Token does not exist\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 9046,
                            "name": "Identifier",
                            "src": "8411:7:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "exists",
                                  "referencedDeclaration": 6810,
                                  "type": "function (uint256) view external returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8584,
                                      "type": "contract TBTCDepositToken",
                                      "value": "tbtcDepositToken"
                                    },
                                    "id": 9047,
                                    "name": "Identifier",
                                    "src": "8432:16:28"
                                  }
                                ],
                                "id": 9048,
                                "name": "MemberAccess",
                                "src": "8432:23:28"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint256",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(uint256)",
                                      "value": "uint256"
                                    },
                                    "id": 9049,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "8456:7:28"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 9039,
                                      "type": "address payable",
                                      "value": "_depositAddress"
                                    },
                                    "id": 9050,
                                    "name": "Identifier",
                                    "src": "8464:15:28"
                                  }
                                ],
                                "id": 9051,
                                "name": "FunctionCall",
                                "src": "8456:24:28"
                              }
                            ],
                            "id": 9052,
                            "name": "FunctionCall",
                            "src": "8432:49:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "74425443204465706f73697420546f6b656e20646f6573206e6f74206578697374",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"tBTC Deposit Token does not exist\"",
                              "value": "tBTC Deposit Token does not exist"
                            },
                            "id": 9053,
                            "name": "Literal",
                            "src": "8495:35:28"
                          }
                        ],
                        "id": 9054,
                        "name": "FunctionCall",
                        "src": "8411:129:28"
                      }
                    ],
                    "id": 9055,
                    "name": "ExpressionStatement",
                    "src": "8411:129:28"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        9057
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_d",
                          "scope": 9121,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract Deposit",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Deposit",
                              "referencedDeclaration": 1134,
                              "type": "contract Deposit"
                            },
                            "id": 9056,
                            "name": "UserDefinedTypeName",
                            "src": "8550:7:28"
                          }
                        ],
                        "id": 9057,
                        "name": "VariableDeclaration",
                        "src": "8550:10:28"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract Deposit",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1134,
                              "type": "type(contract Deposit)",
                              "value": "Deposit"
                            },
                            "id": 9058,
                            "name": "Identifier",
                            "src": "8563:7:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9039,
                              "type": "address payable",
                              "value": "_depositAddress"
                            },
                            "id": 9059,
                            "name": "Identifier",
                            "src": "8571:15:28"
                          }
                        ],
                        "id": 9060,
                        "name": "FunctionCall",
                        "src": "8563:24:28"
                      }
                    ],
                    "id": 9061,
                    "name": "VariableDeclarationStatement",
                    "src": "8550:37:28"
                  },
                  {
                    "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_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "burnFrom",
                              "referencedDeclaration": 8512,
                              "type": "function (address,uint256) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8582,
                                  "type": "contract TBTCToken",
                                  "value": "tbtcToken"
                                },
                                "id": 9062,
                                "name": "Identifier",
                                "src": "8598:9:28"
                              }
                            ],
                            "id": 9064,
                            "name": "MemberAccess",
                            "src": "8598:18:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18360,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 9065,
                                "name": "Identifier",
                                "src": "8617:3:28"
                              }
                            ],
                            "id": 9066,
                            "name": "MemberAccess",
                            "src": "8617:10:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "lotSizeTbtc",
                                  "referencedDeclaration": 578,
                                  "type": "function () view external returns (uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 9057,
                                      "type": "contract Deposit",
                                      "value": "_d"
                                    },
                                    "id": 9067,
                                    "name": "Identifier",
                                    "src": "8629:2:28"
                                  }
                                ],
                                "id": 9068,
                                "name": "MemberAccess",
                                "src": "8629:14:28"
                              }
                            ],
                            "id": 9069,
                            "name": "FunctionCall",
                            "src": "8629:16:28"
                          }
                        ],
                        "id": 9070,
                        "name": "FunctionCall",
                        "src": "8598:48:28"
                      }
                    ],
                    "id": 9071,
                    "name": "ExpressionStatement",
                    "src": "8598:48:28"
                  },
                  {
                    "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_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "approve",
                              "referencedDeclaration": 17638,
                              "type": "function (address,uint256) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8584,
                                  "type": "contract TBTCDepositToken",
                                  "value": "tbtcDepositToken"
                                },
                                "id": 9072,
                                "name": "Identifier",
                                "src": "8656:16:28"
                              }
                            ],
                            "id": 9074,
                            "name": "MemberAccess",
                            "src": "8656:24:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9039,
                              "type": "address payable",
                              "value": "_depositAddress"
                            },
                            "id": 9075,
                            "name": "Identifier",
                            "src": "8681:15:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint256)",
                                  "value": "uint256"
                                },
                                "id": 9076,
                                "name": "ElementaryTypeNameExpression",
                                "src": "8698:7:28"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9039,
                                  "type": "address payable",
                                  "value": "_depositAddress"
                                },
                                "id": 9077,
                                "name": "Identifier",
                                "src": "8706:15:28"
                              }
                            ],
                            "id": 9078,
                            "name": "FunctionCall",
                            "src": "8698:24:28"
                          }
                        ],
                        "id": 9079,
                        "name": "FunctionCall",
                        "src": "8656:67:28"
                      }
                    ],
                    "id": 9080,
                    "name": "ExpressionStatement",
                    "src": "8656:67:28"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        9082
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "tbtcOwed",
                          "scope": 9121,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 9081,
                            "name": "ElementaryTypeName",
                            "src": "8734:7:28"
                          }
                        ],
                        "id": 9082,
                        "name": "VariableDeclaration",
                        "src": "8734:16:28"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "getOwnerRedemptionTbtcRequirement",
                              "referencedDeclaration": 965,
                              "type": "function (address) view external returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9057,
                                  "type": "contract Deposit",
                                  "value": "_d"
                                },
                                "id": 9083,
                                "name": "Identifier",
                                "src": "8753:2:28"
                              }
                            ],
                            "id": 9084,
                            "name": "MemberAccess",
                            "src": "8753:36:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18360,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 9085,
                                "name": "Identifier",
                                "src": "8790:3:28"
                              }
                            ],
                            "id": 9086,
                            "name": "MemberAccess",
                            "src": "8790:10:28"
                          }
                        ],
                        "id": 9087,
                        "name": "FunctionCall",
                        "src": "8753:48:28"
                      }
                    ],
                    "id": 9088,
                    "name": "VariableDeclarationStatement",
                    "src": "8734:67:28"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9082,
                              "type": "uint256",
                              "value": "tbtcOwed"
                            },
                            "id": 9089,
                            "name": "Identifier",
                            "src": "8816:8:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 9090,
                            "name": "Literal",
                            "src": "8828:1:28"
                          }
                        ],
                        "id": 9091,
                        "name": "BinaryOperation",
                        "src": "8816:13:28"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bool",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "transferFrom",
                                      "referencedDeclaration": 17096,
                                      "type": "function (address,address,uint256) external returns (bool)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 8582,
                                          "type": "contract TBTCToken",
                                          "value": "tbtcToken"
                                        },
                                        "id": 9092,
                                        "name": "Identifier",
                                        "src": "8845:9:28"
                                      }
                                    ],
                                    "id": 9094,
                                    "name": "MemberAccess",
                                    "src": "8845:22:28"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "sender",
                                      "referencedDeclaration": null,
                                      "type": "address payable"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 18360,
                                          "type": "msg",
                                          "value": "msg"
                                        },
                                        "id": 9095,
                                        "name": "Identifier",
                                        "src": "8868:3:28"
                                      }
                                    ],
                                    "id": 9096,
                                    "name": "MemberAccess",
                                    "src": "8868:10:28"
                                  },
                                  {
                                    "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$_VendingMachine_$9123",
                                              "typeString": "contract VendingMachine"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(address)",
                                          "value": "address"
                                        },
                                        "id": 9097,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "8880:7:28"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 18460,
                                          "type": "contract VendingMachine",
                                          "value": "this"
                                        },
                                        "id": 9098,
                                        "name": "Identifier",
                                        "src": "8888:4:28"
                                      }
                                    ],
                                    "id": 9099,
                                    "name": "FunctionCall",
                                    "src": "8880:13:28"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 9082,
                                      "type": "uint256",
                                      "value": "tbtcOwed"
                                    },
                                    "id": 9100,
                                    "name": "Identifier",
                                    "src": "8895:8:28"
                                  }
                                ],
                                "id": 9101,
                                "name": "FunctionCall",
                                "src": "8845:59:28"
                              }
                            ],
                            "id": 9102,
                            "name": "ExpressionStatement",
                            "src": "8845:59:28"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bool",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "approve",
                                      "referencedDeclaration": 17061,
                                      "type": "function (address,uint256) external returns (bool)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 8582,
                                          "type": "contract TBTCToken",
                                          "value": "tbtcToken"
                                        },
                                        "id": 9103,
                                        "name": "Identifier",
                                        "src": "8918:9:28"
                                      }
                                    ],
                                    "id": 9105,
                                    "name": "MemberAccess",
                                    "src": "8918:17:28"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 9039,
                                      "type": "address payable",
                                      "value": "_depositAddress"
                                    },
                                    "id": 9106,
                                    "name": "Identifier",
                                    "src": "8936:15:28"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 9082,
                                      "type": "uint256",
                                      "value": "tbtcOwed"
                                    },
                                    "id": 9107,
                                    "name": "Identifier",
                                    "src": "8953:8:28"
                                  }
                                ],
                                "id": 9108,
                                "name": "FunctionCall",
                                "src": "8918:44:28"
                              }
                            ],
                            "id": 9109,
                            "name": "ExpressionStatement",
                            "src": "8918:44:28"
                          }
                        ],
                        "id": 9110,
                        "name": "Block",
                        "src": "8831:142:28"
                      }
                    ],
                    "id": 9111,
                    "name": "IfStatement",
                    "src": "8812:161:28"
                  },
                  {
                    "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_bytes8",
                                  "typeString": "bytes8"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "transferAndRequestRedemption",
                              "referencedDeclaration": 1124,
                              "type": "function (bytes8,bytes memory,address payable) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9057,
                                  "type": "contract Deposit",
                                  "value": "_d"
                                },
                                "id": 9112,
                                "name": "Identifier",
                                "src": "8983:2:28"
                              }
                            ],
                            "id": 9114,
                            "name": "MemberAccess",
                            "src": "8983:31:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9041,
                              "type": "bytes8",
                              "value": "_outputValueBytes"
                            },
                            "id": 9115,
                            "name": "Identifier",
                            "src": "9028:17:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9043,
                              "type": "bytes memory",
                              "value": "_redeemerOutputScript"
                            },
                            "id": 9116,
                            "name": "Identifier",
                            "src": "9059:21:28"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18360,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 9117,
                                "name": "Identifier",
                                "src": "9094:3:28"
                              }
                            ],
                            "id": 9118,
                            "name": "MemberAccess",
                            "src": "9094:10:28"
                          }
                        ],
                        "id": 9119,
                        "name": "FunctionCall",
                        "src": "8983:131:28"
                      }
                    ],
                    "id": 9120,
                    "name": "ExpressionStatement",
                    "src": "8983:131:28"
                  }
                ],
                "id": 9121,
                "name": "Block",
                "src": "8344:777:28"
              }
            ],
            "id": 9122,
            "name": "FunctionDefinition",
            "src": "8193:928:28"
          }
        ],
        "id": 9123,
        "name": "ContractDefinition",
        "src": "635:8488:28"
      }
    ],
    "id": 9124,
    "name": "SourceUnit",
    "src": "0:9124:28"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.17+commit.d19bba13.Emscripten.clang"
  },
  "networks": {
    "3": {
      "events": {},
      "links": {},
      "address": "0x2278FE40270e4110BAf5A6Ca216D5dB3dCd3E220",
      "transactionHash": "0x5a5c485dc111baeebb4c8a295cb333b3c4376955224c0648a07c2572343f753a"
    }
  },
  "schemaVersion": "3.3.4",
  "updatedAt": "2021-11-23T12:02:26.806Z",
  "networkType": "ethereum",
  "devdoc": {
    "details": "The Vending Machine should have exclusive TBTC and FRT (`FeeRebateToken`) minting         privileges.",
    "methods": {
      "canMint(uint256)": {
        "details": "This function is also used by TBTCSystem to decide whether to allow a new deposit.",
        "return": "True if the amount can be minted without hitting the max supply, false otherwise."
      },
      "getMaxSupply()": {
        "return": "The max supply in weitoshis (BTC * 10 ** 18)."
      },
      "isQualified(address)": {
        "params": {
          "_depositAddress": "The address of the deposit"
        }
      },
      "setExternalAddresses(address,address,address)": {
        "details": "Addresses are used to update the local contract instance.",
        "params": {
          "_feeRebateToken": "FeeRebateToken (FRT) contract. More info in `FeeRebateToken`.",
          "_tbtcDepositToken": "TBTCDepositToken (TDT) contract. More info in `TBTCDepositToken`.",
          "_tbtcToken": "TBTCToken contract. More info in `TBTCToken`."
        }
      },
      "tbtcToBtc(address,bytes8,bytes)": {
        "details": "Vending Machine transfers TBTC allowance to Deposit.",
        "params": {
          "_depositAddress": "The address of the Deposit to redeem.",
          "_outputValueBytes": "The 8-byte Bitcoin transaction output size in Little Endian.",
          "_redeemerOutputScript": "The redeemer's length-prefixed output script."
        }
      },
      "tbtcToTdt(uint256)": {
        "details": "We burn the lotSize of the Deposit in order to maintain         the TBTC supply peg in the Vending Machine. VendingMachine must be approved         by the caller to burn the required amount.",
        "params": {
          "_tdtId": "ID of tBTC Deposit Token to buy."
        }
      },
      "tdtToTbtc(uint256)": {
        "details": "Transfers TDT from caller to vending machine, and mints TBTC to caller.         Vending Machine must be approved to transfer TDT by the caller.",
        "params": {
          "_tdtId": "ID of tBTC Deposit Token to sell."
        }
      },
      "unqualifiedDepositToTbtc(address,bytes4,bytes,bytes,bytes4,uint8,bytes,uint256,bytes)": {
        "details": "User must allow VendingManchine to transfer TDT."
      }
    },
    "title": "Vending Machine"
  },
  "userdoc": {
    "methods": {
      "canMint(uint256)": {
        "notice": "Return whether an amount of TBTC can be minted according to the supply cap         schedule"
      },
      "getMaxSupply()": {
        "notice": "Get the maximum TBTC token supply based on the age of the         contract deployment. The supply cap starts at 2 BTC for the two         days, 100 for the first week, 250 for the next, then 500, 750,         1000, 1500, 2000, 2500, and 3000... finally removing the minting         restriction after 9 weeks and returning 21M BTC as a sanity         check."
      },
      "getMintedSupply()": {
        "notice": "Return the minted TBTC supply in weitoshis (BTC * 10 ** 18)."
      },
      "isQualified(address)": {
        "notice": "Determines whether a deposit is qualified for minting TBTC."
      },
      "setExternalAddresses(address,address,address)": {
        "notice": "Set external contracts needed by the Vending Machine."
      },
      "tbtcToBtc(address,bytes8,bytes)": {
        "notice": "Redeems a Deposit by purchasing a TDT with TBTC for _finalRecipient,         and using the TDT to redeem corresponding Deposit as _finalRecipient.         This function will revert if the Deposit is not in ACTIVE state."
      },
      "tbtcToTdt(uint256)": {
        "notice": "Burns TBTC and transfers the tBTC Deposit Token to the caller         as long as it is qualified."
      },
      "tdtToTbtc(uint256)": {
        "notice": "Transfer the tBTC Deposit Token and mint TBTC."
      },
      "unqualifiedDepositToTbtc(address,bytes4,bytes,bytes,bytes4,uint8,bytes,uint256,bytes)": {
        "notice": "Qualifies a deposit and mints TBTC."
      }
    },
    "notice": "The Vending Machine swaps TDTs (`TBTCDepositToken`)         to TBTC (`TBTCToken`) and vice versa."
  }
}