{
    "contractName": "VerifiedMarkets",
    "abi": [
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "comet_",
                    "type": "address"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "constructor"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "borrower",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "base",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "Borrowed",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "issuer",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "asset",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "bond",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "apy",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "string",
                    "name": "issuingDocs",
                    "type": "string"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "faceValue",
                    "type": "uint256"
                }
            ],
            "name": "NewRWA",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "issuer",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "asset",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "collateral",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "PostedCollateral",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "borrower",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "base",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "Repaid",
            "type": "event"
        },
        {
            "inputs": [],
            "name": "comet",
            "outputs": [
                {
                    "internalType": "contract Comet",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "asset",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "bond",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "apy",
                    "type": "uint256"
                },
                {
                    "internalType": "string",
                    "name": "issuingDocs",
                    "type": "string"
                },
                {
                    "internalType": "uint256",
                    "name": "faceValue",
                    "type": "uint256"
                }
            ],
            "name": "submitNewRWA",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "asset",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "collateral",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "postCollateral",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "asset",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "borrowBase",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "asset",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "repayBase",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "metadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"comet_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"base\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Borrowed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"issuer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"bond\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"apy\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"issuingDocs\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"faceValue\",\"type\":\"uint256\"}],\"name\":\"NewRWA\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"issuer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"PostedCollateral\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"base\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Repaid\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"borrowBase\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"comet\",\"outputs\":[{\"internalType\":\"contract Comet\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"postCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayBase\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"bond\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"apy\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"issuingDocs\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"faceValue\",\"type\":\"uint256\"}],\"name\":\"submitNewRWA\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Kallol Borah\",\"kind\":\"dev\",\"methods\":{\"borrowBase(address,uint256)\":{\"params\":{\"amount\":\"amount of base asset borrowed*\",\"asset\":\"RWA for which base asset is borrowed\"}},\"constructor\":{\"params\":{\"comet_\":\"The Comet contract.*\"}},\"postCollateral(address,address,uint256)\":{\"params\":{\"amount\":\"amount of collateral posted*\",\"asset\":\"RWA for which collateral is posted\",\"collateral\":\"collateral used to buy bond issued by RWA issuer(must not be baseToken and must be accepted by comet)\"}},\"repayBase(address,uint256)\":{\"params\":{\"amount\":\"amount of base asset paid back*\",\"asset\":\"RWA for which base asset is paid back\"}},\"submitNewRWA(address,address,uint256,string,uint256)\":{\"params\":{\"apy\":\"interest rate paid on bond\",\"asset\":\"RWA for which bond is issued\",\"bond\":\"bond token that is issued\",\"faceValue\":\"par value of bond after discounting it with interest rate*\",\"issuingDocs\":\"ipfs reference for RWA docs\"}}},\"title\":\"Verified Markets\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"borrowBase(address,uint256)\":{\"notice\":\"Called by RWA issuer to to borrow base asset from Compound\"},\"comet()\":{\"notice\":\"The Comet contract\"},\"constructor\":{\"notice\":\"Construct a new operator.\"},\"postCollateral(address,address,uint256)\":{\"notice\":\"Used by RWA issuer to post collateral used to buy bonds issued by it to borrow from Compound\"},\"repayBase(address,uint256)\":{\"notice\":\"Called by RWA issuer to repay base asset to Compound and withdraw collateral posted earlier\"},\"submitNewRWA(address,address,uint256,string,uint256)\":{\"notice\":\"RWA issuer submits asset details and bond issued that can be purchased to provide collateral to the RWA issuer\"}},\"notice\":\"A Compound III operator to enable staking of collateral for real world assets to Compound.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/VerifiedMarkets.sol\":\"VerifiedMarkets\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/VerifiedMarkets.sol\":{\"keccak256\":\"0x62c1eb8a738dddf64db5b2730531b79c77281a92d6778f9f0e0f7f49059945f6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://05babd15e27d7ebcb84257358282bfb734d678c74bebfe65ced1c605fadcdd1b\",\"dweb:/ipfs/QmcUcembELX3Zou1aCzoQETcRauNjnyf2tQ8aTpqwVXE8f\"]},\"project:/contracts/interfaces/Bond.sol\":{\"keccak256\":\"0x6167b8680d8ee3280a6a2c64e4510dcdcba9aa7725c00e129c2c35a13b06f3cb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f846c51351b3fb890ae59d6f8253aa4c3fca9d7d86e335e96ea88412b536015\",\"dweb:/ipfs/QmRgGGCdmoWER1rSJ9pUj8oYXTu94JpeCAARveCqPV8iKN\"]},\"project:/contracts/interfaces/CometInterface.sol\":{\"keccak256\":\"0x60cfc062dc465fbcbcb7369d81415b05f5967ba0b27c407dec91804c7b03bc58\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d6b7b7e05010d5df7dcc9a76be6ed8d6e0af7f75810a933c10a068976b984be\",\"dweb:/ipfs/QmURqGK7LSvprsHV7zDH8m8CodfBnERochbnHx7UMc1qX4\"]},\"project:/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x2741fde0a32608044b0359d2f763bda7e9a477bbb379deea4cc80bb5f14a54c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12f2355edddb83ecfbafe10b2802174c7450dfaf45cae2b1b25bcc546558938f\",\"dweb:/ipfs/QmfEHxiP7nppK4mVSP431DzGPqLfqNUf5krHVgWEJXamPu\"]},\"project:/contracts/interfaces/VerifiedMarketsInterface.sol\":{\"keccak256\":\"0x99bddc19a48dbe612bbbe626063b600de72993efc523d13918d2c5c9d29923b6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ede56288c75954d9260fb1f406d96bd44670081eab0fd5e765a9db82069857a6\",\"dweb:/ipfs/QmSzVA6WxzcDDsHB9XzRE1SqrroMYoDCYtCWEUMwMutx8A\"]}},\"version\":1}",
    "bytecode": "0x60a060405234801561001057600080fd5b506040516117bd3803806117bd83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516116e66100d76000396000818160af0152818161050d015281816105a70152818161067201528181610717015281816108400152818161096e01528181610a4101528181610adb01528181610cdd01528181610dc60152610f3601526116e66000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063100bf6eb1461005c5780632511e8a01461007157806359a8ab5814610084578063a4bcec5914610097578063ba3e9c12146100aa575b600080fd5b61006f61006a366004611082565b6100ed565b005b61006f61007f36600461114e565b610432565b61006f61009236600461114e565b610959565b61006f6100a536600461117a565b610bca565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b6001600160a01b0385161580159061010d57506001600160a01b03841615155b801561012b5750846001600160a01b0316846001600160a01b031614155b80156101375750600083115b80156101435750600081115b6101945760405162461bcd60e51b815260206004820181905260248201527f525741207375626d697373696f6e203a20496e76616c6964207265717565737460448201526064015b60405180910390fd5b336001600160a01b0316846001600160a01b031663525564216040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020091906111cb565b6001600160a01b0316146102565760405162461bcd60e51b815260206004820152601f60248201527f525741207375626d697373696f6e203a20496e76616c69642069737375657200604482015260640161018b565b336000908152602081815260408083206001600160a01b0389811685529252909120541661030757604080516080810182526001600160a01b0386811682526020808301878152838501878152606085018790523360009081528084528681208c8616825290935294909120835181546001600160a01b031916931692909217825551600182015591519091829160028201906102f39082611278565b5060608201518160030155905050506103da565b336000908152602081815260408083206001600160a01b03898116855292529091205481169085161461037c5760405162461bcd60e51b815260206004820152601d60248201527f525741207375626d697373696f6e203a20496e76616c696420626f6e64000000604482015260640161018b565b336000908152602081815260408083206001600160a01b03891684529091529020600181018490556002016103b18382611278565b50336000908152602081815260408083206001600160a01b038916845290915290206003018190555b846001600160a01b0316336001600160a01b03167f7c0346ec0308e754879b9eb61355f12e6d4469883179fb5774ad1c3d9a7313d086868686604051610423949392919061135c565b60405180910390a35050505050565b6001600160a01b0382161580159061044a5750600081115b6104965760405162461bcd60e51b815260206004820152601760248201527f5265706179696e672062617365203a20496e76616c6964000000000000000000604482015260640161018b565b3360009081526001602090815260408083206001600160a01b03868116855292529091205416806105095760405162461bcd60e51b815260206004820152601d60248201527f5265706179696e672062617365203a20496e76616c6964206173736574000000604482015260640161018b565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c55dae636040518163ffffffff1660e01b8152600401602060405180830381865afa158015610569573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058d91906111cb565b604051639032317760e01b81529091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906390323177906105e29033908190869089906004016113ad565b600060405180830381600087803b1580156105fc57600080fd5b505af1158015610610573d6000803e3d6000fd5b50503360009081526001602090815260408083206001600160a01b038a1684529091528120600201805487945090925061064b9084906113ed565b9091555050604051631d9df61760e11b81526001600160a01b0383811660048301526000917f000000000000000000000000000000000000000000000000000000000000000090911690633b3bec2e9060240161010060405180830381865afa1580156106bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e0919061144f565b90506000670de0b6b3a764000085836080015167ffffffffffffffff166107079190611519565b6107119190611538565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166344c1e5eb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610773573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610797919061155a565b905060008590506000816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108029190611573565b905060008361081283600a611672565b61081c9087611519565b6108269190611538565b6040516304c8826360e31b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063264413189061087b90339081908d9087906004016113ad565b600060405180830381600087803b15801561089557600080fd5b505af11580156108a9573d6000803e3d6000fd5b505050508060016000336001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160a01b03166001600160a01b03168152602001908152602001600020600101600082825461090891906113ed565b90915550506040518981526001600160a01b0388169033907f0a3fbbea70e93f2daafa3102f5c9a1b8315e6d7a1e43e4bc020bc1162327470a9060200160405180910390a350505050505050505050565b6001600160a01b038216158015906109f157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663300e6beb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee919061155a565b81115b610a3d5760405162461bcd60e51b815260206004820152601860248201527f426f72726f77696e672062617365203a20496e76616c69640000000000000000604482015260640161018b565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c55dae636040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac191906111cb565b6040516304c8826360e31b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632644131890610b169033908190869088906004016113ad565b600060405180830381600087803b158015610b3057600080fd5b505af1158015610b44573d6000803e3d6000fd5b50503360009081526001602090815260408083206001600160a01b038916845290915281206002018054869450909250610b7f908490611681565b90915550506040518281526001600160a01b0382169033907f3fc499aeb0bb1cb58b6de8b02b3f86f4e7394e9690bef0110e32ced8a5631045906020015b60405180910390a3505050565b6001600160a01b03831615801590610bea57506001600160a01b03821615155b8015610c085750826001600160a01b0316826001600160a01b031614155b8015610c145750600081115b610c605760405162461bcd60e51b815260206004820152601b60248201527f506f7374696e6720436f6c6c61746572616c3a20496e76616c69640000000000604482015260640161018b565b3360009081526001602090815260408083206001600160a01b03878116855292529091205416610e9c576040516001600160a01b038316602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316631d9df61760e11b179052519091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690610d09908490611694565b600060405180830381855afa9150503d8060008114610d44576040519150601f19603f3d011682016040523d82523d6000602084013e610d49565b606091505b5050905080610daf5760405162461bcd60e51b815260206004820152602c60248201527f506f7374696e6720436f6c6c61746572616c3a20496e76616c696420636f6c6c60448201526b185d195c985b0818d85b1b1b60a21b606482015260840161018b565b604051639032317760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639032317790610e019033908190899089906004016113ad565b600060405180830381600087803b158015610e1b57600080fd5b505af1158015610e2f573d6000803e3d6000fd5b5050604080516060810182526001600160a01b0388811682526020808301898152600084860181815233825260018085528783208f87168452909452959020935184546001600160a01b0319169316929092178355905190820155905160029091015550610fde92505050565b3360009081526001602090815260408083206001600160a01b038781168552925290912054811690831614610f1f5760405162461bcd60e51b815260206004820152602360248201527f506f737420436f6c6c61746572616c3a20496e76616c696420636f6c6c6174656044820152621c985b60ea1b606482015260840161018b565b604051639032317760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639032317790610f719033908190879087906004016113ad565b600060405180830381600087803b158015610f8b57600080fd5b505af1158015610f9f573d6000803e3d6000fd5b50503360009081526001602081815260408084206001600160a01b038a1685529091528220018054859450909250610fd8908490611681565b90915550505b604080516001600160a01b0384811682526020820184905285169133917f6d9c01d2a1bfe391d97dad0c8485ad9eb8603cf2404ea70f733fe47b186a0f519101610bbd565b6001600160a01b038116811461103857600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561107a5761107a61103b565b604052919050565b600080600080600060a0868803121561109a57600080fd5b85356110a581611023565b94506020868101356110b681611023565b945060408701359350606087013567ffffffffffffffff808211156110da57600080fd5b818901915089601f8301126110ee57600080fd5b8135818111156111005761110061103b565b611112601f8201601f19168501611051565b91508082528a8482850101111561112857600080fd5b808484018584013760009082019093019290925250949793965091946080013592915050565b6000806040838503121561116157600080fd5b823561116c81611023565b946020939093013593505050565b60008060006060848603121561118f57600080fd5b833561119a81611023565b925060208401356111aa81611023565b929592945050506040919091013590565b80516111c681611023565b919050565b6000602082840312156111dd57600080fd5b81516111e881611023565b9392505050565b600181811c9082168061120357607f821691505b60208210810361122357634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561127357600081815260208120601f850160051c810160208610156112505750805b601f850160051c820191505b8181101561126f5782815560010161125c565b5050505b505050565b815167ffffffffffffffff8111156112925761129261103b565b6112a6816112a084546111ef565b84611229565b602080601f8311600181146112db57600084156112c35750858301515b600019600386901b1c1916600185901b17855561126f565b600085815260208120601f198616915b8281101561130a578886015182559484019460019091019084016112eb565b50858210156113285787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60005b8381101561135357818101518382015260200161133b565b50506000910152565b60018060a01b0385168152836020820152608060408201526000835180608084015261138f8160a0850160208801611338565b606083019390935250601f91909101601f19160160a0019392505050565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b634e487b7160e01b600052601160045260246000fd5b81810381811115611400576114006113d7565b92915050565b805160ff811681146111c657600080fd5b805167ffffffffffffffff811681146111c657600080fd5b80516fffffffffffffffffffffffffffffffff811681146111c657600080fd5b600061010080838503121561146357600080fd5b6040519081019067ffffffffffffffff821181831017156114865761148661103b565b8160405261149384611406565b8152602084015191506114a582611023565b8160208201526114b7604085016111bb565b60408201526114c860608501611417565b60608201526114d960808501611417565b60808201526114ea60a08501611417565b60a08201526114fb60c08501611417565b60c082015261150c60e0850161142f565b60e0820152949350505050565b6000816000190483118215151615611533576115336113d7565b500290565b60008261155557634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561156c57600080fd5b5051919050565b60006020828403121561158557600080fd5b6111e882611406565b600181815b808511156115c95781600019048211156115af576115af6113d7565b808516156115bc57918102915b93841c9390800290611593565b509250929050565b6000826115e057506001611400565b816115ed57506000611400565b8160018114611603576002811461160d57611629565b6001915050611400565b60ff84111561161e5761161e6113d7565b50506001821b611400565b5060208310610133831016604e8410600b841016171561164c575081810a611400565b611656838361158e565b806000190482111561166a5761166a6113d7565b029392505050565b60006111e860ff8416836115d1565b80820180821115611400576114006113d7565b600082516116a6818460208701611338565b919091019291505056fea26469706673582212207a14fc968a6c80d62d28c25712dd992ff63d7b1bdc6f988e5061161521812d0264736f6c63430008100033",
    "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c8063100bf6eb1461005c5780632511e8a01461007157806359a8ab5814610084578063a4bcec5914610097578063ba3e9c12146100aa575b600080fd5b61006f61006a366004611082565b6100ed565b005b61006f61007f36600461114e565b610432565b61006f61009236600461114e565b610959565b61006f6100a536600461117a565b610bca565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b6001600160a01b0385161580159061010d57506001600160a01b03841615155b801561012b5750846001600160a01b0316846001600160a01b031614155b80156101375750600083115b80156101435750600081115b6101945760405162461bcd60e51b815260206004820181905260248201527f525741207375626d697373696f6e203a20496e76616c6964207265717565737460448201526064015b60405180910390fd5b336001600160a01b0316846001600160a01b031663525564216040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020091906111cb565b6001600160a01b0316146102565760405162461bcd60e51b815260206004820152601f60248201527f525741207375626d697373696f6e203a20496e76616c69642069737375657200604482015260640161018b565b336000908152602081815260408083206001600160a01b0389811685529252909120541661030757604080516080810182526001600160a01b0386811682526020808301878152838501878152606085018790523360009081528084528681208c8616825290935294909120835181546001600160a01b031916931692909217825551600182015591519091829160028201906102f39082611278565b5060608201518160030155905050506103da565b336000908152602081815260408083206001600160a01b03898116855292529091205481169085161461037c5760405162461bcd60e51b815260206004820152601d60248201527f525741207375626d697373696f6e203a20496e76616c696420626f6e64000000604482015260640161018b565b336000908152602081815260408083206001600160a01b03891684529091529020600181018490556002016103b18382611278565b50336000908152602081815260408083206001600160a01b038916845290915290206003018190555b846001600160a01b0316336001600160a01b03167f7c0346ec0308e754879b9eb61355f12e6d4469883179fb5774ad1c3d9a7313d086868686604051610423949392919061135c565b60405180910390a35050505050565b6001600160a01b0382161580159061044a5750600081115b6104965760405162461bcd60e51b815260206004820152601760248201527f5265706179696e672062617365203a20496e76616c6964000000000000000000604482015260640161018b565b3360009081526001602090815260408083206001600160a01b03868116855292529091205416806105095760405162461bcd60e51b815260206004820152601d60248201527f5265706179696e672062617365203a20496e76616c6964206173736574000000604482015260640161018b565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c55dae636040518163ffffffff1660e01b8152600401602060405180830381865afa158015610569573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058d91906111cb565b604051639032317760e01b81529091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906390323177906105e29033908190869089906004016113ad565b600060405180830381600087803b1580156105fc57600080fd5b505af1158015610610573d6000803e3d6000fd5b50503360009081526001602090815260408083206001600160a01b038a1684529091528120600201805487945090925061064b9084906113ed565b9091555050604051631d9df61760e11b81526001600160a01b0383811660048301526000917f000000000000000000000000000000000000000000000000000000000000000090911690633b3bec2e9060240161010060405180830381865afa1580156106bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e0919061144f565b90506000670de0b6b3a764000085836080015167ffffffffffffffff166107079190611519565b6107119190611538565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166344c1e5eb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610773573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610797919061155a565b905060008590506000816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108029190611573565b905060008361081283600a611672565b61081c9087611519565b6108269190611538565b6040516304c8826360e31b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063264413189061087b90339081908d9087906004016113ad565b600060405180830381600087803b15801561089557600080fd5b505af11580156108a9573d6000803e3d6000fd5b505050508060016000336001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160a01b03166001600160a01b03168152602001908152602001600020600101600082825461090891906113ed565b90915550506040518981526001600160a01b0388169033907f0a3fbbea70e93f2daafa3102f5c9a1b8315e6d7a1e43e4bc020bc1162327470a9060200160405180910390a350505050505050505050565b6001600160a01b038216158015906109f157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663300e6beb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee919061155a565b81115b610a3d5760405162461bcd60e51b815260206004820152601860248201527f426f72726f77696e672062617365203a20496e76616c69640000000000000000604482015260640161018b565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c55dae636040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac191906111cb565b6040516304c8826360e31b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632644131890610b169033908190869088906004016113ad565b600060405180830381600087803b158015610b3057600080fd5b505af1158015610b44573d6000803e3d6000fd5b50503360009081526001602090815260408083206001600160a01b038916845290915281206002018054869450909250610b7f908490611681565b90915550506040518281526001600160a01b0382169033907f3fc499aeb0bb1cb58b6de8b02b3f86f4e7394e9690bef0110e32ced8a5631045906020015b60405180910390a3505050565b6001600160a01b03831615801590610bea57506001600160a01b03821615155b8015610c085750826001600160a01b0316826001600160a01b031614155b8015610c145750600081115b610c605760405162461bcd60e51b815260206004820152601b60248201527f506f7374696e6720436f6c6c61746572616c3a20496e76616c69640000000000604482015260640161018b565b3360009081526001602090815260408083206001600160a01b03878116855292529091205416610e9c576040516001600160a01b038316602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316631d9df61760e11b179052519091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690610d09908490611694565b600060405180830381855afa9150503d8060008114610d44576040519150601f19603f3d011682016040523d82523d6000602084013e610d49565b606091505b5050905080610daf5760405162461bcd60e51b815260206004820152602c60248201527f506f7374696e6720436f6c6c61746572616c3a20496e76616c696420636f6c6c60448201526b185d195c985b0818d85b1b1b60a21b606482015260840161018b565b604051639032317760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639032317790610e019033908190899089906004016113ad565b600060405180830381600087803b158015610e1b57600080fd5b505af1158015610e2f573d6000803e3d6000fd5b5050604080516060810182526001600160a01b0388811682526020808301898152600084860181815233825260018085528783208f87168452909452959020935184546001600160a01b0319169316929092178355905190820155905160029091015550610fde92505050565b3360009081526001602090815260408083206001600160a01b038781168552925290912054811690831614610f1f5760405162461bcd60e51b815260206004820152602360248201527f506f737420436f6c6c61746572616c3a20496e76616c696420636f6c6c6174656044820152621c985b60ea1b606482015260840161018b565b604051639032317760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639032317790610f719033908190879087906004016113ad565b600060405180830381600087803b158015610f8b57600080fd5b505af1158015610f9f573d6000803e3d6000fd5b50503360009081526001602081815260408084206001600160a01b038a1685529091528220018054859450909250610fd8908490611681565b90915550505b604080516001600160a01b0384811682526020820184905285169133917f6d9c01d2a1bfe391d97dad0c8485ad9eb8603cf2404ea70f733fe47b186a0f519101610bbd565b6001600160a01b038116811461103857600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561107a5761107a61103b565b604052919050565b600080600080600060a0868803121561109a57600080fd5b85356110a581611023565b94506020868101356110b681611023565b945060408701359350606087013567ffffffffffffffff808211156110da57600080fd5b818901915089601f8301126110ee57600080fd5b8135818111156111005761110061103b565b611112601f8201601f19168501611051565b91508082528a8482850101111561112857600080fd5b808484018584013760009082019093019290925250949793965091946080013592915050565b6000806040838503121561116157600080fd5b823561116c81611023565b946020939093013593505050565b60008060006060848603121561118f57600080fd5b833561119a81611023565b925060208401356111aa81611023565b929592945050506040919091013590565b80516111c681611023565b919050565b6000602082840312156111dd57600080fd5b81516111e881611023565b9392505050565b600181811c9082168061120357607f821691505b60208210810361122357634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561127357600081815260208120601f850160051c810160208610156112505750805b601f850160051c820191505b8181101561126f5782815560010161125c565b5050505b505050565b815167ffffffffffffffff8111156112925761129261103b565b6112a6816112a084546111ef565b84611229565b602080601f8311600181146112db57600084156112c35750858301515b600019600386901b1c1916600185901b17855561126f565b600085815260208120601f198616915b8281101561130a578886015182559484019460019091019084016112eb565b50858210156113285787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60005b8381101561135357818101518382015260200161133b565b50506000910152565b60018060a01b0385168152836020820152608060408201526000835180608084015261138f8160a0850160208801611338565b606083019390935250601f91909101601f19160160a0019392505050565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b634e487b7160e01b600052601160045260246000fd5b81810381811115611400576114006113d7565b92915050565b805160ff811681146111c657600080fd5b805167ffffffffffffffff811681146111c657600080fd5b80516fffffffffffffffffffffffffffffffff811681146111c657600080fd5b600061010080838503121561146357600080fd5b6040519081019067ffffffffffffffff821181831017156114865761148661103b565b8160405261149384611406565b8152602084015191506114a582611023565b8160208201526114b7604085016111bb565b60408201526114c860608501611417565b60608201526114d960808501611417565b60808201526114ea60a08501611417565b60a08201526114fb60c08501611417565b60c082015261150c60e0850161142f565b60e0820152949350505050565b6000816000190483118215151615611533576115336113d7565b500290565b60008261155557634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561156c57600080fd5b5051919050565b60006020828403121561158557600080fd5b6111e882611406565b600181815b808511156115c95781600019048211156115af576115af6113d7565b808516156115bc57918102915b93841c9390800290611593565b509250929050565b6000826115e057506001611400565b816115ed57506000611400565b8160018114611603576002811461160d57611629565b6001915050611400565b60ff84111561161e5761161e6113d7565b50506001821b611400565b5060208310610133831016604e8410600b841016171561164c575081810a611400565b611656838361158e565b806000190482111561166a5761166a6113d7565b029392505050565b60006111e860ff8416836115d1565b80820180821115611400576114006113d7565b600082516116a6818460208701611338565b919091019291505056fea26469706673582212207a14fc968a6c80d62d28c25712dd992ff63d7b1bdc6f988e5061161521812d0264736f6c63430008100033",
    "immutableReferences": {
        "10": [
            {
                "length": 32,
                "start": 175
            },
            {
                "length": 32,
                "start": 1293
            },
            {
                "length": 32,
                "start": 1447
            },
            {
                "length": 32,
                "start": 1650
            },
            {
                "length": 32,
                "start": 1815
            },
            {
                "length": 32,
                "start": 2112
            },
            {
                "length": 32,
                "start": 2414
            },
            {
                "length": 32,
                "start": 2625
            },
            {
                "length": 32,
                "start": 2779
            },
            {
                "length": 32,
                "start": 3293
            },
            {
                "length": 32,
                "start": 3526
            },
            {
                "length": 32,
                "start": 3894
            }
        ]
    },
    "generatedSources": [
        {
            "ast": {
                "nodeType": "YulBlock",
                "src": "0:306:5",
                "statements": [
                    {
                        "nodeType": "YulBlock",
                        "src": "6:3:5",
                        "statements": []
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "95:209:5",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "141:16:5",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "150:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "153:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "143:6:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "143:12:5"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "143:12:5"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "116:7:5"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "125:9:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "112:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "112:23:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "137:2:5",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "108:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "108:32:5"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "105:52:5"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "166:29:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "185:9:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "179:5:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "179:16:5"
                                    },
                                    "variables": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "170:5:5",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "258:16:5",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "267:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "270:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "260:6:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "260:12:5"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "260:12:5"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "217:5:5"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "228:5:5"
                                                            },
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "243:3:5",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "248:1:5",
                                                                                "type": "",
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "239:3:5"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "239:11:5"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "252:1:5",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sub",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "235:3:5"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "235:19:5"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "and",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "224:3:5"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "224:31:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "eq",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "214:2:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "214:42:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "207:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "207:50:5"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "204:70:5"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "283:15:5",
                                    "value": {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "293:5:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "283:6:5"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "61:9:5",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "72:7:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "84:6:5",
                                "type": ""
                            }
                        ],
                        "src": "14:290:5"
                    }
                ]
            },
            "contents": "{\n    { }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n}",
            "id": 5,
            "language": "Yul",
            "name": "#utility.yul"
        }
    ],
    "deployedGeneratedSources": [
        {
            "ast": {
                "nodeType": "YulBlock",
                "src": "0:15602:5",
                "statements": [
                    {
                        "nodeType": "YulBlock",
                        "src": "6:3:5",
                        "statements": []
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "59:86:5",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "123:16:5",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "132:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "135:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "125:6:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "125:12:5"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "125:12:5"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "82:5:5"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "93:5:5"
                                                            },
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "108:3:5",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "113:1:5",
                                                                                "type": "",
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "104:3:5"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "104:11:5"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "117:1:5",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sub",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "100:3:5"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "100:19:5"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "and",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "89:3:5"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "89:31:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "eq",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "79:2:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "79:42:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "72:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "72:50:5"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "69:70:5"
                                }
                            ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "48:5:5",
                                "type": ""
                            }
                        ],
                        "src": "14:131:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "182:95:5",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "199:1:5",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "206:3:5",
                                                        "type": "",
                                                        "value": "224"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "211:10:5",
                                                        "type": "",
                                                        "value": "0x4e487b71"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "202:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "202:20:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "192:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "192:31:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "192:31:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "239:1:5",
                                                "type": "",
                                                "value": "4"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "242:4:5",
                                                "type": "",
                                                "value": "0x41"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "232:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "232:15:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "232:15:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "263:1:5",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "266:4:5",
                                                "type": "",
                                                "value": "0x24"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "revert",
                                            "nodeType": "YulIdentifier",
                                            "src": "256:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "256:15:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "256:15:5"
                                }
                            ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "150:127:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "327:230:5",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "337:19:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "353:2:5",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "347:5:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "347:9:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "337:6:5"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "365:58:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "memPtr",
                                                "nodeType": "YulIdentifier",
                                                "src": "387:6:5"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "size",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "403:4:5"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "409:2:5",
                                                                "type": "",
                                                                "value": "31"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "399:3:5"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "399:13:5"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "418:2:5",
                                                                "type": "",
                                                                "value": "31"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "not",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "414:3:5"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "414:7:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "395:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "395:27:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "383:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "383:40:5"
                                    },
                                    "variables": [
                                        {
                                            "name": "newFreePtr",
                                            "nodeType": "YulTypedName",
                                            "src": "369:10:5",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "498:22:5",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "panic_error_0x41",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "500:16:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "500:18:5"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "500:18:5"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "newFreePtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "441:10:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "453:18:5",
                                                        "type": "",
                                                        "value": "0xffffffffffffffff"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "gt",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "438:2:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "438:34:5"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "newFreePtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "477:10:5"
                                                    },
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "489:6:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "lt",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "474:2:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "474:22:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "or",
                                            "nodeType": "YulIdentifier",
                                            "src": "435:2:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "435:62:5"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "432:88:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "536:2:5",
                                                "type": "",
                                                "value": "64"
                                            },
                                            {
                                                "name": "newFreePtr",
                                                "nodeType": "YulIdentifier",
                                                "src": "540:10:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "529:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "529:22:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "529:22:5"
                                }
                            ]
                        },
                        "name": "allocate_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "size",
                                "nodeType": "YulTypedName",
                                "src": "307:4:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "memPtr",
                                "nodeType": "YulTypedName",
                                "src": "316:6:5",
                                "type": ""
                            }
                        ],
                        "src": "282:275:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "710:1030:5",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "757:16:5",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "766:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "769:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "759:6:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "759:12:5"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "759:12:5"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "731:7:5"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "740:9:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "727:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "727:23:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "752:3:5",
                                                "type": "",
                                                "value": "160"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "723:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "723:33:5"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "720:53:5"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "782:36:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "808:9:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "795:12:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "795:23:5"
                                    },
                                    "variables": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "786:5:5",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "852:5:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "827:24:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "827:31:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "827:31:5"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "867:15:5",
                                    "value": {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "877:5:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "867:6:5"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "891:12:5",
                                    "value": {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "901:2:5",
                                        "type": "",
                                        "value": "32"
                                    },
                                    "variables": [
                                        {
                                            "name": "_1",
                                            "nodeType": "YulTypedName",
                                            "src": "895:2:5",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "912:47:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "944:9:5"
                                                    },
                                                    {
                                                        "name": "_1",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "955:2:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "940:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "940:18:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "927:12:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "927:32:5"
                                    },
                                    "variables": [
                                        {
                                            "name": "value_1",
                                            "nodeType": "YulTypedName",
                                            "src": "916:7:5",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "993:7:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "968:24:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "968:33:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "968:33:5"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1010:17:5",
                                    "value": {
                                        "name": "value_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1020:7:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "1010:6:5"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1036:42:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1063:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "1074:2:5",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1059:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1059:18:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1046:12:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1046:32:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1036:6:5"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1087:46:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1118:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "1129:2:5",
                                                        "type": "",
                                                        "value": "96"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1114:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1114:18:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1101:12:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1101:32:5"
                                    },
                                    "variables": [
                                        {
                                            "name": "offset",
                                            "nodeType": "YulTypedName",
                                            "src": "1091:6:5",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1142:28:5",
                                    "value": {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1152:18:5",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                    },
                                    "variables": [
                                        {
                                            "name": "_2",
                                            "nodeType": "YulTypedName",
                                            "src": "1146:2:5",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "1197:16:5",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "1206:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "1209:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1199:6:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "1199:12:5"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "1199:12:5"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "offset",
                                                "nodeType": "YulIdentifier",
                                                "src": "1185:6:5"
                                            },
                                            {
                                                "name": "_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "1193:2:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "1182:2:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1182:14:5"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "1179:34:5"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1222:32:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "1236:9:5"
                                            },
                                            {
                                                "name": "offset",
                                                "nodeType": "YulIdentifier",
                                                "src": "1247:6:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "1232:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1232:22:5"
                                    },
                                    "variables": [
                                        {
                                            "name": "_3",
                                            "nodeType": "YulTypedName",
                                            "src": "1226:2:5",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "1302:16:5",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "1311:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "1314:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1304:6:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "1304:12:5"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "1304:12:5"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "_3",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1281:2:5"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "1285:4:5",
                                                                "type": "",
                                                                "value": "0x1f"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "1277:3:5"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "1277:13:5"
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1292:7:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "slt",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1273:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1273:27:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "1266:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1266:35:5"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "1263:55:5"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1327:26:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "1350:2:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1337:12:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1337:16:5"
                                    },
                                    "variables": [
                                        {
                                            "name": "_4",
                                            "nodeType": "YulTypedName",
                                            "src": "1331:2:5",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "1376:22:5",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "panic_error_0x41",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1378:16:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "1378:18:5"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "1378:18:5"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "1368:2:5"
                                            },
                                            {
                                                "name": "_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "1372:2:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "1365:2:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1365:10:5"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "1362:36:5"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1407:66:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_4",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1448:2:5"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1452:4:5",
                                                                        "type": "",
                                                                        "value": "0x1f"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1444:3:5"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1444:13:5"
                                                            },
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1463:2:5",
                                                                        "type": "",
                                                                        "value": "31"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "not",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1459:3:5"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1459:7:5"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "and",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "1440:3:5"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "1440:27:5"
                                                    },
                                                    {
                                                        "name": "_1",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1469:2:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1436:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1436:36:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "allocate_memory",
                                            "nodeType": "YulIdentifier",
                                            "src": "1420:15:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1420:53:5"
                                    },
                                    "variables": [
                                        {
                                            "name": "array",
                                            "nodeType": "YulTypedName",
                                            "src": "1411:5:5",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "array",
                                                "nodeType": "YulIdentifier",
                                                "src": "1489:5:5"
                                            },
                                            {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "1496:2:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "1482:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1482:17:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1482:17:5"
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "1545:16:5",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "1554:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "1557:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1547:6:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "1547:12:5"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "1547:12:5"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "_3",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1522:2:5"
                                                            },
                                                            {
                                                                "name": "_4",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1526:2:5"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "1518:3:5"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "1518:11:5"
                                                    },
                                                    {
                                                        "name": "_1",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1531:2:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1514:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1514:20:5"
                                            },
                                            {
                                                "name": "dataEnd",
                                                "nodeType": "YulIdentifier",
                                                "src": "1536:7:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "1511:2:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1511:33:5"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "1508:53:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "array",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1587:5:5"
                                                    },
                                                    {
                                                        "name": "_1",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1594:2:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1583:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1583:14:5"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "_3",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1603:2:5"
                                                    },
                                                    {
                                                        "name": "_1",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1607:2:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1599:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1599:11:5"
                                            },
                                            {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "1612:2:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldatacopy",
                                            "nodeType": "YulIdentifier",
                                            "src": "1570:12:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1570:45:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1570:45:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "array",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1639:5:5"
                                                            },
                                                            {
                                                                "name": "_4",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1646:2:5"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "1635:3:5"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "1635:14:5"
                                                    },
                                                    {
                                                        "name": "_1",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1651:2:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1631:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1631:23:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1656:1:5",
                                                "type": "",
                                                "value": "0"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "1624:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1624:34:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1624:34:5"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1667:15:5",
                                    "value": {
                                        "name": "array",
                                        "nodeType": "YulIdentifier",
                                        "src": "1677:5:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value3",
                                            "nodeType": "YulIdentifier",
                                            "src": "1667:6:5"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1691:43:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1718:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "1729:3:5",
                                                        "type": "",
                                                        "value": "128"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1714:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1714:19:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1701:12:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1701:33:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value4",
                                            "nodeType": "YulIdentifier",
                                            "src": "1691:6:5"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_string_memory_ptrt_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "644:9:5",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "655:7:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "667:6:5",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "675:6:5",
                                "type": ""
                            },
                            {
                                "name": "value2",
                                "nodeType": "YulTypedName",
                                "src": "683:6:5",
                                "type": ""
                            },
                            {
                                "name": "value3",
                                "nodeType": "YulTypedName",
                                "src": "691:6:5",
                                "type": ""
                            },
                            {
                                "name": "value4",
                                "nodeType": "YulTypedName",
                                "src": "699:6:5",
                                "type": ""
                            }
                        ],
                        "src": "562:1178:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "1832:228:5",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "1878:16:5",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "1887:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "1890:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1880:6:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "1880:12:5"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "1880:12:5"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1853:7:5"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1862:9:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1849:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1849:23:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1874:2:5",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "1845:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1845:32:5"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "1842:52:5"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1903:36:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "1929:9:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1916:12:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1916:23:5"
                                    },
                                    "variables": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "1907:5:5",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "1973:5:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "1948:24:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1948:31:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1948:31:5"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1988:15:5",
                                    "value": {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1998:5:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "1988:6:5"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "2012:42:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2039:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "2050:2:5",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2035:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2035:18:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "2022:12:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2022:32:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "2012:6:5"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "1790:9:5",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "1801:7:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "1813:6:5",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "1821:6:5",
                                "type": ""
                            }
                        ],
                        "src": "1745:315:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "2169:352:5",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "2215:16:5",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "2224:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "2227:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2217:6:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2217:12:5"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "2217:12:5"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2190:7:5"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2199:9:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2186:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2186:23:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2211:2:5",
                                                "type": "",
                                                "value": "96"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "2182:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2182:32:5"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "2179:52:5"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2240:36:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "2266:9:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "2253:12:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2253:23:5"
                                    },
                                    "variables": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "2244:5:5",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "2310:5:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "2285:24:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2285:31:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2285:31:5"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "2325:15:5",
                                    "value": {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "2335:5:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "2325:6:5"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2349:47:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2381:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "2392:2:5",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2377:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2377:18:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "2364:12:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2364:32:5"
                                    },
                                    "variables": [
                                        {
                                            "name": "value_1",
                                            "nodeType": "YulTypedName",
                                            "src": "2353:7:5",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "2430:7:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "2405:24:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2405:33:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2405:33:5"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "2447:17:5",
                                    "value": {
                                        "name": "value_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2457:7:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "2447:6:5"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "2473:42:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2500:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "2511:2:5",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2496:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2496:18:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "2483:12:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2483:32:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value2",
                                            "nodeType": "YulIdentifier",
                                            "src": "2473:6:5"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "2119:9:5",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "2130:7:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "2142:6:5",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "2150:6:5",
                                "type": ""
                            },
                            {
                                "name": "value2",
                                "nodeType": "YulTypedName",
                                "src": "2158:6:5",
                                "type": ""
                            }
                        ],
                        "src": "2065:456:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "2641:102:5",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "2651:26:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "2663:9:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2674:2:5",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2659:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2659:18:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "2651:4:5"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "2693:9:5"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2708:6:5"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2724:3:5",
                                                                        "type": "",
                                                                        "value": "160"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2729:1:5",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "shl",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2720:3:5"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2720:11:5"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "2733:1:5",
                                                                "type": "",
                                                                "value": "1"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "sub",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2716:3:5"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "2716:19:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2704:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2704:32:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "2686:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2686:51:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2686:51:5"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_contract$_Comet_$1263__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "2610:9:5",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "2621:6:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "2632:4:5",
                                "type": ""
                            }
                        ],
                        "src": "2526:217:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "2922:182:5",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "2939:9:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2950:2:5",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "2932:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2932:21:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2932:21:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2973:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "2984:2:5",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2969:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2969:18:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2989:2:5",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "2962:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2962:30:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2962:30:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3012:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3023:2:5",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3008:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3008:18:5"
                                            },
                                            {
                                                "hexValue": "525741207375626d697373696f6e203a20496e76616c69642072657175657374",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "3028:34:5",
                                                "type": "",
                                                "value": "RWA submission : Invalid request"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "3001:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3001:62:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3001:62:5"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "3072:26:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "3084:9:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3095:2:5",
                                                "type": "",
                                                "value": "96"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "3080:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3080:18:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "3072:4:5"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ac2d297c7b797b46238ca2df5d2a150e9ead54471c39a8a35a5a622a4d896f94__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "2899:9:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "2913:4:5",
                                "type": ""
                            }
                        ],
                        "src": "2748:356:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "3169:78:5",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "3179:22:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "offset",
                                                "nodeType": "YulIdentifier",
                                                "src": "3194:6:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "3188:5:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3188:13:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "3179:5:5"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "3235:5:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "3210:24:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3210:31:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3210:31:5"
                                }
                            ]
                        },
                        "name": "abi_decode_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "offset",
                                "nodeType": "YulTypedName",
                                "src": "3148:6:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "3159:5:5",
                                "type": ""
                            }
                        ],
                        "src": "3109:138:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "3333:170:5",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "3379:16:5",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "3388:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "3391:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3381:6:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3381:12:5"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "3381:12:5"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3354:7:5"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3363:9:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3350:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3350:23:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3375:2:5",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "3346:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3346:32:5"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "3343:52:5"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "3404:29:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "3423:9:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "3417:5:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3417:16:5"
                                    },
                                    "variables": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "3408:5:5",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "3467:5:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "3442:24:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3442:31:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3442:31:5"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "3482:15:5",
                                    "value": {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3492:5:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "3482:6:5"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "3299:9:5",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "3310:7:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "3322:6:5",
                                "type": ""
                            }
                        ],
                        "src": "3252:251:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "3682:181:5",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "3699:9:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3710:2:5",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "3692:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3692:21:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3692:21:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3733:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3744:2:5",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3729:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3729:18:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3749:2:5",
                                                "type": "",
                                                "value": "31"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "3722:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3722:30:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3722:30:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3772:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3783:2:5",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3768:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3768:18:5"
                                            },
                                            {
                                                "hexValue": "525741207375626d697373696f6e203a20496e76616c696420697373756572",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "3788:33:5",
                                                "type": "",
                                                "value": "RWA submission : Invalid issuer"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "3761:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3761:61:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3761:61:5"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "3831:26:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "3843:9:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3854:2:5",
                                                "type": "",
                                                "value": "96"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "3839:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3839:18:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "3831:4:5"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_c8e03de374a2eef952ad165f57629286025fb41738c474a1119ddb07d272dfc5__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "3659:9:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "3673:4:5",
                                "type": ""
                            }
                        ],
                        "src": "3508:355:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "3923:325:5",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "3933:22:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3947:1:5",
                                                "type": "",
                                                "value": "1"
                                            },
                                            {
                                                "name": "data",
                                                "nodeType": "YulIdentifier",
                                                "src": "3950:4:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "shr",
                                            "nodeType": "YulIdentifier",
                                            "src": "3943:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3943:12:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "3933:6:5"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "3964:38:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "data",
                                                "nodeType": "YulIdentifier",
                                                "src": "3994:4:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4000:1:5",
                                                "type": "",
                                                "value": "1"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "3990:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3990:12:5"
                                    },
                                    "variables": [
                                        {
                                            "name": "outOfPlaceEncoding",
                                            "nodeType": "YulTypedName",
                                            "src": "3968:18:5",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "4041:31:5",
                                        "statements": [
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "4043:27:5",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "length",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4057:6:5"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "4065:4:5",
                                                            "type": "",
                                                            "value": "0x7f"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "and",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4053:3:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4053:17:5"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4043:6:5"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "outOfPlaceEncoding",
                                                "nodeType": "YulIdentifier",
                                                "src": "4021:18:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "4014:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4014:26:5"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "4011:61:5"
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "4131:111:5",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "4152:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "4159:3:5",
                                                                    "type": "",
                                                                    "value": "224"
                                                                },
                                                                {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "4164:10:5",
                                                                    "type": "",
                                                                    "value": "0x4e487b71"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "shl",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4155:3:5"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "4155:20:5"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mstore",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4145:6:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4145:31:5"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "4145:31:5"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "4196:1:5",
                                                            "type": "",
                                                            "value": "4"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "4199:4:5",
                                                            "type": "",
                                                            "value": "0x22"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mstore",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4189:6:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4189:15:5"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "4189:15:5"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "4224:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "4227:4:5",
                                                            "type": "",
                                                            "value": "0x24"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4217:6:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4217:15:5"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "4217:15:5"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "outOfPlaceEncoding",
                                                "nodeType": "YulIdentifier",
                                                "src": "4087:18:5"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4110:6:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "4118:2:5",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "lt",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4107:2:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4107:14:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "eq",
                                            "nodeType": "YulIdentifier",
                                            "src": "4084:2:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4084:38:5"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "4081:161:5"
                                }
                            ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "data",
                                "nodeType": "YulTypedName",
                                "src": "3903:4:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "length",
                                "nodeType": "YulTypedName",
                                "src": "3912:6:5",
                                "type": ""
                            }
                        ],
                        "src": "3868:380:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "4309:65:5",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4326:1:5",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "name": "ptr",
                                                "nodeType": "YulIdentifier",
                                                "src": "4329:3:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "4319:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4319:14:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4319:14:5"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "4342:26:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4360:1:5",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4363:4:5",
                                                "type": "",
                                                "value": "0x20"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "keccak256",
                                            "nodeType": "YulIdentifier",
                                            "src": "4350:9:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4350:18:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "data",
                                            "nodeType": "YulIdentifier",
                                            "src": "4342:4:5"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "array_dataslot_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "ptr",
                                "nodeType": "YulTypedName",
                                "src": "4292:3:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "data",
                                "nodeType": "YulTypedName",
                                "src": "4300:4:5",
                                "type": ""
                            }
                        ],
                        "src": "4253:121:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "4460:464:5",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "4493:425:5",
                                        "statements": [
                                            {
                                                "nodeType": "YulVariableDeclaration",
                                                "src": "4507:11:5",
                                                "value": {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "4517:1:5",
                                                    "type": "",
                                                    "value": "0"
                                                },
                                                "variables": [
                                                    {
                                                        "name": "_1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4511:2:5",
                                                        "type": ""
                                                    }
                                                ]
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "name": "_1",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4538:2:5"
                                                        },
                                                        {
                                                            "name": "array",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4542:5:5"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mstore",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4531:6:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4531:17:5"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "4531:17:5"
                                            },
                                            {
                                                "nodeType": "YulVariableDeclaration",
                                                "src": "4561:31:5",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "_1",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4583:2:5"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "4587:4:5",
                                                            "type": "",
                                                            "value": "0x20"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "keccak256",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4573:9:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4573:19:5"
                                                },
                                                "variables": [
                                                    {
                                                        "name": "data",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4565:4:5",
                                                        "type": ""
                                                    }
                                                ]
                                            },
                                            {
                                                "nodeType": "YulVariableDeclaration",
                                                "src": "4605:57:5",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "data",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4628:4:5"
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "4638:1:5",
                                                                    "type": "",
                                                                    "value": "5"
                                                                },
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "name": "startIndex",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4645:10:5"
                                                                        },
                                                                        {
                                                                            "kind": "number",
                                                                            "nodeType": "YulLiteral",
                                                                            "src": "4657:2:5",
                                                                            "type": "",
                                                                            "value": "31"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "add",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4641:3:5"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "4641:19:5"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "shr",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4634:3:5"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "4634:27:5"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "add",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4624:3:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4624:38:5"
                                                },
                                                "variables": [
                                                    {
                                                        "name": "deleteStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4609:11:5",
                                                        "type": ""
                                                    }
                                                ]
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4699:23:5",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4701:19:5",
                                                            "value": {
                                                                "name": "data",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4716:4:5"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "deleteStart",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4701:11:5"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "arguments": [
                                                        {
                                                            "name": "startIndex",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4681:10:5"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "4693:4:5",
                                                            "type": "",
                                                            "value": "0x20"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "lt",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4678:2:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4678:20:5"
                                                },
                                                "nodeType": "YulIf",
                                                "src": "4675:47:5"
                                            },
                                            {
                                                "nodeType": "YulVariableDeclaration",
                                                "src": "4735:41:5",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "data",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4749:4:5"
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "4759:1:5",
                                                                    "type": "",
                                                                    "value": "5"
                                                                },
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "name": "len",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4766:3:5"
                                                                        },
                                                                        {
                                                                            "kind": "number",
                                                                            "nodeType": "YulLiteral",
                                                                            "src": "4771:2:5",
                                                                            "type": "",
                                                                            "value": "31"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "add",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4762:3:5"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "4762:12:5"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "shr",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4755:3:5"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "4755:20:5"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "add",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4745:3:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4745:31:5"
                                                },
                                                "variables": [
                                                    {
                                                        "name": "_2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4739:2:5",
                                                        "type": ""
                                                    }
                                                ]
                                            },
                                            {
                                                "nodeType": "YulVariableDeclaration",
                                                "src": "4789:24:5",
                                                "value": {
                                                    "name": "deleteStart",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4802:11:5"
                                                },
                                                "variables": [
                                                    {
                                                        "name": "start",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4793:5:5",
                                                        "type": ""
                                                    }
                                                ]
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4887:21:5",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "start",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4896:5:5"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4903:2:5"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4889:6:5"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4889:17:5"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4889:17:5"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "arguments": [
                                                        {
                                                            "name": "start",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4837:5:5"
                                                        },
                                                        {
                                                            "name": "_2",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4844:2:5"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "lt",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4834:2:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4834:13:5"
                                                },
                                                "nodeType": "YulForLoop",
                                                "post": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4848:26:5",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4850:22:5",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "start",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4863:5:5"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4870:1:5",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4859:3:5"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4859:13:5"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "start",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4850:5:5"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "pre": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4830:3:5",
                                                    "statements": []
                                                },
                                                "src": "4826:82:5"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "len",
                                                "nodeType": "YulIdentifier",
                                                "src": "4476:3:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4481:2:5",
                                                "type": "",
                                                "value": "31"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "4473:2:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4473:11:5"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "4470:448:5"
                                }
                            ]
                        },
                        "name": "clean_up_bytearray_end_slots_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "array",
                                "nodeType": "YulTypedName",
                                "src": "4432:5:5",
                                "type": ""
                            },
                            {
                                "name": "len",
                                "nodeType": "YulTypedName",
                                "src": "4439:3:5",
                                "type": ""
                            },
                            {
                                "name": "startIndex",
                                "nodeType": "YulTypedName",
                                "src": "4444:10:5",
                                "type": ""
                            }
                        ],
                        "src": "4379:545:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "5014:81:5",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "5024:65:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "data",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5039:4:5"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5057:1:5",
                                                                                "type": "",
                                                                                "value": "3"
                                                                            },
                                                                            {
                                                                                "name": "len",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5060:3:5"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5053:3:5"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5053:11:5"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5070:1:5",
                                                                                "type": "",
                                                                                "value": "0"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "not",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5066:3:5"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5066:6:5"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "shr",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5049:3:5"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5049:24:5"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "not",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "5045:3:5"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "5045:29:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5035:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5035:40:5"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "5081:1:5",
                                                        "type": "",
                                                        "value": "1"
                                                    },
                                                    {
                                                        "name": "len",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5084:3:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5077:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5077:11:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "or",
                                            "nodeType": "YulIdentifier",
                                            "src": "5032:2:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5032:57:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "used",
                                            "nodeType": "YulIdentifier",
                                            "src": "5024:4:5"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "extract_used_part_and_set_length_of_short_byte_array",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "data",
                                "nodeType": "YulTypedName",
                                "src": "4991:4:5",
                                "type": ""
                            },
                            {
                                "name": "len",
                                "nodeType": "YulTypedName",
                                "src": "4997:3:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "used",
                                "nodeType": "YulTypedName",
                                "src": "5005:4:5",
                                "type": ""
                            }
                        ],
                        "src": "4929:166:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "5196:1256:5",
                            "statements": [
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "5206:24:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "src",
                                                "nodeType": "YulIdentifier",
                                                "src": "5226:3:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "5220:5:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5220:10:5"
                                    },
                                    "variables": [
                                        {
                                            "name": "newLen",
                                            "nodeType": "YulTypedName",
                                            "src": "5210:6:5",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "5273:22:5",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "panic_error_0x41",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5275:16:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "5275:18:5"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "5275:18:5"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "newLen",
                                                "nodeType": "YulIdentifier",
                                                "src": "5245:6:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5253:18:5",
                                                "type": "",
                                                "value": "0xffffffffffffffff"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "5242:2:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5242:30:5"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "5239:56:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "slot",
                                                "nodeType": "YulIdentifier",
                                                "src": "5348:4:5"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "slot",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5386:4:5"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "sload",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "5380:5:5"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "5380:11:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "extract_byte_array_length",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5354:25:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5354:38:5"
                                            },
                                            {
                                                "name": "newLen",
                                                "nodeType": "YulIdentifier",
                                                "src": "5394:6:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "clean_up_bytearray_end_slots_string_storage",
                                            "nodeType": "YulIdentifier",
                                            "src": "5304:43:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5304:97:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5304:97:5"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "5410:18:5",
                                    "value": {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5427:1:5",
                                        "type": "",
                                        "value": "0"
                                    },
                                    "variables": [
                                        {
                                            "name": "srcOffset",
                                            "nodeType": "YulTypedName",
                                            "src": "5414:9:5",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "5437:23:5",
                                    "value": {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5456:4:5",
                                        "type": "",
                                        "value": "0x20"
                                    },
                                    "variables": [
                                        {
                                            "name": "srcOffset_1",
                                            "nodeType": "YulTypedName",
                                            "src": "5441:11:5",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "5469:24:5",
                                    "value": {
                                        "name": "srcOffset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5482:11:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "srcOffset",
                                            "nodeType": "YulIdentifier",
                                            "src": "5469:9:5"
                                        }
                                    ]
                                },
                                {
                                    "cases": [
                                        {
                                            "body": {
                                                "nodeType": "YulBlock",
                                                "src": "5539:656:5",
                                                "statements": [
                                                    {
                                                        "nodeType": "YulVariableDeclaration",
                                                        "src": "5553:35:5",
                                                        "value": {
                                                            "arguments": [
                                                                {
                                                                    "name": "newLen",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5572:6:5"
                                                                },
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "kind": "number",
                                                                            "nodeType": "YulLiteral",
                                                                            "src": "5584:2:5",
                                                                            "type": "",
                                                                            "value": "31"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "not",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5580:3:5"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "5580:7:5"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "and",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5568:3:5"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "5568:20:5"
                                                        },
                                                        "variables": [
                                                            {
                                                                "name": "loopEnd",
                                                                "nodeType": "YulTypedName",
                                                                "src": "5557:7:5",
                                                                "type": ""
                                                            }
                                                        ]
                                                    },
                                                    {
                                                        "nodeType": "YulVariableDeclaration",
                                                        "src": "5601:49:5",
                                                        "value": {
                                                            "arguments": [
                                                                {
                                                                    "name": "slot",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5645:4:5"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "array_dataslot_string_storage",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5615:29:5"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "5615:35:5"
                                                        },
                                                        "variables": [
                                                            {
                                                                "name": "dstPtr",
                                                                "nodeType": "YulTypedName",
                                                                "src": "5605:6:5",
                                                                "type": ""
                                                            }
                                                        ]
                                                    },
                                                    {
                                                        "nodeType": "YulVariableDeclaration",
                                                        "src": "5663:10:5",
                                                        "value": {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "5672:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        "variables": [
                                                            {
                                                                "name": "i",
                                                                "nodeType": "YulTypedName",
                                                                "src": "5667:1:5",
                                                                "type": ""
                                                            }
                                                        ]
                                                    },
                                                    {
                                                        "body": {
                                                            "nodeType": "YulBlock",
                                                            "src": "5750:172:5",
                                                            "statements": [
                                                                {
                                                                    "expression": {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dstPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5775:6:5"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "src",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "5793:3:5"
                                                                                            },
                                                                                            {
                                                                                                "name": "srcOffset",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "5798:9:5"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "5789:3:5"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "5789:19:5"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "mload",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "5783:5:5"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "5783:26:5"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sstore",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5768:6:5"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5768:42:5"
                                                                    },
                                                                    "nodeType": "YulExpressionStatement",
                                                                    "src": "5768:42:5"
                                                                },
                                                                {
                                                                    "nodeType": "YulAssignment",
                                                                    "src": "5827:24:5",
                                                                    "value": {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dstPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5841:6:5"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5849:1:5",
                                                                                "type": "",
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5837:3:5"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5837:14:5"
                                                                    },
                                                                    "variableNames": [
                                                                        {
                                                                            "name": "dstPtr",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5827:6:5"
                                                                        }
                                                                    ]
                                                                },
                                                                {
                                                                    "nodeType": "YulAssignment",
                                                                    "src": "5868:40:5",
                                                                    "value": {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "srcOffset",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5885:9:5"
                                                                            },
                                                                            {
                                                                                "name": "srcOffset_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5896:11:5"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5881:3:5"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5881:27:5"
                                                                    },
                                                                    "variableNames": [
                                                                        {
                                                                            "name": "srcOffset",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5868:9:5"
                                                                        }
                                                                    ]
                                                                }
                                                            ]
                                                        },
                                                        "condition": {
                                                            "arguments": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5697:1:5"
                                                                },
                                                                {
                                                                    "name": "loopEnd",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5700:7:5"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "lt",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5694:2:5"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "5694:14:5"
                                                        },
                                                        "nodeType": "YulForLoop",
                                                        "post": {
                                                            "nodeType": "YulBlock",
                                                            "src": "5709:28:5",
                                                            "statements": [
                                                                {
                                                                    "nodeType": "YulAssignment",
                                                                    "src": "5711:24:5",
                                                                    "value": {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5720:1:5"
                                                                            },
                                                                            {
                                                                                "name": "srcOffset_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5723:11:5"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5716:3:5"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5716:19:5"
                                                                    },
                                                                    "variableNames": [
                                                                        {
                                                                            "name": "i",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5711:1:5"
                                                                        }
                                                                    ]
                                                                }
                                                            ]
                                                        },
                                                        "pre": {
                                                            "nodeType": "YulBlock",
                                                            "src": "5690:3:5",
                                                            "statements": []
                                                        },
                                                        "src": "5686:236:5"
                                                    },
                                                    {
                                                        "body": {
                                                            "nodeType": "YulBlock",
                                                            "src": "5970:166:5",
                                                            "statements": [
                                                                {
                                                                    "nodeType": "YulVariableDeclaration",
                                                                    "src": "5988:43:5",
                                                                    "value": {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "src",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "6015:3:5"
                                                                                    },
                                                                                    {
                                                                                        "name": "srcOffset",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "6020:9:5"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "6011:3:5"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "6011:19:5"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6005:5:5"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6005:26:5"
                                                                    },
                                                                    "variables": [
                                                                        {
                                                                            "name": "lastValue",
                                                                            "nodeType": "YulTypedName",
                                                                            "src": "5992:9:5",
                                                                            "type": ""
                                                                        }
                                                                    ]
                                                                },
                                                                {
                                                                    "expression": {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dstPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6055:6:5"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "lastValue",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "6067:9:5"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "arguments": [
                                                                                                            {
                                                                                                                "arguments": [
                                                                                                                    {
                                                                                                                        "kind": "number",
                                                                                                                        "nodeType": "YulLiteral",
                                                                                                                        "src": "6094:1:5",
                                                                                                                        "type": "",
                                                                                                                        "value": "3"
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "name": "newLen",
                                                                                                                        "nodeType": "YulIdentifier",
                                                                                                                        "src": "6097:6:5"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "functionName": {
                                                                                                                    "name": "shl",
                                                                                                                    "nodeType": "YulIdentifier",
                                                                                                                    "src": "6090:3:5"
                                                                                                                },
                                                                                                                "nodeType": "YulFunctionCall",
                                                                                                                "src": "6090:14:5"
                                                                                                            },
                                                                                                            {
                                                                                                                "kind": "number",
                                                                                                                "nodeType": "YulLiteral",
                                                                                                                "src": "6106:3:5",
                                                                                                                "type": "",
                                                                                                                "value": "248"
                                                                                                            }
                                                                                                        ],
                                                                                                        "functionName": {
                                                                                                            "name": "and",
                                                                                                            "nodeType": "YulIdentifier",
                                                                                                            "src": "6086:3:5"
                                                                                                        },
                                                                                                        "nodeType": "YulFunctionCall",
                                                                                                        "src": "6086:24:5"
                                                                                                    },
                                                                                                    {
                                                                                                        "arguments": [
                                                                                                            {
                                                                                                                "kind": "number",
                                                                                                                "nodeType": "YulLiteral",
                                                                                                                "src": "6116:1:5",
                                                                                                                "type": "",
                                                                                                                "value": "0"
                                                                                                            }
                                                                                                        ],
                                                                                                        "functionName": {
                                                                                                            "name": "not",
                                                                                                            "nodeType": "YulIdentifier",
                                                                                                            "src": "6112:3:5"
                                                                                                        },
                                                                                                        "nodeType": "YulFunctionCall",
                                                                                                        "src": "6112:6:5"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "shr",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "6082:3:5"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "6082:37:5"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "not",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "6078:3:5"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "6078:42:5"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "6063:3:5"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "6063:58:5"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sstore",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6048:6:5"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6048:74:5"
                                                                    },
                                                                    "nodeType": "YulExpressionStatement",
                                                                    "src": "6048:74:5"
                                                                }
                                                            ]
                                                        },
                                                        "condition": {
                                                            "arguments": [
                                                                {
                                                                    "name": "loopEnd",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5941:7:5"
                                                                },
                                                                {
                                                                    "name": "newLen",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5950:6:5"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "lt",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5938:2:5"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "5938:19:5"
                                                        },
                                                        "nodeType": "YulIf",
                                                        "src": "5935:201:5"
                                                    },
                                                    {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "name": "slot",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6156:4:5"
                                                                },
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "6170:1:5",
                                                                                    "type": "",
                                                                                    "value": "1"
                                                                                },
                                                                                {
                                                                                    "name": "newLen",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "6173:6:5"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "shl",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6166:3:5"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "6166:14:5"
                                                                        },
                                                                        {
                                                                            "kind": "number",
                                                                            "nodeType": "YulLiteral",
                                                                            "src": "6182:1:5",
                                                                            "type": "",
                                                                            "value": "1"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "add",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6162:3:5"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "6162:22:5"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "sstore",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "6149:6:5"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "6149:36:5"
                                                        },
                                                        "nodeType": "YulExpressionStatement",
                                                        "src": "6149:36:5"
                                                    }
                                                ]
                                            },
                                            "nodeType": "YulCase",
                                            "src": "5532:663:5",
                                            "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5537:1:5",
                                                "type": "",
                                                "value": "1"
                                            }
                                        },
                                        {
                                            "body": {
                                                "nodeType": "YulBlock",
                                                "src": "6212:234:5",
                                                "statements": [
                                                    {
                                                        "nodeType": "YulVariableDeclaration",
                                                        "src": "6226:14:5",
                                                        "value": {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "6239:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        "variables": [
                                                            {
                                                                "name": "value",
                                                                "nodeType": "YulTypedName",
                                                                "src": "6230:5:5",
                                                                "type": ""
                                                            }
                                                        ]
                                                    },
                                                    {
                                                        "body": {
                                                            "nodeType": "YulBlock",
                                                            "src": "6275:67:5",
                                                            "statements": [
                                                                {
                                                                    "nodeType": "YulAssignment",
                                                                    "src": "6293:35:5",
                                                                    "value": {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "src",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "6312:3:5"
                                                                                    },
                                                                                    {
                                                                                        "name": "srcOffset",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "6317:9:5"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "6308:3:5"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "6308:19:5"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6302:5:5"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6302:26:5"
                                                                    },
                                                                    "variableNames": [
                                                                        {
                                                                            "name": "value",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6293:5:5"
                                                                        }
                                                                    ]
                                                                }
                                                            ]
                                                        },
                                                        "condition": {
                                                            "name": "newLen",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "6256:6:5"
                                                        },
                                                        "nodeType": "YulIf",
                                                        "src": "6253:89:5"
                                                    },
                                                    {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "name": "slot",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6362:4:5"
                                                                },
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "name": "value",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6421:5:5"
                                                                        },
                                                                        {
                                                                            "name": "newLen",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6428:6:5"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "extract_used_part_and_set_length_of_short_byte_array",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6368:52:5"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "6368:67:5"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "sstore",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "6355:6:5"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "6355:81:5"
                                                        },
                                                        "nodeType": "YulExpressionStatement",
                                                        "src": "6355:81:5"
                                                    }
                                                ]
                                            },
                                            "nodeType": "YulCase",
                                            "src": "6204:242:5",
                                            "value": "default"
                                        }
                                    ],
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "newLen",
                                                "nodeType": "YulIdentifier",
                                                "src": "5512:6:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5520:2:5",
                                                "type": "",
                                                "value": "31"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "5509:2:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5509:14:5"
                                    },
                                    "nodeType": "YulSwitch",
                                    "src": "5502:944:5"
                                }
                            ]
                        },
                        "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "slot",
                                "nodeType": "YulTypedName",
                                "src": "5181:4:5",
                                "type": ""
                            },
                            {
                                "name": "src",
                                "nodeType": "YulTypedName",
                                "src": "5187:3:5",
                                "type": ""
                            }
                        ],
                        "src": "5100:1352:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "6631:179:5",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "6648:9:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6659:2:5",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "6641:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6641:21:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6641:21:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6682:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "6693:2:5",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6678:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6678:18:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6698:2:5",
                                                "type": "",
                                                "value": "29"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "6671:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6671:30:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6671:30:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6721:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "6732:2:5",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6717:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6717:18:5"
                                            },
                                            {
                                                "hexValue": "525741207375626d697373696f6e203a20496e76616c696420626f6e64",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "6737:31:5",
                                                "type": "",
                                                "value": "RWA submission : Invalid bond"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "6710:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6710:59:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6710:59:5"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "6778:26:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "6790:9:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6801:2:5",
                                                "type": "",
                                                "value": "96"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6786:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6786:18:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "6778:4:5"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_e9fe6b1aa35315a9eec2b928ae49567079ea3c7de0e41b220725a45640e39cbb__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "6608:9:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "6622:4:5",
                                "type": ""
                            }
                        ],
                        "src": "6457:353:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "6881:184:5",
                            "statements": [
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "6891:10:5",
                                    "value": {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6900:1:5",
                                        "type": "",
                                        "value": "0"
                                    },
                                    "variables": [
                                        {
                                            "name": "i",
                                            "nodeType": "YulTypedName",
                                            "src": "6895:1:5",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "6960:63:5",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "name": "dst",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6985:3:5"
                                                                },
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6990:1:5"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "add",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "6981:3:5"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "6981:11:5"
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "name": "src",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7004:3:5"
                                                                        },
                                                                        {
                                                                            "name": "i",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7009:1:5"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "add",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7000:3:5"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "7000:11:5"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "mload",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "6994:5:5"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "6994:18:5"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mstore",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6974:6:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "6974:39:5"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "6974:39:5"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "i",
                                                "nodeType": "YulIdentifier",
                                                "src": "6921:1:5"
                                            },
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "6924:6:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "6918:2:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6918:13:5"
                                    },
                                    "nodeType": "YulForLoop",
                                    "post": {
                                        "nodeType": "YulBlock",
                                        "src": "6932:19:5",
                                        "statements": [
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "6934:15:5",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "i",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "6943:1:5"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "6946:2:5",
                                                            "type": "",
                                                            "value": "32"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "add",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6939:3:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "6939:10:5"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "i",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6934:1:5"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "pre": {
                                        "nodeType": "YulBlock",
                                        "src": "6914:3:5",
                                        "statements": []
                                    },
                                    "src": "6910:113:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dst",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7043:3:5"
                                                    },
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7048:6:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7039:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7039:16:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7057:1:5",
                                                "type": "",
                                                "value": "0"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "7032:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7032:27:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7032:27:5"
                                }
                            ]
                        },
                        "name": "copy_memory_to_memory_with_cleanup",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "src",
                                "nodeType": "YulTypedName",
                                "src": "6859:3:5",
                                "type": ""
                            },
                            {
                                "name": "dst",
                                "nodeType": "YulTypedName",
                                "src": "6864:3:5",
                                "type": ""
                            },
                            {
                                "name": "length",
                                "nodeType": "YulTypedName",
                                "src": "6869:6:5",
                                "type": ""
                            }
                        ],
                        "src": "6815:250:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "7275:434:5",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "7292:9:5"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7307:6:5"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7323:3:5",
                                                                        "type": "",
                                                                        "value": "160"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7328:1:5",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "shl",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7319:3:5"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7319:11:5"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "7332:1:5",
                                                                "type": "",
                                                                "value": "1"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "sub",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "7315:3:5"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "7315:19:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7303:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7303:32:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "7285:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7285:51:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7285:51:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7356:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "7367:2:5",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7352:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7352:18:5"
                                            },
                                            {
                                                "name": "value1",
                                                "nodeType": "YulIdentifier",
                                                "src": "7372:6:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "7345:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7345:34:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7345:34:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7399:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "7410:2:5",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7395:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7395:18:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7415:3:5",
                                                "type": "",
                                                "value": "128"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "7388:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7388:31:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7388:31:5"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "7428:27:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "value2",
                                                "nodeType": "YulIdentifier",
                                                "src": "7448:6:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "7442:5:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7442:13:5"
                                    },
                                    "variables": [
                                        {
                                            "name": "length",
                                            "nodeType": "YulTypedName",
                                            "src": "7432:6:5",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7475:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "7486:3:5",
                                                        "type": "",
                                                        "value": "128"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7471:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7471:19:5"
                                            },
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "7492:6:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "7464:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7464:35:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7464:35:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7547:6:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "7555:2:5",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7543:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7543:15:5"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7564:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "7575:3:5",
                                                        "type": "",
                                                        "value": "160"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7560:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7560:19:5"
                                            },
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "7581:6:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "copy_memory_to_memory_with_cleanup",
                                            "nodeType": "YulIdentifier",
                                            "src": "7508:34:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7508:80:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7508:80:5"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "7597:63:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7613:9:5"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7632:6:5"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7640:2:5",
                                                                        "type": "",
                                                                        "value": "31"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7628:3:5"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7628:15:5"
                                                            },
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7649:2:5",
                                                                        "type": "",
                                                                        "value": "31"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "not",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7645:3:5"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7645:7:5"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "and",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "7624:3:5"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "7624:29:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7609:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7609:45:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7656:3:5",
                                                "type": "",
                                                "value": "160"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "7605:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7605:55:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "7597:4:5"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7680:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "7691:2:5",
                                                        "type": "",
                                                        "value": "96"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7676:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7676:18:5"
                                            },
                                            {
                                                "name": "value3",
                                                "nodeType": "YulIdentifier",
                                                "src": "7696:6:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "7669:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7669:34:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7669:34:5"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint256_t_string_memory_ptr_t_uint256__to_t_address_t_uint256_t_string_memory_ptr_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "7220:9:5",
                                "type": ""
                            },
                            {
                                "name": "value3",
                                "nodeType": "YulTypedName",
                                "src": "7231:6:5",
                                "type": ""
                            },
                            {
                                "name": "value2",
                                "nodeType": "YulTypedName",
                                "src": "7239:6:5",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "7247:6:5",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "7255:6:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "7266:4:5",
                                "type": ""
                            }
                        ],
                        "src": "7070:639:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "7888:173:5",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "7905:9:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7916:2:5",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "7898:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7898:21:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7898:21:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7939:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "7950:2:5",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7935:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7935:18:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7955:2:5",
                                                "type": "",
                                                "value": "23"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "7928:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7928:30:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7928:30:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7978:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "7989:2:5",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7974:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7974:18:5"
                                            },
                                            {
                                                "hexValue": "5265706179696e672062617365203a20496e76616c6964",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "7994:25:5",
                                                "type": "",
                                                "value": "Repaying base : Invalid"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "7967:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7967:53:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7967:53:5"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "8029:26:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "8041:9:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8052:2:5",
                                                "type": "",
                                                "value": "96"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "8037:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8037:18:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "8029:4:5"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_e7e16f45ca0b8574ba9a0f101e7dde34ccb7c3ffff9b592faacbc2b34b38c771__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "7865:9:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "7879:4:5",
                                "type": ""
                            }
                        ],
                        "src": "7714:347:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "8240:179:5",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "8257:9:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8268:2:5",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "8250:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8250:21:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8250:21:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8291:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "8302:2:5",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8287:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8287:18:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8307:2:5",
                                                "type": "",
                                                "value": "29"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "8280:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8280:30:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8280:30:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8330:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "8341:2:5",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8326:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8326:18:5"
                                            },
                                            {
                                                "hexValue": "5265706179696e672062617365203a20496e76616c6964206173736574",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "8346:31:5",
                                                "type": "",
                                                "value": "Repaying base : Invalid asset"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "8319:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8319:59:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8319:59:5"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "8387:26:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "8399:9:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8410:2:5",
                                                "type": "",
                                                "value": "96"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "8395:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8395:18:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "8387:4:5"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_e61ebccde49c8c0954cc71125a1488a73aaf4b8a1ca76a62e1dae9ffd56e5f08__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "8217:9:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "8231:4:5",
                                "type": ""
                            }
                        ],
                        "src": "8066:353:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "8609:271:5",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "8619:27:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "8631:9:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8642:3:5",
                                                "type": "",
                                                "value": "128"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "8627:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8627:19:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "8619:4:5"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "8655:29:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "8673:3:5",
                                                        "type": "",
                                                        "value": "160"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "8678:1:5",
                                                        "type": "",
                                                        "value": "1"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8669:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8669:11:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8682:1:5",
                                                "type": "",
                                                "value": "1"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "sub",
                                            "nodeType": "YulIdentifier",
                                            "src": "8665:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8665:19:5"
                                    },
                                    "variables": [
                                        {
                                            "name": "_1",
                                            "nodeType": "YulTypedName",
                                            "src": "8659:2:5",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "8700:9:5"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8715:6:5"
                                                    },
                                                    {
                                                        "name": "_1",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8723:2:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8711:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8711:15:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "8693:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8693:34:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8693:34:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8747:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "8758:2:5",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8743:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8743:18:5"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8767:6:5"
                                                    },
                                                    {
                                                        "name": "_1",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8775:2:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8763:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8763:15:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "8736:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8736:43:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8736:43:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8799:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "8810:2:5",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8795:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8795:18:5"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8819:6:5"
                                                    },
                                                    {
                                                        "name": "_1",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8827:2:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8815:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8815:15:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "8788:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8788:43:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8788:43:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8851:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "8862:2:5",
                                                        "type": "",
                                                        "value": "96"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8847:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8847:18:5"
                                            },
                                            {
                                                "name": "value3",
                                                "nodeType": "YulIdentifier",
                                                "src": "8867:6:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "8840:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8840:34:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8840:34:5"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "8554:9:5",
                                "type": ""
                            },
                            {
                                "name": "value3",
                                "nodeType": "YulTypedName",
                                "src": "8565:6:5",
                                "type": ""
                            },
                            {
                                "name": "value2",
                                "nodeType": "YulTypedName",
                                "src": "8573:6:5",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "8581:6:5",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "8589:6:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "8600:4:5",
                                "type": ""
                            }
                        ],
                        "src": "8424:456:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "8917:95:5",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8934:1:5",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "8941:3:5",
                                                        "type": "",
                                                        "value": "224"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "8946:10:5",
                                                        "type": "",
                                                        "value": "0x4e487b71"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8937:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8937:20:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "8927:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8927:31:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8927:31:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8974:1:5",
                                                "type": "",
                                                "value": "4"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8977:4:5",
                                                "type": "",
                                                "value": "0x11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "8967:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8967:15:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8967:15:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8998:1:5",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "9001:4:5",
                                                "type": "",
                                                "value": "0x24"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "revert",
                                            "nodeType": "YulIdentifier",
                                            "src": "8991:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8991:15:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8991:15:5"
                                }
                            ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "8885:127:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "9066:79:5",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "9076:17:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "x",
                                                "nodeType": "YulIdentifier",
                                                "src": "9088:1:5"
                                            },
                                            {
                                                "name": "y",
                                                "nodeType": "YulIdentifier",
                                                "src": "9091:1:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "sub",
                                            "nodeType": "YulIdentifier",
                                            "src": "9084:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9084:9:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "diff",
                                            "nodeType": "YulIdentifier",
                                            "src": "9076:4:5"
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "9117:22:5",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "panic_error_0x11",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9119:16:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "9119:18:5"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "9119:18:5"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "diff",
                                                "nodeType": "YulIdentifier",
                                                "src": "9108:4:5"
                                            },
                                            {
                                                "name": "x",
                                                "nodeType": "YulIdentifier",
                                                "src": "9114:1:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "9105:2:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9105:11:5"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "9102:37:5"
                                }
                            ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "x",
                                "nodeType": "YulTypedName",
                                "src": "9048:1:5",
                                "type": ""
                            },
                            {
                                "name": "y",
                                "nodeType": "YulTypedName",
                                "src": "9051:1:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "diff",
                                "nodeType": "YulTypedName",
                                "src": "9057:4:5",
                                "type": ""
                            }
                        ],
                        "src": "9017:128:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "9251:102:5",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "9261:26:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "9273:9:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "9284:2:5",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "9269:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9269:18:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "9261:4:5"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "9303:9:5"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9318:6:5"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9334:3:5",
                                                                        "type": "",
                                                                        "value": "160"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9339:1:5",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "shl",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9330:3:5"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9330:11:5"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "9343:1:5",
                                                                "type": "",
                                                                "value": "1"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "sub",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "9326:3:5"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "9326:19:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9314:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9314:32:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "9296:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9296:51:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9296:51:5"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "9220:9:5",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "9231:6:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "9242:4:5",
                                "type": ""
                            }
                        ],
                        "src": "9150:203:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "9416:102:5",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "9426:22:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "offset",
                                                "nodeType": "YulIdentifier",
                                                "src": "9441:6:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "9435:5:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9435:13:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "9426:5:5"
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "9496:16:5",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "9505:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "9508:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9498:6:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "9498:12:5"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "9498:12:5"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9470:5:5"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "9481:5:5"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "9488:4:5",
                                                                "type": "",
                                                                "value": "0xff"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "and",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "9477:3:5"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "9477:16:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "eq",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9467:2:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9467:27:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "9460:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9460:35:5"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "9457:55:5"
                                }
                            ]
                        },
                        "name": "abi_decode_uint8_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "offset",
                                "nodeType": "YulTypedName",
                                "src": "9395:6:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "9406:5:5",
                                "type": ""
                            }
                        ],
                        "src": "9358:160:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "9582:116:5",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "9592:22:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "offset",
                                                "nodeType": "YulIdentifier",
                                                "src": "9607:6:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "9601:5:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9601:13:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "9592:5:5"
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "9676:16:5",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "9685:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "9688:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9678:6:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "9678:12:5"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "9678:12:5"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9636:5:5"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "9647:5:5"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "9654:18:5",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "and",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "9643:3:5"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "9643:30:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "eq",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9633:2:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9633:41:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "9626:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9626:49:5"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "9623:69:5"
                                }
                            ]
                        },
                        "name": "abi_decode_uint64_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "offset",
                                "nodeType": "YulTypedName",
                                "src": "9561:6:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "9572:5:5",
                                "type": ""
                            }
                        ],
                        "src": "9523:175:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "9763:132:5",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "9773:22:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "offset",
                                                "nodeType": "YulIdentifier",
                                                "src": "9788:6:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "9782:5:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9782:13:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "9773:5:5"
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "9873:16:5",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "9882:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "9885:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9875:6:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "9875:12:5"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "9875:12:5"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9817:5:5"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "9828:5:5"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "9835:34:5",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffff"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "and",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "9824:3:5"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "9824:46:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "eq",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9814:2:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9814:57:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "9807:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9807:65:5"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "9804:85:5"
                                }
                            ]
                        },
                        "name": "abi_decode_uint128_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "offset",
                                "nodeType": "YulTypedName",
                                "src": "9742:6:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "9753:5:5",
                                "type": ""
                            }
                        ],
                        "src": "9703:192:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "10007:1008:5",
                            "statements": [
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "10017:13:5",
                                    "value": {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10027:3:5",
                                        "type": "",
                                        "value": "256"
                                    },
                                    "variables": [
                                        {
                                            "name": "_1",
                                            "nodeType": "YulTypedName",
                                            "src": "10021:2:5",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "10075:16:5",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "10084:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "10087:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10077:6:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "10077:12:5"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "10077:12:5"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10050:7:5"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10059:9:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10046:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10046:23:5"
                                            },
                                            {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "10071:2:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "10042:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10042:32:5"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "10039:52:5"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "10100:23:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10120:2:5",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "10114:5:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10114:9:5"
                                    },
                                    "variables": [
                                        {
                                            "name": "memPtr",
                                            "nodeType": "YulTypedName",
                                            "src": "10104:6:5",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "10132:33:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "memPtr",
                                                "nodeType": "YulIdentifier",
                                                "src": "10154:6:5"
                                            },
                                            {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "10162:2:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "10150:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10150:15:5"
                                    },
                                    "variables": [
                                        {
                                            "name": "newFreePtr",
                                            "nodeType": "YulTypedName",
                                            "src": "10136:10:5",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "10240:22:5",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "panic_error_0x41",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10242:16:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "10242:18:5"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "10242:18:5"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "newFreePtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10183:10:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "10195:18:5",
                                                        "type": "",
                                                        "value": "0xffffffffffffffff"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "gt",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10180:2:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10180:34:5"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "newFreePtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10219:10:5"
                                                    },
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10231:6:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "lt",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10216:2:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10216:22:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "or",
                                            "nodeType": "YulIdentifier",
                                            "src": "10177:2:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10177:62:5"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "10174:88:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10278:2:5",
                                                "type": "",
                                                "value": "64"
                                            },
                                            {
                                                "name": "newFreePtr",
                                                "nodeType": "YulIdentifier",
                                                "src": "10282:10:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "10271:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10271:22:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10271:22:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "memPtr",
                                                "nodeType": "YulIdentifier",
                                                "src": "10309:6:5"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10345:9:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "abi_decode_uint8_fromMemory",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10317:27:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10317:38:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "10302:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10302:54:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10302:54:5"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "10365:38:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10388:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "10399:2:5",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10384:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10384:18:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "10378:5:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10378:25:5"
                                    },
                                    "variables": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "10369:5:5",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "10437:5:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "10412:24:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10412:31:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10412:31:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10463:6:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "10471:2:5",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10459:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10459:15:5"
                                            },
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "10476:5:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "10452:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10452:30:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10452:30:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10502:6:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "10510:2:5",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10498:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10498:15:5"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "headStart",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "10549:9:5"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "10560:2:5",
                                                                "type": "",
                                                                "value": "64"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "10545:3:5"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "10545:18:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "abi_decode_address_fromMemory",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10515:29:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10515:49:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "10491:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10491:74:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10491:74:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10585:6:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "10593:2:5",
                                                        "type": "",
                                                        "value": "96"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10581:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10581:15:5"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "headStart",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "10631:9:5"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "10642:2:5",
                                                                "type": "",
                                                                "value": "96"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "10627:3:5"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "10627:18:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "abi_decode_uint64_fromMemory",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10598:28:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10598:48:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "10574:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10574:73:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10574:73:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10667:6:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "10675:3:5",
                                                        "type": "",
                                                        "value": "128"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10663:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10663:16:5"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "headStart",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "10714:9:5"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "10725:3:5",
                                                                "type": "",
                                                                "value": "128"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "10710:3:5"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "10710:19:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "abi_decode_uint64_fromMemory",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10681:28:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10681:49:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "10656:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10656:75:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10656:75:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10751:6:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "10759:3:5",
                                                        "type": "",
                                                        "value": "160"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10747:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10747:16:5"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "headStart",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "10798:9:5"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "10809:3:5",
                                                                "type": "",
                                                                "value": "160"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "10794:3:5"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "10794:19:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "abi_decode_uint64_fromMemory",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10765:28:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10765:49:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "10740:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10740:75:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10740:75:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10835:6:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "10843:3:5",
                                                        "type": "",
                                                        "value": "192"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10831:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10831:16:5"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "headStart",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "10882:9:5"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "10893:3:5",
                                                                "type": "",
                                                                "value": "192"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "10878:3:5"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "10878:19:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "abi_decode_uint64_fromMemory",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10849:28:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10849:49:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "10824:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10824:75:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10824:75:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10919:6:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "10927:3:5",
                                                        "type": "",
                                                        "value": "224"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10915:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10915:16:5"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "headStart",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "10967:9:5"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "10978:3:5",
                                                                "type": "",
                                                                "value": "224"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "10963:3:5"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "10963:19:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "abi_decode_uint128_fromMemory",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10933:29:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10933:50:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "10908:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10908:76:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10908:76:5"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "10993:16:5",
                                    "value": {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "11003:6:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "10993:6:5"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_struct$_AssetInfo_$728_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "9973:9:5",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "9984:7:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "9996:6:5",
                                "type": ""
                            }
                        ],
                        "src": "9900:1115:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "11072:116:5",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "11131:22:5",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "panic_error_0x11",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11133:16:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "11133:18:5"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "11133:18:5"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "x",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "11103:1:5"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "iszero",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "11096:6:5"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "11096:9:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "iszero",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "11089:6:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "11089:17:5"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11111:1:5"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11122:1:5",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "not",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11118:3:5"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11118:6:5"
                                                            },
                                                            {
                                                                "name": "x",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "11126:1:5"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "div",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "11114:3:5"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "11114:14:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "gt",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "11108:2:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "11108:21:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "11085:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11085:45:5"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "11082:71:5"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "11162:20:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "x",
                                                "nodeType": "YulIdentifier",
                                                "src": "11177:1:5"
                                            },
                                            {
                                                "name": "y",
                                                "nodeType": "YulIdentifier",
                                                "src": "11180:1:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mul",
                                            "nodeType": "YulIdentifier",
                                            "src": "11173:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11173:9:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "product",
                                            "nodeType": "YulIdentifier",
                                            "src": "11162:7:5"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "x",
                                "nodeType": "YulTypedName",
                                "src": "11051:1:5",
                                "type": ""
                            },
                            {
                                "name": "y",
                                "nodeType": "YulTypedName",
                                "src": "11054:1:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "product",
                                "nodeType": "YulTypedName",
                                "src": "11060:7:5",
                                "type": ""
                            }
                        ],
                        "src": "11020:168:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "11239:171:5",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "11270:111:5",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "11291:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "11298:3:5",
                                                                    "type": "",
                                                                    "value": "224"
                                                                },
                                                                {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "11303:10:5",
                                                                    "type": "",
                                                                    "value": "0x4e487b71"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "shl",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "11294:3:5"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "11294:20:5"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mstore",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11284:6:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "11284:31:5"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "11284:31:5"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "11335:1:5",
                                                            "type": "",
                                                            "value": "4"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "11338:4:5",
                                                            "type": "",
                                                            "value": "0x12"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mstore",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11328:6:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "11328:15:5"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "11328:15:5"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "11363:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "11366:4:5",
                                                            "type": "",
                                                            "value": "0x24"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11356:6:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "11356:15:5"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "11356:15:5"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "y",
                                                "nodeType": "YulIdentifier",
                                                "src": "11259:1:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "11252:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11252:9:5"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "11249:132:5"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "11390:14:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "x",
                                                "nodeType": "YulIdentifier",
                                                "src": "11399:1:5"
                                            },
                                            {
                                                "name": "y",
                                                "nodeType": "YulIdentifier",
                                                "src": "11402:1:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "div",
                                            "nodeType": "YulIdentifier",
                                            "src": "11395:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11395:9:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "r",
                                            "nodeType": "YulIdentifier",
                                            "src": "11390:1:5"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "checked_div_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "x",
                                "nodeType": "YulTypedName",
                                "src": "11224:1:5",
                                "type": ""
                            },
                            {
                                "name": "y",
                                "nodeType": "YulTypedName",
                                "src": "11227:1:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "r",
                                "nodeType": "YulTypedName",
                                "src": "11233:1:5",
                                "type": ""
                            }
                        ],
                        "src": "11193:217:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "11496:103:5",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "11542:16:5",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "11551:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "11554:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11544:6:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "11544:12:5"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "11544:12:5"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11517:7:5"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11526:9:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "11513:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "11513:23:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "11538:2:5",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "11509:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11509:32:5"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "11506:52:5"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "11567:26:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "11583:9:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "11577:5:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11577:16:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "11567:6:5"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "11462:9:5",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "11473:7:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "11485:6:5",
                                "type": ""
                            }
                        ],
                        "src": "11415:184:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "11683:125:5",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "11729:16:5",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "11738:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "11741:1:5",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11731:6:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "11731:12:5"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "11731:12:5"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11704:7:5"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11713:9:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "11700:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "11700:23:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "11725:2:5",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "11696:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11696:32:5"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "11693:52:5"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "11754:48:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "11792:9:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "abi_decode_uint8_fromMemory",
                                            "nodeType": "YulIdentifier",
                                            "src": "11764:27:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11764:38:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "11754:6:5"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_uint8_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "11649:9:5",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "11660:7:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "11672:6:5",
                                "type": ""
                            }
                        ],
                        "src": "11604:204:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "11877:358:5",
                            "statements": [
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "11887:16:5",
                                    "value": {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11902:1:5",
                                        "type": "",
                                        "value": "1"
                                    },
                                    "variables": [
                                        {
                                            "name": "power_1",
                                            "nodeType": "YulTypedName",
                                            "src": "11891:7:5",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "11912:16:5",
                                    "value": {
                                        "name": "power_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11921:7:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "power",
                                            "nodeType": "YulIdentifier",
                                            "src": "11912:5:5"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "11937:13:5",
                                    "value": {
                                        "name": "_base",
                                        "nodeType": "YulIdentifier",
                                        "src": "11945:5:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "base",
                                            "nodeType": "YulIdentifier",
                                            "src": "11937:4:5"
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "12001:228:5",
                                        "statements": [
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "12046:22:5",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [],
                                                                "functionName": {
                                                                    "name": "panic_error_0x11",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12048:16:5"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12048:18:5"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12048:18:5"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "arguments": [
                                                        {
                                                            "name": "base",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "12021:4:5"
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "kind": "number",
                                                                            "nodeType": "YulLiteral",
                                                                            "src": "12035:1:5",
                                                                            "type": "",
                                                                            "value": "0"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "not",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12031:3:5"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "12031:6:5"
                                                                },
                                                                {
                                                                    "name": "base",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12039:4:5"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "div",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "12027:3:5"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "12027:17:5"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "gt",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12018:2:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "12018:27:5"
                                                },
                                                "nodeType": "YulIf",
                                                "src": "12015:53:5"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "12107:29:5",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "12109:25:5",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "power",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12122:5:5"
                                                                    },
                                                                    {
                                                                        "name": "base",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12129:4:5"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mul",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12118:3:5"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12118:16:5"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "power",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12109:5:5"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "arguments": [
                                                        {
                                                            "name": "exponent",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "12088:8:5"
                                                        },
                                                        {
                                                            "name": "power_1",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "12098:7:5"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "and",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12084:3:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "12084:22:5"
                                                },
                                                "nodeType": "YulIf",
                                                "src": "12081:55:5"
                                            },
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "12149:23:5",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "base",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "12161:4:5"
                                                        },
                                                        {
                                                            "name": "base",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "12167:4:5"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mul",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12157:3:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "12157:15:5"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "base",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12149:4:5"
                                                    }
                                                ]
                                            },
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "12185:34:5",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "power_1",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "12201:7:5"
                                                        },
                                                        {
                                                            "name": "exponent",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "12210:8:5"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "shr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12197:3:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "12197:22:5"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "exponent",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12185:8:5"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "exponent",
                                                "nodeType": "YulIdentifier",
                                                "src": "11970:8:5"
                                            },
                                            {
                                                "name": "power_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "11980:7:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "11967:2:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11967:21:5"
                                    },
                                    "nodeType": "YulForLoop",
                                    "post": {
                                        "nodeType": "YulBlock",
                                        "src": "11989:3:5",
                                        "statements": []
                                    },
                                    "pre": {
                                        "nodeType": "YulBlock",
                                        "src": "11963:3:5",
                                        "statements": []
                                    },
                                    "src": "11959:270:5"
                                }
                            ]
                        },
                        "name": "checked_exp_helper",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "_base",
                                "nodeType": "YulTypedName",
                                "src": "11841:5:5",
                                "type": ""
                            },
                            {
                                "name": "exponent",
                                "nodeType": "YulTypedName",
                                "src": "11848:8:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "power",
                                "nodeType": "YulTypedName",
                                "src": "11861:5:5",
                                "type": ""
                            },
                            {
                                "name": "base",
                                "nodeType": "YulTypedName",
                                "src": "11868:4:5",
                                "type": ""
                            }
                        ],
                        "src": "11813:422:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "12299:747:5",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "12337:52:5",
                                        "statements": [
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "12351:10:5",
                                                "value": {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "12360:1:5",
                                                    "type": "",
                                                    "value": "1"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "power",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12351:5:5"
                                                    }
                                                ]
                                            },
                                            {
                                                "nodeType": "YulLeave",
                                                "src": "12374:5:5"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "exponent",
                                                "nodeType": "YulIdentifier",
                                                "src": "12319:8:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "12312:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12312:16:5"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "12309:80:5"
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "12422:52:5",
                                        "statements": [
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "12436:10:5",
                                                "value": {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "12445:1:5",
                                                    "type": "",
                                                    "value": "0"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "power",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12436:5:5"
                                                    }
                                                ]
                                            },
                                            {
                                                "nodeType": "YulLeave",
                                                "src": "12459:5:5"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "base",
                                                "nodeType": "YulIdentifier",
                                                "src": "12408:4:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "12401:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12401:12:5"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "12398:76:5"
                                },
                                {
                                    "cases": [
                                        {
                                            "body": {
                                                "nodeType": "YulBlock",
                                                "src": "12510:52:5",
                                                "statements": [
                                                    {
                                                        "nodeType": "YulAssignment",
                                                        "src": "12524:10:5",
                                                        "value": {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "12533:1:5",
                                                            "type": "",
                                                            "value": "1"
                                                        },
                                                        "variableNames": [
                                                            {
                                                                "name": "power",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "12524:5:5"
                                                            }
                                                        ]
                                                    },
                                                    {
                                                        "nodeType": "YulLeave",
                                                        "src": "12547:5:5"
                                                    }
                                                ]
                                            },
                                            "nodeType": "YulCase",
                                            "src": "12503:59:5",
                                            "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "12508:1:5",
                                                "type": "",
                                                "value": "1"
                                            }
                                        },
                                        {
                                            "body": {
                                                "nodeType": "YulBlock",
                                                "src": "12578:123:5",
                                                "statements": [
                                                    {
                                                        "body": {
                                                            "nodeType": "YulBlock",
                                                            "src": "12613:22:5",
                                                            "statements": [
                                                                {
                                                                    "expression": {
                                                                        "arguments": [],
                                                                        "functionName": {
                                                                            "name": "panic_error_0x11",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12615:16:5"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12615:18:5"
                                                                    },
                                                                    "nodeType": "YulExpressionStatement",
                                                                    "src": "12615:18:5"
                                                                }
                                                            ]
                                                        },
                                                        "condition": {
                                                            "arguments": [
                                                                {
                                                                    "name": "exponent",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12598:8:5"
                                                                },
                                                                {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "12608:3:5",
                                                                    "type": "",
                                                                    "value": "255"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "gt",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "12595:2:5"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "12595:17:5"
                                                        },
                                                        "nodeType": "YulIf",
                                                        "src": "12592:43:5"
                                                    },
                                                    {
                                                        "nodeType": "YulAssignment",
                                                        "src": "12648:25:5",
                                                        "value": {
                                                            "arguments": [
                                                                {
                                                                    "name": "exponent",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12661:8:5"
                                                                },
                                                                {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "12671:1:5",
                                                                    "type": "",
                                                                    "value": "1"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "shl",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "12657:3:5"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "12657:16:5"
                                                        },
                                                        "variableNames": [
                                                            {
                                                                "name": "power",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "12648:5:5"
                                                            }
                                                        ]
                                                    },
                                                    {
                                                        "nodeType": "YulLeave",
                                                        "src": "12686:5:5"
                                                    }
                                                ]
                                            },
                                            "nodeType": "YulCase",
                                            "src": "12571:130:5",
                                            "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "12576:1:5",
                                                "type": "",
                                                "value": "2"
                                            }
                                        }
                                    ],
                                    "expression": {
                                        "name": "base",
                                        "nodeType": "YulIdentifier",
                                        "src": "12490:4:5"
                                    },
                                    "nodeType": "YulSwitch",
                                    "src": "12483:218:5"
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "12799:70:5",
                                        "statements": [
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "12813:28:5",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "base",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "12826:4:5"
                                                        },
                                                        {
                                                            "name": "exponent",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "12832:8:5"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "exp",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12822:3:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "12822:19:5"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "power",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12813:5:5"
                                                    }
                                                ]
                                            },
                                            {
                                                "nodeType": "YulLeave",
                                                "src": "12854:5:5"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "base",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "12723:4:5"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "12729:2:5",
                                                                "type": "",
                                                                "value": "11"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "lt",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "12720:2:5"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "12720:12:5"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "exponent",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "12737:8:5"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "12747:2:5",
                                                                "type": "",
                                                                "value": "78"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "lt",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "12734:2:5"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "12734:16:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "12716:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "12716:35:5"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "base",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "12760:4:5"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "12766:3:5",
                                                                "type": "",
                                                                "value": "307"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "lt",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "12757:2:5"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "12757:13:5"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "exponent",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "12775:8:5"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "12785:2:5",
                                                                "type": "",
                                                                "value": "32"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "lt",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "12772:2:5"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "12772:16:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "12753:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "12753:36:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "or",
                                            "nodeType": "YulIdentifier",
                                            "src": "12713:2:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12713:77:5"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "12710:159:5"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "12878:57:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "base",
                                                "nodeType": "YulIdentifier",
                                                "src": "12920:4:5"
                                            },
                                            {
                                                "name": "exponent",
                                                "nodeType": "YulIdentifier",
                                                "src": "12926:8:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "checked_exp_helper",
                                            "nodeType": "YulIdentifier",
                                            "src": "12901:18:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12901:34:5"
                                    },
                                    "variables": [
                                        {
                                            "name": "power_1",
                                            "nodeType": "YulTypedName",
                                            "src": "12882:7:5",
                                            "type": ""
                                        },
                                        {
                                            "name": "base_1",
                                            "nodeType": "YulTypedName",
                                            "src": "12891:6:5",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "12980:22:5",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "panic_error_0x11",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12982:16:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "12982:18:5"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "12982:18:5"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "power_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "12950:7:5"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "12967:1:5",
                                                                "type": "",
                                                                "value": "0"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "not",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "12963:3:5"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "12963:6:5"
                                                    },
                                                    {
                                                        "name": "base_1",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12971:6:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "div",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "12959:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "12959:19:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "12947:2:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12947:32:5"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "12944:58:5"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "13011:29:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "power_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "13024:7:5"
                                            },
                                            {
                                                "name": "base_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "13033:6:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mul",
                                            "nodeType": "YulIdentifier",
                                            "src": "13020:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13020:20:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "power",
                                            "nodeType": "YulIdentifier",
                                            "src": "13011:5:5"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "checked_exp_unsigned",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "base",
                                "nodeType": "YulTypedName",
                                "src": "12270:4:5",
                                "type": ""
                            },
                            {
                                "name": "exponent",
                                "nodeType": "YulTypedName",
                                "src": "12276:8:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "power",
                                "nodeType": "YulTypedName",
                                "src": "12289:5:5",
                                "type": ""
                            }
                        ],
                        "src": "12240:806:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "13119:72:5",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "13129:56:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "base",
                                                "nodeType": "YulIdentifier",
                                                "src": "13159:4:5"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "exponent",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "13169:8:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "13179:4:5",
                                                        "type": "",
                                                        "value": "0xff"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "13165:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "13165:19:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "checked_exp_unsigned",
                                            "nodeType": "YulIdentifier",
                                            "src": "13138:20:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13138:47:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "power",
                                            "nodeType": "YulIdentifier",
                                            "src": "13129:5:5"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "checked_exp_t_uint256_t_uint8",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "base",
                                "nodeType": "YulTypedName",
                                "src": "13090:4:5",
                                "type": ""
                            },
                            {
                                "name": "exponent",
                                "nodeType": "YulTypedName",
                                "src": "13096:8:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "power",
                                "nodeType": "YulTypedName",
                                "src": "13109:5:5",
                                "type": ""
                            }
                        ],
                        "src": "13051:140:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "13297:76:5",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "13307:26:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "13319:9:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "13330:2:5",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "13315:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13315:18:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "13307:4:5"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "13349:9:5"
                                            },
                                            {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "13360:6:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "13342:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13342:25:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13342:25:5"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "13266:9:5",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "13277:6:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "13288:4:5",
                                "type": ""
                            }
                        ],
                        "src": "13196:177:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "13552:174:5",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "13569:9:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "13580:2:5",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "13562:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13562:21:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13562:21:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "13603:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "13614:2:5",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "13599:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "13599:18:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "13619:2:5",
                                                "type": "",
                                                "value": "24"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "13592:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13592:30:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13592:30:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "13642:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "13653:2:5",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "13638:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "13638:18:5"
                                            },
                                            {
                                                "hexValue": "426f72726f77696e672062617365203a20496e76616c6964",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "13658:26:5",
                                                "type": "",
                                                "value": "Borrowing base : Invalid"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "13631:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13631:54:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13631:54:5"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "13694:26:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "13706:9:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "13717:2:5",
                                                "type": "",
                                                "value": "96"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "13702:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13702:18:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "13694:4:5"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_776e4b134377506232128ec017a3f81b7644fa05c0eddc361a8bdbbe6aaf13f6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "13529:9:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "13543:4:5",
                                "type": ""
                            }
                        ],
                        "src": "13378:348:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "13779:77:5",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "13789:16:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "x",
                                                "nodeType": "YulIdentifier",
                                                "src": "13800:1:5"
                                            },
                                            {
                                                "name": "y",
                                                "nodeType": "YulIdentifier",
                                                "src": "13803:1:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "13796:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13796:9:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "sum",
                                            "nodeType": "YulIdentifier",
                                            "src": "13789:3:5"
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "13828:22:5",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "panic_error_0x11",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "13830:16:5"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "13830:18:5"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "13830:18:5"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "x",
                                                "nodeType": "YulIdentifier",
                                                "src": "13820:1:5"
                                            },
                                            {
                                                "name": "sum",
                                                "nodeType": "YulIdentifier",
                                                "src": "13823:3:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "13817:2:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13817:10:5"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "13814:36:5"
                                }
                            ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "x",
                                "nodeType": "YulTypedName",
                                "src": "13762:1:5",
                                "type": ""
                            },
                            {
                                "name": "y",
                                "nodeType": "YulTypedName",
                                "src": "13765:1:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "sum",
                                "nodeType": "YulTypedName",
                                "src": "13771:3:5",
                                "type": ""
                            }
                        ],
                        "src": "13731:125:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "14035:177:5",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "14052:9:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "14063:2:5",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "14045:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14045:21:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14045:21:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "14086:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "14097:2:5",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "14082:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "14082:18:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "14102:2:5",
                                                "type": "",
                                                "value": "27"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "14075:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14075:30:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14075:30:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "14125:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "14136:2:5",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "14121:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "14121:18:5"
                                            },
                                            {
                                                "hexValue": "506f7374696e6720436f6c6c61746572616c3a20496e76616c6964",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "14141:29:5",
                                                "type": "",
                                                "value": "Posting Collateral: Invalid"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "14114:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14114:57:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14114:57:5"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "14180:26:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "14192:9:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "14203:2:5",
                                                "type": "",
                                                "value": "96"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "14188:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14188:18:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "14180:4:5"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_3cf3a52794eca675bbfdc3c417dfc121ed781af513ea1dff09cb870ff5901776__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "14012:9:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "14026:4:5",
                                "type": ""
                            }
                        ],
                        "src": "13861:351:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "14354:150:5",
                            "statements": [
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "14364:27:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "14384:6:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "14378:5:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14378:13:5"
                                    },
                                    "variables": [
                                        {
                                            "name": "length",
                                            "nodeType": "YulTypedName",
                                            "src": "14368:6:5",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "14439:6:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "14447:4:5",
                                                        "type": "",
                                                        "value": "0x20"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "14435:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "14435:17:5"
                                            },
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "14454:3:5"
                                            },
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "14459:6:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "copy_memory_to_memory_with_cleanup",
                                            "nodeType": "YulIdentifier",
                                            "src": "14400:34:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14400:66:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14400:66:5"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "14475:23:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "14486:3:5"
                                            },
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "14491:6:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "14482:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14482:16:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "end",
                                            "nodeType": "YulIdentifier",
                                            "src": "14475:3:5"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "pos",
                                "nodeType": "YulTypedName",
                                "src": "14330:3:5",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "14335:6:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "14346:3:5",
                                "type": ""
                            }
                        ],
                        "src": "14217:287:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "14683:234:5",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "14700:9:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "14711:2:5",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "14693:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14693:21:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14693:21:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "14734:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "14745:2:5",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "14730:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "14730:18:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "14750:2:5",
                                                "type": "",
                                                "value": "44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "14723:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14723:30:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14723:30:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "14773:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "14784:2:5",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "14769:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "14769:18:5"
                                            },
                                            {
                                                "hexValue": "506f7374696e6720436f6c6c61746572616c3a20496e76616c696420636f6c6c",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "14789:34:5",
                                                "type": "",
                                                "value": "Posting Collateral: Invalid coll"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "14762:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14762:62:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14762:62:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "14844:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "14855:2:5",
                                                        "type": "",
                                                        "value": "96"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "14840:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "14840:18:5"
                                            },
                                            {
                                                "hexValue": "61746572616c2063616c6c6c",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "14860:14:5",
                                                "type": "",
                                                "value": "ateral calll"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "14833:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14833:42:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14833:42:5"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "14884:27:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "14896:9:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "14907:3:5",
                                                "type": "",
                                                "value": "128"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "14892:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14892:19:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "14884:4:5"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_44031d7fe2f5fdcc90cdb121670a2c2a30e70f72d7155daa41d48b1b73f2f313__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "14660:9:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "14674:4:5",
                                "type": ""
                            }
                        ],
                        "src": "14509:408:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "15096:225:5",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "15113:9:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "15124:2:5",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "15106:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15106:21:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15106:21:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "15147:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "15158:2:5",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "15143:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "15143:18:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "15163:2:5",
                                                "type": "",
                                                "value": "35"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "15136:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15136:30:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15136:30:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "15186:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "15197:2:5",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "15182:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "15182:18:5"
                                            },
                                            {
                                                "hexValue": "506f737420436f6c6c61746572616c3a20496e76616c696420636f6c6c617465",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "15202:34:5",
                                                "type": "",
                                                "value": "Post Collateral: Invalid collate"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "15175:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15175:62:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15175:62:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "15257:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "15268:2:5",
                                                        "type": "",
                                                        "value": "96"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "15253:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "15253:18:5"
                                            },
                                            {
                                                "hexValue": "72616c",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "15273:5:5",
                                                "type": "",
                                                "value": "ral"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "15246:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15246:33:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15246:33:5"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "15288:27:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "15300:9:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "15311:3:5",
                                                "type": "",
                                                "value": "128"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "15296:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15296:19:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "15288:4:5"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_394cd8b0c5d27701b415634dce667cd2b2a95d6403b5642b99bdba02cf0dac43__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "15073:9:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "15087:4:5",
                                "type": ""
                            }
                        ],
                        "src": "14922:399:5"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "15455:145:5",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "15465:26:5",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "15477:9:5"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "15488:2:5",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "15473:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15473:18:5"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "15465:4:5"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "15507:9:5"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "15522:6:5"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "15538:3:5",
                                                                        "type": "",
                                                                        "value": "160"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "15543:1:5",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "shl",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15534:3:5"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15534:11:5"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "15547:1:5",
                                                                "type": "",
                                                                "value": "1"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "sub",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "15530:3:5"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "15530:19:5"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "15518:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "15518:32:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "15500:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15500:51:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15500:51:5"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "15571:9:5"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "15582:2:5",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "15567:3:5"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "15567:18:5"
                                            },
                                            {
                                                "name": "value1",
                                                "nodeType": "YulIdentifier",
                                                "src": "15587:6:5"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "15560:6:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15560:34:5"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15560:34:5"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "15416:9:5",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "15427:6:5",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "15435:6:5",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "15446:4:5",
                                "type": ""
                            }
                        ],
                        "src": "15326:274:5"
                    }
                ]
            },
            "contents": "{\n    { }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_string_memory_ptrt_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let _1 := 32\n        let value_1 := calldataload(add(headStart, _1))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        let _2 := 0xffffffffffffffff\n        if gt(offset, _2) { revert(0, 0) }\n        let _3 := add(headStart, offset)\n        if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) }\n        let _4 := calldataload(_3)\n        if gt(_4, _2) { panic_error_0x41() }\n        let array := allocate_memory(add(and(add(_4, 0x1f), not(31)), _1))\n        mstore(array, _4)\n        if gt(add(add(_3, _4), _1), dataEnd) { revert(0, 0) }\n        calldatacopy(add(array, _1), add(_3, _1), _4)\n        mstore(add(add(array, _4), _1), 0)\n        value3 := array\n        value4 := calldataload(add(headStart, 128))\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_contract$_Comet_$1263__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_stringliteral_ac2d297c7b797b46238ca2df5d2a150e9ead54471c39a8a35a5a622a4d896f94__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"RWA submission : Invalid request\")\n        tail := add(headStart, 96)\n    }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        validator_revert_address(value)\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_c8e03de374a2eef952ad165f57629286025fb41738c474a1119ddb07d272dfc5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"RWA submission : Invalid issuer\")\n        tail := add(headStart, 96)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            let _1 := 0\n            mstore(_1, array)\n            let data := keccak256(_1, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _2 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _2) { start := add(start, 1) }\n            { sstore(start, _1) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        let srcOffset_1 := 0x20\n        srcOffset := srcOffset_1\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, srcOffset_1)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_e9fe6b1aa35315a9eec2b928ae49567079ea3c7de0e41b220725a45640e39cbb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"RWA submission : Invalid bond\")\n        tail := add(headStart, 96)\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\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        mstore(add(dst, length), 0)\n    }\n    function abi_encode_tuple_t_address_t_uint256_t_string_memory_ptr_t_uint256__to_t_address_t_uint256_t_string_memory_ptr_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), 128)\n        let length := mload(value2)\n        mstore(add(headStart, 128), length)\n        copy_memory_to_memory_with_cleanup(add(value2, 32), add(headStart, 160), length)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 160)\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_t_stringliteral_e7e16f45ca0b8574ba9a0f101e7dde34ccb7c3ffff9b592faacbc2b34b38c771__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 23)\n        mstore(add(headStart, 64), \"Repaying base : Invalid\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_e61ebccde49c8c0954cc71125a1488a73aaf4b8a1ca76a62e1dae9ffd56e5f08__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"Repaying base : Invalid asset\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_uint8_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n    }\n    function abi_decode_uint64_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_uint128_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_struct$_AssetInfo_$728_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        let _1 := 256\n        if slt(sub(dataEnd, headStart), _1) { revert(0, 0) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, _1)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, abi_decode_uint8_fromMemory(headStart))\n        let value := mload(add(headStart, 32))\n        validator_revert_address(value)\n        mstore(add(memPtr, 32), value)\n        mstore(add(memPtr, 64), abi_decode_address_fromMemory(add(headStart, 64)))\n        mstore(add(memPtr, 96), abi_decode_uint64_fromMemory(add(headStart, 96)))\n        mstore(add(memPtr, 128), abi_decode_uint64_fromMemory(add(headStart, 128)))\n        mstore(add(memPtr, 160), abi_decode_uint64_fromMemory(add(headStart, 160)))\n        mstore(add(memPtr, 192), abi_decode_uint64_fromMemory(add(headStart, 192)))\n        mstore(add(memPtr, 224), abi_decode_uint128_fromMemory(add(headStart, 224)))\n        value0 := memPtr\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(not(0), x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := div(x, y)\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_decode_tuple_t_uint8_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_uint8_fromMemory(headStart)\n    }\n    function checked_exp_helper(_base, exponent) -> power, base\n    {\n        let power_1 := 1\n        power := power_1\n        base := _base\n        for { } gt(exponent, power_1) { }\n        {\n            if gt(base, div(not(0), base)) { panic_error_0x11() }\n            if and(exponent, power_1) { power := mul(power, base) }\n            base := mul(base, base)\n            exponent := shr(power_1, exponent)\n        }\n    }\n    function checked_exp_unsigned(base, exponent) -> power\n    {\n        if iszero(exponent)\n        {\n            power := 1\n            leave\n        }\n        if iszero(base)\n        {\n            power := 0\n            leave\n        }\n        switch base\n        case 1 {\n            power := 1\n            leave\n        }\n        case 2 {\n            if gt(exponent, 255) { panic_error_0x11() }\n            power := shl(exponent, 1)\n            leave\n        }\n        if or(and(lt(base, 11), lt(exponent, 78)), and(lt(base, 307), lt(exponent, 32)))\n        {\n            power := exp(base, exponent)\n            leave\n        }\n        let power_1, base_1 := checked_exp_helper(base, exponent)\n        if gt(power_1, div(not(0), base_1)) { panic_error_0x11() }\n        power := mul(power_1, base_1)\n    }\n    function checked_exp_t_uint256_t_uint8(base, exponent) -> power\n    {\n        power := checked_exp_unsigned(base, and(exponent, 0xff))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_stringliteral_776e4b134377506232128ec017a3f81b7644fa05c0eddc361a8bdbbe6aaf13f6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"Borrowing base : Invalid\")\n        tail := add(headStart, 96)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_stringliteral_3cf3a52794eca675bbfdc3c417dfc121ed781af513ea1dff09cb870ff5901776__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 27)\n        mstore(add(headStart, 64), \"Posting Collateral: Invalid\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_stringliteral_44031d7fe2f5fdcc90cdb121670a2c2a30e70f72d7155daa41d48b1b73f2f313__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"Posting Collateral: Invalid coll\")\n        mstore(add(headStart, 96), \"ateral calll\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_394cd8b0c5d27701b415634dce667cd2b2a95d6403b5642b99bdba02cf0dac43__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 35)\n        mstore(add(headStart, 64), \"Post Collateral: Invalid collate\")\n        mstore(add(headStart, 96), \"ral\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n}",
            "id": 5,
            "language": "Yul",
            "name": "#utility.yul"
        }
    ],
    "sourceMap": "385:8173:0:-:0;;;1465:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1503:21:0;;;385:8173;;14:290:5;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:5;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:5:o;:::-;385:8173:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
    "deployedSourceMap": "385:8173:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2068:1502;;;;;;:::i;:::-;;:::i;:::-;;6923:1633;;;;;;:::i;:::-;;:::i;6132:540::-;;;;;;:::i;:::-;;:::i;3944:1972::-;;;;;;:::i;:::-;;:::i;451:28::-;;;;;;;;-1:-1:-1;;;;;2704:32:5;;;2686:51;;2674:2;2659:18;451:28:0;;;;;;;2068:1502;-1:-1:-1;;;;;2301:21:0;;;;;;:61;;-1:-1:-1;;;;;;2342:20:0;;;;2301:61;:94;;;;;2390:5;-1:-1:-1;;;;;2382:13:0;:4;-1:-1:-1;;;;;2382:13:0;;;2301:94;:121;;;;;2421:1;2415:3;:7;2301:121;:154;;;;;2454:1;2442:9;:13;2301:154;2280:233;;;;-1:-1:-1;;;2280:233:0;;2950:2:5;2280:233:0;;;2932:21:5;;;2969:18;;;2962:30;3028:34;3008:18;;;3001:62;3080:18;;2280:233:0;;;;;;;;;2615:10;-1:-1:-1;;;;;2589:36:0;2594:4;-1:-1:-1;;;;;2589:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2589:36:0;;2568:114;;;;-1:-1:-1;;;2568:114:0;;3710:2:5;2568:114:0;;;3692:21:5;3749:2;3729:18;;;3722:30;3788:33;3768:18;;;3761:61;3839:18;;2568:114:0;3508:355:5;2568:114:0;2793:10;2828:3;2786:18;;;;;;;;;;;-1:-1:-1;;;;;2786:25:0;;;;;;;;;;:30;;2782:707;;2871:159;;;;;;;;-1:-1:-1;;;;;2871:159:0;;;;;;;;;;;;;;;;;;;;;;;;3051:10;-1:-1:-1;3044:18:0;;;;;;;;;:25;;;;;;;;;;;;:31;;;;-1:-1:-1;;;;;;3044:31:0;;;;;;;;;;-1:-1:-1;3044:31:0;;;;;2871:159;;;;3044:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;2834:252;2782:707;;;3209:10;3202:6;:18;;;;;;;;;;;-1:-1:-1;;;;;3202:25:0;;;;;;;;;;:30;;;:38;;;;3177:126;;;;-1:-1:-1;;;3177:126:0;;6659:2:5;3177:126:0;;;6641:21:5;6698:2;6678:18;;;6671:30;6737:31;6717:18;;;6710:59;6786:18;;3177:126:0;6457:353:5;3177:126:0;3324:10;3317:6;:18;;;;;;;;;;;-1:-1:-1;;;;;3317:25:0;;;;;;;;;:29;;;:35;;;3366:37;;:51;3406:11;3366:37;:51;:::i;:::-;-1:-1:-1;3438:10:0;3431:6;:18;;;;;;;;;;;-1:-1:-1;;;;;3431:25:0;;;;;;;;;:35;;:47;;;2782:707;3522:5;-1:-1:-1;;;;;3503:60:0;3510:10;-1:-1:-1;;;;;3503:60:0;;3529:4;3535:3;3540:11;3553:9;3503:60;;;;;;;;;:::i;:::-;;;;;;;;2068:1502;;;;;:::o;6923:1633::-;-1:-1:-1;;;;;7034:21:0;;;;;;:35;;;7068:1;7059:6;:10;7034:35;7026:71;;;;-1:-1:-1;;;7026:71:0;;7916:2:5;7026:71:0;;;7898:21:5;7955:2;7935:18;;;7928:30;7994:25;7974:18;;;7967:53;8037:18;;7026:71:0;7714:347:5;7026:71:0;7190:10;7158:18;7179:22;;;:10;:22;;;;;;;;-1:-1:-1;;;;;7179:29:0;;;;;;;;;;:40;;;7229:68;;;;-1:-1:-1;;;7229:68:0;;8268:2:5;7229:68:0;;;8250:21:5;8307:2;8287:18;;;8280:30;8346:31;8326:18;;;8319:59;8395:18;;7229:68:0;8066:353:5;7229:68:0;7338:17;7358:5;-1:-1:-1;;;;;7358:15:0;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7385:59;;-1:-1:-1;;;7385:59:0;;7338:37;;-1:-1:-1;;;;;;7385:5:0;:16;;;;:59;;7402:10;;;;7338:37;;7437:6;;7385:59;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7507:10:0;7496:22;;;;:10;:22;;;;;;;;-1:-1:-1;;;;;7496:29:0;;;;;;;;;:38;;:48;;7538:6;;-1:-1:-1;7496:38:0;;-1:-1:-1;7496:48:0;;7538:6;;7496:48;:::i;:::-;;;;-1:-1:-1;;7704:61:0;;-1:-1:-1;;;7704:61:0;;-1:-1:-1;;;;;2704:32:5;;;7704:61:0;;;2686:51:5;7664:37:0;;7704:5;:27;;;;;;2659:18:5;;7704:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7664:101;;7775:34;7876:4;7866:6;7813:14;:50;;;:59;;;;;;:::i;:::-;7812:68;;;;:::i;:::-;7775:105;;7890:17;7910:5;-1:-1:-1;;;;;7910:15:0;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7890:37;;7937:25;7972:10;7937:46;;7993:23;8019:18;-1:-1:-1;;;;;8019:27:0;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7993:55;-1:-1:-1;8058:28:0;8158:9;8131:23;7993:55;8131:2;:23;:::i;:::-;8090:64;;:26;:64;:::i;:::-;8089:78;;;;:::i;:::-;8283:134;;-1:-1:-1;;;8283:134:0;;8058:109;;-1:-1:-1;;;;;;8283:5:0;:18;;;;:134;;8315:10;;;;8363;;8058:109;;8283:134;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8477:20;8427:10;:22;8438:10;-1:-1:-1;;;;;8427:22:0;-1:-1:-1;;;;;8427:22:0;;;;;;;;;;;;:29;8450:5;-1:-1:-1;;;;;8427:29:0;-1:-1:-1;;;;;8427:29:0;;;;;;;;;;;;:46;;;:70;;;;;;;:::i;:::-;;;;-1:-1:-1;;8512:37:0;;13342:25:5;;;-1:-1:-1;;;;;8512:37:0;;;8519:10;;8512:37;;13330:2:5;13315:18;8512:37:0;;;;;;;6982:1574;;;;;;;;6923:1633;;:::o;6132:540::-;-1:-1:-1;;;;;6258:21:0;;;;;;:55;;;6292:5;-1:-1:-1;;;;;6292:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6283:6;:30;6258:55;6237:126;;;;-1:-1:-1;;;6237:126:0;;13580:2:5;6237:126:0;;;13562:21:5;13619:2;13599:18;;;13592:30;13658:26;13638:18;;;13631:54;13702:18;;6237:126:0;13378:348:5;6237:126:0;6373:17;6393:5;-1:-1:-1;;;;;6393:15:0;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6492:61;;-1:-1:-1;;;6492:61:0;;6373:37;;-1:-1:-1;;;;;;6492:5:0;:18;;;;:61;;6511:10;;;;6373:37;;6546:6;;6492:61;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6574:10:0;6563:22;;;;:10;:22;;;;;;;;-1:-1:-1;;;;;6563:29:0;;;;;;;;;:38;;:48;;6605:6;;-1:-1:-1;6563:38:0;;-1:-1:-1;6563:48:0;;6605:6;;6563:48;:::i;:::-;;;;-1:-1:-1;;6626:39:0;;13342:25:5;;;-1:-1:-1;;;;;6626:39:0;;;6635:10;;6626:39;;13330:2:5;13315:18;6626:39:0;;;;;;;;6192:480;6132:540;;:::o;3944:1972::-;-1:-1:-1;;;;;4128:21:0;;;;;;:67;;-1:-1:-1;;;;;;4169:26:0;;;;4128:67;:106;;;;;4229:5;-1:-1:-1;;;;;4215:19:0;:10;-1:-1:-1;;;;;4215:19:0;;;4128:106;:136;;;;;4263:1;4254:6;:10;4128:136;4107:210;;;;-1:-1:-1;;;4107:210:0;;14063:2:5;4107:210:0;;;14045:21:5;14102:2;14082:18;;;14075:30;14141:29;14121:18;;;14114:57;14188:18;;4107:210:0;13861:351:5;4107:210:0;4455:10;4496:3;4444:22;;;:10;:22;;;;;;;;-1:-1:-1;;;;;4444:29:0;;;;;;;;;;:40;;4440:1400;;4649:115;;-1:-1:-1;;;;;2704:32:5;;4649:115:0;;;2686:51:5;4626:20:0;;2659:18:5;;4649:115:0;;;-1:-1:-1;;4649:115:0;;;;;;;;;;;;;;-1:-1:-1;;;;;4649:115:0;-1:-1:-1;;;4649:115:0;;;4797:34;4649:115;;-1:-1:-1;;;;;;;;4805:5:0;4797:25;;:34;;4649:115;;4797:34;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4778:53;;;4853:7;4845:64;;;;-1:-1:-1;;;4845:64:0;;14711:2:5;4845:64:0;;;14693:21:5;14750:2;14730:18;;;14723:30;14789:34;14769:18;;;14762:62;-1:-1:-1;;;14840:18:5;;;14833:42;14892:19;;4845:64:0;14509:408:5;4845:64:0;5002:60;;-1:-1:-1;;;5002:60:0;;-1:-1:-1;;;;;5002:5:0;:16;;;;:60;;5019:10;;;;5043;;5055:6;;5002:60;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5142:141:0;;;;;;;;-1:-1:-1;;;;;5142:141:0;;;;;;;;;;;;-1:-1:-1;5142:141:0;;;;;;5308:10;5297:22;;:10;:22;;;;;;:29;;;;;;;;;;;:41;;;;-1:-1:-1;;;;;;5297:41:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4440:1400:0;;-1:-1:-1;;;4440:1400:0;;5494:10;5483:22;;;;:10;:22;;;;;;;;-1:-1:-1;;;;;5483:29:0;;;;;;;;;;:40;;;:54;;;;5458:148;;;;-1:-1:-1;;;5458:148:0;;15124:2:5;5458:148:0;;;15106:21:5;15163:2;15143:18;;;15136:30;15202:34;15182:18;;;15175:62;-1:-1:-1;;;15253:18:5;;;15246:33;15296:19;;5458:148:0;14922:399:5;5458:148:0;5699:60;;-1:-1:-1;;;5699:60:0;;-1:-1:-1;;;;;5699:5:0;:16;;;;:60;;5716:10;;;;5740;;5752:6;;5699:60;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5784:10:0;5773:22;;;;:10;:22;;;;;;;;-1:-1:-1;;;;;5773:29:0;;;;;;;;;:46;:56;;5823:6;;-1:-1:-1;5773:46:0;;-1:-1:-1;5773:56:0;;5823:6;;5773:56;:::i;:::-;;;;-1:-1:-1;;4440:1400:0;5854:55;;;-1:-1:-1;;;;;15518:32:5;;;15500:51;;15582:2;15567:18;;15560:34;;;5854:55:0;;;5871:10;;5854:55;;15473:18:5;5854:55:0;15326:274:5;14:131;-1:-1:-1;;;;;89:31:5;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:127::-;211:10;206:3;202:20;199:1;192:31;242:4;239:1;232:15;266:4;263:1;256:15;282:275;353:2;347:9;418:2;399:13;;-1:-1:-1;;395:27:5;383:40;;453:18;438:34;;474:22;;;435:62;432:88;;;500:18;;:::i;:::-;536:2;529:22;282:275;;-1:-1:-1;282:275:5:o;562:1178::-;667:6;675;683;691;699;752:3;740:9;731:7;727:23;723:33;720:53;;;769:1;766;759:12;720:53;808:9;795:23;827:31;852:5;827:31;:::i;:::-;877:5;-1:-1:-1;901:2:5;940:18;;;927:32;968:33;927:32;968:33;:::i;:::-;1020:7;-1:-1:-1;1074:2:5;1059:18;;1046:32;;-1:-1:-1;1129:2:5;1114:18;;1101:32;1152:18;1182:14;;;1179:34;;;1209:1;1206;1199:12;1179:34;1247:6;1236:9;1232:22;1222:32;;1292:7;1285:4;1281:2;1277:13;1273:27;1263:55;;1314:1;1311;1304:12;1263:55;1350:2;1337:16;1372:2;1368;1365:10;1362:36;;;1378:18;;:::i;:::-;1420:53;1463:2;1444:13;;-1:-1:-1;;1440:27:5;1436:36;;1420:53;:::i;:::-;1407:66;;1496:2;1489:5;1482:17;1536:7;1531:2;1526;1522;1518:11;1514:20;1511:33;1508:53;;;1557:1;1554;1547:12;1508:53;1612:2;1607;1603;1599:11;1594:2;1587:5;1583:14;1570:45;1656:1;1635:14;;;1631:23;;;1624:34;;;;-1:-1:-1;562:1178:5;;;;-1:-1:-1;562:1178:5;;1729:3;1714:19;1701:33;;562:1178;-1:-1:-1;;562:1178:5:o;1745:315::-;1813:6;1821;1874:2;1862:9;1853:7;1849:23;1845:32;1842:52;;;1890:1;1887;1880:12;1842:52;1929:9;1916:23;1948:31;1973:5;1948:31;:::i;:::-;1998:5;2050:2;2035:18;;;;2022:32;;-1:-1:-1;;;1745:315:5:o;2065:456::-;2142:6;2150;2158;2211:2;2199:9;2190:7;2186:23;2182:32;2179:52;;;2227:1;2224;2217:12;2179:52;2266:9;2253:23;2285:31;2310:5;2285:31;:::i;:::-;2335:5;-1:-1:-1;2392:2:5;2377:18;;2364:32;2405:33;2364:32;2405:33;:::i;:::-;2065:456;;2457:7;;-1:-1:-1;;;2511:2:5;2496:18;;;;2483:32;;2065:456::o;3109:138::-;3188:13;;3210:31;3188:13;3210:31;:::i;:::-;3109:138;;;:::o;3252:251::-;3322:6;3375:2;3363:9;3354:7;3350:23;3346:32;3343:52;;;3391:1;3388;3381:12;3343:52;3423:9;3417:16;3442:31;3467:5;3442:31;:::i;:::-;3492:5;3252:251;-1:-1:-1;;;3252:251:5:o;3868:380::-;3947:1;3943:12;;;;3990;;;4011:61;;4065:4;4057:6;4053:17;4043:27;;4011:61;4118:2;4110:6;4107:14;4087:18;4084:38;4081:161;;4164:10;4159:3;4155:20;4152:1;4145:31;4199:4;4196:1;4189:15;4227:4;4224:1;4217:15;4081:161;;3868:380;;;:::o;4379:545::-;4481:2;4476:3;4473:11;4470:448;;;4517:1;4542:5;4538:2;4531:17;4587:4;4583:2;4573:19;4657:2;4645:10;4641:19;4638:1;4634:27;4628:4;4624:38;4693:4;4681:10;4678:20;4675:47;;;-1:-1:-1;4716:4:5;4675:47;4771:2;4766:3;4762:12;4759:1;4755:20;4749:4;4745:31;4735:41;;4826:82;4844:2;4837:5;4834:13;4826:82;;;4889:17;;;4870:1;4859:13;4826:82;;;4830:3;;;4470:448;4379:545;;;:::o;5100:1352::-;5226:3;5220:10;5253:18;5245:6;5242:30;5239:56;;;5275:18;;:::i;:::-;5304:97;5394:6;5354:38;5386:4;5380:11;5354:38;:::i;:::-;5348:4;5304:97;:::i;:::-;5456:4;;5520:2;5509:14;;5537:1;5532:663;;;;6239:1;6256:6;6253:89;;;-1:-1:-1;6308:19:5;;;6302:26;6253:89;-1:-1:-1;;5057:1:5;5053:11;;;5049:24;5045:29;5035:40;5081:1;5077:11;;;5032:57;6355:81;;5502:944;;5532:663;4326:1;4319:14;;;4363:4;4350:18;;-1:-1:-1;;5568:20:5;;;5686:236;5700:7;5697:1;5694:14;5686:236;;;5789:19;;;5783:26;5768:42;;5881:27;;;;5849:1;5837:14;;;;5716:19;;5686:236;;;5690:3;5950:6;5941:7;5938:19;5935:201;;;6011:19;;;6005:26;-1:-1:-1;;6094:1:5;6090:14;;;6106:3;6086:24;6082:37;6078:42;6063:58;6048:74;;5935:201;-1:-1:-1;;;;;6182:1:5;6166:14;;;6162:22;6149:36;;-1:-1:-1;5100:1352:5:o;6815:250::-;6900:1;6910:113;6924:6;6921:1;6918:13;6910:113;;;7000:11;;;6994:18;6981:11;;;6974:39;6946:2;6939:10;6910:113;;;-1:-1:-1;;7057:1:5;7039:16;;7032:27;6815:250::o;7070:639::-;7332:1;7328;7323:3;7319:11;7315:19;7307:6;7303:32;7292:9;7285:51;7372:6;7367:2;7356:9;7352:18;7345:34;7415:3;7410:2;7399:9;7395:18;7388:31;7266:4;7448:6;7442:13;7492:6;7486:3;7475:9;7471:19;7464:35;7508:80;7581:6;7575:3;7564:9;7560:19;7555:2;7547:6;7543:15;7508:80;:::i;:::-;7691:2;7676:18;;7669:34;;;;-1:-1:-1;7649:2:5;7628:15;;;;-1:-1:-1;;7624:29:5;7609:45;7656:3;7605:55;;7070:639;-1:-1:-1;;;7070:639:5:o;8424:456::-;-1:-1:-1;;;;;8711:15:5;;;8693:34;;8763:15;;;8758:2;8743:18;;8736:43;8815:15;;8810:2;8795:18;;8788:43;8862:2;8847:18;;8840:34;;;;8642:3;8627:19;;8424:456::o;8885:127::-;8946:10;8941:3;8937:20;8934:1;8927:31;8977:4;8974:1;8967:15;9001:4;8998:1;8991:15;9017:128;9084:9;;;9105:11;;;9102:37;;;9119:18;;:::i;:::-;9017:128;;;;:::o;9358:160::-;9435:13;;9488:4;9477:16;;9467:27;;9457:55;;9508:1;9505;9498:12;9523:175;9601:13;;9654:18;9643:30;;9633:41;;9623:69;;9688:1;9685;9678:12;9703:192;9782:13;;9835:34;9824:46;;9814:57;;9804:85;;9885:1;9882;9875:12;9900:1115;9996:6;10027:3;10071:2;10059:9;10050:7;10046:23;10042:32;10039:52;;;10087:1;10084;10077:12;10039:52;10120:2;10114:9;10150:15;;;;10195:18;10180:34;;10216:22;;;10177:62;10174:88;;;10242:18;;:::i;:::-;10282:10;10278:2;10271:22;10317:38;10345:9;10317:38;:::i;:::-;10309:6;10302:54;10399:2;10388:9;10384:18;10378:25;10365:38;;10412:31;10437:5;10412:31;:::i;:::-;10476:5;10471:2;10463:6;10459:15;10452:30;10515:49;10560:2;10549:9;10545:18;10515:49;:::i;:::-;10510:2;10502:6;10498:15;10491:74;10598:48;10642:2;10631:9;10627:18;10598:48;:::i;:::-;10593:2;10585:6;10581:15;10574:73;10681:49;10725:3;10714:9;10710:19;10681:49;:::i;:::-;10675:3;10667:6;10663:16;10656:75;10765:49;10809:3;10798:9;10794:19;10765:49;:::i;:::-;10759:3;10751:6;10747:16;10740:75;10849:49;10893:3;10882:9;10878:19;10849:49;:::i;:::-;10843:3;10835:6;10831:16;10824:75;10933:50;10978:3;10967:9;10963:19;10933:50;:::i;:::-;10927:3;10915:16;;10908:76;10919:6;9900:1115;-1:-1:-1;;;;9900:1115:5:o;11020:168::-;11060:7;11126:1;11122;11118:6;11114:14;11111:1;11108:21;11103:1;11096:9;11089:17;11085:45;11082:71;;;11133:18;;:::i;:::-;-1:-1:-1;11173:9:5;;11020:168::o;11193:217::-;11233:1;11259;11249:132;;11303:10;11298:3;11294:20;11291:1;11284:31;11338:4;11335:1;11328:15;11366:4;11363:1;11356:15;11249:132;-1:-1:-1;11395:9:5;;11193:217::o;11415:184::-;11485:6;11538:2;11526:9;11517:7;11513:23;11509:32;11506:52;;;11554:1;11551;11544:12;11506:52;-1:-1:-1;11577:16:5;;11415:184;-1:-1:-1;11415:184:5:o;11604:204::-;11672:6;11725:2;11713:9;11704:7;11700:23;11696:32;11693:52;;;11741:1;11738;11731:12;11693:52;11764:38;11792:9;11764:38;:::i;11813:422::-;11902:1;11945:5;11902:1;11959:270;11980:7;11970:8;11967:21;11959:270;;;12039:4;12035:1;12031:6;12027:17;12021:4;12018:27;12015:53;;;12048:18;;:::i;:::-;12098:7;12088:8;12084:22;12081:55;;;12118:16;;;;12081:55;12197:22;;;;12157:15;;;;11959:270;;;11963:3;11813:422;;;;;:::o;12240:806::-;12289:5;12319:8;12309:80;;-1:-1:-1;12360:1:5;12374:5;;12309:80;12408:4;12398:76;;-1:-1:-1;12445:1:5;12459:5;;12398:76;12490:4;12508:1;12503:59;;;;12576:1;12571:130;;;;12483:218;;12503:59;12533:1;12524:10;;12547:5;;;12571:130;12608:3;12598:8;12595:17;12592:43;;;12615:18;;:::i;:::-;-1:-1:-1;;12671:1:5;12657:16;;12686:5;;12483:218;;12785:2;12775:8;12772:16;12766:3;12760:4;12757:13;12753:36;12747:2;12737:8;12734:16;12729:2;12723:4;12720:12;12716:35;12713:77;12710:159;;;-1:-1:-1;12822:19:5;;;12854:5;;12710:159;12901:34;12926:8;12920:4;12901:34;:::i;:::-;12971:6;12967:1;12963:6;12959:19;12950:7;12947:32;12944:58;;;12982:18;;:::i;:::-;13020:20;;12240:806;-1:-1:-1;;;12240:806:5:o;13051:140::-;13109:5;13138:47;13179:4;13169:8;13165:19;13159:4;13138:47;:::i;13731:125::-;13796:9;;;13817:10;;;13814:36;;;13830:18;;:::i;14217:287::-;14346:3;14384:6;14378:13;14400:66;14459:6;14454:3;14447:4;14439:6;14435:17;14400:66;:::i;:::-;14482:16;;;;;14217:287;-1:-1:-1;;14217:287:5:o",
    "source": "// SPDX-License-Identifier: BUSL-1.1\npragma solidity ^0.8.16;\n\nimport \"./interfaces/Bond.sol\";\nimport \"./interfaces/IERC20.sol\";\nimport \"./interfaces/CometInterface.sol\";\nimport \"./interfaces/VerifiedMarketsInterface.sol\";\n\n/**\n * @title Verified Markets\n * @notice A Compound III operator to enable staking of collateral for real world assets to Compound.\n * @author Kallol Borah\n */\ncontract VerifiedMarkets {\n    /// @notice The Comet contract\n    Comet public immutable comet;\n\n    //mapping issuer to RWA to bond\n    mapping(address => mapping(address => RWA.Asset)) private assets; //only one Asset(bond) per user => RWA\n\n    //mapping issuer to RWA to collateral\n    mapping(address => mapping(address => RWA.Collateral)) private guarantees; //only one collateral per user => RWA\n\n    //events\n    event NewRWA(\n        address indexed issuer,\n        address indexed asset,\n        address bond,\n        uint256 apy,\n        string issuingDocs,\n        uint256 faceValue\n    );\n    event PostedCollateral(\n        address indexed issuer,\n        address indexed asset,\n        address collateral,\n        uint256 amount\n    );\n    event Borrowed(\n        address indexed borrower,\n        address indexed base,\n        uint256 amount\n    );\n    event Repaid(\n        address indexed borrower,\n        address indexed base,\n        uint256 amount\n    );\n\n    /**\n     * @notice Construct a new operator.\n     * @param comet_ The Comet contract.\n     **/\n    constructor(address comet_) {\n        comet = Comet(comet_);\n    }\n\n    /**\n     * @notice RWA issuer submits asset details and bond issued that can be purchased to provide collateral to the RWA issuer\n     * @param asset       RWA for which bond is issued\n     * @param bond        bond token that is issued\n     * @param apy         interest rate paid on bond\n     * @param issuingDocs ipfs reference for RWA docs\n     * @param faceValue   par value of bond after discounting it with interest rate\n     **/\n    //Todo: should issuer be able to overwrite existing bond address tied to an assest???\n    function submitNewRWA(\n        address asset,\n        address bond,\n        uint256 apy,\n        string memory issuingDocs,\n        uint256 faceValue\n    ) external {\n        //verify submitNewRWA params\n        require(\n            asset != address(0x0) &&\n                bond != address(0x0) &&\n                bond != asset &&\n                apy > 0 &&\n                faceValue > 0,\n            \"RWA submission : Invalid request\"\n        );\n        //verify bond's issuer is the caller\n        require(\n            Bond(bond).getIssuer() == msg.sender,\n            \"RWA submission : Invalid issuer\"\n        );\n        //if issuer has no RWA tied to this assest, create new RWA for the issuer's asset\n        if (assets[msg.sender][asset].bond == address(0x0)) {\n            RWA.Asset memory rwa = RWA.Asset({\n                bond: bond,\n                apy: apy,\n                issuingDocs: issuingDocs,\n                faceValue: faceValue\n            });\n            assets[msg.sender][asset] = rwa;\n        } else {\n            //issuer can only update/overwrite an existing RWA details\n            require(\n                assets[msg.sender][asset].bond == bond,\n                \"RWA submission : Invalid bond\"\n            );\n            assets[msg.sender][asset].apy = apy;\n            assets[msg.sender][asset].issuingDocs = issuingDocs;\n            assets[msg.sender][asset].faceValue = faceValue;\n        }\n        emit NewRWA(msg.sender, asset, bond, apy, issuingDocs, faceValue);\n    }\n\n    /**\n     * @notice Used by RWA issuer to post collateral used to buy bonds issued by it to borrow from Compound\n     * @param asset       RWA for which collateral is posted\n     * @param collateral  collateral used to buy bond issued by RWA issuer(must not be baseToken and must be accepted by comet)\n     * @param amount      amount of collateral posted\n     **/\n    function postCollateral(\n        address asset,\n        address collateral,\n        uint256 amount\n    ) external {\n        //verify postCollateral params\n        require(\n            asset != address(0x0) &&\n                collateral != address(0x0) &&\n                collateral != asset &&\n                amount > 0,\n            \"Posting Collateral: Invalid\"\n        );\n        //if issuer is posting collateral to the assest for first time, create new Collateral for user's assest;\n        if (guarantees[msg.sender][asset].collateral == address(0x0)) {\n            //verify getAssetInfoByAddress didn't revert for collateral(to filter out unaccepted collaterals)\n            bytes memory payload = abi.encodeWithSignature(\n                \"getAssetInfoByAddress(address)\",\n                collateral\n            );\n            (bool success, ) = address(comet).staticcall(payload);\n            require(success, \"Posting Collateral: Invalid collateral calll\");\n            //supply collateral on comet and verify supply cap is not breached\n            comet.supplyFrom(msg.sender, msg.sender, collateral, amount);\n            //create collateral\n            RWA.Collateral memory guarantee = RWA.Collateral({\n                collateral: collateral,\n                collateralAmount: amount,\n                borrowed: 0\n            });\n            guarantees[msg.sender][asset] = guarantee;\n        } else {\n            //issuer can only update/overwrite collateral amount for existing collateral\n            require(\n                guarantees[msg.sender][asset].collateral == collateral,\n                \"Post Collateral: Invalid collateral\"\n            );\n            //supply collateral on comet and verify supply cap is not breached\n            comet.supplyFrom(msg.sender, msg.sender, collateral, amount);\n            guarantees[msg.sender][asset].collateralAmount += amount;\n        }\n        emit PostedCollateral(msg.sender, asset, collateral, amount);\n    }\n\n    /**\n     * @notice Called by RWA issuer to to borrow base asset from Compound\n     * @param asset       RWA for which base asset is borrowed\n     * @param amount      amount of base asset borrowed\n     **/\n    function borrowBase(address asset, uint256 amount) external {\n        //verify borrowBase params\n        require(\n            asset != address(0x0) && amount > comet.baseBorrowMin(),\n            \"Borrowing base : Invalid\"\n        );\n        address baseToken = comet.baseToken();\n        //withdraw base from comet and check for non negative liquidity\n        comet.withdrawFrom(msg.sender, msg.sender, baseToken, amount);\n        guarantees[msg.sender][asset].borrowed += amount;\n        emit Borrowed(msg.sender, baseToken, amount);\n    }\n\n    /**\n     * @notice Called by RWA issuer to repay base asset to Compound and withdraw collateral posted earlier\n     * @param asset       RWA for which base asset is paid back\n     * @param amount      amount of base asset paid back\n     **/\n    function repayBase(address asset, uint256 amount) external {\n        //verify repayBase params\n        require(asset != address(0x0) && amount > 0, \"Repaying base : Invalid\");\n        //verify user has collateral to begin with\n        address collateral = guarantees[msg.sender][asset].collateral;\n        require(collateral != address(0x0), \"Repaying base : Invalid asset\");\n        //supply base on comet\n        address baseToken = comet.baseToken();\n        comet.supplyFrom(msg.sender, msg.sender, baseToken, amount);\n        //update issuer's borrowed amount\n        guarantees[msg.sender][asset].borrowed -= amount;\n        //calculate collateralAmount and downscale with 1e18(since borrowCollateralFactor is always % in wei)\n        Comet.AssetInfo memory collateralInfo = comet.getAssetInfoByAddress(\n            collateral\n        );\n        uint256 collateralToWithdrawInBase = (collateralInfo\n            .borrowCollateralFactor * amount) / 1e18;\n        uint256 baseScale = comet.baseScale();\n        IERC20 collateralContract = IERC20(collateral);\n        uint8 collateralDecmals = collateralContract.decimals();\n        uint256 collateralToWithdraw = (collateralToWithdrawInBase *\n            10 ** collateralDecmals) / baseScale; //amount in collateral decimals\n        //withdraw collateral from comet check for non negative liquidity\n        comet.withdrawFrom(\n            msg.sender,\n            msg.sender,\n            collateral,\n            collateralToWithdraw\n        );\n        guarantees[msg.sender][asset].collateralAmount -= collateralToWithdraw;\n        emit Repaid(msg.sender, baseToken, amount);\n    }\n}\n",
    "sourcePath": "/home/mohzcrea8me/Projects/Verified/verified-compound-markets/backend/contracts/VerifiedMarkets.sol",
    "ast": {
        "absolutePath": "project:/contracts/VerifiedMarkets.sol",
        "exportedSymbols": {
            "Bond": [
                651
            ],
            "Comet": [
                1263
            ],
            "IERC20": [
                1356
            ],
            "RWA": [
                1411
            ],
            "VerifiedMarkets": [
                579
            ]
        },
        "id": 580,
        "license": "BUSL-1.1",
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 1,
                "literals": [
                    "solidity",
                    "^",
                    "0.8",
                    ".16"
                ],
                "nodeType": "PragmaDirective",
                "src": "37:24:0"
            },
            {
                "absolutePath": "project:/contracts/interfaces/Bond.sol",
                "file": "./interfaces/Bond.sol",
                "id": 2,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 580,
                "sourceUnit": 652,
                "src": "63:31:0",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "project:/contracts/interfaces/IERC20.sol",
                "file": "./interfaces/IERC20.sol",
                "id": 3,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 580,
                "sourceUnit": 1357,
                "src": "95:33:0",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "project:/contracts/interfaces/CometInterface.sol",
                "file": "./interfaces/CometInterface.sol",
                "id": 4,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 580,
                "sourceUnit": 1264,
                "src": "129:41:0",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "project:/contracts/interfaces/VerifiedMarketsInterface.sol",
                "file": "./interfaces/VerifiedMarketsInterface.sol",
                "id": 5,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 580,
                "sourceUnit": 1412,
                "src": "171:51:0",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "abstract": false,
                "baseContracts": [],
                "canonicalName": "VerifiedMarkets",
                "contractDependencies": [],
                "contractKind": "contract",
                "documentation": {
                    "id": 6,
                    "nodeType": "StructuredDocumentation",
                    "src": "224:160:0",
                    "text": " @title Verified Markets\n @notice A Compound III operator to enable staking of collateral for real world assets to Compound.\n @author Kallol Borah"
                },
                "fullyImplemented": true,
                "id": 579,
                "linearizedBaseContracts": [
                    579
                ],
                "name": "VerifiedMarkets",
                "nameLocation": "394:15:0",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "constant": false,
                        "documentation": {
                            "id": 7,
                            "nodeType": "StructuredDocumentation",
                            "src": "416:30:0",
                            "text": "@notice The Comet contract"
                        },
                        "functionSelector": "ba3e9c12",
                        "id": 10,
                        "mutability": "immutable",
                        "name": "comet",
                        "nameLocation": "474:5:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 579,
                        "src": "451:28:0",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Comet_$1263",
                            "typeString": "contract Comet"
                        },
                        "typeName": {
                            "id": 9,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                                "id": 8,
                                "name": "Comet",
                                "nameLocations": [
                                    "451:5:0"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 1263,
                                "src": "451:5:0"
                            },
                            "referencedDeclaration": 1263,
                            "src": "451:5:0",
                            "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Comet_$1263",
                                "typeString": "contract Comet"
                            }
                        },
                        "visibility": "public"
                    },
                    {
                        "constant": false,
                        "id": 17,
                        "mutability": "mutable",
                        "name": "assets",
                        "nameLocation": "580:6:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 579,
                        "src": "522:64:0",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_Asset_$1367_storage_$_$",
                            "typeString": "mapping(address => mapping(address => struct RWA.Asset))"
                        },
                        "typeName": {
                            "id": 16,
                            "keyType": {
                                "id": 11,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "530:7:0",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "522:49:0",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_Asset_$1367_storage_$_$",
                                "typeString": "mapping(address => mapping(address => struct RWA.Asset))"
                            },
                            "valueType": {
                                "id": 15,
                                "keyType": {
                                    "id": 12,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "549:7:0",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    }
                                },
                                "nodeType": "Mapping",
                                "src": "541:29:0",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Asset_$1367_storage_$",
                                    "typeString": "mapping(address => struct RWA.Asset)"
                                },
                                "valueType": {
                                    "id": 14,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                        "id": 13,
                                        "name": "RWA.Asset",
                                        "nameLocations": [
                                            "560:3:0",
                                            "564:5:0"
                                        ],
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 1367,
                                        "src": "560:9:0"
                                    },
                                    "referencedDeclaration": 1367,
                                    "src": "560:9:0",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$1367_storage_ptr",
                                        "typeString": "struct RWA.Asset"
                                    }
                                }
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 24,
                        "mutability": "mutable",
                        "name": "guarantees",
                        "nameLocation": "737:10:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 579,
                        "src": "674:73:0",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_Collateral_$1374_storage_$_$",
                            "typeString": "mapping(address => mapping(address => struct RWA.Collateral))"
                        },
                        "typeName": {
                            "id": 23,
                            "keyType": {
                                "id": 18,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "682:7:0",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "674:54:0",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_Collateral_$1374_storage_$_$",
                                "typeString": "mapping(address => mapping(address => struct RWA.Collateral))"
                            },
                            "valueType": {
                                "id": 22,
                                "keyType": {
                                    "id": 19,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "701:7:0",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    }
                                },
                                "nodeType": "Mapping",
                                "src": "693:34:0",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Collateral_$1374_storage_$",
                                    "typeString": "mapping(address => struct RWA.Collateral)"
                                },
                                "valueType": {
                                    "id": 21,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                        "id": 20,
                                        "name": "RWA.Collateral",
                                        "nameLocations": [
                                            "712:3:0",
                                            "716:10:0"
                                        ],
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 1374,
                                        "src": "712:14:0"
                                    },
                                    "referencedDeclaration": 1374,
                                    "src": "712:14:0",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Collateral_$1374_storage_ptr",
                                        "typeString": "struct RWA.Collateral"
                                    }
                                }
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "anonymous": false,
                        "eventSelector": "7c0346ec0308e754879b9eb61355f12e6d4469883179fb5774ad1c3d9a7313d0",
                        "id": 38,
                        "name": "NewRWA",
                        "nameLocation": "811:6:0",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 37,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 26,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "issuer",
                                    "nameLocation": "843:6:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 38,
                                    "src": "827:22:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 25,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "827:7:0",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 28,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "asset",
                                    "nameLocation": "875:5:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 38,
                                    "src": "859:21:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 27,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "859:7:0",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 30,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "bond",
                                    "nameLocation": "898:4:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 38,
                                    "src": "890:12:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 29,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "890:7:0",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 32,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "apy",
                                    "nameLocation": "920:3:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 38,
                                    "src": "912:11:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 31,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "912:7:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 34,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "issuingDocs",
                                    "nameLocation": "940:11:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 38,
                                    "src": "933:18:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string"
                                    },
                                    "typeName": {
                                        "id": 33,
                                        "name": "string",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "933:6:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 36,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "faceValue",
                                    "nameLocation": "969:9:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 38,
                                    "src": "961:17:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 35,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "961:7:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "817:167:0"
                        },
                        "src": "805:180:0"
                    },
                    {
                        "anonymous": false,
                        "eventSelector": "6d9c01d2a1bfe391d97dad0c8485ad9eb8603cf2404ea70f733fe47b186a0f51",
                        "id": 48,
                        "name": "PostedCollateral",
                        "nameLocation": "996:16:0",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 47,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 40,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "issuer",
                                    "nameLocation": "1038:6:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 48,
                                    "src": "1022:22:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 39,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1022:7:0",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 42,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "asset",
                                    "nameLocation": "1070:5:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 48,
                                    "src": "1054:21:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 41,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1054:7:0",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 44,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "collateral",
                                    "nameLocation": "1093:10:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 48,
                                    "src": "1085:18:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 43,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1085:7:0",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 46,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nameLocation": "1121:6:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 48,
                                    "src": "1113:14:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 45,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1113:7:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1012:121:0"
                        },
                        "src": "990:144:0"
                    },
                    {
                        "anonymous": false,
                        "eventSelector": "3fc499aeb0bb1cb58b6de8b02b3f86f4e7394e9690bef0110e32ced8a5631045",
                        "id": 56,
                        "name": "Borrowed",
                        "nameLocation": "1145:8:0",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 55,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 50,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "borrower",
                                    "nameLocation": "1179:8:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 56,
                                    "src": "1163:24:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 49,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1163:7:0",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 52,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "base",
                                    "nameLocation": "1213:4:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 56,
                                    "src": "1197:20:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 51,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1197:7:0",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 54,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nameLocation": "1235:6:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 56,
                                    "src": "1227:14:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 53,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1227:7:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1153:94:0"
                        },
                        "src": "1139:109:0"
                    },
                    {
                        "anonymous": false,
                        "eventSelector": "0a3fbbea70e93f2daafa3102f5c9a1b8315e6d7a1e43e4bc020bc1162327470a",
                        "id": 64,
                        "name": "Repaid",
                        "nameLocation": "1259:6:0",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 63,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 58,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "borrower",
                                    "nameLocation": "1291:8:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 64,
                                    "src": "1275:24:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 57,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1275:7:0",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 60,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "base",
                                    "nameLocation": "1325:4:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 64,
                                    "src": "1309:20:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 59,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1309:7:0",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 62,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nameLocation": "1347:6:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 64,
                                    "src": "1339:14:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 61,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1339:7:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1265:94:0"
                        },
                        "src": "1253:107:0"
                    },
                    {
                        "body": {
                            "id": 76,
                            "nodeType": "Block",
                            "src": "1493:38:0",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 74,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 70,
                                            "name": "comet",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10,
                                            "src": "1503:5:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_Comet_$1263",
                                                "typeString": "contract Comet"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "arguments": [
                                                {
                                                    "id": 72,
                                                    "name": "comet_",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 67,
                                                    "src": "1517:6:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                ],
                                                "id": 71,
                                                "name": "Comet",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1263,
                                                "src": "1511:5:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_Comet_$1263_$",
                                                    "typeString": "type(contract Comet)"
                                                }
                                            },
                                            "id": 73,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "1511:13:0",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_Comet_$1263",
                                                "typeString": "contract Comet"
                                            }
                                        },
                                        "src": "1503:21:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_Comet_$1263",
                                            "typeString": "contract Comet"
                                        }
                                    },
                                    "id": 75,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1503:21:0"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 65,
                            "nodeType": "StructuredDocumentation",
                            "src": "1366:94:0",
                            "text": " @notice Construct a new operator.\n @param comet_ The Comet contract.*"
                        },
                        "id": 77,
                        "implemented": true,
                        "kind": "constructor",
                        "modifiers": [],
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 68,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 67,
                                    "mutability": "mutable",
                                    "name": "comet_",
                                    "nameLocation": "1485:6:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 77,
                                    "src": "1477:14:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 66,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1477:7:0",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1476:16:0"
                        },
                        "returnParameters": {
                            "id": 69,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1493:0:0"
                        },
                        "scope": 579,
                        "src": "1465:66:0",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 222,
                            "nodeType": "Block",
                            "src": "2233:1337:0",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "id": 116,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "id": 112,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "id": 108,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            "id": 104,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                "id": 97,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 92,
                                                                    "name": "asset",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 80,
                                                                    "src": "2301:5:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "!=",
                                                                "rightExpression": {
                                                                    "arguments": [
                                                                        {
                                                                            "hexValue": "307830",
                                                                            "id": 95,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "2318:3:0",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                                "typeString": "int_const 0"
                                                                            },
                                                                            "value": "0x0"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                                "typeString": "int_const 0"
                                                                            }
                                                                        ],
                                                                        "id": 94,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "2310:7:0",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_address_$",
                                                                            "typeString": "type(address)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 93,
                                                                            "name": "address",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "2310:7:0",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 96,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "nameLocations": [],
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "2310:12:0",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "src": "2301:21:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "&&",
                                                            "rightExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                "id": 103,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 98,
                                                                    "name": "bond",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 82,
                                                                    "src": "2342:4:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "!=",
                                                                "rightExpression": {
                                                                    "arguments": [
                                                                        {
                                                                            "hexValue": "307830",
                                                                            "id": 101,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "2358:3:0",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                                "typeString": "int_const 0"
                                                                            },
                                                                            "value": "0x0"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                                "typeString": "int_const 0"
                                                                            }
                                                                        ],
                                                                        "id": 100,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "2350:7:0",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_address_$",
                                                                            "typeString": "type(address)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 99,
                                                                            "name": "address",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "2350:7:0",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 102,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "nameLocations": [],
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "2350:12:0",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "src": "2342:20:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "src": "2301:61:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "&&",
                                                        "rightExpression": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 107,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 105,
                                                                "name": "bond",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 82,
                                                                "src": "2382:4:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "id": 106,
                                                                "name": "asset",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 80,
                                                                "src": "2390:5:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "2382:13:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "src": "2301:94:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "&&",
                                                    "rightExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 111,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 109,
                                                            "name": "apy",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 84,
                                                            "src": "2415:3:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": ">",
                                                        "rightExpression": {
                                                            "hexValue": "30",
                                                            "id": 110,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "2421:1:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        },
                                                        "src": "2415:7:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "src": "2301:121:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "&&",
                                                "rightExpression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 115,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 113,
                                                        "name": "faceValue",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 88,
                                                        "src": "2442:9:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 114,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "2454:1:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "2442:13:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "src": "2301:154:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "525741207375626d697373696f6e203a20496e76616c69642072657175657374",
                                                "id": 117,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "2469:34:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_ac2d297c7b797b46238ca2df5d2a150e9ead54471c39a8a35a5a622a4d896f94",
                                                    "typeString": "literal_string \"RWA submission : Invalid request\""
                                                },
                                                "value": "RWA submission : Invalid request"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_ac2d297c7b797b46238ca2df5d2a150e9ead54471c39a8a35a5a622a4d896f94",
                                                    "typeString": "literal_string \"RWA submission : Invalid request\""
                                                }
                                            ],
                                            "id": 91,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "2280:7:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 118,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2280:233:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 119,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2280:233:0"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 128,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 122,
                                                                    "name": "bond",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 82,
                                                                    "src": "2594:4:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 121,
                                                                "name": "Bond",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 651,
                                                                "src": "2589:4:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_Bond_$651_$",
                                                                    "typeString": "type(contract Bond)"
                                                                }
                                                            },
                                                            "id": 123,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "nameLocations": [],
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "2589:10:0",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_Bond_$651",
                                                                "typeString": "contract Bond"
                                                            }
                                                        },
                                                        "id": 124,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "2600:9:0",
                                                        "memberName": "getIssuer",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 586,
                                                        "src": "2589:20:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                                            "typeString": "function () view external returns (address)"
                                                        }
                                                    },
                                                    "id": 125,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2589:22:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                    "expression": {
                                                        "id": 126,
                                                        "name": "msg",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4294967281,
                                                        "src": "2615:3:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_message",
                                                            "typeString": "msg"
                                                        }
                                                    },
                                                    "id": 127,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "2619:6:0",
                                                    "memberName": "sender",
                                                    "nodeType": "MemberAccess",
                                                    "src": "2615:10:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "src": "2589:36:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "525741207375626d697373696f6e203a20496e76616c696420697373756572",
                                                "id": 129,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "2639:33:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_c8e03de374a2eef952ad165f57629286025fb41738c474a1119ddb07d272dfc5",
                                                    "typeString": "literal_string \"RWA submission : Invalid issuer\""
                                                },
                                                "value": "RWA submission : Invalid issuer"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_c8e03de374a2eef952ad165f57629286025fb41738c474a1119ddb07d272dfc5",
                                                    "typeString": "literal_string \"RWA submission : Invalid issuer\""
                                                }
                                            ],
                                            "id": 120,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "2568:7:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 130,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2568:114:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 131,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2568:114:0"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        },
                                        "id": 143,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "expression": {
                                                "baseExpression": {
                                                    "baseExpression": {
                                                        "id": 132,
                                                        "name": "assets",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 17,
                                                        "src": "2786:6:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_Asset_$1367_storage_$_$",
                                                            "typeString": "mapping(address => mapping(address => struct RWA.Asset storage ref))"
                                                        }
                                                    },
                                                    "id": 135,
                                                    "indexExpression": {
                                                        "expression": {
                                                            "id": 133,
                                                            "name": "msg",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4294967281,
                                                            "src": "2793:3:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_magic_message",
                                                                "typeString": "msg"
                                                            }
                                                        },
                                                        "id": 134,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "2797:6:0",
                                                        "memberName": "sender",
                                                        "nodeType": "MemberAccess",
                                                        "src": "2793:10:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "2786:18:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Asset_$1367_storage_$",
                                                        "typeString": "mapping(address => struct RWA.Asset storage ref)"
                                                    }
                                                },
                                                "id": 137,
                                                "indexExpression": {
                                                    "id": 136,
                                                    "name": "asset",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 80,
                                                    "src": "2805:5:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "2786:25:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Asset_$1367_storage",
                                                    "typeString": "struct RWA.Asset storage ref"
                                                }
                                            },
                                            "id": 138,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "2812:4:0",
                                            "memberName": "bond",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1360,
                                            "src": "2786:30:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                            "arguments": [
                                                {
                                                    "hexValue": "307830",
                                                    "id": 141,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "2828:3:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    },
                                                    "value": "0x0"
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    }
                                                ],
                                                "id": 140,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "2820:7:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                },
                                                "typeName": {
                                                    "id": 139,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2820:7:0",
                                                    "typeDescriptions": {}
                                                }
                                            },
                                            "id": 142,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "2820:12:0",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "2786:46:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": {
                                        "id": 210,
                                        "nodeType": "Block",
                                        "src": "3092:397:0",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 176,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "baseExpression": {
                                                                        "baseExpression": {
                                                                            "id": 168,
                                                                            "name": "assets",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 17,
                                                                            "src": "3202:6:0",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_Asset_$1367_storage_$_$",
                                                                                "typeString": "mapping(address => mapping(address => struct RWA.Asset storage ref))"
                                                                            }
                                                                        },
                                                                        "id": 171,
                                                                        "indexExpression": {
                                                                            "expression": {
                                                                                "id": 169,
                                                                                "name": "msg",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 4294967281,
                                                                                "src": "3209:3:0",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_magic_message",
                                                                                    "typeString": "msg"
                                                                                }
                                                                            },
                                                                            "id": 170,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberLocation": "3213:6:0",
                                                                            "memberName": "sender",
                                                                            "nodeType": "MemberAccess",
                                                                            "src": "3209:10:0",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "3202:18:0",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Asset_$1367_storage_$",
                                                                            "typeString": "mapping(address => struct RWA.Asset storage ref)"
                                                                        }
                                                                    },
                                                                    "id": 173,
                                                                    "indexExpression": {
                                                                        "id": 172,
                                                                        "name": "asset",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 80,
                                                                        "src": "3221:5:0",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "3202:25:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_Asset_$1367_storage",
                                                                        "typeString": "struct RWA.Asset storage ref"
                                                                    }
                                                                },
                                                                "id": 174,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberLocation": "3228:4:0",
                                                                "memberName": "bond",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 1360,
                                                                "src": "3202:30:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "id": 175,
                                                                "name": "bond",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 82,
                                                                "src": "3236:4:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "3202:38:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "525741207375626d697373696f6e203a20496e76616c696420626f6e64",
                                                            "id": 177,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "3258:31:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_e9fe6b1aa35315a9eec2b928ae49567079ea3c7de0e41b220725a45640e39cbb",
                                                                "typeString": "literal_string \"RWA submission : Invalid bond\""
                                                            },
                                                            "value": "RWA submission : Invalid bond"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_e9fe6b1aa35315a9eec2b928ae49567079ea3c7de0e41b220725a45640e39cbb",
                                                                "typeString": "literal_string \"RWA submission : Invalid bond\""
                                                            }
                                                        ],
                                                        "id": 167,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            4294967278,
                                                            4294967278
                                                        ],
                                                        "referencedDeclaration": 4294967278,
                                                        "src": "3177:7:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 178,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3177:126:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 179,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3177:126:0"
                                            },
                                            {
                                                "expression": {
                                                    "id": 188,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "expression": {
                                                            "baseExpression": {
                                                                "baseExpression": {
                                                                    "id": 180,
                                                                    "name": "assets",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 17,
                                                                    "src": "3317:6:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_Asset_$1367_storage_$_$",
                                                                        "typeString": "mapping(address => mapping(address => struct RWA.Asset storage ref))"
                                                                    }
                                                                },
                                                                "id": 184,
                                                                "indexExpression": {
                                                                    "expression": {
                                                                        "id": 181,
                                                                        "name": "msg",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4294967281,
                                                                        "src": "3324:3:0",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_magic_message",
                                                                            "typeString": "msg"
                                                                        }
                                                                    },
                                                                    "id": 182,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberLocation": "3328:6:0",
                                                                    "memberName": "sender",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "3324:10:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "3317:18:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Asset_$1367_storage_$",
                                                                    "typeString": "mapping(address => struct RWA.Asset storage ref)"
                                                                }
                                                            },
                                                            "id": 185,
                                                            "indexExpression": {
                                                                "id": 183,
                                                                "name": "asset",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 80,
                                                                "src": "3336:5:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "3317:25:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Asset_$1367_storage",
                                                                "typeString": "struct RWA.Asset storage ref"
                                                            }
                                                        },
                                                        "id": 186,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "memberLocation": "3343:3:0",
                                                        "memberName": "apy",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1362,
                                                        "src": "3317:29:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 187,
                                                        "name": "apy",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 84,
                                                        "src": "3349:3:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "3317:35:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 189,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3317:35:0"
                                            },
                                            {
                                                "expression": {
                                                    "id": 198,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "expression": {
                                                            "baseExpression": {
                                                                "baseExpression": {
                                                                    "id": 190,
                                                                    "name": "assets",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 17,
                                                                    "src": "3366:6:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_Asset_$1367_storage_$_$",
                                                                        "typeString": "mapping(address => mapping(address => struct RWA.Asset storage ref))"
                                                                    }
                                                                },
                                                                "id": 194,
                                                                "indexExpression": {
                                                                    "expression": {
                                                                        "id": 191,
                                                                        "name": "msg",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4294967281,
                                                                        "src": "3373:3:0",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_magic_message",
                                                                            "typeString": "msg"
                                                                        }
                                                                    },
                                                                    "id": 192,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberLocation": "3377:6:0",
                                                                    "memberName": "sender",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "3373:10:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "3366:18:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Asset_$1367_storage_$",
                                                                    "typeString": "mapping(address => struct RWA.Asset storage ref)"
                                                                }
                                                            },
                                                            "id": 195,
                                                            "indexExpression": {
                                                                "id": 193,
                                                                "name": "asset",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 80,
                                                                "src": "3385:5:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "3366:25:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Asset_$1367_storage",
                                                                "typeString": "struct RWA.Asset storage ref"
                                                            }
                                                        },
                                                        "id": 196,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "memberLocation": "3392:11:0",
                                                        "memberName": "issuingDocs",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1364,
                                                        "src": "3366:37:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_string_storage",
                                                            "typeString": "string storage ref"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 197,
                                                        "name": "issuingDocs",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 86,
                                                        "src": "3406:11:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_string_memory_ptr",
                                                            "typeString": "string memory"
                                                        }
                                                    },
                                                    "src": "3366:51:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage",
                                                        "typeString": "string storage ref"
                                                    }
                                                },
                                                "id": 199,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3366:51:0"
                                            },
                                            {
                                                "expression": {
                                                    "id": 208,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "expression": {
                                                            "baseExpression": {
                                                                "baseExpression": {
                                                                    "id": 200,
                                                                    "name": "assets",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 17,
                                                                    "src": "3431:6:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_Asset_$1367_storage_$_$",
                                                                        "typeString": "mapping(address => mapping(address => struct RWA.Asset storage ref))"
                                                                    }
                                                                },
                                                                "id": 204,
                                                                "indexExpression": {
                                                                    "expression": {
                                                                        "id": 201,
                                                                        "name": "msg",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4294967281,
                                                                        "src": "3438:3:0",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_magic_message",
                                                                            "typeString": "msg"
                                                                        }
                                                                    },
                                                                    "id": 202,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberLocation": "3442:6:0",
                                                                    "memberName": "sender",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "3438:10:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "3431:18:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Asset_$1367_storage_$",
                                                                    "typeString": "mapping(address => struct RWA.Asset storage ref)"
                                                                }
                                                            },
                                                            "id": 205,
                                                            "indexExpression": {
                                                                "id": 203,
                                                                "name": "asset",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 80,
                                                                "src": "3450:5:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "3431:25:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Asset_$1367_storage",
                                                                "typeString": "struct RWA.Asset storage ref"
                                                            }
                                                        },
                                                        "id": 206,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "memberLocation": "3457:9:0",
                                                        "memberName": "faceValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1366,
                                                        "src": "3431:35:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 207,
                                                        "name": "faceValue",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 88,
                                                        "src": "3469:9:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "3431:47:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 209,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3431:47:0"
                                            }
                                        ]
                                    },
                                    "id": 211,
                                    "nodeType": "IfStatement",
                                    "src": "2782:707:0",
                                    "trueBody": {
                                        "id": 166,
                                        "nodeType": "Block",
                                        "src": "2834:252:0",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    148
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 148,
                                                        "mutability": "mutable",
                                                        "name": "rwa",
                                                        "nameLocation": "2865:3:0",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 166,
                                                        "src": "2848:20:0",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Asset_$1367_memory_ptr",
                                                            "typeString": "struct RWA.Asset"
                                                        },
                                                        "typeName": {
                                                            "id": 147,
                                                            "nodeType": "UserDefinedTypeName",
                                                            "pathNode": {
                                                                "id": 146,
                                                                "name": "RWA.Asset",
                                                                "nameLocations": [
                                                                    "2848:3:0",
                                                                    "2852:5:0"
                                                                ],
                                                                "nodeType": "IdentifierPath",
                                                                "referencedDeclaration": 1367,
                                                                "src": "2848:9:0"
                                                            },
                                                            "referencedDeclaration": 1367,
                                                            "src": "2848:9:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Asset_$1367_storage_ptr",
                                                                "typeString": "struct RWA.Asset"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 156,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 151,
                                                            "name": "bond",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 82,
                                                            "src": "2905:4:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 152,
                                                            "name": "apy",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 84,
                                                            "src": "2932:3:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 153,
                                                            "name": "issuingDocs",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 86,
                                                            "src": "2966:11:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_string_memory_ptr",
                                                                "typeString": "string memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 154,
                                                            "name": "faceValue",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 88,
                                                            "src": "3006:9:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_string_memory_ptr",
                                                                "typeString": "string memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 149,
                                                            "name": "RWA",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1411,
                                                            "src": "2871:3:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_RWA_$1411_$",
                                                                "typeString": "type(contract RWA)"
                                                            }
                                                        },
                                                        "id": 150,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "2875:5:0",
                                                        "memberName": "Asset",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1367,
                                                        "src": "2871:9:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Asset_$1367_storage_ptr_$",
                                                            "typeString": "type(struct RWA.Asset storage pointer)"
                                                        }
                                                    },
                                                    "id": 155,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [
                                                        "2899:4:0",
                                                        "2927:3:0",
                                                        "2953:11:0",
                                                        "2995:9:0"
                                                    ],
                                                    "names": [
                                                        "bond",
                                                        "apy",
                                                        "issuingDocs",
                                                        "faceValue"
                                                    ],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2871:159:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Asset_$1367_memory_ptr",
                                                        "typeString": "struct RWA.Asset memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "2848:182:0"
                                            },
                                            {
                                                "expression": {
                                                    "id": 164,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "baseExpression": {
                                                                "id": 157,
                                                                "name": "assets",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 17,
                                                                "src": "3044:6:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_Asset_$1367_storage_$_$",
                                                                    "typeString": "mapping(address => mapping(address => struct RWA.Asset storage ref))"
                                                                }
                                                            },
                                                            "id": 161,
                                                            "indexExpression": {
                                                                "expression": {
                                                                    "id": 158,
                                                                    "name": "msg",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4294967281,
                                                                    "src": "3051:3:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_message",
                                                                        "typeString": "msg"
                                                                    }
                                                                },
                                                                "id": 159,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberLocation": "3055:6:0",
                                                                "memberName": "sender",
                                                                "nodeType": "MemberAccess",
                                                                "src": "3051:10:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "3044:18:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Asset_$1367_storage_$",
                                                                "typeString": "mapping(address => struct RWA.Asset storage ref)"
                                                            }
                                                        },
                                                        "id": 162,
                                                        "indexExpression": {
                                                            "id": 160,
                                                            "name": "asset",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 80,
                                                            "src": "3063:5:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "3044:25:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Asset_$1367_storage",
                                                            "typeString": "struct RWA.Asset storage ref"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 163,
                                                        "name": "rwa",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 148,
                                                        "src": "3072:3:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Asset_$1367_memory_ptr",
                                                            "typeString": "struct RWA.Asset memory"
                                                        }
                                                    },
                                                    "src": "3044:31:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Asset_$1367_storage",
                                                        "typeString": "struct RWA.Asset storage ref"
                                                    }
                                                },
                                                "id": 165,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3044:31:0"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 213,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "3510:3:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 214,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "3514:6:0",
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "3510:10:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 215,
                                                "name": "asset",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 80,
                                                "src": "3522:5:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 216,
                                                "name": "bond",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 82,
                                                "src": "3529:4:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 217,
                                                "name": "apy",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 84,
                                                "src": "3535:3:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 218,
                                                "name": "issuingDocs",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 86,
                                                "src": "3540:11:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string memory"
                                                }
                                            },
                                            {
                                                "id": 219,
                                                "name": "faceValue",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 88,
                                                "src": "3553:9:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string memory"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 212,
                                            "name": "NewRWA",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 38,
                                            "src": "3503:6:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,address,address,uint256,string memory,uint256)"
                                            }
                                        },
                                        "id": 220,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3503:60:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 221,
                                    "nodeType": "EmitStatement",
                                    "src": "3498:65:0"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 78,
                            "nodeType": "StructuredDocumentation",
                            "src": "1537:436:0",
                            "text": " @notice RWA issuer submits asset details and bond issued that can be purchased to provide collateral to the RWA issuer\n @param asset       RWA for which bond is issued\n @param bond        bond token that is issued\n @param apy         interest rate paid on bond\n @param issuingDocs ipfs reference for RWA docs\n @param faceValue   par value of bond after discounting it with interest rate*"
                        },
                        "functionSelector": "100bf6eb",
                        "id": 223,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "submitNewRWA",
                        "nameLocation": "2077:12:0",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 89,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 80,
                                    "mutability": "mutable",
                                    "name": "asset",
                                    "nameLocation": "2107:5:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 223,
                                    "src": "2099:13:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 79,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2099:7:0",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 82,
                                    "mutability": "mutable",
                                    "name": "bond",
                                    "nameLocation": "2130:4:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 223,
                                    "src": "2122:12:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 81,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2122:7:0",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 84,
                                    "mutability": "mutable",
                                    "name": "apy",
                                    "nameLocation": "2152:3:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 223,
                                    "src": "2144:11:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 83,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2144:7:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 86,
                                    "mutability": "mutable",
                                    "name": "issuingDocs",
                                    "nameLocation": "2179:11:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 223,
                                    "src": "2165:25:0",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string"
                                    },
                                    "typeName": {
                                        "id": 85,
                                        "name": "string",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2165:6:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 88,
                                    "mutability": "mutable",
                                    "name": "faceValue",
                                    "nameLocation": "2208:9:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 223,
                                    "src": "2200:17:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 87,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2200:7:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2089:134:0"
                        },
                        "returnParameters": {
                            "id": 90,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2233:0:0"
                        },
                        "scope": 579,
                        "src": "2068:1502:0",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 370,
                            "nodeType": "Block",
                            "src": "4058:1858:0",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "id": 254,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "id": 250,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "id": 246,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 239,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 234,
                                                                "name": "asset",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 226,
                                                                "src": "4128:5:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "307830",
                                                                        "id": 237,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "4145:3:0",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0x0"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        }
                                                                    ],
                                                                    "id": 236,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "4137:7:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 235,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "4137:7:0",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 238,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "nameLocations": [],
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "4137:12:0",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "4128:21:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "&&",
                                                        "rightExpression": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 245,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 240,
                                                                "name": "collateral",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 228,
                                                                "src": "4169:10:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "307830",
                                                                        "id": 243,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "4191:3:0",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0x0"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        }
                                                                    ],
                                                                    "id": 242,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "4183:7:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 241,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "4183:7:0",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 244,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "nameLocations": [],
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "4183:12:0",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "4169:26:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "src": "4128:67:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "&&",
                                                    "rightExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        "id": 249,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 247,
                                                            "name": "collateral",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 228,
                                                            "src": "4215:10:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "!=",
                                                        "rightExpression": {
                                                            "id": 248,
                                                            "name": "asset",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 226,
                                                            "src": "4229:5:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "src": "4215:19:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "src": "4128:106:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "&&",
                                                "rightExpression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 253,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 251,
                                                        "name": "amount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 230,
                                                        "src": "4254:6:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 252,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "4263:1:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "4254:10:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "src": "4128:136:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "506f7374696e6720436f6c6c61746572616c3a20496e76616c6964",
                                                "id": 255,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "4278:29:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_3cf3a52794eca675bbfdc3c417dfc121ed781af513ea1dff09cb870ff5901776",
                                                    "typeString": "literal_string \"Posting Collateral: Invalid\""
                                                },
                                                "value": "Posting Collateral: Invalid"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_3cf3a52794eca675bbfdc3c417dfc121ed781af513ea1dff09cb870ff5901776",
                                                    "typeString": "literal_string \"Posting Collateral: Invalid\""
                                                }
                                            ],
                                            "id": 233,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "4107:7:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 256,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4107:210:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 257,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4107:210:0"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        },
                                        "id": 269,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "expression": {
                                                "baseExpression": {
                                                    "baseExpression": {
                                                        "id": 258,
                                                        "name": "guarantees",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 24,
                                                        "src": "4444:10:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_Collateral_$1374_storage_$_$",
                                                            "typeString": "mapping(address => mapping(address => struct RWA.Collateral storage ref))"
                                                        }
                                                    },
                                                    "id": 261,
                                                    "indexExpression": {
                                                        "expression": {
                                                            "id": 259,
                                                            "name": "msg",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4294967281,
                                                            "src": "4455:3:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_magic_message",
                                                                "typeString": "msg"
                                                            }
                                                        },
                                                        "id": 260,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "4459:6:0",
                                                        "memberName": "sender",
                                                        "nodeType": "MemberAccess",
                                                        "src": "4455:10:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "4444:22:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Collateral_$1374_storage_$",
                                                        "typeString": "mapping(address => struct RWA.Collateral storage ref)"
                                                    }
                                                },
                                                "id": 263,
                                                "indexExpression": {
                                                    "id": 262,
                                                    "name": "asset",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 226,
                                                    "src": "4467:5:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "4444:29:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Collateral_$1374_storage",
                                                    "typeString": "struct RWA.Collateral storage ref"
                                                }
                                            },
                                            "id": 264,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "4474:10:0",
                                            "memberName": "collateral",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1369,
                                            "src": "4444:40:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                            "arguments": [
                                                {
                                                    "hexValue": "307830",
                                                    "id": 267,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "4496:3:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    },
                                                    "value": "0x0"
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    }
                                                ],
                                                "id": 266,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "4488:7:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                },
                                                "typeName": {
                                                    "id": 265,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4488:7:0",
                                                    "typeDescriptions": {}
                                                }
                                            },
                                            "id": 268,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "4488:12:0",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "4444:56:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": {
                                        "id": 360,
                                        "nodeType": "Block",
                                        "src": "5355:485:0",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 335,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "baseExpression": {
                                                                        "baseExpression": {
                                                                            "id": 327,
                                                                            "name": "guarantees",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 24,
                                                                            "src": "5483:10:0",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_Collateral_$1374_storage_$_$",
                                                                                "typeString": "mapping(address => mapping(address => struct RWA.Collateral storage ref))"
                                                                            }
                                                                        },
                                                                        "id": 330,
                                                                        "indexExpression": {
                                                                            "expression": {
                                                                                "id": 328,
                                                                                "name": "msg",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 4294967281,
                                                                                "src": "5494:3:0",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_magic_message",
                                                                                    "typeString": "msg"
                                                                                }
                                                                            },
                                                                            "id": 329,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberLocation": "5498:6:0",
                                                                            "memberName": "sender",
                                                                            "nodeType": "MemberAccess",
                                                                            "src": "5494:10:0",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "5483:22:0",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Collateral_$1374_storage_$",
                                                                            "typeString": "mapping(address => struct RWA.Collateral storage ref)"
                                                                        }
                                                                    },
                                                                    "id": 332,
                                                                    "indexExpression": {
                                                                        "id": 331,
                                                                        "name": "asset",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 226,
                                                                        "src": "5506:5:0",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "5483:29:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_Collateral_$1374_storage",
                                                                        "typeString": "struct RWA.Collateral storage ref"
                                                                    }
                                                                },
                                                                "id": 333,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberLocation": "5513:10:0",
                                                                "memberName": "collateral",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 1369,
                                                                "src": "5483:40:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "id": 334,
                                                                "name": "collateral",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 228,
                                                                "src": "5527:10:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "5483:54:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "506f737420436f6c6c61746572616c3a20496e76616c696420636f6c6c61746572616c",
                                                            "id": 336,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "5555:37:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_394cd8b0c5d27701b415634dce667cd2b2a95d6403b5642b99bdba02cf0dac43",
                                                                "typeString": "literal_string \"Post Collateral: Invalid collateral\""
                                                            },
                                                            "value": "Post Collateral: Invalid collateral"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_394cd8b0c5d27701b415634dce667cd2b2a95d6403b5642b99bdba02cf0dac43",
                                                                "typeString": "literal_string \"Post Collateral: Invalid collateral\""
                                                            }
                                                        ],
                                                        "id": 326,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            4294967278,
                                                            4294967278
                                                        ],
                                                        "referencedDeclaration": 4294967278,
                                                        "src": "5458:7:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 337,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5458:148:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 338,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5458:148:0"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 342,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4294967281,
                                                                "src": "5716:3:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 343,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "5720:6:0",
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "5716:10:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 344,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4294967281,
                                                                "src": "5728:3:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 345,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "5732:6:0",
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "5728:10:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 346,
                                                            "name": "collateral",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 228,
                                                            "src": "5740:10:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 347,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 230,
                                                            "src": "5752:6:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 339,
                                                            "name": "comet",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 10,
                                                            "src": "5699:5:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_Comet_$1263",
                                                                "typeString": "contract Comet"
                                                            }
                                                        },
                                                        "id": 341,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "5705:10:0",
                                                        "memberName": "supplyFrom",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 864,
                                                        "src": "5699:16:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,address,address,uint256) external"
                                                        }
                                                    },
                                                    "id": 348,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5699:60:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 349,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5699:60:0"
                                            },
                                            {
                                                "expression": {
                                                    "id": 358,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "expression": {
                                                            "baseExpression": {
                                                                "baseExpression": {
                                                                    "id": 350,
                                                                    "name": "guarantees",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 24,
                                                                    "src": "5773:10:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_Collateral_$1374_storage_$_$",
                                                                        "typeString": "mapping(address => mapping(address => struct RWA.Collateral storage ref))"
                                                                    }
                                                                },
                                                                "id": 354,
                                                                "indexExpression": {
                                                                    "expression": {
                                                                        "id": 351,
                                                                        "name": "msg",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4294967281,
                                                                        "src": "5784:3:0",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_magic_message",
                                                                            "typeString": "msg"
                                                                        }
                                                                    },
                                                                    "id": 352,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberLocation": "5788:6:0",
                                                                    "memberName": "sender",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "5784:10:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "5773:22:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Collateral_$1374_storage_$",
                                                                    "typeString": "mapping(address => struct RWA.Collateral storage ref)"
                                                                }
                                                            },
                                                            "id": 355,
                                                            "indexExpression": {
                                                                "id": 353,
                                                                "name": "asset",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 226,
                                                                "src": "5796:5:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "5773:29:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Collateral_$1374_storage",
                                                                "typeString": "struct RWA.Collateral storage ref"
                                                            }
                                                        },
                                                        "id": 356,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "memberLocation": "5803:16:0",
                                                        "memberName": "collateralAmount",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1371,
                                                        "src": "5773:46:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                        "id": 357,
                                                        "name": "amount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 230,
                                                        "src": "5823:6:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "5773:56:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 359,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5773:56:0"
                                            }
                                        ]
                                    },
                                    "id": 361,
                                    "nodeType": "IfStatement",
                                    "src": "4440:1400:0",
                                    "trueBody": {
                                        "id": 325,
                                        "nodeType": "Block",
                                        "src": "4502:847:0",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    271
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 271,
                                                        "mutability": "mutable",
                                                        "name": "payload",
                                                        "nameLocation": "4639:7:0",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 325,
                                                        "src": "4626:20:0",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 270,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "4626:5:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 277,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "hexValue": "6765744173736574496e666f427941646472657373286164647265737329",
                                                            "id": 274,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "4690:32:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_3b3bec2eec585401fd01bfff80e24a34a675b84e266c773f816b99d876fcf777",
                                                                "typeString": "literal_string \"getAssetInfoByAddress(address)\""
                                                            },
                                                            "value": "getAssetInfoByAddress(address)"
                                                        },
                                                        {
                                                            "id": 275,
                                                            "name": "collateral",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 228,
                                                            "src": "4740:10:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_stringliteral_3b3bec2eec585401fd01bfff80e24a34a675b84e266c773f816b99d876fcf777",
                                                                "typeString": "literal_string \"getAssetInfoByAddress(address)\""
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 272,
                                                            "name": "abi",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4294967295,
                                                            "src": "4649:3:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_magic_abi",
                                                                "typeString": "abi"
                                                            }
                                                        },
                                                        "id": 273,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "memberLocation": "4653:19:0",
                                                        "memberName": "encodeWithSignature",
                                                        "nodeType": "MemberAccess",
                                                        "src": "4649:23:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (string memory) pure returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 276,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4649:115:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "4626:138:0"
                                            },
                                            {
                                                "assignments": [
                                                    279,
                                                    null
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 279,
                                                        "mutability": "mutable",
                                                        "name": "success",
                                                        "nameLocation": "4784:7:0",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 325,
                                                        "src": "4779:12:0",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "typeName": {
                                                            "id": 278,
                                                            "name": "bool",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "4779:4:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    },
                                                    null
                                                ],
                                                "id": 287,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 285,
                                                            "name": "payload",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 271,
                                                            "src": "4823:7:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 282,
                                                                    "name": "comet",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 10,
                                                                    "src": "4805:5:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_Comet_$1263",
                                                                        "typeString": "contract Comet"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_contract$_Comet_$1263",
                                                                        "typeString": "contract Comet"
                                                                    }
                                                                ],
                                                                "id": 281,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "4797:7:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 280,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "4797:7:0",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 283,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "nameLocations": [],
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "4797:14:0",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "id": 284,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "4812:10:0",
                                                        "memberName": "staticcall",
                                                        "nodeType": "MemberAccess",
                                                        "src": "4797:25:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                                                        }
                                                    },
                                                    "id": 286,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4797:34:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                                        "typeString": "tuple(bool,bytes memory)"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "4778:53:0"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 289,
                                                            "name": "success",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 279,
                                                            "src": "4853:7:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "506f7374696e6720436f6c6c61746572616c3a20496e76616c696420636f6c6c61746572616c2063616c6c6c",
                                                            "id": 290,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "4862:46:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_44031d7fe2f5fdcc90cdb121670a2c2a30e70f72d7155daa41d48b1b73f2f313",
                                                                "typeString": "literal_string \"Posting Collateral: Invalid collateral calll\""
                                                            },
                                                            "value": "Posting Collateral: Invalid collateral calll"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_44031d7fe2f5fdcc90cdb121670a2c2a30e70f72d7155daa41d48b1b73f2f313",
                                                                "typeString": "literal_string \"Posting Collateral: Invalid collateral calll\""
                                                            }
                                                        ],
                                                        "id": 288,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            4294967278,
                                                            4294967278
                                                        ],
                                                        "referencedDeclaration": 4294967278,
                                                        "src": "4845:7:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 291,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4845:64:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 292,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4845:64:0"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 296,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4294967281,
                                                                "src": "5019:3:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 297,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "5023:6:0",
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "5019:10:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 298,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4294967281,
                                                                "src": "5031:3:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 299,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "5035:6:0",
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "5031:10:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 300,
                                                            "name": "collateral",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 228,
                                                            "src": "5043:10:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 301,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 230,
                                                            "src": "5055:6:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 293,
                                                            "name": "comet",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 10,
                                                            "src": "5002:5:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_Comet_$1263",
                                                                "typeString": "contract Comet"
                                                            }
                                                        },
                                                        "id": 295,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "5008:10:0",
                                                        "memberName": "supplyFrom",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 864,
                                                        "src": "5002:16:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,address,address,uint256) external"
                                                        }
                                                    },
                                                    "id": 302,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5002:60:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 303,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5002:60:0"
                                            },
                                            {
                                                "assignments": [
                                                    308
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 308,
                                                        "mutability": "mutable",
                                                        "name": "guarantee",
                                                        "nameLocation": "5130:9:0",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 325,
                                                        "src": "5108:31:0",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Collateral_$1374_memory_ptr",
                                                            "typeString": "struct RWA.Collateral"
                                                        },
                                                        "typeName": {
                                                            "id": 307,
                                                            "nodeType": "UserDefinedTypeName",
                                                            "pathNode": {
                                                                "id": 306,
                                                                "name": "RWA.Collateral",
                                                                "nameLocations": [
                                                                    "5108:3:0",
                                                                    "5112:10:0"
                                                                ],
                                                                "nodeType": "IdentifierPath",
                                                                "referencedDeclaration": 1374,
                                                                "src": "5108:14:0"
                                                            },
                                                            "referencedDeclaration": 1374,
                                                            "src": "5108:14:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Collateral_$1374_storage_ptr",
                                                                "typeString": "struct RWA.Collateral"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 315,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 311,
                                                            "name": "collateral",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 228,
                                                            "src": "5187:10:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 312,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 230,
                                                            "src": "5233:6:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "30",
                                                            "id": 313,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "5267:1:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 309,
                                                            "name": "RWA",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1411,
                                                            "src": "5142:3:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_RWA_$1411_$",
                                                                "typeString": "type(contract RWA)"
                                                            }
                                                        },
                                                        "id": 310,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "5146:10:0",
                                                        "memberName": "Collateral",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1374,
                                                        "src": "5142:14:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Collateral_$1374_storage_ptr_$",
                                                            "typeString": "type(struct RWA.Collateral storage pointer)"
                                                        }
                                                    },
                                                    "id": 314,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [
                                                        "5175:10:0",
                                                        "5215:16:0",
                                                        "5257:8:0"
                                                    ],
                                                    "names": [
                                                        "collateral",
                                                        "collateralAmount",
                                                        "borrowed"
                                                    ],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5142:141:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Collateral_$1374_memory_ptr",
                                                        "typeString": "struct RWA.Collateral memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "5108:175:0"
                                            },
                                            {
                                                "expression": {
                                                    "id": 323,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "baseExpression": {
                                                                "id": 316,
                                                                "name": "guarantees",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 24,
                                                                "src": "5297:10:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_Collateral_$1374_storage_$_$",
                                                                    "typeString": "mapping(address => mapping(address => struct RWA.Collateral storage ref))"
                                                                }
                                                            },
                                                            "id": 320,
                                                            "indexExpression": {
                                                                "expression": {
                                                                    "id": 317,
                                                                    "name": "msg",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4294967281,
                                                                    "src": "5308:3:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_message",
                                                                        "typeString": "msg"
                                                                    }
                                                                },
                                                                "id": 318,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberLocation": "5312:6:0",
                                                                "memberName": "sender",
                                                                "nodeType": "MemberAccess",
                                                                "src": "5308:10:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "5297:22:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Collateral_$1374_storage_$",
                                                                "typeString": "mapping(address => struct RWA.Collateral storage ref)"
                                                            }
                                                        },
                                                        "id": 321,
                                                        "indexExpression": {
                                                            "id": 319,
                                                            "name": "asset",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 226,
                                                            "src": "5320:5:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "5297:29:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Collateral_$1374_storage",
                                                            "typeString": "struct RWA.Collateral storage ref"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 322,
                                                        "name": "guarantee",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 308,
                                                        "src": "5329:9:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Collateral_$1374_memory_ptr",
                                                            "typeString": "struct RWA.Collateral memory"
                                                        }
                                                    },
                                                    "src": "5297:41:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Collateral_$1374_storage",
                                                        "typeString": "struct RWA.Collateral storage ref"
                                                    }
                                                },
                                                "id": 324,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5297:41:0"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 363,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "5871:3:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 364,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "5875:6:0",
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "5871:10:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 365,
                                                "name": "asset",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 226,
                                                "src": "5883:5:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 366,
                                                "name": "collateral",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 228,
                                                "src": "5890:10:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 367,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 230,
                                                "src": "5902:6:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 362,
                                            "name": "PostedCollateral",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 48,
                                            "src": "5854:16:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,address,address,uint256)"
                                            }
                                        },
                                        "id": 368,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5854:55:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 369,
                                    "nodeType": "EmitStatement",
                                    "src": "5849:60:0"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 224,
                            "nodeType": "StructuredDocumentation",
                            "src": "3576:363:0",
                            "text": " @notice Used by RWA issuer to post collateral used to buy bonds issued by it to borrow from Compound\n @param asset       RWA for which collateral is posted\n @param collateral  collateral used to buy bond issued by RWA issuer(must not be baseToken and must be accepted by comet)\n @param amount      amount of collateral posted*"
                        },
                        "functionSelector": "a4bcec59",
                        "id": 371,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "postCollateral",
                        "nameLocation": "3953:14:0",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 231,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 226,
                                    "mutability": "mutable",
                                    "name": "asset",
                                    "nameLocation": "3985:5:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 371,
                                    "src": "3977:13:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 225,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3977:7:0",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 228,
                                    "mutability": "mutable",
                                    "name": "collateral",
                                    "nameLocation": "4008:10:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 371,
                                    "src": "4000:18:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 227,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4000:7:0",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 230,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nameLocation": "4036:6:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 371,
                                    "src": "4028:14:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 229,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4028:7:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3967:81:0"
                        },
                        "returnParameters": {
                            "id": 232,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "4058:0:0"
                        },
                        "scope": 579,
                        "src": "3944:1972:0",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 429,
                            "nodeType": "Block",
                            "src": "6192:480:0",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "id": 391,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    },
                                                    "id": 385,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 380,
                                                        "name": "asset",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 374,
                                                        "src": "6258:5:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "!=",
                                                    "rightExpression": {
                                                        "arguments": [
                                                            {
                                                                "hexValue": "307830",
                                                                "id": 383,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "6275:3:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0x0"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                }
                                                            ],
                                                            "id": 382,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "6267:7:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_address_$",
                                                                "typeString": "type(address)"
                                                            },
                                                            "typeName": {
                                                                "id": 381,
                                                                "name": "address",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "6267:7:0",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 384,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "nameLocations": [],
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "6267:12:0",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "6258:21:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "&&",
                                                "rightExpression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 390,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 386,
                                                        "name": "amount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 376,
                                                        "src": "6283:6:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "arguments": [],
                                                        "expression": {
                                                            "argumentTypes": [],
                                                            "expression": {
                                                                "id": 387,
                                                                "name": "comet",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 10,
                                                                "src": "6292:5:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_Comet_$1263",
                                                                    "typeString": "contract Comet"
                                                                }
                                                            },
                                                            "id": 388,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "6298:13:0",
                                                            "memberName": "baseBorrowMin",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 1227,
                                                            "src": "6292:19:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                                                "typeString": "function () view external returns (uint256)"
                                                            }
                                                        },
                                                        "id": 389,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "nameLocations": [],
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "6292:21:0",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "6283:30:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "src": "6258:55:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "426f72726f77696e672062617365203a20496e76616c6964",
                                                "id": 392,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "6327:26:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_776e4b134377506232128ec017a3f81b7644fa05c0eddc361a8bdbbe6aaf13f6",
                                                    "typeString": "literal_string \"Borrowing base : Invalid\""
                                                },
                                                "value": "Borrowing base : Invalid"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_776e4b134377506232128ec017a3f81b7644fa05c0eddc361a8bdbbe6aaf13f6",
                                                    "typeString": "literal_string \"Borrowing base : Invalid\""
                                                }
                                            ],
                                            "id": 379,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "6237:7:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 393,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6237:126:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 394,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6237:126:0"
                                },
                                {
                                    "assignments": [
                                        396
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 396,
                                            "mutability": "mutable",
                                            "name": "baseToken",
                                            "nameLocation": "6381:9:0",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 429,
                                            "src": "6373:17:0",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 395,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "6373:7:0",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 400,
                                    "initialValue": {
                                        "arguments": [],
                                        "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                                "id": 397,
                                                "name": "comet",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 10,
                                                "src": "6393:5:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_Comet_$1263",
                                                    "typeString": "contract Comet"
                                                }
                                            },
                                            "id": 398,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "6399:9:0",
                                            "memberName": "baseToken",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1127,
                                            "src": "6393:15:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                                "typeString": "function () view external returns (address)"
                                            }
                                        },
                                        "id": 399,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6393:17:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "6373:37:0"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 404,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "6511:3:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 405,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "6515:6:0",
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "6511:10:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 406,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "6523:3:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 407,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "6527:6:0",
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "6523:10:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 408,
                                                "name": "baseToken",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 396,
                                                "src": "6535:9:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 409,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 376,
                                                "src": "6546:6:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 401,
                                                "name": "comet",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 10,
                                                "src": "6492:5:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_Comet_$1263",
                                                    "typeString": "contract Comet"
                                                }
                                            },
                                            "id": 403,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "6498:12:0",
                                            "memberName": "withdrawFrom",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 931,
                                            "src": "6492:18:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,address,address,uint256) external"
                                            }
                                        },
                                        "id": 410,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6492:61:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 411,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6492:61:0"
                                },
                                {
                                    "expression": {
                                        "id": 420,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "expression": {
                                                "baseExpression": {
                                                    "baseExpression": {
                                                        "id": 412,
                                                        "name": "guarantees",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 24,
                                                        "src": "6563:10:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_Collateral_$1374_storage_$_$",
                                                            "typeString": "mapping(address => mapping(address => struct RWA.Collateral storage ref))"
                                                        }
                                                    },
                                                    "id": 416,
                                                    "indexExpression": {
                                                        "expression": {
                                                            "id": 413,
                                                            "name": "msg",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4294967281,
                                                            "src": "6574:3:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_magic_message",
                                                                "typeString": "msg"
                                                            }
                                                        },
                                                        "id": 414,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "6578:6:0",
                                                        "memberName": "sender",
                                                        "nodeType": "MemberAccess",
                                                        "src": "6574:10:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "6563:22:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Collateral_$1374_storage_$",
                                                        "typeString": "mapping(address => struct RWA.Collateral storage ref)"
                                                    }
                                                },
                                                "id": 417,
                                                "indexExpression": {
                                                    "id": 415,
                                                    "name": "asset",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 374,
                                                    "src": "6586:5:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "6563:29:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Collateral_$1374_storage",
                                                    "typeString": "struct RWA.Collateral storage ref"
                                                }
                                            },
                                            "id": 418,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberLocation": "6593:8:0",
                                            "memberName": "borrowed",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1373,
                                            "src": "6563:38:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "+=",
                                        "rightHandSide": {
                                            "id": 419,
                                            "name": "amount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 376,
                                            "src": "6605:6:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "6563:48:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 421,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6563:48:0"
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 423,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "6635:3:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 424,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "6639:6:0",
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "6635:10:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 425,
                                                "name": "baseToken",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 396,
                                                "src": "6647:9:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 426,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 376,
                                                "src": "6658:6:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 422,
                                            "name": "Borrowed",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 56,
                                            "src": "6626:8:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,address,uint256)"
                                            }
                                        },
                                        "id": 427,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6626:39:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 428,
                                    "nodeType": "EmitStatement",
                                    "src": "6621:44:0"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 372,
                            "nodeType": "StructuredDocumentation",
                            "src": "5922:205:0",
                            "text": " @notice Called by RWA issuer to to borrow base asset from Compound\n @param asset       RWA for which base asset is borrowed\n @param amount      amount of base asset borrowed*"
                        },
                        "functionSelector": "59a8ab58",
                        "id": 430,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "borrowBase",
                        "nameLocation": "6141:10:0",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 377,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 374,
                                    "mutability": "mutable",
                                    "name": "asset",
                                    "nameLocation": "6160:5:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 430,
                                    "src": "6152:13:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 373,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6152:7:0",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 376,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nameLocation": "6175:6:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 430,
                                    "src": "6167:14:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 375,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6167:7:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "6151:31:0"
                        },
                        "returnParameters": {
                            "id": 378,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "6192:0:0"
                        },
                        "scope": 579,
                        "src": "6132:540:0",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 577,
                            "nodeType": "Block",
                            "src": "6982:1574:0",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "id": 448,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    },
                                                    "id": 444,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 439,
                                                        "name": "asset",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 433,
                                                        "src": "7034:5:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "!=",
                                                    "rightExpression": {
                                                        "arguments": [
                                                            {
                                                                "hexValue": "307830",
                                                                "id": 442,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "7051:3:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0x0"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                }
                                                            ],
                                                            "id": 441,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "7043:7:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_address_$",
                                                                "typeString": "type(address)"
                                                            },
                                                            "typeName": {
                                                                "id": 440,
                                                                "name": "address",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "7043:7:0",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 443,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "nameLocations": [],
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "7043:12:0",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "7034:21:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "&&",
                                                "rightExpression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 447,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 445,
                                                        "name": "amount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 435,
                                                        "src": "7059:6:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 446,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7068:1:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "7059:10:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "src": "7034:35:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "5265706179696e672062617365203a20496e76616c6964",
                                                "id": 449,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7071:25:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_e7e16f45ca0b8574ba9a0f101e7dde34ccb7c3ffff9b592faacbc2b34b38c771",
                                                    "typeString": "literal_string \"Repaying base : Invalid\""
                                                },
                                                "value": "Repaying base : Invalid"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_e7e16f45ca0b8574ba9a0f101e7dde34ccb7c3ffff9b592faacbc2b34b38c771",
                                                    "typeString": "literal_string \"Repaying base : Invalid\""
                                                }
                                            ],
                                            "id": 438,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "7026:7:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 450,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7026:71:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 451,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7026:71:0"
                                },
                                {
                                    "assignments": [
                                        453
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 453,
                                            "mutability": "mutable",
                                            "name": "collateral",
                                            "nameLocation": "7166:10:0",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 577,
                                            "src": "7158:18:0",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 452,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "7158:7:0",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 461,
                                    "initialValue": {
                                        "expression": {
                                            "baseExpression": {
                                                "baseExpression": {
                                                    "id": 454,
                                                    "name": "guarantees",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 24,
                                                    "src": "7179:10:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_Collateral_$1374_storage_$_$",
                                                        "typeString": "mapping(address => mapping(address => struct RWA.Collateral storage ref))"
                                                    }
                                                },
                                                "id": 457,
                                                "indexExpression": {
                                                    "expression": {
                                                        "id": 455,
                                                        "name": "msg",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4294967281,
                                                        "src": "7190:3:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_message",
                                                            "typeString": "msg"
                                                        }
                                                    },
                                                    "id": 456,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "7194:6:0",
                                                    "memberName": "sender",
                                                    "nodeType": "MemberAccess",
                                                    "src": "7190:10:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "7179:22:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Collateral_$1374_storage_$",
                                                    "typeString": "mapping(address => struct RWA.Collateral storage ref)"
                                                }
                                            },
                                            "id": 459,
                                            "indexExpression": {
                                                "id": 458,
                                                "name": "asset",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 433,
                                                "src": "7202:5:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "7179:29:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Collateral_$1374_storage",
                                                "typeString": "struct RWA.Collateral storage ref"
                                            }
                                        },
                                        "id": 460,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "7209:10:0",
                                        "memberName": "collateral",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 1369,
                                        "src": "7179:40:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7158:61:0"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 468,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 463,
                                                    "name": "collateral",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 453,
                                                    "src": "7237:10:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                    "arguments": [
                                                        {
                                                            "hexValue": "307830",
                                                            "id": 466,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "7259:3:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0x0"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            }
                                                        ],
                                                        "id": 465,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "7251:7:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                            "id": 464,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "7251:7:0",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 467,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7251:12:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "src": "7237:26:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "5265706179696e672062617365203a20496e76616c6964206173736574",
                                                "id": 469,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7265:31:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_e61ebccde49c8c0954cc71125a1488a73aaf4b8a1ca76a62e1dae9ffd56e5f08",
                                                    "typeString": "literal_string \"Repaying base : Invalid asset\""
                                                },
                                                "value": "Repaying base : Invalid asset"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_e61ebccde49c8c0954cc71125a1488a73aaf4b8a1ca76a62e1dae9ffd56e5f08",
                                                    "typeString": "literal_string \"Repaying base : Invalid asset\""
                                                }
                                            ],
                                            "id": 462,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "7229:7:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 470,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7229:68:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 471,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7229:68:0"
                                },
                                {
                                    "assignments": [
                                        473
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 473,
                                            "mutability": "mutable",
                                            "name": "baseToken",
                                            "nameLocation": "7346:9:0",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 577,
                                            "src": "7338:17:0",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 472,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "7338:7:0",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 477,
                                    "initialValue": {
                                        "arguments": [],
                                        "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                                "id": 474,
                                                "name": "comet",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 10,
                                                "src": "7358:5:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_Comet_$1263",
                                                    "typeString": "contract Comet"
                                                }
                                            },
                                            "id": 475,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "7364:9:0",
                                            "memberName": "baseToken",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1127,
                                            "src": "7358:15:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                                "typeString": "function () view external returns (address)"
                                            }
                                        },
                                        "id": 476,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7358:17:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7338:37:0"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 481,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "7402:3:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 482,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "7406:6:0",
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "7402:10:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 483,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "7414:3:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 484,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "7418:6:0",
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "7414:10:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 485,
                                                "name": "baseToken",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 473,
                                                "src": "7426:9:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 486,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 435,
                                                "src": "7437:6:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 478,
                                                "name": "comet",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 10,
                                                "src": "7385:5:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_Comet_$1263",
                                                    "typeString": "contract Comet"
                                                }
                                            },
                                            "id": 480,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "7391:10:0",
                                            "memberName": "supplyFrom",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 864,
                                            "src": "7385:16:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,address,address,uint256) external"
                                            }
                                        },
                                        "id": 487,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7385:59:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 488,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7385:59:0"
                                },
                                {
                                    "expression": {
                                        "id": 497,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "expression": {
                                                "baseExpression": {
                                                    "baseExpression": {
                                                        "id": 489,
                                                        "name": "guarantees",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 24,
                                                        "src": "7496:10:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_Collateral_$1374_storage_$_$",
                                                            "typeString": "mapping(address => mapping(address => struct RWA.Collateral storage ref))"
                                                        }
                                                    },
                                                    "id": 493,
                                                    "indexExpression": {
                                                        "expression": {
                                                            "id": 490,
                                                            "name": "msg",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4294967281,
                                                            "src": "7507:3:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_magic_message",
                                                                "typeString": "msg"
                                                            }
                                                        },
                                                        "id": 491,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "7511:6:0",
                                                        "memberName": "sender",
                                                        "nodeType": "MemberAccess",
                                                        "src": "7507:10:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "7496:22:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Collateral_$1374_storage_$",
                                                        "typeString": "mapping(address => struct RWA.Collateral storage ref)"
                                                    }
                                                },
                                                "id": 494,
                                                "indexExpression": {
                                                    "id": 492,
                                                    "name": "asset",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 433,
                                                    "src": "7519:5:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "7496:29:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Collateral_$1374_storage",
                                                    "typeString": "struct RWA.Collateral storage ref"
                                                }
                                            },
                                            "id": 495,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberLocation": "7526:8:0",
                                            "memberName": "borrowed",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1373,
                                            "src": "7496:38:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "-=",
                                        "rightHandSide": {
                                            "id": 496,
                                            "name": "amount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 435,
                                            "src": "7538:6:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "7496:48:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 498,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7496:48:0"
                                },
                                {
                                    "assignments": [
                                        503
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 503,
                                            "mutability": "mutable",
                                            "name": "collateralInfo",
                                            "nameLocation": "7687:14:0",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 577,
                                            "src": "7664:37:0",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_AssetInfo_$728_memory_ptr",
                                                "typeString": "struct Comet.AssetInfo"
                                            },
                                            "typeName": {
                                                "id": 502,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                    "id": 501,
                                                    "name": "Comet.AssetInfo",
                                                    "nameLocations": [
                                                        "7664:5:0",
                                                        "7670:9:0"
                                                    ],
                                                    "nodeType": "IdentifierPath",
                                                    "referencedDeclaration": 728,
                                                    "src": "7664:15:0"
                                                },
                                                "referencedDeclaration": 728,
                                                "src": "7664:15:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_AssetInfo_$728_storage_ptr",
                                                    "typeString": "struct Comet.AssetInfo"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 508,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 506,
                                                "name": "collateral",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 453,
                                                "src": "7745:10:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "expression": {
                                                "id": 504,
                                                "name": "comet",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 10,
                                                "src": "7704:5:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_Comet_$1263",
                                                    "typeString": "contract Comet"
                                                }
                                            },
                                            "id": 505,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "7710:21:0",
                                            "memberName": "getAssetInfoByAddress",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 991,
                                            "src": "7704:27:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_AssetInfo_$728_memory_ptr_$",
                                                "typeString": "function (address) view external returns (struct Comet.AssetInfo memory)"
                                            }
                                        },
                                        "id": 507,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7704:61:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_AssetInfo_$728_memory_ptr",
                                            "typeString": "struct Comet.AssetInfo memory"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7664:101:0"
                                },
                                {
                                    "assignments": [
                                        510
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 510,
                                            "mutability": "mutable",
                                            "name": "collateralToWithdrawInBase",
                                            "nameLocation": "7783:26:0",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 577,
                                            "src": "7775:34:0",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 509,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "7775:7:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 518,
                                    "initialValue": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 517,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "components": [
                                                {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 514,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 511,
                                                            "name": "collateralInfo",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 503,
                                                            "src": "7813:14:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_AssetInfo_$728_memory_ptr",
                                                                "typeString": "struct Comet.AssetInfo memory"
                                                            }
                                                        },
                                                        "id": 512,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "7841:22:0",
                                                        "memberName": "borrowCollateralFactor",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 721,
                                                        "src": "7813:50:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint64",
                                                            "typeString": "uint64"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "*",
                                                    "rightExpression": {
                                                        "id": 513,
                                                        "name": "amount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 435,
                                                        "src": "7866:6:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "7813:59:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "id": 515,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "7812:61:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                            "hexValue": "31653138",
                                            "id": 516,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "7876:4:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                                "typeString": "int_const 1000000000000000000"
                                            },
                                            "value": "1e18"
                                        },
                                        "src": "7812:68:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7775:105:0"
                                },
                                {
                                    "assignments": [
                                        520
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 520,
                                            "mutability": "mutable",
                                            "name": "baseScale",
                                            "nameLocation": "7898:9:0",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 577,
                                            "src": "7890:17:0",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 519,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "7890:7:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 524,
                                    "initialValue": {
                                        "arguments": [],
                                        "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                                "id": 521,
                                                "name": "comet",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 10,
                                                "src": "7910:5:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_Comet_$1263",
                                                    "typeString": "contract Comet"
                                                }
                                            },
                                            "id": 522,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "7916:9:0",
                                            "memberName": "baseScale",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1197,
                                            "src": "7910:15:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                                "typeString": "function () view external returns (uint256)"
                                            }
                                        },
                                        "id": 523,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7910:17:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7890:37:0"
                                },
                                {
                                    "assignments": [
                                        527
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 527,
                                            "mutability": "mutable",
                                            "name": "collateralContract",
                                            "nameLocation": "7944:18:0",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 577,
                                            "src": "7937:25:0",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IERC20_$1356",
                                                "typeString": "contract IERC20"
                                            },
                                            "typeName": {
                                                "id": 526,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                    "id": 525,
                                                    "name": "IERC20",
                                                    "nameLocations": [
                                                        "7937:6:0"
                                                    ],
                                                    "nodeType": "IdentifierPath",
                                                    "referencedDeclaration": 1356,
                                                    "src": "7937:6:0"
                                                },
                                                "referencedDeclaration": 1356,
                                                "src": "7937:6:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$1356",
                                                    "typeString": "contract IERC20"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 531,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 529,
                                                "name": "collateral",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 453,
                                                "src": "7972:10:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 528,
                                            "name": "IERC20",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1356,
                                            "src": "7965:6:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$1356_$",
                                                "typeString": "type(contract IERC20)"
                                            }
                                        },
                                        "id": 530,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7965:18:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$1356",
                                            "typeString": "contract IERC20"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7937:46:0"
                                },
                                {
                                    "assignments": [
                                        533
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 533,
                                            "mutability": "mutable",
                                            "name": "collateralDecmals",
                                            "nameLocation": "7999:17:0",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 577,
                                            "src": "7993:23:0",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                            },
                                            "typeName": {
                                                "id": 532,
                                                "name": "uint8",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "7993:5:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 537,
                                    "initialValue": {
                                        "arguments": [],
                                        "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                                "id": 534,
                                                "name": "collateralContract",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 527,
                                                "src": "8019:18:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$1356",
                                                    "typeString": "contract IERC20"
                                                }
                                            },
                                            "id": 535,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "8038:8:0",
                                            "memberName": "decimals",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1287,
                                            "src": "8019:27:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                                                "typeString": "function () view external returns (uint8)"
                                            }
                                        },
                                        "id": 536,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8019:29:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7993:55:0"
                                },
                                {
                                    "assignments": [
                                        539
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 539,
                                            "mutability": "mutable",
                                            "name": "collateralToWithdraw",
                                            "nameLocation": "8066:20:0",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 577,
                                            "src": "8058:28:0",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 538,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "8058:7:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 548,
                                    "initialValue": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 547,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "components": [
                                                {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 544,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 540,
                                                        "name": "collateralToWithdrawInBase",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 510,
                                                        "src": "8090:26:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "*",
                                                    "rightExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 543,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "hexValue": "3130",
                                                            "id": 541,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "8131:2:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_10_by_1",
                                                                "typeString": "int_const 10"
                                                            },
                                                            "value": "10"
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "**",
                                                        "rightExpression": {
                                                            "id": 542,
                                                            "name": "collateralDecmals",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 533,
                                                            "src": "8137:17:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint8",
                                                                "typeString": "uint8"
                                                            }
                                                        },
                                                        "src": "8131:23:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "8090:64:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "id": 545,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "8089:66:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                            "id": 546,
                                            "name": "baseScale",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 520,
                                            "src": "8158:9:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "8089:78:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "8058:109:0"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 552,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "8315:3:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 553,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "8319:6:0",
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "8315:10:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 554,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "8339:3:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 555,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "8343:6:0",
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "8339:10:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 556,
                                                "name": "collateral",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 453,
                                                "src": "8363:10:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 557,
                                                "name": "collateralToWithdraw",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 539,
                                                "src": "8387:20:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 549,
                                                "name": "comet",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 10,
                                                "src": "8283:5:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_Comet_$1263",
                                                    "typeString": "contract Comet"
                                                }
                                            },
                                            "id": 551,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "8289:12:0",
                                            "memberName": "withdrawFrom",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 931,
                                            "src": "8283:18:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,address,address,uint256) external"
                                            }
                                        },
                                        "id": 558,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8283:134:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 559,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8283:134:0"
                                },
                                {
                                    "expression": {
                                        "id": 568,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "expression": {
                                                "baseExpression": {
                                                    "baseExpression": {
                                                        "id": 560,
                                                        "name": "guarantees",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 24,
                                                        "src": "8427:10:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_Collateral_$1374_storage_$_$",
                                                            "typeString": "mapping(address => mapping(address => struct RWA.Collateral storage ref))"
                                                        }
                                                    },
                                                    "id": 564,
                                                    "indexExpression": {
                                                        "expression": {
                                                            "id": 561,
                                                            "name": "msg",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4294967281,
                                                            "src": "8438:3:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_magic_message",
                                                                "typeString": "msg"
                                                            }
                                                        },
                                                        "id": 562,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "8442:6:0",
                                                        "memberName": "sender",
                                                        "nodeType": "MemberAccess",
                                                        "src": "8438:10:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "8427:22:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Collateral_$1374_storage_$",
                                                        "typeString": "mapping(address => struct RWA.Collateral storage ref)"
                                                    }
                                                },
                                                "id": 565,
                                                "indexExpression": {
                                                    "id": 563,
                                                    "name": "asset",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 433,
                                                    "src": "8450:5:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "8427:29:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Collateral_$1374_storage",
                                                    "typeString": "struct RWA.Collateral storage ref"
                                                }
                                            },
                                            "id": 566,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberLocation": "8457:16:0",
                                            "memberName": "collateralAmount",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1371,
                                            "src": "8427:46:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "-=",
                                        "rightHandSide": {
                                            "id": 567,
                                            "name": "collateralToWithdraw",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 539,
                                            "src": "8477:20:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "8427:70:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 569,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8427:70:0"
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 571,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "8519:3:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 572,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "8523:6:0",
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "8519:10:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 573,
                                                "name": "baseToken",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 473,
                                                "src": "8531:9:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 574,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 435,
                                                "src": "8542:6:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 570,
                                            "name": "Repaid",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 64,
                                            "src": "8512:6:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,address,uint256)"
                                            }
                                        },
                                        "id": 575,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8512:37:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 576,
                                    "nodeType": "EmitStatement",
                                    "src": "8507:42:0"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 431,
                            "nodeType": "StructuredDocumentation",
                            "src": "6678:240:0",
                            "text": " @notice Called by RWA issuer to repay base asset to Compound and withdraw collateral posted earlier\n @param asset       RWA for which base asset is paid back\n @param amount      amount of base asset paid back*"
                        },
                        "functionSelector": "2511e8a0",
                        "id": 578,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "repayBase",
                        "nameLocation": "6932:9:0",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 436,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 433,
                                    "mutability": "mutable",
                                    "name": "asset",
                                    "nameLocation": "6950:5:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 578,
                                    "src": "6942:13:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 432,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6942:7:0",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 435,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nameLocation": "6965:6:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 578,
                                    "src": "6957:14:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 434,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6957:7:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "6941:31:0"
                        },
                        "returnParameters": {
                            "id": 437,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "6982:0:0"
                        },
                        "scope": 579,
                        "src": "6923:1633:0",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    }
                ],
                "scope": 580,
                "src": "385:8173:0",
                "usedErrors": []
            }
        ],
        "src": "37:8522:0"
    },
    "compiler": {
        "name": "solc",
        "version": "0.8.16+commit.07a7930e.Emscripten.clang"
    },
    "networks": {
        "84532": {
            "events": {},
            "links": {},
            "address": "0x593cF24a170aE5359E14507EC2776D66f8494D40",
            "transactionHash": "0x469ee17893ce7441914ded6d55a23c8beb6b5dd3efc81f72b43a82abc530ef54"
        },
        "11155111": {
            "events": {},
            "links": {},
            "address": "0xaebfd463cc3B42c7fBC8FB42376CEC1cB63a0A48",
            "transactionHash": "0x2edd99a1afb56a5b5ca9481b08d1b05b557cde6b83f517e719b6113aa3cafdad"
        }
    },
    "schemaVersion": "3.4.16",
    "updatedAt": "2024-09-02T18:56:11.405Z",
    "devdoc": {
        "author": "Kallol Borah",
        "kind": "dev",
        "methods": {
            "borrowBase(address,uint256)": {
                "params": {
                    "amount": "amount of base asset borrowed*",
                    "asset": "RWA for which base asset is borrowed"
                }
            },
            "constructor": {
                "params": {
                    "comet_": "The Comet contract.*"
                }
            },
            "postCollateral(address,address,uint256)": {
                "params": {
                    "amount": "amount of collateral posted*",
                    "asset": "RWA for which collateral is posted",
                    "collateral": "collateral used to buy bond issued by RWA issuer(must not be baseToken and must be accepted by comet)"
                }
            },
            "repayBase(address,uint256)": {
                "params": {
                    "amount": "amount of base asset paid back*",
                    "asset": "RWA for which base asset is paid back"
                }
            },
            "submitNewRWA(address,address,uint256,string,uint256)": {
                "params": {
                    "apy": "interest rate paid on bond",
                    "asset": "RWA for which bond is issued",
                    "bond": "bond token that is issued",
                    "faceValue": "par value of bond after discounting it with interest rate*",
                    "issuingDocs": "ipfs reference for RWA docs"
                }
            }
        },
        "title": "Verified Markets",
        "version": 1
    },
    "userdoc": {
        "kind": "user",
        "methods": {
            "borrowBase(address,uint256)": {
                "notice": "Called by RWA issuer to to borrow base asset from Compound"
            },
            "comet()": {
                "notice": "The Comet contract"
            },
            "constructor": {
                "notice": "Construct a new operator."
            },
            "postCollateral(address,address,uint256)": {
                "notice": "Used by RWA issuer to post collateral used to buy bonds issued by it to borrow from Compound"
            },
            "repayBase(address,uint256)": {
                "notice": "Called by RWA issuer to repay base asset to Compound and withdraw collateral posted earlier"
            },
            "submitNewRWA(address,address,uint256,string,uint256)": {
                "notice": "RWA issuer submits asset details and bond issued that can be purchased to provide collateral to the RWA issuer"
            }
        },
        "notice": "A Compound III operator to enable staking of collateral for real world assets to Compound.",
        "version": 1
    }
}
