{
  "contractName": "Erc20DemoContract",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "initialSupply",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"initialSupply\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/runner/work/predeploy-contracts/predeploy-contracts/contracts/test/Erc20DemoContract.sol\":\"Erc20DemoContract\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/runner/work/predeploy-contracts/predeploy-contracts/contracts/test/Erc20DemoContract.sol\":{\"keccak256\":\"0xbd9bcc6a64c119cf53fd4d89c8e85ff992de8313f4ac6132cb0ae5508a5cc138\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0702991f76b350b07fa97441eb7d5aa55932f8dbb5d14178f923bd859ff481a1\",\"dweb:/ipfs/QmYBekSpwfMo8hEUgUotFM6nKcZwLwuKaacqyGBS2uyS3z\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xb03df8481a954604ad0c9125680893b2e3f7ff770fe470e38b89ac61b84e8072\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b34655953d18ba3a45b762fb6bdbb6549af69a27435e10ece178742bf70baf45\",\"dweb:/ipfs/QmcqjUoFLLMyx7dbwSHUnDBH6aphkVHXWQvQRRev5EAWEh\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x027b891937d20ccf213fdb9c31531574256de774bda99d3a70ecef6e1913ed2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://087318b21c528119f649899f5b5580566dd8d7b0303d4904bd0e8580c3545f14\",\"dweb:/ipfs/Qmbn5Mj7aUn8hJuQ8VrQjjEXRsXyJKykgnjR9p4C3nfLtL\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x83fe24f5c04a56091e50f4a345ff504c8bff658a76d4c43b16878c8f940c53b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4c3df1a7ca104b633a7d81c6c6f5192367d150cd5a32cba81f7f27012729013\",\"dweb:/ipfs/QmSim72e3ZVsfgZt8UceCvbiSuMRHR6WDsiamqNzZahGSY\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26e8b38a7ac8e7b4463af00cf7fff1bf48ae9875765bf4f7751e100124d0bc8c\",\"dweb:/ipfs/QmWcsmkVr24xmmjfnBQZoemFniXjj3vwT78Cz6uqZW1Hux\"]}},\"version\":1}",
  "bytecode": "0x60806040523480156200001157600080fd5b50604051620018c1380380620018c1833981810160405281019062000037919062000334565b60405180608001604052806058815260200162001869605891396040518060400160405280600981526020017f54657374546f6b656e000000000000000000000000000000000000000000000081525081600390805190602001906200009f9291906200026d565b508060049080519060200190620000b89291906200026d565b505050620000e3731000000000000000000000000000000000000001612710620000ea60201b60201c565b5062000518565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200015d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200015490620003b3565b60405180910390fd5b62000171600083836200026360201b60201c565b806002600082825462000185919062000403565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620001dc919062000403565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620002439190620003d5565b60405180910390a36200025f600083836200026860201b60201c565b5050565b505050565b505050565b8280546200027b906200046a565b90600052602060002090601f0160209004810192826200029f5760008555620002eb565b82601f10620002ba57805160ff1916838001178555620002eb565b82800160010185558215620002eb579182015b82811115620002ea578251825591602001919060010190620002cd565b5b509050620002fa9190620002fe565b5090565b5b8082111562000319576000816000905550600101620002ff565b5090565b6000815190506200032e81620004fe565b92915050565b6000602082840312156200034757600080fd5b600062000357848285016200031d565b91505092915050565b60006200036f601f83620003f2565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b620003ad8162000460565b82525050565b60006020820190508181036000830152620003ce8162000360565b9050919050565b6000602082019050620003ec6000830184620003a2565b92915050565b600082825260208201905092915050565b6000620004108262000460565b91506200041d8362000460565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620004555762000454620004a0565b5b828201905092915050565b6000819050919050565b600060028204905060018216806200048357607f821691505b602082108114156200049a5762000499620004cf565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b620005098162000460565b81146200051557600080fd5b50565b61134180620005286000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c3919061100a565b60405180910390f35b6100e660048036038101906100e19190610c83565b610308565b6040516100f39190610fef565b60405180910390f35b610104610326565b604051610111919061110c565b60405180910390f35b610134600480360381019061012f9190610c34565b610330565b6040516101419190610fef565b60405180910390f35b610152610428565b60405161015f9190611127565b60405180910390f35b610182600480360381019061017d9190610c83565b610431565b60405161018f9190610fef565b60405180910390f35b6101b260048036038101906101ad9190610bcf565b6104dd565b6040516101bf919061110c565b60405180910390f35b6101d0610525565b6040516101dd919061100a565b60405180910390f35b61020060048036038101906101fb9190610c83565b6105b7565b60405161020d9190610fef565b60405180910390f35b610230600480360381019061022b9190610c83565b6106a2565b60405161023d9190610fef565b60405180910390f35b610260600480360381019061025b9190610bf8565b6106c0565b60405161026d919061110c565b60405180910390f35b6060600380546102859061123c565b80601f01602080910402602001604051908101604052809291908181526020018280546102b19061123c565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b600061031c610315610747565b848461074f565b6001905092915050565b6000600254905090565b600061033d84848461091a565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610388610747565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ff9061108c565b60405180910390fd5b61041c85610414610747565b85840361074f565b60019150509392505050565b60006011905090565b60006104d361043e610747565b84846001600061044c610747565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546104ce919061115e565b61074f565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600480546105349061123c565b80601f01602080910402602001604051908101604052809291908181526020018280546105609061123c565b80156105ad5780601f10610582576101008083540402835291602001916105ad565b820191906000526020600020905b81548152906001019060200180831161059057829003601f168201915b5050505050905090565b600080600160006105c6610747565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067a906110ec565b60405180910390fd5b61069761068e610747565b8585840361074f565b600191505092915050565b60006106b66106af610747565b848461091a565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b6906110cc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561082f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108269061104c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161090d919061110c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561098a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610981906110ac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156109fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f19061102c565b60405180910390fd5b610a05838383610b9b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a829061106c565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b1e919061115e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b82919061110c565b60405180910390a3610b95848484610ba0565b50505050565b505050565b505050565b600081359050610bb4816112dd565b92915050565b600081359050610bc9816112f4565b92915050565b600060208284031215610be157600080fd5b6000610bef84828501610ba5565b91505092915050565b60008060408385031215610c0b57600080fd5b6000610c1985828601610ba5565b9250506020610c2a85828601610ba5565b9150509250929050565b600080600060608486031215610c4957600080fd5b6000610c5786828701610ba5565b9350506020610c6886828701610ba5565b9250506040610c7986828701610bba565b9150509250925092565b60008060408385031215610c9657600080fd5b6000610ca485828601610ba5565b9250506020610cb585828601610bba565b9150509250929050565b610cc8816111c6565b82525050565b6000610cd982611142565b610ce3818561114d565b9350610cf3818560208601611209565b610cfc816112cc565b840191505092915050565b6000610d1460238361114d565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610d7a60228361114d565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610de060268361114d565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610e4660288361114d565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610eac60258361114d565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610f1260248361114d565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610f7860258361114d565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b610fda816111f2565b82525050565b610fe9816111fc565b82525050565b60006020820190506110046000830184610cbf565b92915050565b600060208201905081810360008301526110248184610cce565b905092915050565b6000602082019050818103600083015261104581610d07565b9050919050565b6000602082019050818103600083015261106581610d6d565b9050919050565b6000602082019050818103600083015261108581610dd3565b9050919050565b600060208201905081810360008301526110a581610e39565b9050919050565b600060208201905081810360008301526110c581610e9f565b9050919050565b600060208201905081810360008301526110e581610f05565b9050919050565b6000602082019050818103600083015261110581610f6b565b9050919050565b60006020820190506111216000830184610fd1565b92915050565b600060208201905061113c6000830184610fe0565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611169826111f2565b9150611174836111f2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156111a9576111a861126e565b5b828201905092915050565b60006111bf826111d2565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561122757808201518184015260208101905061120c565b83811115611236576000848401525b50505050565b6000600282049050600182168061125457607f821691505b602082108114156112685761126761129d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b6112e6816111b4565b81146112f157600080fd5b50565b6112fd816111f2565b811461130857600080fd5b5056fea26469706673582212207307281b04f0c7126baa69d1fdeeea1dfacca76c57ee891373904db17a16b4fe64736f6c634300080000336c6f6e6720737472696e67206e616d652c206c6f6e6720737472696e67206e616d652c206c6f6e6720737472696e67206e616d652c206c6f6e6720737472696e67206e616d652c206c6f6e6720737472696e67206e616d65",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c3919061100a565b60405180910390f35b6100e660048036038101906100e19190610c83565b610308565b6040516100f39190610fef565b60405180910390f35b610104610326565b604051610111919061110c565b60405180910390f35b610134600480360381019061012f9190610c34565b610330565b6040516101419190610fef565b60405180910390f35b610152610428565b60405161015f9190611127565b60405180910390f35b610182600480360381019061017d9190610c83565b610431565b60405161018f9190610fef565b60405180910390f35b6101b260048036038101906101ad9190610bcf565b6104dd565b6040516101bf919061110c565b60405180910390f35b6101d0610525565b6040516101dd919061100a565b60405180910390f35b61020060048036038101906101fb9190610c83565b6105b7565b60405161020d9190610fef565b60405180910390f35b610230600480360381019061022b9190610c83565b6106a2565b60405161023d9190610fef565b60405180910390f35b610260600480360381019061025b9190610bf8565b6106c0565b60405161026d919061110c565b60405180910390f35b6060600380546102859061123c565b80601f01602080910402602001604051908101604052809291908181526020018280546102b19061123c565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b600061031c610315610747565b848461074f565b6001905092915050565b6000600254905090565b600061033d84848461091a565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610388610747565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ff9061108c565b60405180910390fd5b61041c85610414610747565b85840361074f565b60019150509392505050565b60006011905090565b60006104d361043e610747565b84846001600061044c610747565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546104ce919061115e565b61074f565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600480546105349061123c565b80601f01602080910402602001604051908101604052809291908181526020018280546105609061123c565b80156105ad5780601f10610582576101008083540402835291602001916105ad565b820191906000526020600020905b81548152906001019060200180831161059057829003601f168201915b5050505050905090565b600080600160006105c6610747565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067a906110ec565b60405180910390fd5b61069761068e610747565b8585840361074f565b600191505092915050565b60006106b66106af610747565b848461091a565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b6906110cc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561082f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108269061104c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161090d919061110c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561098a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610981906110ac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156109fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f19061102c565b60405180910390fd5b610a05838383610b9b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a829061106c565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b1e919061115e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b82919061110c565b60405180910390a3610b95848484610ba0565b50505050565b505050565b505050565b600081359050610bb4816112dd565b92915050565b600081359050610bc9816112f4565b92915050565b600060208284031215610be157600080fd5b6000610bef84828501610ba5565b91505092915050565b60008060408385031215610c0b57600080fd5b6000610c1985828601610ba5565b9250506020610c2a85828601610ba5565b9150509250929050565b600080600060608486031215610c4957600080fd5b6000610c5786828701610ba5565b9350506020610c6886828701610ba5565b9250506040610c7986828701610bba565b9150509250925092565b60008060408385031215610c9657600080fd5b6000610ca485828601610ba5565b9250506020610cb585828601610bba565b9150509250929050565b610cc8816111c6565b82525050565b6000610cd982611142565b610ce3818561114d565b9350610cf3818560208601611209565b610cfc816112cc565b840191505092915050565b6000610d1460238361114d565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610d7a60228361114d565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610de060268361114d565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610e4660288361114d565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610eac60258361114d565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610f1260248361114d565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610f7860258361114d565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b610fda816111f2565b82525050565b610fe9816111fc565b82525050565b60006020820190506110046000830184610cbf565b92915050565b600060208201905081810360008301526110248184610cce565b905092915050565b6000602082019050818103600083015261104581610d07565b9050919050565b6000602082019050818103600083015261106581610d6d565b9050919050565b6000602082019050818103600083015261108581610dd3565b9050919050565b600060208201905081810360008301526110a581610e39565b9050919050565b600060208201905081810360008301526110c581610e9f565b9050919050565b600060208201905081810360008301526110e581610f05565b9050919050565b6000602082019050818103600083015261110581610f6b565b9050919050565b60006020820190506111216000830184610fd1565b92915050565b600060208201905061113c6000830184610fe0565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611169826111f2565b9150611174836111f2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156111a9576111a861126e565b5b828201905092915050565b60006111bf826111d2565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561122757808201518184015260208101905061120c565b83811115611236576000848401525b50505050565b6000600282049050600182168061125457607f821691505b602082108114156112685761126761129d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b6112e6816111b4565b81146112f157600080fd5b50565b6112fd816111f2565b811461130857600080fd5b5056fea26469706673582212207307281b04f0c7126baa69d1fdeeea1dfacca76c57ee891373904db17a16b4fe64736f6c63430008000033",
  "immutableReferences": {},
  "generatedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:2950:20",
        "statements": [
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "70:80:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "80:22:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "95:6:20"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "89:5:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "89:13:20"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "80:5:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "138:5:20"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_uint256",
                      "nodeType": "YulIdentifier",
                      "src": "111:26:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "111:33:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "111:33:20"
                }
              ]
            },
            "name": "abi_decode_t_uint256_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "48:6:20",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "56:3:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "64:5:20",
                "type": ""
              }
            ],
            "src": "7:143:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "233:207:20",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "279:16:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "288:1:20",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "291:1:20",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "281:6:20"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "281:12:20"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "281:12:20"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "254:7:20"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "263:9:20"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "250:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "250:23:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "275:2:20",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "246:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "246:32:20"
                  },
                  "nodeType": "YulIf",
                  "src": "243:2:20"
                },
                {
                  "nodeType": "YulBlock",
                  "src": "305:128:20",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "320:15:20",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "334:1:20",
                        "type": "",
                        "value": "0"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "324:6:20",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "349:74:20",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "395:9:20"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "406:6:20"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "391:3:20"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "391:22:20"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "415:7:20"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_uint256_fromMemory",
                          "nodeType": "YulIdentifier",
                          "src": "359:31:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "359:64:20"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "349:6:20"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "203:9:20",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "214:7:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "226:6:20",
                "type": ""
              }
            ],
            "src": "156:284:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "592:183:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "602:74:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "668:3:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "673:2:20",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "609:58:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "609:67:20"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "602:3:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "697:3:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "702:1:20",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "693:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "693:11:20"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "706:33:20",
                        "type": "",
                        "value": "ERC20: mint to the zero address"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "686:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "686:54:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "686:54:20"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "750:19:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "761:3:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "766:2:20",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "757:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "757:12:20"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "750:3:20"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "580:3:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "588:3:20",
                "type": ""
              }
            ],
            "src": "446:329:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "846:53:20",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "863:3:20"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "886:5:20"
                          }
                        ],
                        "functionName": {
                          "name": "cleanup_t_uint256",
                          "nodeType": "YulIdentifier",
                          "src": "868:17:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "868:24:20"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "856:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "856:37:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "856:37:20"
                }
              ]
            },
            "name": "abi_encode_t_uint256_to_t_uint256_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "834:5:20",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "841:3:20",
                "type": ""
              }
            ],
            "src": "781:118:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1076:248:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "1086:26:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1098:9:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1109:2:20",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "1094:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1094:18:20"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "1086:4:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1133:9:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1144:1:20",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1129:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1129:17:20"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "1152:4:20"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1158:9:20"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1148:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1148:20:20"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1122:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1122:47:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1122:47:20"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1178:139:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "1312:4:20"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "1186:124:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1186:131:20"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "1178:4:20"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1056:9:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "1071:4:20",
                "type": ""
              }
            ],
            "src": "905:419:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1428:124:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "1438:26:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1450:9:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1461:2:20",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "1446:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1446:18:20"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "1438:4:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "1518:6:20"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1531:9:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1542:1:20",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1527:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1527:17:20"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_uint256_to_t_uint256_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "1474:43:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1474:71:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1474:71:20"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1400:9:20",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1412:6:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "1423:4:20",
                "type": ""
              }
            ],
            "src": "1330:222:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1654:73:20",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "1671:3:20"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "1676:6:20"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1664:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1664:19:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1664:19:20"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1692:29:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "1711:3:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1716:4:20",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "1707:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1707:14:20"
                  },
                  "variableNames": [
                    {
                      "name": "updated_pos",
                      "nodeType": "YulIdentifier",
                      "src": "1692:11:20"
                    }
                  ]
                }
              ]
            },
            "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "1626:3:20",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "1631:6:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "updated_pos",
                "nodeType": "YulTypedName",
                "src": "1642:11:20",
                "type": ""
              }
            ],
            "src": "1558:169:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1777:261:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "1787:25:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "1810:1:20"
                      }
                    ],
                    "functionName": {
                      "name": "cleanup_t_uint256",
                      "nodeType": "YulIdentifier",
                      "src": "1792:17:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1792:20:20"
                  },
                  "variableNames": [
                    {
                      "name": "x",
                      "nodeType": "YulIdentifier",
                      "src": "1787:1:20"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1821:25:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "1844:1:20"
                      }
                    ],
                    "functionName": {
                      "name": "cleanup_t_uint256",
                      "nodeType": "YulIdentifier",
                      "src": "1826:17:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1826:20:20"
                  },
                  "variableNames": [
                    {
                      "name": "y",
                      "nodeType": "YulIdentifier",
                      "src": "1821:1:20"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1984:22:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "1986:16:20"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1986:18:20"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1986:18:20"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "1905:1:20"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1912:66:20",
                            "type": "",
                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                          },
                          {
                            "name": "y",
                            "nodeType": "YulIdentifier",
                            "src": "1980:1:20"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1908:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1908:74:20"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "1902:2:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1902:81:20"
                  },
                  "nodeType": "YulIf",
                  "src": "1899:2:20"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2016:16:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "2027:1:20"
                      },
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "2030:1:20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "2023:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2023:9:20"
                  },
                  "variableNames": [
                    {
                      "name": "sum",
                      "nodeType": "YulIdentifier",
                      "src": "2016:3:20"
                    }
                  ]
                }
              ]
            },
            "name": "checked_add_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nodeType": "YulTypedName",
                "src": "1764:1:20",
                "type": ""
              },
              {
                "name": "y",
                "nodeType": "YulTypedName",
                "src": "1767:1:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "sum",
                "nodeType": "YulTypedName",
                "src": "1773:3:20",
                "type": ""
              }
            ],
            "src": "1733:305:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2089:32:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "2099:16:20",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "2110:5:20"
                  },
                  "variableNames": [
                    {
                      "name": "cleaned",
                      "nodeType": "YulIdentifier",
                      "src": "2099:7:20"
                    }
                  ]
                }
              ]
            },
            "name": "cleanup_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "2071:5:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "cleaned",
                "nodeType": "YulTypedName",
                "src": "2081:7:20",
                "type": ""
              }
            ],
            "src": "2044:77:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2178:269:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "2188:22:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "2202:4:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2208:1:20",
                        "type": "",
                        "value": "2"
                      }
                    ],
                    "functionName": {
                      "name": "div",
                      "nodeType": "YulIdentifier",
                      "src": "2198:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2198:12:20"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "2188:6:20"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2219:38:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "2249:4:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2255:1:20",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "2245:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2245:12:20"
                  },
                  "variables": [
                    {
                      "name": "outOfPlaceEncoding",
                      "nodeType": "YulTypedName",
                      "src": "2223:18:20",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2296:51:20",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "2310:27:20",
                        "value": {
                          "arguments": [
                            {
                              "name": "length",
                              "nodeType": "YulIdentifier",
                              "src": "2324:6:20"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2332:4:20",
                              "type": "",
                              "value": "0x7f"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nodeType": "YulIdentifier",
                            "src": "2320:3:20"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2320:17:20"
                        },
                        "variableNames": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "2310:6:20"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nodeType": "YulIdentifier",
                        "src": "2276:18:20"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "2269:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2269:26:20"
                  },
                  "nodeType": "YulIf",
                  "src": "2266:2:20"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2399:42:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x22",
                            "nodeType": "YulIdentifier",
                            "src": "2413:16:20"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2413:18:20"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2413:18:20"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nodeType": "YulIdentifier",
                        "src": "2363:18:20"
                      },
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "2386:6:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2394:2:20",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "2383:2:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2383:14:20"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nodeType": "YulIdentifier",
                      "src": "2360:2:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2360:38:20"
                  },
                  "nodeType": "YulIf",
                  "src": "2357:2:20"
                }
              ]
            },
            "name": "extract_byte_array_length",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "2162:4:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "2171:6:20",
                "type": ""
              }
            ],
            "src": "2127:320:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2481:152:20",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2498:1:20",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2501:77:20",
                        "type": "",
                        "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2491:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2491:88:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2491:88:20"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2595:1:20",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2598:4:20",
                        "type": "",
                        "value": "0x11"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2588:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2588:15:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2588:15:20"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2619:1:20",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2622:4:20",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "2612:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2612:15:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2612:15:20"
                }
              ]
            },
            "name": "panic_error_0x11",
            "nodeType": "YulFunctionDefinition",
            "src": "2453:180:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2667:152:20",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2684:1:20",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2687:77:20",
                        "type": "",
                        "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2677:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2677:88:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2677:88:20"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2781:1:20",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2784:4:20",
                        "type": "",
                        "value": "0x22"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2774:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2774:15:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2774:15:20"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2805:1:20",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2808:4:20",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "2798:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2798:15:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2798:15:20"
                }
              ]
            },
            "name": "panic_error_0x22",
            "nodeType": "YulFunctionDefinition",
            "src": "2639:180:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2868:79:20",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2925:16:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2934:1:20",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2937:1:20",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2927:6:20"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2927:12:20"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2927:12:20"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "2891:5:20"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2916:5:20"
                              }
                            ],
                            "functionName": {
                              "name": "cleanup_t_uint256",
                              "nodeType": "YulIdentifier",
                              "src": "2898:17:20"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2898:24:20"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "2888:2:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2888:35:20"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "2881:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2881:43:20"
                  },
                  "nodeType": "YulIf",
                  "src": "2878:2:20"
                }
              ]
            },
            "name": "validator_revert_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "2861:5:20",
                "type": ""
              }
            ],
            "src": "2825:122:20"
          }
        ]
      },
      "contents": "{\n\n    function abi_decode_t_uint256_fromMemory(offset, end) -> value {\n        value := mload(offset)\n        validator_revert_t_uint256(value)\n    }\n\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0 {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 31)\n\n        mstore(add(pos, 0), \"ERC20: mint to the zero address\")\n\n        end := add(pos, 32)\n    }\n\n    function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n        mstore(pos, cleanup_t_uint256(value))\n    }\n\n    function abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        abi_encode_t_uint256_to_t_uint256_fromStack(value0,  add(headStart, 0))\n\n    }\n\n    function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n        mstore(pos, length)\n        updated_pos := add(pos, 0x20)\n    }\n\n    function checked_add_t_uint256(x, y) -> sum {\n        x := cleanup_t_uint256(x)\n        y := cleanup_t_uint256(y)\n\n        // overflow, if x > (maxValue - y)\n        if gt(x, sub(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, y)) { panic_error_0x11() }\n\n        sum := add(x, y)\n    }\n\n    function cleanup_t_uint256(value) -> cleaned {\n        cleaned := value\n    }\n\n    function extract_byte_array_length(data) -> length {\n        length := div(data, 2)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) {\n            length := and(length, 0x7f)\n        }\n\n        if eq(outOfPlaceEncoding, lt(length, 32)) {\n            panic_error_0x22()\n        }\n    }\n\n    function panic_error_0x11() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n\n    function panic_error_0x22() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x22)\n        revert(0, 0x24)\n    }\n\n    function validator_revert_t_uint256(value) {\n        if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n    }\n\n}\n",
      "id": 20,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:11725:20",
        "statements": [
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "59:87:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "69:29:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "91:6:20"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "78:12:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "78:20:20"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "69:5:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "134:5:20"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "107:26:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "107:33:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "107:33:20"
                }
              ]
            },
            "name": "abi_decode_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "37:6:20",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "45:3:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "53:5:20",
                "type": ""
              }
            ],
            "src": "7:139:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "204:87:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "214:29:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "236:6:20"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "223:12:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "223:20:20"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "214:5:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "279:5:20"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_uint256",
                      "nodeType": "YulIdentifier",
                      "src": "252:26:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "252:33:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "252:33:20"
                }
              ]
            },
            "name": "abi_decode_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "182:6:20",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "190:3:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "198:5:20",
                "type": ""
              }
            ],
            "src": "152:139:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "363:196:20",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "409:16:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "418:1:20",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "421:1:20",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "411:6:20"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "411:12:20"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "411:12:20"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "384:7:20"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "393:9:20"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "380:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "380:23:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "405:2:20",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "376:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "376:32:20"
                  },
                  "nodeType": "YulIf",
                  "src": "373:2:20"
                },
                {
                  "nodeType": "YulBlock",
                  "src": "435:117:20",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "450:15:20",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "464:1:20",
                        "type": "",
                        "value": "0"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "454:6:20",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "479:63:20",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "514:9:20"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "525:6:20"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "510:3:20"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "510:22:20"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "534:7:20"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_address",
                          "nodeType": "YulIdentifier",
                          "src": "489:20:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "489:53:20"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "479:6:20"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "333:9:20",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "344:7:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "356:6:20",
                "type": ""
              }
            ],
            "src": "297:262:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "648:324:20",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "694:16:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "703:1:20",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "706:1:20",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "696:6:20"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "696:12:20"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "696:12:20"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "669:7:20"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "678:9:20"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "665:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "665:23:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "690:2:20",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "661:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "661:32:20"
                  },
                  "nodeType": "YulIf",
                  "src": "658:2:20"
                },
                {
                  "nodeType": "YulBlock",
                  "src": "720:117:20",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "735:15:20",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "749:1:20",
                        "type": "",
                        "value": "0"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "739:6:20",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "764:63:20",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "799:9:20"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "810:6:20"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "795:3:20"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "795:22:20"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "819:7:20"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_address",
                          "nodeType": "YulIdentifier",
                          "src": "774:20:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "774:53:20"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "764:6:20"
                        }
                      ]
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "847:118:20",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "862:16:20",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "876:2:20",
                        "type": "",
                        "value": "32"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "866:6:20",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "892:63:20",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "927:9:20"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "938:6:20"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "923:3:20"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "923:22:20"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "947:7:20"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_address",
                          "nodeType": "YulIdentifier",
                          "src": "902:20:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "902:53:20"
                      },
                      "variableNames": [
                        {
                          "name": "value1",
                          "nodeType": "YulIdentifier",
                          "src": "892:6:20"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "610:9:20",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "621:7:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "633:6:20",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "641:6:20",
                "type": ""
              }
            ],
            "src": "565:407:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1078:452:20",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1124:16:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1133:1:20",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1136:1:20",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1126:6:20"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1126:12:20"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1126:12:20"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1099:7:20"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1108:9:20"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1095:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1095:23:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1120:2:20",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1091:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1091:32:20"
                  },
                  "nodeType": "YulIf",
                  "src": "1088:2:20"
                },
                {
                  "nodeType": "YulBlock",
                  "src": "1150:117:20",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "1165:15:20",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1179:1:20",
                        "type": "",
                        "value": "0"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "1169:6:20",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "1194:63:20",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "1229:9:20"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "1240:6:20"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1225:3:20"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1225:22:20"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1249:7:20"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_address",
                          "nodeType": "YulIdentifier",
                          "src": "1204:20:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1204:53:20"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "1194:6:20"
                        }
                      ]
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "1277:118:20",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "1292:16:20",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1306:2:20",
                        "type": "",
                        "value": "32"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "1296:6:20",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "1322:63:20",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "1357:9:20"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "1368:6:20"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1353:3:20"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1353:22:20"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1377:7:20"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_address",
                          "nodeType": "YulIdentifier",
                          "src": "1332:20:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1332:53:20"
                      },
                      "variableNames": [
                        {
                          "name": "value1",
                          "nodeType": "YulIdentifier",
                          "src": "1322:6:20"
                        }
                      ]
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "1405:118:20",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "1420:16:20",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1434:2:20",
                        "type": "",
                        "value": "64"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "1424:6:20",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "1450:63:20",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "1485:9:20"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "1496:6:20"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1481:3:20"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1481:22:20"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1505:7:20"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_uint256",
                          "nodeType": "YulIdentifier",
                          "src": "1460:20:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1460:53:20"
                      },
                      "variableNames": [
                        {
                          "name": "value2",
                          "nodeType": "YulIdentifier",
                          "src": "1450:6:20"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_addresst_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1032:9:20",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1043:7:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1055:6:20",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "1063:6:20",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "1071:6:20",
                "type": ""
              }
            ],
            "src": "978:552:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1619:324:20",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1665:16:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1674:1:20",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1677:1:20",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1667:6:20"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1667:12:20"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1667:12:20"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1640:7:20"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1649:9:20"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1636:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1636:23:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1661:2:20",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1632:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1632:32:20"
                  },
                  "nodeType": "YulIf",
                  "src": "1629:2:20"
                },
                {
                  "nodeType": "YulBlock",
                  "src": "1691:117:20",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "1706:15:20",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1720:1:20",
                        "type": "",
                        "value": "0"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "1710:6:20",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "1735:63:20",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "1770:9:20"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "1781:6:20"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1766:3:20"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1766:22:20"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1790:7:20"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_address",
                          "nodeType": "YulIdentifier",
                          "src": "1745:20:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1745:53:20"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "1735:6:20"
                        }
                      ]
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "1818:118:20",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "1833:16:20",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1847:2:20",
                        "type": "",
                        "value": "32"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "1837:6:20",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "1863:63:20",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "1898:9:20"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "1909:6:20"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1894:3:20"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1894:22:20"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1918:7:20"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_uint256",
                          "nodeType": "YulIdentifier",
                          "src": "1873:20:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1873:53:20"
                      },
                      "variableNames": [
                        {
                          "name": "value1",
                          "nodeType": "YulIdentifier",
                          "src": "1863:6:20"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1581:9:20",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1592:7:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1604:6:20",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "1612:6:20",
                "type": ""
              }
            ],
            "src": "1536:407:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2008:50:20",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "2025:3:20"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "2045:5:20"
                          }
                        ],
                        "functionName": {
                          "name": "cleanup_t_bool",
                          "nodeType": "YulIdentifier",
                          "src": "2030:14:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2030:21:20"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2018:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2018:34:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2018:34:20"
                }
              ]
            },
            "name": "abi_encode_t_bool_to_t_bool_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "1996:5:20",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "2003:3:20",
                "type": ""
              }
            ],
            "src": "1949:109:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2156:272:20",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2166:53:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "2213:5:20"
                      }
                    ],
                    "functionName": {
                      "name": "array_length_t_string_memory_ptr",
                      "nodeType": "YulIdentifier",
                      "src": "2180:32:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2180:39:20"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "2170:6:20",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2228:78:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "2294:3:20"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "2299:6:20"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "2235:58:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2235:71:20"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "2228:3:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "2341:5:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2348:4:20",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2337:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2337:16:20"
                      },
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "2355:3:20"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "2360:6:20"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory",
                      "nodeType": "YulIdentifier",
                      "src": "2315:21:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2315:52:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2315:52:20"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2376:46:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "2387:3:20"
                      },
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "2414:6:20"
                          }
                        ],
                        "functionName": {
                          "name": "round_up_to_mul_of_32",
                          "nodeType": "YulIdentifier",
                          "src": "2392:21:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2392:29:20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "2383:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2383:39:20"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "2376:3:20"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "2137:5:20",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "2144:3:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "2152:3:20",
                "type": ""
              }
            ],
            "src": "2064:364:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2580:221:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "2590:74:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "2656:3:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2661:2:20",
                        "type": "",
                        "value": "35"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "2597:58:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2597:67:20"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "2590:3:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "2685:3:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2690:1:20",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2681:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2681:11:20"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "2694:34:20",
                        "type": "",
                        "value": "ERC20: transfer to the zero addr"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2674:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2674:55:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2674:55:20"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "2750:3:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2755:2:20",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2746:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2746:12:20"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "2760:5:20",
                        "type": "",
                        "value": "ess"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2739:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2739:27:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2739:27:20"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2776:19:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "2787:3:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2792:2:20",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "2783:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2783:12:20"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "2776:3:20"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "2568:3:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "2576:3:20",
                "type": ""
              }
            ],
            "src": "2434:367:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2953:220:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "2963:74:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "3029:3:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3034:2:20",
                        "type": "",
                        "value": "34"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "2970:58:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2970:67:20"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "2963:3:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "3058:3:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3063:1:20",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3054:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3054:11:20"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "3067:34:20",
                        "type": "",
                        "value": "ERC20: approve to the zero addre"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3047:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3047:55:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3047:55:20"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "3123:3:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3128:2:20",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3119:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3119:12:20"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "3133:4:20",
                        "type": "",
                        "value": "ss"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3112:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3112:26:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3112:26:20"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3148:19:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "3159:3:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3164:2:20",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "3155:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3155:12:20"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "3148:3:20"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "2941:3:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "2949:3:20",
                "type": ""
              }
            ],
            "src": "2807:366:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3325:224:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "3335:74:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "3401:3:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3406:2:20",
                        "type": "",
                        "value": "38"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "3342:58:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3342:67:20"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "3335:3:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "3430:3:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3435:1:20",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3426:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3426:11:20"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "3439:34:20",
                        "type": "",
                        "value": "ERC20: transfer amount exceeds b"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3419:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3419:55:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3419:55:20"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "3495:3:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3500:2:20",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3491:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3491:12:20"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "3505:8:20",
                        "type": "",
                        "value": "alance"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3484:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3484:30:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3484:30:20"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3524:19:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "3535:3:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3540:2:20",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "3531:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3531:12:20"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "3524:3:20"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "3313:3:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "3321:3:20",
                "type": ""
              }
            ],
            "src": "3179:370:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3701:226:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "3711:74:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "3777:3:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3782:2:20",
                        "type": "",
                        "value": "40"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "3718:58:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3718:67:20"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "3711:3:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "3806:3:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3811:1:20",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3802:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3802:11:20"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "3815:34:20",
                        "type": "",
                        "value": "ERC20: transfer amount exceeds a"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3795:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3795:55:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3795:55:20"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "3871:3:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3876:2:20",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3867:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3867:12:20"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "3881:10:20",
                        "type": "",
                        "value": "llowance"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3860:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3860:32:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3860:32:20"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3902:19:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "3913:3:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3918:2:20",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "3909:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3909:12:20"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "3902:3:20"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "3689:3:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "3697:3:20",
                "type": ""
              }
            ],
            "src": "3555:372:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4079:223:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "4089:74:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "4155:3:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4160:2:20",
                        "type": "",
                        "value": "37"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "4096:58:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4096:67:20"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "4089:3:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "4184:3:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4189:1:20",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4180:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4180:11:20"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "4193:34:20",
                        "type": "",
                        "value": "ERC20: transfer from the zero ad"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4173:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4173:55:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4173:55:20"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "4249:3:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4254:2:20",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4245:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4245:12:20"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "4259:7:20",
                        "type": "",
                        "value": "dress"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4238:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4238:29:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4238:29:20"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4277:19:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "4288:3:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4293:2:20",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "4284:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4284:12:20"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "4277:3:20"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "4067:3:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "4075:3:20",
                "type": ""
              }
            ],
            "src": "3933:369:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4454:222:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "4464:74:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "4530:3:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4535:2:20",
                        "type": "",
                        "value": "36"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "4471:58:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4471:67:20"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "4464:3:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "4559:3:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4564:1:20",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4555:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4555:11:20"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "4568:34:20",
                        "type": "",
                        "value": "ERC20: approve from the zero add"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4548:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4548:55:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4548:55:20"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "4624:3:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4629:2:20",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4620:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4620:12:20"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "4634:6:20",
                        "type": "",
                        "value": "ress"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4613:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4613:28:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4613:28:20"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4651:19:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "4662:3:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4667:2:20",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "4658:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4658:12:20"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "4651:3:20"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "4442:3:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "4450:3:20",
                "type": ""
              }
            ],
            "src": "4308:368:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4828:223:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "4838:74:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "4904:3:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4909:2:20",
                        "type": "",
                        "value": "37"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "4845:58:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4845:67:20"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "4838:3:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "4933:3:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4938:1:20",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4929:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4929:11:20"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "4942:34:20",
                        "type": "",
                        "value": "ERC20: decreased allowance below"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4922:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4922:55:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4922:55:20"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "4998:3:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5003:2:20",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4994:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4994:12:20"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "5008:7:20",
                        "type": "",
                        "value": " zero"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4987:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4987:29:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4987:29:20"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5026:19:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "5037:3:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5042:2:20",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5033:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5033:12:20"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "5026:3:20"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "4816:3:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "4824:3:20",
                "type": ""
              }
            ],
            "src": "4682:369:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5122:53:20",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "5139:3:20"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "5162:5:20"
                          }
                        ],
                        "functionName": {
                          "name": "cleanup_t_uint256",
                          "nodeType": "YulIdentifier",
                          "src": "5144:17:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5144:24:20"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5132:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5132:37:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5132:37:20"
                }
              ]
            },
            "name": "abi_encode_t_uint256_to_t_uint256_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "5110:5:20",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "5117:3:20",
                "type": ""
              }
            ],
            "src": "5057:118:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5242:51:20",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "5259:3:20"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "5280:5:20"
                          }
                        ],
                        "functionName": {
                          "name": "cleanup_t_uint8",
                          "nodeType": "YulIdentifier",
                          "src": "5264:15:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5264:22:20"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5252:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5252:35:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5252:35:20"
                }
              ]
            },
            "name": "abi_encode_t_uint8_to_t_uint8_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "5230:5:20",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "5237:3:20",
                "type": ""
              }
            ],
            "src": "5181:112:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5391:118:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "5401:26:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5413:9:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5424:2:20",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5409:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5409:18:20"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "5401:4:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "5475:6:20"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5488:9:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5499:1:20",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5484:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5484:17:20"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_bool_to_t_bool_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "5437:37:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5437:65:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5437:65:20"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5363:9:20",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5375:6:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "5386:4:20",
                "type": ""
              }
            ],
            "src": "5299:210:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5633:195:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "5643:26:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5655:9:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5666:2:20",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5651:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5651:18:20"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "5643:4:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5690:9:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5701:1:20",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5686:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5686:17:20"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "5709:4:20"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5715:9:20"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "5705:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5705:20:20"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5679:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5679:47:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5679:47:20"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5735:86:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "5807:6:20"
                      },
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "5816:4:20"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "5743:63:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5743:78:20"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "5735:4:20"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5605:9:20",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5617:6:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "5628:4:20",
                "type": ""
              }
            ],
            "src": "5515:313:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6005:248:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "6015:26:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6027:9:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6038:2:20",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "6023:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6023:18:20"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "6015:4:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6062:9:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6073:1:20",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6058:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6058:17:20"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "6081:4:20"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6087:9:20"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "6077:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6077:20:20"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6051:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6051:47:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6051:47:20"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6107:139:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "6241:4:20"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "6115:124:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6115:131:20"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "6107:4:20"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5985:9:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "6000:4:20",
                "type": ""
              }
            ],
            "src": "5834:419:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6430:248:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "6440:26:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6452:9:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6463:2:20",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "6448:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6448:18:20"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "6440:4:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6487:9:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6498:1:20",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6483:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6483:17:20"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "6506:4:20"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6512:9:20"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "6502:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6502:20:20"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6476:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6476:47:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6476:47:20"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6532:139:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "6666:4:20"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "6540:124:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6540:131:20"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "6532:4:20"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "6410:9:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "6425:4:20",
                "type": ""
              }
            ],
            "src": "6259:419:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6855:248:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "6865:26:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6877:9:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6888:2:20",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "6873:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6873:18:20"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "6865:4:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6912:9:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6923:1:20",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6908:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6908:17:20"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "6931:4:20"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6937:9:20"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "6927:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6927:20:20"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6901:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6901:47:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6901:47:20"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6957:139:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "7091:4:20"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "6965:124:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6965:131:20"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "6957:4:20"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "6835:9:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "6850:4:20",
                "type": ""
              }
            ],
            "src": "6684:419:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7280:248:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "7290:26:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7302:9:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7313:2:20",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "7298:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7298:18:20"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "7290:4:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7337:9:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7348:1:20",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7333:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7333:17:20"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "7356:4:20"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7362:9:20"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "7352:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7352:20:20"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7326:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7326:47:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7326:47:20"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7382:139:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "7516:4:20"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "7390:124:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7390:131:20"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "7382:4:20"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7260:9:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "7275:4:20",
                "type": ""
              }
            ],
            "src": "7109:419:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7705:248:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "7715:26:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7727:9:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7738:2:20",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "7723:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7723:18:20"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "7715:4:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7762:9:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7773:1:20",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7758:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7758:17:20"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "7781:4:20"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7787:9:20"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "7777:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7777:20:20"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7751:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7751:47:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7751:47:20"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7807:139:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "7941:4:20"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "7815:124:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7815:131:20"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "7807:4:20"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7685:9:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "7700:4:20",
                "type": ""
              }
            ],
            "src": "7534:419:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8130:248:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "8140:26:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8152:9:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8163:2:20",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "8148:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8148:18:20"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "8140:4:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8187:9:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8198:1:20",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8183:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8183:17:20"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "8206:4:20"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8212:9:20"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "8202:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8202:20:20"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8176:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8176:47:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8176:47:20"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8232:139:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "8366:4:20"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "8240:124:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8240:131:20"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "8232:4:20"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "8110:9:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "8125:4:20",
                "type": ""
              }
            ],
            "src": "7959:419:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8555:248:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "8565:26:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8577:9:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8588:2:20",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "8573:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8573:18:20"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "8565:4:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8612:9:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8623:1:20",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8608:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8608:17:20"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "8631:4:20"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8637:9:20"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "8627:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8627:20:20"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8601:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8601:47:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8601:47:20"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8657:139:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "8791:4:20"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "8665:124:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8665:131:20"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "8657:4:20"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "8535:9:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "8550:4:20",
                "type": ""
              }
            ],
            "src": "8384:419:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8907:124:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "8917:26:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8929:9:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8940:2:20",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "8925:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8925:18:20"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "8917:4:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "8997:6:20"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9010:9:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9021:1:20",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9006:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9006:17:20"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_uint256_to_t_uint256_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "8953:43:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8953:71:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8953:71:20"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "8879:9:20",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "8891:6:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "8902:4:20",
                "type": ""
              }
            ],
            "src": "8809:222:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9131:120:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "9141:26:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9153:9:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9164:2:20",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "9149:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9149:18:20"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "9141:4:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "9217:6:20"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9230:9:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9241:1:20",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9226:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9226:17:20"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_uint8_to_t_uint8_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "9177:39:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9177:67:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9177:67:20"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "9103:9:20",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "9115:6:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "9126:4:20",
                "type": ""
              }
            ],
            "src": "9037:214:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9316:40:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "9327:22:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "9343:5:20"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "9337:5:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9337:12:20"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "9327:6:20"
                    }
                  ]
                }
              ]
            },
            "name": "array_length_t_string_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "9299:5:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "9309:6:20",
                "type": ""
              }
            ],
            "src": "9257:99:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9458:73:20",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "9475:3:20"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "9480:6:20"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9468:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9468:19:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9468:19:20"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9496:29:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "9515:3:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9520:4:20",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "9511:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9511:14:20"
                  },
                  "variableNames": [
                    {
                      "name": "updated_pos",
                      "nodeType": "YulIdentifier",
                      "src": "9496:11:20"
                    }
                  ]
                }
              ]
            },
            "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "9430:3:20",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "9435:6:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "updated_pos",
                "nodeType": "YulTypedName",
                "src": "9446:11:20",
                "type": ""
              }
            ],
            "src": "9362:169:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9581:261:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "9591:25:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "9614:1:20"
                      }
                    ],
                    "functionName": {
                      "name": "cleanup_t_uint256",
                      "nodeType": "YulIdentifier",
                      "src": "9596:17:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9596:20:20"
                  },
                  "variableNames": [
                    {
                      "name": "x",
                      "nodeType": "YulIdentifier",
                      "src": "9591:1:20"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9625:25:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "9648:1:20"
                      }
                    ],
                    "functionName": {
                      "name": "cleanup_t_uint256",
                      "nodeType": "YulIdentifier",
                      "src": "9630:17:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9630:20:20"
                  },
                  "variableNames": [
                    {
                      "name": "y",
                      "nodeType": "YulIdentifier",
                      "src": "9625:1:20"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9788:22:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "9790:16:20"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9790:18:20"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9790:18:20"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "9709:1:20"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9716:66:20",
                            "type": "",
                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                          },
                          {
                            "name": "y",
                            "nodeType": "YulIdentifier",
                            "src": "9784:1:20"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "9712:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9712:74:20"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "9706:2:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9706:81:20"
                  },
                  "nodeType": "YulIf",
                  "src": "9703:2:20"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9820:16:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "9831:1:20"
                      },
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "9834:1:20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "9827:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9827:9:20"
                  },
                  "variableNames": [
                    {
                      "name": "sum",
                      "nodeType": "YulIdentifier",
                      "src": "9820:3:20"
                    }
                  ]
                }
              ]
            },
            "name": "checked_add_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nodeType": "YulTypedName",
                "src": "9568:1:20",
                "type": ""
              },
              {
                "name": "y",
                "nodeType": "YulTypedName",
                "src": "9571:1:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "sum",
                "nodeType": "YulTypedName",
                "src": "9577:3:20",
                "type": ""
              }
            ],
            "src": "9537:305:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9893:51:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "9903:35:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "9932:5:20"
                      }
                    ],
                    "functionName": {
                      "name": "cleanup_t_uint160",
                      "nodeType": "YulIdentifier",
                      "src": "9914:17:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9914:24:20"
                  },
                  "variableNames": [
                    {
                      "name": "cleaned",
                      "nodeType": "YulIdentifier",
                      "src": "9903:7:20"
                    }
                  ]
                }
              ]
            },
            "name": "cleanup_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "9875:5:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "cleaned",
                "nodeType": "YulTypedName",
                "src": "9885:7:20",
                "type": ""
              }
            ],
            "src": "9848:96:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9992:48:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "10002:32:20",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "10027:5:20"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "10020:6:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10020:13:20"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "10013:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10013:21:20"
                  },
                  "variableNames": [
                    {
                      "name": "cleaned",
                      "nodeType": "YulIdentifier",
                      "src": "10002:7:20"
                    }
                  ]
                }
              ]
            },
            "name": "cleanup_t_bool",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "9974:5:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "cleaned",
                "nodeType": "YulTypedName",
                "src": "9984:7:20",
                "type": ""
              }
            ],
            "src": "9950:90:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10091:81:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "10101:65:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "10116:5:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10123:42:20",
                        "type": "",
                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "10112:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10112:54:20"
                  },
                  "variableNames": [
                    {
                      "name": "cleaned",
                      "nodeType": "YulIdentifier",
                      "src": "10101:7:20"
                    }
                  ]
                }
              ]
            },
            "name": "cleanup_t_uint160",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "10073:5:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "cleaned",
                "nodeType": "YulTypedName",
                "src": "10083:7:20",
                "type": ""
              }
            ],
            "src": "10046:126:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10223:32:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "10233:16:20",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "10244:5:20"
                  },
                  "variableNames": [
                    {
                      "name": "cleaned",
                      "nodeType": "YulIdentifier",
                      "src": "10233:7:20"
                    }
                  ]
                }
              ]
            },
            "name": "cleanup_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "10205:5:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "cleaned",
                "nodeType": "YulTypedName",
                "src": "10215:7:20",
                "type": ""
              }
            ],
            "src": "10178:77:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10304:43:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "10314:27:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "10329:5:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10336:4:20",
                        "type": "",
                        "value": "0xff"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "10325:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10325:16:20"
                  },
                  "variableNames": [
                    {
                      "name": "cleaned",
                      "nodeType": "YulIdentifier",
                      "src": "10314:7:20"
                    }
                  ]
                }
              ]
            },
            "name": "cleanup_t_uint8",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "10286:5:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "cleaned",
                "nodeType": "YulTypedName",
                "src": "10296:7:20",
                "type": ""
              }
            ],
            "src": "10261:86:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10402:258:20",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "10412:10:20",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "10421:1:20",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "10416:1:20",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10481:63:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "10506:3:20"
                                },
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "10511:1:20"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "10502:3:20"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "10502:11:20"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "src",
                                      "nodeType": "YulIdentifier",
                                      "src": "10525:3:20"
                                    },
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "10530:1:20"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "10521:3:20"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "10521:11:20"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "10515:5:20"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "10515:18:20"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "10495:6:20"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10495:39:20"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10495:39:20"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "10442:1:20"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "10445:6:20"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "10439:2:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10439:13:20"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "10453:19:20",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "10455:15:20",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "10464:1:20"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "10467:2:20",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "10460:3:20"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10460:10:20"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "10455:1:20"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "10435:3:20",
                    "statements": []
                  },
                  "src": "10431:113:20"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10578:76:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "10628:3:20"
                                },
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "10633:6:20"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "10624:3:20"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "10624:16:20"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "10642:1:20",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "10617:6:20"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10617:27:20"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10617:27:20"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "10559:1:20"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "10562:6:20"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "10556:2:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10556:13:20"
                  },
                  "nodeType": "YulIf",
                  "src": "10553:2:20"
                }
              ]
            },
            "name": "copy_memory_to_memory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "src",
                "nodeType": "YulTypedName",
                "src": "10384:3:20",
                "type": ""
              },
              {
                "name": "dst",
                "nodeType": "YulTypedName",
                "src": "10389:3:20",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "10394:6:20",
                "type": ""
              }
            ],
            "src": "10353:307:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10717:269:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "10727:22:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "10741:4:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10747:1:20",
                        "type": "",
                        "value": "2"
                      }
                    ],
                    "functionName": {
                      "name": "div",
                      "nodeType": "YulIdentifier",
                      "src": "10737:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10737:12:20"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "10727:6:20"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "10758:38:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "10788:4:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10794:1:20",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "10784:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10784:12:20"
                  },
                  "variables": [
                    {
                      "name": "outOfPlaceEncoding",
                      "nodeType": "YulTypedName",
                      "src": "10762:18:20",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10835:51:20",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "10849:27:20",
                        "value": {
                          "arguments": [
                            {
                              "name": "length",
                              "nodeType": "YulIdentifier",
                              "src": "10863:6:20"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "10871:4:20",
                              "type": "",
                              "value": "0x7f"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nodeType": "YulIdentifier",
                            "src": "10859:3:20"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10859:17:20"
                        },
                        "variableNames": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "10849:6:20"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nodeType": "YulIdentifier",
                        "src": "10815:18:20"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "10808:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10808:26:20"
                  },
                  "nodeType": "YulIf",
                  "src": "10805:2:20"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10938:42:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x22",
                            "nodeType": "YulIdentifier",
                            "src": "10952:16:20"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10952:18:20"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10952:18:20"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nodeType": "YulIdentifier",
                        "src": "10902:18:20"
                      },
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "10925:6:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10933:2:20",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "10922:2:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10922:14:20"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nodeType": "YulIdentifier",
                      "src": "10899:2:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10899:38:20"
                  },
                  "nodeType": "YulIf",
                  "src": "10896:2:20"
                }
              ]
            },
            "name": "extract_byte_array_length",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "10701:4:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "10710:6:20",
                "type": ""
              }
            ],
            "src": "10666:320:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11020:152:20",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11037:1:20",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11040:77:20",
                        "type": "",
                        "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11030:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11030:88:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11030:88:20"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11134:1:20",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11137:4:20",
                        "type": "",
                        "value": "0x11"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11127:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11127:15:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11127:15:20"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11158:1:20",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11161:4:20",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "11151:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11151:15:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11151:15:20"
                }
              ]
            },
            "name": "panic_error_0x11",
            "nodeType": "YulFunctionDefinition",
            "src": "10992:180:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11206:152:20",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11223:1:20",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11226:77:20",
                        "type": "",
                        "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11216:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11216:88:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11216:88:20"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11320:1:20",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11323:4:20",
                        "type": "",
                        "value": "0x22"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11313:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11313:15:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11313:15:20"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11344:1:20",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11347:4:20",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "11337:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11337:15:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11337:15:20"
                }
              ]
            },
            "name": "panic_error_0x22",
            "nodeType": "YulFunctionDefinition",
            "src": "11178:180:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11412:54:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "11422:38:20",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "11440:5:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11447:2:20",
                            "type": "",
                            "value": "31"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11436:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11436:14:20"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11456:2:20",
                            "type": "",
                            "value": "31"
                          }
                        ],
                        "functionName": {
                          "name": "not",
                          "nodeType": "YulIdentifier",
                          "src": "11452:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11452:7:20"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "11432:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11432:28:20"
                  },
                  "variableNames": [
                    {
                      "name": "result",
                      "nodeType": "YulIdentifier",
                      "src": "11422:6:20"
                    }
                  ]
                }
              ]
            },
            "name": "round_up_to_mul_of_32",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "11395:5:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "result",
                "nodeType": "YulTypedName",
                "src": "11405:6:20",
                "type": ""
              }
            ],
            "src": "11364:102:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11515:79:20",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "11572:16:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11581:1:20",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11584:1:20",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "11574:6:20"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "11574:12:20"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "11574:12:20"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "11538:5:20"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "11563:5:20"
                              }
                            ],
                            "functionName": {
                              "name": "cleanup_t_address",
                              "nodeType": "YulIdentifier",
                              "src": "11545:17:20"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "11545:24:20"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "11535:2:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11535:35:20"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "11528:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11528:43:20"
                  },
                  "nodeType": "YulIf",
                  "src": "11525:2:20"
                }
              ]
            },
            "name": "validator_revert_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "11508:5:20",
                "type": ""
              }
            ],
            "src": "11472:122:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11643:79:20",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "11700:16:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11709:1:20",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11712:1:20",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "11702:6:20"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "11702:12:20"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "11702:12:20"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "11666:5:20"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "11691:5:20"
                              }
                            ],
                            "functionName": {
                              "name": "cleanup_t_uint256",
                              "nodeType": "YulIdentifier",
                              "src": "11673:17:20"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "11673:24:20"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "11663:2:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11663:35:20"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "11656:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11656:43:20"
                  },
                  "nodeType": "YulIf",
                  "src": "11653:2:20"
                }
              ]
            },
            "name": "validator_revert_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "11636:5:20",
                "type": ""
              }
            ],
            "src": "11600:122:20"
          }
        ]
      },
      "contents": "{\n\n    function abi_decode_t_address(offset, end) -> value {\n        value := calldataload(offset)\n        validator_revert_t_address(value)\n    }\n\n    function abi_decode_t_uint256(offset, end) -> value {\n        value := calldataload(offset)\n        validator_revert_t_uint256(value)\n    }\n\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1 {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 32\n\n            value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 32\n\n            value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 64\n\n            value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 32\n\n            value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n        mstore(pos, cleanup_t_bool(value))\n    }\n\n    function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n        let length := array_length_t_string_memory_ptr(value)\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n        copy_memory_to_memory(add(value, 0x20), pos, length)\n        end := add(pos, round_up_to_mul_of_32(length))\n    }\n\n    function abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 35)\n\n        mstore(add(pos, 0), \"ERC20: transfer to the zero addr\")\n\n        mstore(add(pos, 32), \"ess\")\n\n        end := add(pos, 64)\n    }\n\n    function abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 34)\n\n        mstore(add(pos, 0), \"ERC20: approve to the zero addre\")\n\n        mstore(add(pos, 32), \"ss\")\n\n        end := add(pos, 64)\n    }\n\n    function abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n\n        mstore(add(pos, 0), \"ERC20: transfer amount exceeds b\")\n\n        mstore(add(pos, 32), \"alance\")\n\n        end := add(pos, 64)\n    }\n\n    function abi_encode_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 40)\n\n        mstore(add(pos, 0), \"ERC20: transfer amount exceeds a\")\n\n        mstore(add(pos, 32), \"llowance\")\n\n        end := add(pos, 64)\n    }\n\n    function abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 37)\n\n        mstore(add(pos, 0), \"ERC20: transfer from the zero ad\")\n\n        mstore(add(pos, 32), \"dress\")\n\n        end := add(pos, 64)\n    }\n\n    function abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 36)\n\n        mstore(add(pos, 0), \"ERC20: approve from the zero add\")\n\n        mstore(add(pos, 32), \"ress\")\n\n        end := add(pos, 64)\n    }\n\n    function abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 37)\n\n        mstore(add(pos, 0), \"ERC20: decreased allowance below\")\n\n        mstore(add(pos, 32), \" zero\")\n\n        end := add(pos, 64)\n    }\n\n    function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n        mstore(pos, cleanup_t_uint256(value))\n    }\n\n    function abi_encode_t_uint8_to_t_uint8_fromStack(value, pos) {\n        mstore(pos, cleanup_t_uint8(value))\n    }\n\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        abi_encode_t_bool_to_t_bool_fromStack(value0,  add(headStart, 0))\n\n    }\n\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0,  tail)\n\n    }\n\n    function abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function abi_encode_tuple_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        abi_encode_t_uint256_to_t_uint256_fromStack(value0,  add(headStart, 0))\n\n    }\n\n    function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        abi_encode_t_uint8_to_t_uint8_fromStack(value0,  add(headStart, 0))\n\n    }\n\n    function array_length_t_string_memory_ptr(value) -> length {\n\n        length := mload(value)\n\n    }\n\n    function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n        mstore(pos, length)\n        updated_pos := add(pos, 0x20)\n    }\n\n    function checked_add_t_uint256(x, y) -> sum {\n        x := cleanup_t_uint256(x)\n        y := cleanup_t_uint256(y)\n\n        // overflow, if x > (maxValue - y)\n        if gt(x, sub(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, y)) { panic_error_0x11() }\n\n        sum := add(x, y)\n    }\n\n    function cleanup_t_address(value) -> cleaned {\n        cleaned := cleanup_t_uint160(value)\n    }\n\n    function cleanup_t_bool(value) -> cleaned {\n        cleaned := iszero(iszero(value))\n    }\n\n    function cleanup_t_uint160(value) -> cleaned {\n        cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n    }\n\n    function cleanup_t_uint256(value) -> cleaned {\n        cleaned := value\n    }\n\n    function cleanup_t_uint8(value) -> cleaned {\n        cleaned := and(value, 0xff)\n    }\n\n    function copy_memory_to_memory(src, dst, length) {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length)\n        {\n            // clear end\n            mstore(add(dst, length), 0)\n        }\n    }\n\n    function extract_byte_array_length(data) -> length {\n        length := div(data, 2)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) {\n            length := and(length, 0x7f)\n        }\n\n        if eq(outOfPlaceEncoding, lt(length, 32)) {\n            panic_error_0x22()\n        }\n    }\n\n    function panic_error_0x11() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n\n    function panic_error_0x22() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x22)\n        revert(0, 0x24)\n    }\n\n    function round_up_to_mul_of_32(value) -> result {\n        result := and(add(value, 31), not(31))\n    }\n\n    function validator_revert_t_address(value) {\n        if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n    }\n\n    function validator_revert_t_uint256(value) {\n        if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n    }\n\n}\n",
      "id": 20,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "128:388:9:-:0;;;170:247;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1906:113:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1980:5;1972;:13;;;;;;;;;;;;:::i;:::-;;2005:7;1995;:17;;;;;;;;;;;;:::i;:::-;;1906:113;;354:56:9::1;360:42;404:5;354;;;:56;;:::i;:::-;170:247:::0;128:388;;8254:389:15;8356:1;8337:21;;:7;:21;;;;8329:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8405:49;8434:1;8438:7;8447:6;8405:20;;;:49;;:::i;:::-;8481:6;8465:12;;:22;;;;;;;:::i;:::-;;;;;;;;8519:6;8497:9;:18;8507:7;8497:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;8561:7;8540:37;;8557:1;8540:37;;;8570:6;8540:37;;;;;;:::i;:::-;;;;;;;;8588:48;8616:1;8620:7;8629:6;8588:19;;;:48;;:::i;:::-;8254:389;;:::o;10916:121::-;;;;:::o;11625:120::-;;;;:::o;128:388:9:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:143:20:-;;95:6;89:13;80:22;;111:33;138:5;111:33;:::i;:::-;70:80;;;;:::o;156:284::-;;275:2;263:9;254:7;250:23;246:32;243:2;;;291:1;288;281:12;243:2;334:1;359:64;415:7;406:6;395:9;391:22;359:64;:::i;:::-;349:74;;305:128;233:207;;;;:::o;446:329::-;;609:67;673:2;668:3;609:67;:::i;:::-;602:74;;706:33;702:1;697:3;693:11;686:54;766:2;761:3;757:12;750:19;;592:183;;;:::o;781:118::-;868:24;886:5;868:24;:::i;:::-;863:3;856:37;846:53;;:::o;905:419::-;;1109:2;1098:9;1094:18;1086:26;;1158:9;1152:4;1148:20;1144:1;1133:9;1129:17;1122:47;1186:131;1312:4;1186:131;:::i;:::-;1178:139;;1076:248;;;:::o;1330:222::-;;1461:2;1450:9;1446:18;1438:26;;1474:71;1542:1;1531:9;1527:17;1518:6;1474:71;:::i;:::-;1428:124;;;;:::o;1558:169::-;;1676:6;1671:3;1664:19;1716:4;1711:3;1707:14;1692:29;;1654:73;;;;:::o;1733:305::-;;1792:20;1810:1;1792:20;:::i;:::-;1787:25;;1826:20;1844:1;1826:20;:::i;:::-;1821:25;;1980:1;1912:66;1908:74;1905:1;1902:81;1899:2;;;1986:18;;:::i;:::-;1899:2;2030:1;2027;2023:9;2016:16;;1777:261;;;;:::o;2044:77::-;;2110:5;2099:16;;2089:32;;;:::o;2127:320::-;;2208:1;2202:4;2198:12;2188:22;;2255:1;2249:4;2245:12;2276:18;2266:2;;2332:4;2324:6;2320:17;2310:27;;2266:2;2394;2386:6;2383:14;2363:18;2360:38;2357:2;;;2413:18;;:::i;:::-;2357:2;2178:269;;;;:::o;2453:180::-;2501:77;2498:1;2491:88;2598:4;2595:1;2588:15;2622:4;2619:1;2612:15;2639:180;2687:77;2684:1;2677:88;2784:4;2781:1;2774:15;2808:4;2805:1;2798:15;2825:122;2898:24;2916:5;2898:24;:::i;:::-;2891:5;2888:35;2878:2;;2937:1;2934;2927:12;2878:2;2868:79;:::o;128:388:9:-;;;;;;;",
  "deployedSourceMap": "128:388:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2084:98:15;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4181:166;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3172:106;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4814:478;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;423:91:9;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5687:212:15;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3336:125;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2295:102;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6386:405;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3664:172;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3894:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2084:98;2138:13;2170:5;2163:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2084:98;:::o;4181:166::-;4264:4;4280:39;4289:12;:10;:12::i;:::-;4303:7;4312:6;4280:8;:39::i;:::-;4336:4;4329:11;;4181:166;;;;:::o;3172:106::-;3233:7;3259:12;;3252:19;;3172:106;:::o;4814:478::-;4950:4;4966:36;4976:6;4984:9;4995:6;4966:9;:36::i;:::-;5013:24;5040:11;:19;5052:6;5040:19;;;;;;;;;;;;;;;:33;5060:12;:10;:12::i;:::-;5040:33;;;;;;;;;;;;;;;;5013:60;;5111:6;5091:16;:26;;5083:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5196:57;5205:6;5213:12;:10;:12::i;:::-;5246:6;5227:16;:25;5196:8;:57::i;:::-;5281:4;5274:11;;;4814:478;;;;;:::o;423:91:9:-;481:5;505:2;498:9;;423:91;:::o;5687:212:15:-;5775:4;5791:80;5800:12;:10;:12::i;:::-;5814:7;5860:10;5823:11;:25;5835:12;:10;:12::i;:::-;5823:25;;;;;;;;;;;;;;;:34;5849:7;5823:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5791:8;:80::i;:::-;5888:4;5881:11;;5687:212;;;;:::o;3336:125::-;3410:7;3436:9;:18;3446:7;3436:18;;;;;;;;;;;;;;;;3429:25;;3336:125;;;:::o;2295:102::-;2351:13;2383:7;2376:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2295:102;:::o;6386:405::-;6479:4;6495:24;6522:11;:25;6534:12;:10;:12::i;:::-;6522:25;;;;;;;;;;;;;;;:34;6548:7;6522:34;;;;;;;;;;;;;;;;6495:61;;6594:15;6574:16;:35;;6566:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6685:67;6694:12;:10;:12::i;:::-;6708:7;6736:15;6717:16;:34;6685:8;:67::i;:::-;6780:4;6773:11;;;6386:405;;;;:::o;3664:172::-;3750:4;3766:42;3776:12;:10;:12::i;:::-;3790:9;3801:6;3766:9;:42::i;:::-;3825:4;3818:11;;3664:172;;;;:::o;3894:149::-;3983:7;4009:11;:18;4021:5;4009:18;;;;;;;;;;;;;;;:27;4028:7;4009:27;;;;;;;;;;;;;;;;4002:34;;3894:149;;;;:::o;587:96:18:-;640:7;666:10;659:17;;587:96;:::o;9962:370:15:-;10110:1;10093:19;;:5;:19;;;;10085:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10190:1;10171:21;;:7;:21;;;;10163:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10272:6;10242:11;:18;10254:5;10242:18;;;;;;;;;;;;;;;:27;10261:7;10242:27;;;;;;;;;;;;;;;:36;;;;10309:7;10293:32;;10302:5;10293:32;;;10318:6;10293:32;;;;;;:::i;:::-;;;;;;;;9962:370;;;:::o;7265:713::-;7418:1;7400:20;;:6;:20;;;;7392:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7501:1;7480:23;;:9;:23;;;;7472:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7554:47;7575:6;7583:9;7594:6;7554:20;:47::i;:::-;7612:21;7636:9;:17;7646:6;7636:17;;;;;;;;;;;;;;;;7612:41;;7688:6;7671:13;:23;;7663:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7807:6;7791:13;:22;7771:9;:17;7781:6;7771:17;;;;;;;;;;;;;;;:42;;;;7857:6;7833:9;:20;7843:9;7833:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7896:9;7879:35;;7888:6;7879:35;;;7907:6;7879:35;;;;;;:::i;:::-;;;;;;;;7925:46;7945:6;7953:9;7964:6;7925:19;:46::i;:::-;7265:713;;;;:::o;10916:121::-;;;;:::o;11625:120::-;;;;:::o;7:139:20:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:262::-;;405:2;393:9;384:7;380:23;376:32;373:2;;;421:1;418;411:12;373:2;464:1;489:53;534:7;525:6;514:9;510:22;489:53;:::i;:::-;479:63;;435:117;363:196;;;;:::o;565:407::-;;;690:2;678:9;669:7;665:23;661:32;658:2;;;706:1;703;696:12;658:2;749:1;774:53;819:7;810:6;799:9;795:22;774:53;:::i;:::-;764:63;;720:117;876:2;902:53;947:7;938:6;927:9;923:22;902:53;:::i;:::-;892:63;;847:118;648:324;;;;;:::o;978:552::-;;;;1120:2;1108:9;1099:7;1095:23;1091:32;1088:2;;;1136:1;1133;1126:12;1088:2;1179:1;1204:53;1249:7;1240:6;1229:9;1225:22;1204:53;:::i;:::-;1194:63;;1150:117;1306:2;1332:53;1377:7;1368:6;1357:9;1353:22;1332:53;:::i;:::-;1322:63;;1277:118;1434:2;1460:53;1505:7;1496:6;1485:9;1481:22;1460:53;:::i;:::-;1450:63;;1405:118;1078:452;;;;;:::o;1536:407::-;;;1661:2;1649:9;1640:7;1636:23;1632:32;1629:2;;;1677:1;1674;1667:12;1629:2;1720:1;1745:53;1790:7;1781:6;1770:9;1766:22;1745:53;:::i;:::-;1735:63;;1691:117;1847:2;1873:53;1918:7;1909:6;1898:9;1894:22;1873:53;:::i;:::-;1863:63;;1818:118;1619:324;;;;;:::o;1949:109::-;2030:21;2045:5;2030:21;:::i;:::-;2025:3;2018:34;2008:50;;:::o;2064:364::-;;2180:39;2213:5;2180:39;:::i;:::-;2235:71;2299:6;2294:3;2235:71;:::i;:::-;2228:78;;2315:52;2360:6;2355:3;2348:4;2341:5;2337:16;2315:52;:::i;:::-;2392:29;2414:6;2392:29;:::i;:::-;2387:3;2383:39;2376:46;;2156:272;;;;;:::o;2434:367::-;;2597:67;2661:2;2656:3;2597:67;:::i;:::-;2590:74;;2694:34;2690:1;2685:3;2681:11;2674:55;2760:5;2755:2;2750:3;2746:12;2739:27;2792:2;2787:3;2783:12;2776:19;;2580:221;;;:::o;2807:366::-;;2970:67;3034:2;3029:3;2970:67;:::i;:::-;2963:74;;3067:34;3063:1;3058:3;3054:11;3047:55;3133:4;3128:2;3123:3;3119:12;3112:26;3164:2;3159:3;3155:12;3148:19;;2953:220;;;:::o;3179:370::-;;3342:67;3406:2;3401:3;3342:67;:::i;:::-;3335:74;;3439:34;3435:1;3430:3;3426:11;3419:55;3505:8;3500:2;3495:3;3491:12;3484:30;3540:2;3535:3;3531:12;3524:19;;3325:224;;;:::o;3555:372::-;;3718:67;3782:2;3777:3;3718:67;:::i;:::-;3711:74;;3815:34;3811:1;3806:3;3802:11;3795:55;3881:10;3876:2;3871:3;3867:12;3860:32;3918:2;3913:3;3909:12;3902:19;;3701:226;;;:::o;3933:369::-;;4096:67;4160:2;4155:3;4096:67;:::i;:::-;4089:74;;4193:34;4189:1;4184:3;4180:11;4173:55;4259:7;4254:2;4249:3;4245:12;4238:29;4293:2;4288:3;4284:12;4277:19;;4079:223;;;:::o;4308:368::-;;4471:67;4535:2;4530:3;4471:67;:::i;:::-;4464:74;;4568:34;4564:1;4559:3;4555:11;4548:55;4634:6;4629:2;4624:3;4620:12;4613:28;4667:2;4662:3;4658:12;4651:19;;4454:222;;;:::o;4682:369::-;;4845:67;4909:2;4904:3;4845:67;:::i;:::-;4838:74;;4942:34;4938:1;4933:3;4929:11;4922:55;5008:7;5003:2;4998:3;4994:12;4987:29;5042:2;5037:3;5033:12;5026:19;;4828:223;;;:::o;5057:118::-;5144:24;5162:5;5144:24;:::i;:::-;5139:3;5132:37;5122:53;;:::o;5181:112::-;5264:22;5280:5;5264:22;:::i;:::-;5259:3;5252:35;5242:51;;:::o;5299:210::-;;5424:2;5413:9;5409:18;5401:26;;5437:65;5499:1;5488:9;5484:17;5475:6;5437:65;:::i;:::-;5391:118;;;;:::o;5515:313::-;;5666:2;5655:9;5651:18;5643:26;;5715:9;5709:4;5705:20;5701:1;5690:9;5686:17;5679:47;5743:78;5816:4;5807:6;5743:78;:::i;:::-;5735:86;;5633:195;;;;:::o;5834:419::-;;6038:2;6027:9;6023:18;6015:26;;6087:9;6081:4;6077:20;6073:1;6062:9;6058:17;6051:47;6115:131;6241:4;6115:131;:::i;:::-;6107:139;;6005:248;;;:::o;6259:419::-;;6463:2;6452:9;6448:18;6440:26;;6512:9;6506:4;6502:20;6498:1;6487:9;6483:17;6476:47;6540:131;6666:4;6540:131;:::i;:::-;6532:139;;6430:248;;;:::o;6684:419::-;;6888:2;6877:9;6873:18;6865:26;;6937:9;6931:4;6927:20;6923:1;6912:9;6908:17;6901:47;6965:131;7091:4;6965:131;:::i;:::-;6957:139;;6855:248;;;:::o;7109:419::-;;7313:2;7302:9;7298:18;7290:26;;7362:9;7356:4;7352:20;7348:1;7337:9;7333:17;7326:47;7390:131;7516:4;7390:131;:::i;:::-;7382:139;;7280:248;;;:::o;7534:419::-;;7738:2;7727:9;7723:18;7715:26;;7787:9;7781:4;7777:20;7773:1;7762:9;7758:17;7751:47;7815:131;7941:4;7815:131;:::i;:::-;7807:139;;7705:248;;;:::o;7959:419::-;;8163:2;8152:9;8148:18;8140:26;;8212:9;8206:4;8202:20;8198:1;8187:9;8183:17;8176:47;8240:131;8366:4;8240:131;:::i;:::-;8232:139;;8130:248;;;:::o;8384:419::-;;8588:2;8577:9;8573:18;8565:26;;8637:9;8631:4;8627:20;8623:1;8612:9;8608:17;8601:47;8665:131;8791:4;8665:131;:::i;:::-;8657:139;;8555:248;;;:::o;8809:222::-;;8940:2;8929:9;8925:18;8917:26;;8953:71;9021:1;9010:9;9006:17;8997:6;8953:71;:::i;:::-;8907:124;;;;:::o;9037:214::-;;9164:2;9153:9;9149:18;9141:26;;9177:67;9241:1;9230:9;9226:17;9217:6;9177:67;:::i;:::-;9131:120;;;;:::o;9257:99::-;;9343:5;9337:12;9327:22;;9316:40;;;:::o;9362:169::-;;9480:6;9475:3;9468:19;9520:4;9515:3;9511:14;9496:29;;9458:73;;;;:::o;9537:305::-;;9596:20;9614:1;9596:20;:::i;:::-;9591:25;;9630:20;9648:1;9630:20;:::i;:::-;9625:25;;9784:1;9716:66;9712:74;9709:1;9706:81;9703:2;;;9790:18;;:::i;:::-;9703:2;9834:1;9831;9827:9;9820:16;;9581:261;;;;:::o;9848:96::-;;9914:24;9932:5;9914:24;:::i;:::-;9903:35;;9893:51;;;:::o;9950:90::-;;10027:5;10020:13;10013:21;10002:32;;9992:48;;;:::o;10046:126::-;;10123:42;10116:5;10112:54;10101:65;;10091:81;;;:::o;10178:77::-;;10244:5;10233:16;;10223:32;;;:::o;10261:86::-;;10336:4;10329:5;10325:16;10314:27;;10304:43;;;:::o;10353:307::-;10421:1;10431:113;10445:6;10442:1;10439:13;10431:113;;;10530:1;10525:3;10521:11;10515:18;10511:1;10506:3;10502:11;10495:39;10467:2;10464:1;10460:10;10455:15;;10431:113;;;10562:6;10559:1;10556:13;10553:2;;;10642:1;10633:6;10628:3;10624:16;10617:27;10553:2;10402:258;;;;:::o;10666:320::-;;10747:1;10741:4;10737:12;10727:22;;10794:1;10788:4;10784:12;10815:18;10805:2;;10871:4;10863:6;10859:17;10849:27;;10805:2;10933;10925:6;10922:14;10902:18;10899:38;10896:2;;;10952:18;;:::i;:::-;10896:2;10717:269;;;;:::o;10992:180::-;11040:77;11037:1;11030:88;11137:4;11134:1;11127:15;11161:4;11158:1;11151:15;11178:180;11226:77;11223:1;11216:88;11323:4;11320:1;11313:15;11347:4;11344:1;11337:15;11364:102;;11456:2;11452:7;11447:2;11440:5;11436:14;11432:28;11422:38;;11412:54;;;:::o;11472:122::-;11545:24;11563:5;11545:24;:::i;:::-;11538:5;11535:35;11525:2;;11584:1;11581;11574:12;11525:2;11515:79;:::o;11600:122::-;11673:24;11691:5;11673:24;:::i;:::-;11666:5;11663:35;11653:2;;11712:1;11709;11702:12;11653:2;11643:79;:::o",
  "source": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\ncontract Erc20DemoContract is ERC20 {\n    constructor(uint256 initialSupply) ERC20(\"long string name, long string name, long string name, long string name, long string name\", \"TestToken\") {\n        // mint alice 10000\n        _mint(0x1000000000000000000000000000000000000001, 10000);\n    }\n\n    function decimals() public view virtual override returns (uint8) {\n        return 17;\n    }\n}\n",
  "sourcePath": "/home/runner/work/predeploy-contracts/predeploy-contracts/contracts/test/Erc20DemoContract.sol",
  "ast": {
    "absolutePath": "/home/runner/work/predeploy-contracts/predeploy-contracts/contracts/test/Erc20DemoContract.sol",
    "exportedSymbols": {
      "Context": [
        2745
      ],
      "ERC20": [
        2620
      ],
      "Erc20DemoContract": [
        1384
      ],
      "IERC20": [
        2698
      ],
      "IERC20Metadata": [
        2723
      ]
    },
    "id": 1385,
    "license": "GPL-3.0-or-later",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1356,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "46:23:9"
      },
      {
        "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
        "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
        "id": 1357,
        "nodeType": "ImportDirective",
        "scope": 1385,
        "sourceUnit": 2621,
        "src": "71:55:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 1358,
              "name": "ERC20",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 2620,
              "src": "158:5:9"
            },
            "id": 1359,
            "nodeType": "InheritanceSpecifier",
            "src": "158:5:9"
          }
        ],
        "contractDependencies": [
          2620,
          2698,
          2723,
          2745
        ],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 1384,
        "linearizedBaseContracts": [
          1384,
          2620,
          2723,
          2698,
          2745
        ],
        "name": "Erc20DemoContract",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 1373,
              "nodeType": "Block",
              "src": "316:101:9",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "307831303030303030303030303030303030303030303030303030303030303030303030303030303031",
                        "id": 1369,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "360:42:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "value": "0x1000000000000000000000000000000000000001"
                      },
                      {
                        "hexValue": "3130303030",
                        "id": 1370,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "404:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_10000_by_1",
                          "typeString": "int_const 10000"
                        },
                        "value": "10000"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_rational_10000_by_1",
                          "typeString": "int_const 10000"
                        }
                      ],
                      "id": 1368,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2480,
                      "src": "354:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 1371,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "354:56:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1372,
                  "nodeType": "ExpressionStatement",
                  "src": "354:56:9"
                }
              ]
            },
            "id": 1374,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "hexValue": "6c6f6e6720737472696e67206e616d652c206c6f6e6720737472696e67206e616d652c206c6f6e6720737472696e67206e616d652c206c6f6e6720737472696e67206e616d652c206c6f6e6720737472696e67206e616d65",
                    "id": 1364,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "211:90:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_c0d51692bd7b95f1263e3905054ca2e36873aec47e640fe061382e0864a9c77e",
                      "typeString": "literal_string \"long string name, long string name, long string name, long string name, long string name\""
                    },
                    "value": "long string name, long string name, long string name, long string name, long string name"
                  },
                  {
                    "hexValue": "54657374546f6b656e",
                    "id": 1365,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "303:11:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_98773c0a77836a29a7c5f4ab1a66bf2cd547cb12bf15ba74f84f027b91334da5",
                      "typeString": "literal_string \"TestToken\""
                    },
                    "value": "TestToken"
                  }
                ],
                "id": 1366,
                "modifierName": {
                  "id": 1363,
                  "name": "ERC20",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 2620,
                  "src": "205:5:9"
                },
                "nodeType": "ModifierInvocation",
                "src": "205:110:9"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1362,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1361,
                  "mutability": "mutable",
                  "name": "initialSupply",
                  "nodeType": "VariableDeclaration",
                  "scope": 1374,
                  "src": "182:21:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1360,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "182:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "181:23:9"
            },
            "returnParameters": {
              "id": 1367,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "316:0:9"
            },
            "scope": 1384,
            "src": "170:247:9",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              2149
            ],
            "body": {
              "id": 1382,
              "nodeType": "Block",
              "src": "488:26:9",
              "statements": [
                {
                  "expression": {
                    "hexValue": "3137",
                    "id": 1380,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "505:2:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_17_by_1",
                      "typeString": "int_const 17"
                    },
                    "value": "17"
                  },
                  "functionReturnParameters": 1379,
                  "id": 1381,
                  "nodeType": "Return",
                  "src": "498:9:9"
                }
              ]
            },
            "functionSelector": "313ce567",
            "id": 1383,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "decimals",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 1376,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "463:8:9"
            },
            "parameters": {
              "id": 1375,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "440:2:9"
            },
            "returnParameters": {
              "id": 1379,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1378,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1383,
                  "src": "481:5:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 1377,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "481:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "480:7:9"
            },
            "scope": 1384,
            "src": "423:91:9",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          }
        ],
        "scope": 1385,
        "src": "128:388:9"
      }
    ],
    "src": "46:471:9"
  },
  "legacyAST": {
    "absolutePath": "/home/runner/work/predeploy-contracts/predeploy-contracts/contracts/test/Erc20DemoContract.sol",
    "exportedSymbols": {
      "Context": [
        2745
      ],
      "ERC20": [
        2620
      ],
      "Erc20DemoContract": [
        1384
      ],
      "IERC20": [
        2698
      ],
      "IERC20Metadata": [
        2723
      ]
    },
    "id": 1385,
    "license": "GPL-3.0-or-later",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1356,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "46:23:9"
      },
      {
        "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
        "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
        "id": 1357,
        "nodeType": "ImportDirective",
        "scope": 1385,
        "sourceUnit": 2621,
        "src": "71:55:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 1358,
              "name": "ERC20",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 2620,
              "src": "158:5:9"
            },
            "id": 1359,
            "nodeType": "InheritanceSpecifier",
            "src": "158:5:9"
          }
        ],
        "contractDependencies": [
          2620,
          2698,
          2723,
          2745
        ],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 1384,
        "linearizedBaseContracts": [
          1384,
          2620,
          2723,
          2698,
          2745
        ],
        "name": "Erc20DemoContract",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 1373,
              "nodeType": "Block",
              "src": "316:101:9",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "307831303030303030303030303030303030303030303030303030303030303030303030303030303031",
                        "id": 1369,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "360:42:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "value": "0x1000000000000000000000000000000000000001"
                      },
                      {
                        "hexValue": "3130303030",
                        "id": 1370,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "404:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_10000_by_1",
                          "typeString": "int_const 10000"
                        },
                        "value": "10000"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_rational_10000_by_1",
                          "typeString": "int_const 10000"
                        }
                      ],
                      "id": 1368,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2480,
                      "src": "354:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 1371,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "354:56:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1372,
                  "nodeType": "ExpressionStatement",
                  "src": "354:56:9"
                }
              ]
            },
            "id": 1374,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "hexValue": "6c6f6e6720737472696e67206e616d652c206c6f6e6720737472696e67206e616d652c206c6f6e6720737472696e67206e616d652c206c6f6e6720737472696e67206e616d652c206c6f6e6720737472696e67206e616d65",
                    "id": 1364,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "211:90:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_c0d51692bd7b95f1263e3905054ca2e36873aec47e640fe061382e0864a9c77e",
                      "typeString": "literal_string \"long string name, long string name, long string name, long string name, long string name\""
                    },
                    "value": "long string name, long string name, long string name, long string name, long string name"
                  },
                  {
                    "hexValue": "54657374546f6b656e",
                    "id": 1365,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "303:11:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_98773c0a77836a29a7c5f4ab1a66bf2cd547cb12bf15ba74f84f027b91334da5",
                      "typeString": "literal_string \"TestToken\""
                    },
                    "value": "TestToken"
                  }
                ],
                "id": 1366,
                "modifierName": {
                  "id": 1363,
                  "name": "ERC20",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 2620,
                  "src": "205:5:9"
                },
                "nodeType": "ModifierInvocation",
                "src": "205:110:9"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1362,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1361,
                  "mutability": "mutable",
                  "name": "initialSupply",
                  "nodeType": "VariableDeclaration",
                  "scope": 1374,
                  "src": "182:21:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1360,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "182:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "181:23:9"
            },
            "returnParameters": {
              "id": 1367,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "316:0:9"
            },
            "scope": 1384,
            "src": "170:247:9",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              2149
            ],
            "body": {
              "id": 1382,
              "nodeType": "Block",
              "src": "488:26:9",
              "statements": [
                {
                  "expression": {
                    "hexValue": "3137",
                    "id": 1380,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "505:2:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_17_by_1",
                      "typeString": "int_const 17"
                    },
                    "value": "17"
                  },
                  "functionReturnParameters": 1379,
                  "id": 1381,
                  "nodeType": "Return",
                  "src": "498:9:9"
                }
              ]
            },
            "functionSelector": "313ce567",
            "id": 1383,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "decimals",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 1376,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "463:8:9"
            },
            "parameters": {
              "id": 1375,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "440:2:9"
            },
            "returnParameters": {
              "id": 1379,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1378,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1383,
                  "src": "481:5:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 1377,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "481:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "480:7:9"
            },
            "scope": 1384,
            "src": "423:91:9",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          }
        ],
        "scope": 1385,
        "src": "128:388:9"
      }
    ],
    "src": "46:471:9"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.0+commit.c7dfd78e.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.3.1",
  "updatedAt": "2021-11-23T02:17:24.095Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "allowance(address,address)": {
        "details": "See {IERC20-allowance}."
      },
      "approve(address,uint256)": {
        "details": "See {IERC20-approve}. Requirements: - `spender` cannot be the zero address."
      },
      "balanceOf(address)": {
        "details": "See {IERC20-balanceOf}."
      },
      "decimals()": {
        "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."
      },
      "decreaseAllowance(address,uint256)": {
        "details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."
      },
      "increaseAllowance(address,uint256)": {
        "details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."
      },
      "name()": {
        "details": "Returns the name of the token."
      },
      "symbol()": {
        "details": "Returns the symbol of the token, usually a shorter version of the name."
      },
      "totalSupply()": {
        "details": "See {IERC20-totalSupply}."
      },
      "transfer(address,uint256)": {
        "details": "See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`."
      },
      "transferFrom(address,address,uint256)": {
        "details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`."
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}