Skip to content

Instantly share code, notes, and snippets.

@tomrpl
Created October 25, 2023 15:35
Show Gist options
  • Save tomrpl/4b9d184a5c326410040df13be187df93 to your computer and use it in GitHub Desktop.
Save tomrpl/4b9d184a5c326410040df13be187df93 to your computer and use it in GitHub Desktop.
Entire Blue ABI
This file has been truncated, but you can view the full file.
{
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "DOMAIN_SEPARATOR",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "borrowableToken",
"type": "address"
},
{
"internalType": "address",
"name": "collateralToken",
"type": "address"
},
{
"internalType": "address",
"name": "oracle",
"type": "address"
},
{
"internalType": "address",
"name": "irm",
"type": "address"
},
{
"internalType": "uint256",
"name": "lltv",
"type": "uint256"
}
],
"internalType": "struct MarketParams",
"name": "marketParams",
"type": "tuple"
},
{
"internalType": "uint256",
"name": "assets",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "shares",
"type": "uint256"
},
{
"internalType": "address",
"name": "onBehalf",
"type": "address"
},
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "borrow",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "borrowableToken",
"type": "address"
},
{
"internalType": "address",
"name": "collateralToken",
"type": "address"
},
{
"internalType": "address",
"name": "oracle",
"type": "address"
},
{
"internalType": "address",
"name": "irm",
"type": "address"
},
{
"internalType": "uint256",
"name": "lltv",
"type": "uint256"
}
],
"internalType": "struct MarketParams",
"name": "marketParams",
"type": "tuple"
}
],
"name": "createMarket",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "irm",
"type": "address"
}
],
"name": "enableIrm",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "lltv",
"type": "uint256"
}
],
"name": "enableLltv",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32[]",
"name": "slots",
"type": "bytes32[]"
}
],
"name": "extSloads",
"outputs": [
{
"internalType": "bytes32[]",
"name": "res",
"type": "bytes32[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "feeRecipient",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "assets",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "flashLoan",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "Id",
"name": "",
"type": "bytes32"
}
],
"name": "idToMarketParams",
"outputs": [
{
"internalType": "address",
"name": "borrowableToken",
"type": "address"
},
{
"internalType": "address",
"name": "collateralToken",
"type": "address"
},
{
"internalType": "address",
"name": "oracle",
"type": "address"
},
{
"internalType": "address",
"name": "irm",
"type": "address"
},
{
"internalType": "uint256",
"name": "lltv",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "isAuthorized",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "isIrmEnabled",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "isLltvEnabled",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "borrowableToken",
"type": "address"
},
{
"internalType": "address",
"name": "collateralToken",
"type": "address"
},
{
"internalType": "address",
"name": "oracle",
"type": "address"
},
{
"internalType": "address",
"name": "irm",
"type": "address"
},
{
"internalType": "uint256",
"name": "lltv",
"type": "uint256"
}
],
"internalType": "struct MarketParams",
"name": "marketParams",
"type": "tuple"
},
{
"internalType": "address",
"name": "borrower",
"type": "address"
},
{
"internalType": "uint256",
"name": "seizedAssets",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "repaidShares",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "liquidate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "Id",
"name": "",
"type": "bytes32"
}
],
"name": "market",
"outputs": [
{
"internalType": "uint128",
"name": "totalSupplyAssets",
"type": "uint128"
},
{
"internalType": "uint128",
"name": "totalSupplyShares",
"type": "uint128"
},
{
"internalType": "uint128",
"name": "totalBorrowAssets",
"type": "uint128"
},
{
"internalType": "uint128",
"name": "totalBorrowShares",
"type": "uint128"
},
{
"internalType": "uint128",
"name": "lastUpdate",
"type": "uint128"
},
{
"internalType": "uint128",
"name": "fee",
"type": "uint128"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "nonce",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "Id",
"name": "",
"type": "bytes32"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "position",
"outputs": [
{
"internalType": "uint256",
"name": "supplyShares",
"type": "uint256"
},
{
"internalType": "uint128",
"name": "borrowShares",
"type": "uint128"
},
{
"internalType": "uint128",
"name": "collateral",
"type": "uint128"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "borrowableToken",
"type": "address"
},
{
"internalType": "address",
"name": "collateralToken",
"type": "address"
},
{
"internalType": "address",
"name": "oracle",
"type": "address"
},
{
"internalType": "address",
"name": "irm",
"type": "address"
},
{
"internalType": "uint256",
"name": "lltv",
"type": "uint256"
}
],
"internalType": "struct MarketParams",
"name": "marketParams",
"type": "tuple"
},
{
"internalType": "uint256",
"name": "assets",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "shares",
"type": "uint256"
},
{
"internalType": "address",
"name": "onBehalf",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "repay",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "authorized",
"type": "address"
},
{
"internalType": "bool",
"name": "newIsAuthorized",
"type": "bool"
}
],
"name": "setAuthorization",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "authorizer",
"type": "address"
},
{
"internalType": "address",
"name": "authorized",
"type": "address"
},
{
"internalType": "bool",
"name": "isAuthorized",
"type": "bool"
},
{
"internalType": "uint256",
"name": "nonce",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
}
],
"internalType": "struct Authorization",
"name": "authorization",
"type": "tuple"
},
{
"components": [
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"internalType": "struct Signature",
"name": "signature",
"type": "tuple"
}
],
"name": "setAuthorizationWithSig",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "borrowableToken",
"type": "address"
},
{
"internalType": "address",
"name": "collateralToken",
"type": "address"
},
{
"internalType": "address",
"name": "oracle",
"type": "address"
},
{
"internalType": "address",
"name": "irm",
"type": "address"
},
{
"internalType": "uint256",
"name": "lltv",
"type": "uint256"
}
],
"internalType": "struct MarketParams",
"name": "marketParams",
"type": "tuple"
},
{
"internalType": "uint256",
"name": "newFee",
"type": "uint256"
}
],
"name": "setFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newFeeRecipient",
"type": "address"
}
],
"name": "setFeeRecipient",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "setOwner",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "borrowableToken",
"type": "address"
},
{
"internalType": "address",
"name": "collateralToken",
"type": "address"
},
{
"internalType": "address",
"name": "oracle",
"type": "address"
},
{
"internalType": "address",
"name": "irm",
"type": "address"
},
{
"internalType": "uint256",
"name": "lltv",
"type": "uint256"
}
],
"internalType": "struct MarketParams",
"name": "marketParams",
"type": "tuple"
},
{
"internalType": "uint256",
"name": "assets",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "shares",
"type": "uint256"
},
{
"internalType": "address",
"name": "onBehalf",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "supply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "borrowableToken",
"type": "address"
},
{
"internalType": "address",
"name": "collateralToken",
"type": "address"
},
{
"internalType": "address",
"name": "oracle",
"type": "address"
},
{
"internalType": "address",
"name": "irm",
"type": "address"
},
{
"internalType": "uint256",
"name": "lltv",
"type": "uint256"
}
],
"internalType": "struct MarketParams",
"name": "marketParams",
"type": "tuple"
},
{
"internalType": "uint256",
"name": "assets",
"type": "uint256"
},
{
"internalType": "address",
"name": "onBehalf",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "supplyCollateral",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "borrowableToken",
"type": "address"
},
{
"internalType": "address",
"name": "collateralToken",
"type": "address"
},
{
"internalType": "address",
"name": "oracle",
"type": "address"
},
{
"internalType": "address",
"name": "irm",
"type": "address"
},
{
"internalType": "uint256",
"name": "lltv",
"type": "uint256"
}
],
"internalType": "struct MarketParams",
"name": "marketParams",
"type": "tuple"
},
{
"internalType": "uint256",
"name": "assets",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "shares",
"type": "uint256"
},
{
"internalType": "address",
"name": "onBehalf",
"type": "address"
},
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "withdraw",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "borrowableToken",
"type": "address"
},
{
"internalType": "address",
"name": "collateralToken",
"type": "address"
},
{
"internalType": "address",
"name": "oracle",
"type": "address"
},
{
"internalType": "address",
"name": "irm",
"type": "address"
},
{
"internalType": "uint256",
"name": "lltv",
"type": "uint256"
}
],
"internalType": "struct MarketParams",
"name": "marketParams",
"type": "tuple"
},
{
"internalType": "uint256",
"name": "assets",
"type": "uint256"
},
{
"internalType": "address",
"name": "onBehalf",
"type": "address"
},
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "withdrawCollateral",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": {
"object": "0x60a034620001805762003bfb80380391601f1980601f85011682019260018060401b0394838510868611176200010f57808492604096875283396020938491810103126200018057516001600160a01b038116919082900362000180578351848101818110878211176200010f578552600c81526b7a65726f206164647265737360a01b8482015282156200012557505060018060a01b031960005416176000558151908101917f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a7946921883524681830152306060830152606082526080820193828510908511176200010f57839052519020608052613a75908162000186823960805181818161177c01526123ab0152f35b634e487b7160e01b600052604160045260246000fd5b83855192839162461bcd60e51b835280600484015283519081602485015260005b828110620001685750506044935080600085601f938601015201168101030190fd5b80860182015187820160440152869450810162000146565b600080fdfe6080604052600436101561001257600080fd5b6000803560e01c806313af403514612a1257806320b76e81146127b3578063238d6579146125e95780632b4f013c146124605780632c3c9157146123ce5780633644e5151461237557806346904840146123235780634d98a93b1461220757806350d8cd4b14611f735780635a64f51e14611e9b5780635c2bea4914611c3a5780635c60e39a14611ba957806365e4ad9e14611b2957806370ae92d214611ac65780637784c6851461195a5780638069218f146115725780638720316d146114025780638c1358a2146111855780638da5cb5b1461113457806393c520621461109b578063a99aad8914610e5f578063b485f3b814610e12578063d8eabcb81461049b578063e0232b4214610361578063e74b981b14610290578063eecea000146101b05763f2b863ce1461014657600080fd5b346101ad5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad5760ff604060209273ffffffffffffffffffffffffffffffffffffffff610199612adc565b168152600484522054166040519015158152f35b80fd5b50346101ad5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad576101e8612adc565b6024358015159081810361028b5761025a90338552600660205273ffffffffffffffffffffffffffffffffffffffff604086209416938460005260205260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b60405190815233907fd5e969f01efe921d3f766bdebad25f0a05e3f237311f56482bf132d0326309c060203392a480f35b600080fd5b50346101ad5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad576103356102cb612adc565b7fffffffffffffffffffffffff000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff91610319838654163314610313612d8a565b90612dc3565b82600154911693849361032a612e5f565b908316851415612dc3565b16176001557f2e979f80fe4d43055c584cf4a8467c55875ea36728fc37176c05acd784eb7a738280a280f35b50346101ad5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad57610399612adc565b6024358260443567ffffffffffffffff8111610497576103d273ffffffffffffffffffffffffffffffffffffffff913690600401612c6a565b91909416936103e284338761377c565b846040518581527fc76f1b4fe4396ac07a9fa55a415d4ca430e72651d37d3401f3bed7cb13fc4f1260203392a3333b156104885761045191839160405193849283927f31f570720000000000000000000000000000000000000000000000000000000084528860048501612f74565b038183335af1801561048c57610474575b50506104719130903390613869565b80f35b61047d90612b45565b610488578238610462565b8280fd5b6040513d84823e3d90fd5b5080fd5b50346101ad576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad576104d536612bd2565b9073ffffffffffffffffffffffffffffffffffffffff60a4351660a4350361028b576101043567ffffffffffffffff811161049757610518903690600401612c6a565b9160c4359260e4359260a086209384845260036020526105556fffffffffffffffffffffffffffffffff6002604087200154161515610313612e98565b61056a610560612ed1565b8215881518612dc3565b6105748588613146565b6004602073ffffffffffffffffffffffffffffffffffffffff60408a015116604051928380927fa035b1fe0000000000000000000000000000000000000000000000000000000082525afa908115610e07578591610dd5575b5061061c6105df8260a435898c6135d8565b15604051906105ed82612b75565b601382527f706f736974696f6e206973206865616c746879000000000000000000000000006020830152612dc3565b6080880151670de0b6b3a764000003670de0b6b3a76400008111610c8c57670429d069189e00009080820291820403610cb957670de0b6b3a7640000900491670de0b6b3a764000083810311610c8c5782670de0b6b3a764000014610da6578715610ce8575061068c90876136a6565b6ec097ce7bc90715b34b9f0fffffffff8101809111610cb9576ec097ce7bc90715b34b9f1000000000900480670de0b6b3a7640000810204670de0b6b3a76400001481151715610cb957670ff59ee833b30000670de0b6b3a76400008390036ec097ce7bc90715b34b9f1000000000048082189082110281187fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810111610c8c5761078c92670de0b6b3a76400009081036ec097ce7bc90715b34b9f1000000000048083189083110290911891610787917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84019102612f43565b6136b9565b9380845260036020526107bd60016040862001546fffffffffffffffffffffffffffffffff8160801c911687613956565b6107c6816139e6565b82865260026020526040862073ffffffffffffffffffffffffffffffffffffffff60a435166000526020526001604060002001907fffffffffffffffffffffffffffffffff000000000000000000000000000000006fffffffffffffffffffffffffffffffff61083a845493828516613006565b1691161790556108a961084c826139e6565b83875260036020526108696001604089200191825460801c613006565b6fffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffff0000000000000000000000000000000083549260801b169116179055565b81855260036020526108da6fffffffffffffffffffffffffffffffff600160408820015416878082039111026139e6565b82865260036020526fffffffffffffffffffffffffffffffff6001604088200191167fffffffffffffffffffffffffffffffff0000000000000000000000000000000082541617905561097061092f886139e6565b83875260026020526040872073ffffffffffffffffffffffffffffffffffffffff60a43516600052602052610869600160406000200191825460801c613006565b8482865260026020526040862073ffffffffffffffffffffffffffffffffffffffff60a4351660005260205260016040600020015460801c15610ad4575b6109d48873ffffffffffffffffffffffffffffffffffffffff60208c015116339061377c565b604051918783526020830152876040830152606082015273ffffffffffffffffffffffffffffffffffffffff60a43516917f2a956e32ed8787cac03e680198b6ce3dcfb819aad578b3a5658f2c110a7d7c5560803393a481610a67575b505050610a5b8173ffffffffffffffffffffffffffffffffffffffff604095511630903390613869565b82519182526020820152f35b333b1561048857610aa991839160405193849283927fcf7ea1960000000000000000000000000000000000000000000000000000000084528860048501612f74565b038183335af1801561048c57610ac0575b80610a31565b610aca8291612b45565b6101ad5780610aba565b5081855260026020526040852073ffffffffffffffffffffffffffffffffffffffff60a435166000526020526fffffffffffffffffffffffffffffffff600160406000200154168286526003602052610baf610b4e60016040892001546fffffffffffffffffffffffffffffffff8160801c9116846139c3565b610b57816139e6565b858952600360205260408920907fffffffffffffffffffffffffffffffff000000000000000000000000000000006fffffffffffffffffffffffffffffffff610ba4845493828516613006565b1691161790556139e6565b838752600360205260016040882001907fffffffffffffffffffffffffffffffff000000000000000000000000000000006fffffffffffffffffffffffffffffffff610bff845493828516613006565b169116179055610c2e610c11826139e6565b8488526003602052610869600160408a200191825460801c613006565b82865260026020526040862073ffffffffffffffffffffffffffffffffffffffff60a4351660005260205260016040600020017fffffffffffffffffffffffffffffffff0000000000000000000000000000000081541690556109ae565b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b96508585969296526003602052670de0b6b3a7640000610d57610d2960016040892001546fffffffffffffffffffffffffffffffff8160801c91168b6139c3565b9782036ec097ce7bc90715b34b9f100000000004670ff59ee833b300008181189181119190910218886136a6565b04806ec097ce7bc90715b34b9f10000000008102046ec097ce7bc90715b34b9f10000000001481151715610c8c57906ec097ce7bc90715b34b9f1000000000610da092026136b9565b956107bd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b90506020813d602011610dff575b81610df060209383612b91565b8101031261028b5751386105cd565b3d9150610de3565b6040513d87823e3d90fd5b50346101ad5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad5760ff60406020926004358152600584522054166040519015158152f35b50346101ad57610e6e36612c98565b849691959296958460a08520808552602096600388526fffffffffffffffffffffffffffffffff98610ead8a600260408a200154161515610313612e98565b1592610ec3610eba612ed1565b82158618612dc3565b73ffffffffffffffffffffffffffffffffffffffff809c1693610eef610ee7612f0a565b861515612dc3565b610ef9848a613146565b61107457505080855260038752610f1b6040862054898160801c91168b613956565b975b81865260028852604086208360005288526040600020610f3e8a8254612f43565b9055610f65610f4c8a6139e6565b83885260038a526108696040892091825460801c612f50565b610f6e8a6139e6565b828752600389527fffffffffffffffffffffffffffffffff000000000000000000000000000000006040882092610fa9845493828516612f50565b1691161790556040519089825288888301527fedf8870433c83823eb071d3df1caa8d008f12f6440918c20d75a3602cda30fe060403393a481611007575b50505083604095610ffd92511630903390613869565b8351928352820152f35b333b156104885761104991839160405193849283927f2075be030000000000000000000000000000000000000000000000000000000084528b60048501612f74565b038183335af1801561048c57611060575b80610fe7565b61106a8291612b45565b6101ad578061105a565b61109591999a50828752600389526040872054908b8260801c9216906139c3565b98610f1d565b50346101ad5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad5773ffffffffffffffffffffffffffffffffffffffff60406110ea612b22565b926004358152600260205220911660005260205260606040600020600181549101546040519182526fffffffffffffffffffffffffffffffff8116602083015260801c6040820152f35b50346101ad57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad5773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b50346101ad5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad576111be36612bd2565b7fac4b2400f169220b0c0afdde7a0b32e775ba727ea1cb30b35f935cdaab8683ac60a08083209260608101600473ffffffffffffffffffffffffffffffffffffffff9182815116885260209082825261125360ff60408b2054166040519061122582612b75565b600f82527f49524d206e6f7420656e61626c6564000000000000000000000000000000000085830152612dc3565b608085019182518a52600581526112a660ff60408c2054166040519061127882612b75565b601082527f4c4c5456206e6f7420656e61626c65640000000000000000000000000000000084830152612dc3565b888a526003815260406113098b60026fffffffffffffffffffffffffffffffff9384922001541615604051906112db82612b75565b601682527f6d61726b657420616c726561647920637265617465640000000000000000000085830152612dc3565b898b5260038252600260408c20019042167fffffffffffffffffffffffffffffffff000000000000000000000000000000008254161790556008815260408a209480875116917fffffffffffffffffffffffff0000000000000000000000000000000000000000928388541617875581600188019189015116838254161790556002860181604089015116838254161790556003860192511690825416179055519101556113fe60405180926080809173ffffffffffffffffffffffffffffffffffffffff80825116855280602083015116602086015280604083015116604086015260608201511660608501520151910152565ba280f35b50346101ad576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad5761143c36612bd2565b60a435611447612aff565b60e4359073ffffffffffffffffffffffffffffffffffffffff908183169485840361028b57610471958760209361153861153060a0862092838552600388526114ad6fffffffffffffffffffffffffffffffff6002604088200154161515610313612e98565b6114c06114b861309a565b8c1515612dc3565b6114d36114cb612f0a565b871515612dc3565b6114e76114df82613100565b610313612fc0565b6114f18488613146565b61152960406114ff8d6139e6565b9686815260028b5220958a831696876000528a52610869600160406000200191825460801c613006565b83876134e7565b610313613061565b60408051338152602081018a90527fe80ebd7cc9223d7382aab2e0d1d6155c65651f83d53c8b9b06901d167e3211429190a401511661377c565b50346101ad57610100367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc018181126104885760a013610497576040516115b881612b59565b6115c0612adc565b81526115ca612b22565b9060209081810192835260443593841515850361028b5760408201948552606082016064358152608435608084019080825260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c360112611956576040516116669161163682612b75565b601182527f7369676e61747572652065787069726564000000000000000000000000000000888301524210612dc3565b8151926116da73ffffffffffffffffffffffffffffffffffffffff94858751168b526007885260408b2080549061169c826130d3565b9055604051916116ab83612b75565b600d83527f696e76616c6964206e6f6e6365000000000000000000000000000000000000008a84015214612dc3565b60405191868301907f81d0284fb0e2cde18d0553b06189d6f7613c96a01bb5b5e7828eade6a0dcac918252858751166040850152858951166060850152895115156080850152845160a08501525160c084015260c0835260e083019167ffffffffffffffff9184841083851117611927578360405284519020908401907f190100000000000000000000000000000000000000000000000000000000000082527f00000000000000000000000000000000000000000000000000000000000000006101028601526101228501526042835261016084019183831090831117611927578a92826040525190209060a4359360ff8516809503611923578894608093835261018082015260c4356101a08201526101c060e43591015282805260015afa15611918577fd5e969f01efe921d3f766bdebad25f0a05e3f237311f56482bf132d0326309c0928291611871838a5116801515908161190b575b506040519061184382612b75565b601182527f696e76616c6964207369676e617475726500000000000000000000000000000089830152612dc3565b8282511690516040519081527fa58af1a0c70dba0c7aa60d1a1a147ebd61000d1690a968828ac718bca927f2c7873392a36118f587511515838351168a526006875260408a2084895116600052875260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b511693511693511515916040519283523392a480f35b9050848451161438611835565b6040513d88823e3d90fd5b8380fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8880fd5b50346101ad576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610497576004359067ffffffffffffffff90818311611923573660238401121561192357826004013591821161192357602491600590368482841b87010111611ac2578491816119d7889361368e565b956119e56040519788612b91565b8187526119f18261368e565b947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08789019601368737845b838110611a6757505050505060405193838594850191818652518092526040850193925b828110611a5057505050500390f35b835185528695509381019392810192600101611a41565b9497959694611a75816130d3565b9084811015611a9657851b82018301355481861b8801529597949695611a1d565b838a7f4e487b710000000000000000000000000000000000000000000000000000000081526032600452fd5b8580fd5b50346101ad5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad57604060209173ffffffffffffffffffffffffffffffffffffffff611b18612adc565b168152600783522054604051908152f35b50346101ad5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad57611b61612adc565b6040611b6b612b22565b9273ffffffffffffffffffffffffffffffffffffffff80931681526006602052209116600052602052602060ff604060002054166040519015158152f35b50346101ad5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad57604060c091600435815260036020522080546002600183015492015490604051926fffffffffffffffffffffffffffffffff91828116855260801c6020850152818116604085015260801c60608401528116608083015260801c60a0820152f35b50346101ad57604090611c4c36612d1a565b9294939190858260a08520918288526003602052611c866fffffffffffffffffffffffffffffffff60028c8b200154161515610313612e98565b1593611c9c611c93612ed1565b82158718612dc3565b73ffffffffffffffffffffffffffffffffffffffff871694611cbf6114cb612f0a565b611ccb6114df86613100565b611cd58488613146565b611e4057505092610a5b949273ffffffffffffffffffffffffffffffffffffffff9285899689526003602052611e008b611d29818c20546fffffffffffffffffffffffffffffffff8160801c91168b6139a1565b9a5b8381526002602052878282209516948560005260205281600020611d508d8254612ff9565b9055611d77611d5e8d6139e6565b858352600360205261086984842091825460801c613006565b611d808a6139e6565b8482526003602052828220907fffffffffffffffffffffffffffffffff000000000000000000000000000000006fffffffffffffffffffffffffffffffff611dcc845493828516613006565b1691161790558381526003602052206fffffffffffffffffffffffffffffffff806001830154169154161015610313613028565b8a5133815260208101889052604081018a90527fa56fc0ad5702ec05ce63666221f796fb62437c32db1aa1aa075fc6484cf58fbf90606090a4511661377c565b8998509282611e00611e9373ffffffffffffffffffffffffffffffffffffffff968b9996610a5b9b99969c5260036020528c8a2054906fffffffffffffffffffffffffffffffff8260801c92169061397b565b9a8b98611d2b565b50346101ad5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad57611ed3612adc565b73ffffffffffffffffffffffffffffffffffffffff90611efa828454163314610313612d8a565b168082526004602052611f1760ff60408420541615610313612e5f565b80825260046020526040822060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790557f590e04cdebeccba40f566186b9746ad295a4cd358ea4fefaaea6ce79630d96c08280a280f35b50346101ad57611f8236612d1a565b909291948294869160a08220958682526003966020968888526fffffffffffffffffffffffffffffffff90611fc4826002604088200154161515610313612e98565b1593611fda611fd1612ed1565b8d158718612dc3565b73ffffffffffffffffffffffffffffffffffffffff9687891695612007611fff612f0a565b881515612dc3565b6120136114df87613100565b61201d8589613146565b6121d857508a9b5082819b98999a9b528a8a526120486001604083200154838160801c91168a6139a1565b9a8b945b612055866139e6565b85845260028d528c8360408620988c8516998a60005283526040600020600101888154958187169061208691612f50565b167fffffffffffffffffffffffffffffffff000000000000000000000000000000008096161790556120b7906139e6565b91888752526040852060010190815460801c906120d391612f50565b81546fffffffffffffffffffffffffffffffff1660809190911b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000161790558c8361211d8d6139e6565b91888752526040852060010191868354928184169061213b91612f50565b16911617905561214c9085896134e7565b612154613061565b61215d91612dc3565b8382528a52604090209080600183015416915416101561217b613028565b61218491612dc3565b60408051338152602081018890529081018a90527f570954540bed6b1304a87dfe815a5eda4a648f7097a16240dcd85c9b5fd42a4390606090a45116916121ca9261377c565b604051928352820152604090f35b9a506121ff8b9498999a9c8483528d8c52600160408420015490848260801c92169061397b565b9b8c9861204c565b50346101ad5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad577f297b80e7a896fad470c630f6575072d609bde997260ff3db851939405ec29139602060043561228273ffffffffffffffffffffffffffffffffffffffff8554163314610313612d8a565b8084526005825261229d60ff60408620541615610313612e5f565b6122e56040516122ac81612b75565b601181527f6d6178204c4c545620657863656564656400000000000000000000000000000084820152670de0b6b3a76400008310612dc3565b808452600582526040842060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055604051908152a180f35b50346101ad57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad57602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b50346101ad57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346101ad5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad57604060a091600435815260086020522073ffffffffffffffffffffffffffffffffffffffff8082541691816001820154169160048160028401541691600384015416920154926040519485526020850152604084015260608301526080820152f35b50346101ad5760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad5761249936612bd2565b7f139d6f58e9a127229667c8e3b36e88890a66cfc8ab1024ddc513e189e125b75b602060a4356124e473ffffffffffffffffffffffffffffffffffffffff8654163314610313612d8a565b6125df60a08520948587526003845261258e866fffffffffffffffffffffffffffffffff9261252084600260408d200154161515610313612e98565b818a5260038752612540600260408c20015460801c871415610313612e5f565b61258960405161254f81612b75565b601081527f6d61782066656520657863656564656400000000000000000000000000000000898201526703782dace9d90000881115612dc3565b613146565b85875260038452821660026040882001906fffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffff0000000000000000000000000000000083549260801b169116179055565b604051908152a280f35b50346101ad576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad5761262336612bd2565b9060a43561262f612aff565b60e43567ffffffffffffffff81116119235761264f903690600401612c6a565b9060a0862080865260036020526126836fffffffffffffffffffffffffffffffff6002604089200154161515610313612e98565b61268e610ee761309a565b73ffffffffffffffffffffffffffffffffffffffff809416906126ba6126b2612f0a565b831515612dc3565b6126ed6126c6876139e6565b828952600260205260408920848a52602052610869600160408b200191825460801c612f50565b604051908682527fa3b9472a1399e17e123f3c2e6586c23e504184d504de59cdaa2b375e880c618460203393a481612735575b50506020610471939401511630903390613869565b333b156127af5761277791859160405193849283927fb1022fdf0000000000000000000000000000000000000000000000000000000084528860048501612f74565b038183335af180156127a45761278e575b80612720565b6104719361279d602092612b45565b9350612788565b6040513d86823e3d90fd5b8480fd5b50346101ad576127c236612c98565b849691959296958460a0852080855260036020978189526fffffffffffffffffffffffffffffffff996128028b600260408b200154161515610313612e98565b159361280f611c93612ed1565b73ffffffffffffffffffffffffffffffffffffffff809d16946128336114cb612f0a565b61283d858b613146565b6129e957505081865280885261286160016040882001548a8160801c91168c613956565b985b61286c8a6139e6565b9083885260028a52604088208589528a526001604089200181612893825494828616613006565b167fffffffffffffffffffffffffffffffff000000000000000000000000000000008094161790556128e26128c78c6139e6565b858a52848c52610869600160408c200191825460801c613006565b838852828a5261290181600160408b200154168d8082039111026139e6565b928489528a52600160408920019216908254161790556040519089825288888301527f52acb05cebbd3cd39715469f22afbf5a17496295ef3bc9bb5944056c63ccaa0960403393a4816129645750505083604095610ffd92511630903390613869565b333b15610488579180916129a79360405194859283927f05b4591c0000000000000000000000000000000000000000000000000000000084528b60048501612f74565b038183335af19081156129dd575095610ffd9286926040986129ce575b5092819750610fe7565b6129d790612b45565b386129c4565b604051903d90823e3d90fd5b612a0c919a9b50838852828a526001604089200154908c8260801c9216906139c3565b99612863565b50346101ad5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad57612ab1612a4d612adc565b7fffffffffffffffffffffffff0000000000000000000000000000000000000000835473ffffffffffffffffffffffffffffffffffffffff80821693612a9c612a94612d8a565b863314612dc3565b16938493612aa8612e5f565b90851415612dc3565b161782557f167d3e9c1016ab80e58802ca9da10ce5c6a0f4debc46a2e7a2cd9e56899a4fb58280a280f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361028b57565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361028b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361028b57565b67ffffffffffffffff811161192757604052565b60a0810190811067ffffffffffffffff82111761192757604052565b6040810190811067ffffffffffffffff82111761192757604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761192757604052565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60a091011261028b5760405190612c0982612b59565b8173ffffffffffffffffffffffffffffffffffffffff600435818116810361028b578252602435818116810361028b576020830152604435818116810361028b576040830152606435908116810361028b5760608201526080608435910152565b9181601f8401121561028b5782359167ffffffffffffffff831161028b576020838186019501011161028b57565b6101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261028b57612ccc81612bd2565b9160a4359160c4359160e43573ffffffffffffffffffffffffffffffffffffffff8116810361028b5791610104359067ffffffffffffffff821161028b57612d1691600401612c6a565b9091565b6101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261028b57612d4e90612bd2565b9060a4359060c4359073ffffffffffffffffffffffffffffffffffffffff9060e435828116810361028b579161010435908116810361028b5790565b60405190612d9782612b75565b600982527f6e6f74206f776e657200000000000000000000000000000000000000000000006020830152565b15612dcb5750565b604051907f08c379a000000000000000000000000000000000000000000000000000000000825281602080600483015282519283602484015260005b848110612e48575050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f836000604480968601015201168101030190fd5b818101830151868201604401528593508201612e07565b60405190612e6c82612b75565b600b82527f616c7265616479207365740000000000000000000000000000000000000000006020830152565b60405190612ea582612b75565b601282527f6d61726b6574206e6f74206372656174656400000000000000000000000000006020830152565b60405190612ede82612b75565b601282527f696e636f6e73697374656e7420696e70757400000000000000000000000000006020830152565b60405190612f1782612b75565b600c82527f7a65726f206164647265737300000000000000000000000000000000000000006020830152565b91908201809211610cb957565b9190916fffffffffffffffffffffffffffffffff80809416911601918211610cb957565b9183606094601f927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0948652604060208701528160408701528686013760008582860101520116010190565b60405190612fcd82612b75565b600c82527f756e617574686f72697a656400000000000000000000000000000000000000006020830152565b91908203918211610cb957565b6fffffffffffffffffffffffffffffffff9182169082160391908211610cb957565b6040519061303582612b75565b601682527f696e73756666696369656e74206c6971756964697479000000000000000000006020830152565b6040519061306e82612b75565b601782527f696e73756666696369656e7420636f6c6c61746572616c0000000000000000006020830152565b604051906130a782612b75565b600b82527f7a65726f206173736574730000000000000000000000000000000000000000006020830152565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610cb95760010190565b73ffffffffffffffffffffffffffffffffffffffff16803314908115613124575090565b9050600052600660205260406000203360005260205260ff6040600020541690565b91906000908082526003916020928084526fffffffffffffffffffffffffffffffff9360409361317e86600287872001541642612ff9565b9788156134dc578185528383528585209860018a0154908882166131d7575b50505060029596975083525220019042167fffffffffffffffffffffffffffffffff00000000000000000000000000000000825416179055565b8473ffffffffffffffffffffffffffffffffffffffff93846060820151168a519d8e927f9451fed40000000000000000000000000000000000000000000000000000000084526004840161326e916080809173ffffffffffffffffffffffffffffffffffffffff80825116855280602083015116602086015280604083015116604086015260608201511660608501520151910152565b8054958d871660a4850152608096871c60c48501528d811660e4850152861c610104840152600201548c8116610124840152851c610144830152818a5a9261016493f19a8b156134d257879b61349e575b5088999a61335060029a86957f9d9bd501d0657d7dfe415f779a620a62b78bc508ddc0891fbbd8b7ac0f8fce8795898d8d8d6060998c835281855261335b613310896001878720015416928c6136a6565b91613355671bc16d674ec8000061332785806136a6565b0493670de0b6b3a76400009c856729a2241af62c00008f9784613349916136a6565b0492612f43565b612f43565b906136a6565b0496613366886139e6565b8d845282865260018585200182613381825493828516612f50565b167fffffffffffffffffffffffffffffffff000000000000000000000000000000008093161790558d6133b38a6139e6565b90855283875285852091836133cc845493828516612f50565b1691161790558c839981855283875260028686200154881c8061340b575b50505050505092505050519283528783015289820152a2879695388061319d565b61348d999b509161343e61086998979695949261342b613450958e6136a6565b048093838852868a528888205416612ff9565b90855283875285852054891c91613956565b988d8352600285528383209060015416835284528282206134728a8254612f43565b905561347d896139e6565b938d83525220928354901c612f50565b3880898f8d8f918e908c86806133ea565b909a508481813d83116134cb575b6134b68183612b91565b810103126134c757519960606132bf565b8680fd5b503d6134ac565b88513d89823e3d90fd5b505050505050509050565b909291600093808552602092600284526040862073ffffffffffffffffffffffffffffffffffffffff90818516885285526fffffffffffffffffffffffffffffffff600160408920015416156135cd5784600491604084015116604051928380927fa035b1fe0000000000000000000000000000000000000000000000000000000082525afa9485156135c257879561358b575b50506135889495506135d8565b90565b9080929550813d83116135bb575b6135a38183612b91565b81010312611ac257613588949550519285943861357b565b503d613599565b6040513d89823e3d90fd5b506001955050505050565b60806ec097ce7bc90715b34b9f100000000061367e613688949660016040670de0b6b3a7640000986000908b8252600260205273ffffffffffffffffffffffffffffffffffffffff8383209116908183526020526136636fffffffffffffffffffffffffffffffff8d8187878720015416908552600360205286868620015491828c1c9216906139c3565b9b82526002602052828220908252602052200154841c6136a6565b04910151906136a6565b04101590565b67ffffffffffffffff81116119275760051b60200190565b81810292918115918404141715610cb957565b8115610da6570490565b906136cd916136a6565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810191818311610cb9576135889261078791612f43565b3d1561375f573d9067ffffffffffffffff8211611927576040519161375360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184612b91565b82523d6000602084013e565b606090565b9081602091031261028b5751801515810361028b5790565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000006020820190815273ffffffffffffffffffffffffffffffffffffffff9384166024830152604480830195909552938152613838936000938493928491906137e8606482612b91565b5193165af16137f5613706565b8161383a575b506040519061380982612b75565b600f82527f7472616e73666572206661696c656400000000000000000000000000000000006020830152612dc3565b565b805180159250821561384f575b5050386137fb565b6138629250602080918301019101613764565b3880613847565b60009291838093613838966040519060208201947f23b872dd00000000000000000000000000000000000000000000000000000000865273ffffffffffffffffffffffffffffffffffffffff938480921660248501521660448301526064820152606481526138d781612b59565b5193165af16138e4613706565b81613927575b50604051906138f882612b75565b601382527f7472616e7366657246726f6d206661696c6564000000000000000000000000006020830152612dc3565b805180159250821561393c575b5050386138ea565b61394f9250602080918301019101613764565b3880613934565b620f42408301809311610cb95760018201809211610cb95761358892610787916136a6565b6001820192918310610cb957620f42408201809211610cb95761358892610787916136a6565b91620f42408101809111610cb95760018201809211610cb957613588926136c3565b919060018101809111610cb957620f42408201809211610cb957613588926136c3565b604051906139f382612b75565b601482527f6d61782075696e743132382065786365656465640000000000000000000000006020830152613a3b6fffffffffffffffffffffffffffffffff9283831115612dc3565b169056fea26469706673582212201a12e6c0cbebcc2e94f0becd304cd3364e2a02af402b04065babc8a5fc1f23c764736f6c63430008130033",
"sourceMap": "1076:19638:23:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1076:19638:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1076:19638:23;;;;2300:22;;1645:14:30;;1076:19638:23;;;;;;;1645:14:30;-1:-1:-1;1645:14:30;;;-1:-1:-1;1645:14:30;1076:19638:23;;2413:57;;;495:68:29;;;;2441:13:23;495:68:29;;;;2464:4:23;495:68:29;;;;;2413:57:23;;495:68:29;1076:19638:23;;;;;;;;;;;;;;;1645:14:30;2403:68:23;;495::29;2384:87:23;1076:19638;;;;;;495:68:29;1076:19638:23;;;;;;;;;;;;;;;-1:-1:-1;1076:19638:23;;;;;-1:-1:-1;1076:19638:23;1645:14:30;1076:19638:23;;;1645:14:30;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1645:14:30;;;;;;;;;;;;-1:-1:-1;1645:14:30;1076:19638:23;1645:14:30;;;;;1076:19638:23;;1645:14:30;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1645:14:30;;;;1076:19638:23;-1:-1:-1;1076:19638:23;",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x6080604052600436101561001257600080fd5b6000803560e01c806313af403514612a1257806320b76e81146127b3578063238d6579146125e95780632b4f013c146124605780632c3c9157146123ce5780633644e5151461237557806346904840146123235780634d98a93b1461220757806350d8cd4b14611f735780635a64f51e14611e9b5780635c2bea4914611c3a5780635c60e39a14611ba957806365e4ad9e14611b2957806370ae92d214611ac65780637784c6851461195a5780638069218f146115725780638720316d146114025780638c1358a2146111855780638da5cb5b1461113457806393c520621461109b578063a99aad8914610e5f578063b485f3b814610e12578063d8eabcb81461049b578063e0232b4214610361578063e74b981b14610290578063eecea000146101b05763f2b863ce1461014657600080fd5b346101ad5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad5760ff604060209273ffffffffffffffffffffffffffffffffffffffff610199612adc565b168152600484522054166040519015158152f35b80fd5b50346101ad5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad576101e8612adc565b6024358015159081810361028b5761025a90338552600660205273ffffffffffffffffffffffffffffffffffffffff604086209416938460005260205260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b60405190815233907fd5e969f01efe921d3f766bdebad25f0a05e3f237311f56482bf132d0326309c060203392a480f35b600080fd5b50346101ad5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad576103356102cb612adc565b7fffffffffffffffffffffffff000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff91610319838654163314610313612d8a565b90612dc3565b82600154911693849361032a612e5f565b908316851415612dc3565b16176001557f2e979f80fe4d43055c584cf4a8467c55875ea36728fc37176c05acd784eb7a738280a280f35b50346101ad5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad57610399612adc565b6024358260443567ffffffffffffffff8111610497576103d273ffffffffffffffffffffffffffffffffffffffff913690600401612c6a565b91909416936103e284338761377c565b846040518581527fc76f1b4fe4396ac07a9fa55a415d4ca430e72651d37d3401f3bed7cb13fc4f1260203392a3333b156104885761045191839160405193849283927f31f570720000000000000000000000000000000000000000000000000000000084528860048501612f74565b038183335af1801561048c57610474575b50506104719130903390613869565b80f35b61047d90612b45565b610488578238610462565b8280fd5b6040513d84823e3d90fd5b5080fd5b50346101ad576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad576104d536612bd2565b9073ffffffffffffffffffffffffffffffffffffffff60a4351660a4350361028b576101043567ffffffffffffffff811161049757610518903690600401612c6a565b9160c4359260e4359260a086209384845260036020526105556fffffffffffffffffffffffffffffffff6002604087200154161515610313612e98565b61056a610560612ed1565b8215881518612dc3565b6105748588613146565b6004602073ffffffffffffffffffffffffffffffffffffffff60408a015116604051928380927fa035b1fe0000000000000000000000000000000000000000000000000000000082525afa908115610e07578591610dd5575b5061061c6105df8260a435898c6135d8565b15604051906105ed82612b75565b601382527f706f736974696f6e206973206865616c746879000000000000000000000000006020830152612dc3565b6080880151670de0b6b3a764000003670de0b6b3a76400008111610c8c57670429d069189e00009080820291820403610cb957670de0b6b3a7640000900491670de0b6b3a764000083810311610c8c5782670de0b6b3a764000014610da6578715610ce8575061068c90876136a6565b6ec097ce7bc90715b34b9f0fffffffff8101809111610cb9576ec097ce7bc90715b34b9f1000000000900480670de0b6b3a7640000810204670de0b6b3a76400001481151715610cb957670ff59ee833b30000670de0b6b3a76400008390036ec097ce7bc90715b34b9f1000000000048082189082110281187fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810111610c8c5761078c92670de0b6b3a76400009081036ec097ce7bc90715b34b9f1000000000048083189083110290911891610787917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84019102612f43565b6136b9565b9380845260036020526107bd60016040862001546fffffffffffffffffffffffffffffffff8160801c911687613956565b6107c6816139e6565b82865260026020526040862073ffffffffffffffffffffffffffffffffffffffff60a435166000526020526001604060002001907fffffffffffffffffffffffffffffffff000000000000000000000000000000006fffffffffffffffffffffffffffffffff61083a845493828516613006565b1691161790556108a961084c826139e6565b83875260036020526108696001604089200191825460801c613006565b6fffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffff0000000000000000000000000000000083549260801b169116179055565b81855260036020526108da6fffffffffffffffffffffffffffffffff600160408820015416878082039111026139e6565b82865260036020526fffffffffffffffffffffffffffffffff6001604088200191167fffffffffffffffffffffffffffffffff0000000000000000000000000000000082541617905561097061092f886139e6565b83875260026020526040872073ffffffffffffffffffffffffffffffffffffffff60a43516600052602052610869600160406000200191825460801c613006565b8482865260026020526040862073ffffffffffffffffffffffffffffffffffffffff60a4351660005260205260016040600020015460801c15610ad4575b6109d48873ffffffffffffffffffffffffffffffffffffffff60208c015116339061377c565b604051918783526020830152876040830152606082015273ffffffffffffffffffffffffffffffffffffffff60a43516917f2a956e32ed8787cac03e680198b6ce3dcfb819aad578b3a5658f2c110a7d7c5560803393a481610a67575b505050610a5b8173ffffffffffffffffffffffffffffffffffffffff604095511630903390613869565b82519182526020820152f35b333b1561048857610aa991839160405193849283927fcf7ea1960000000000000000000000000000000000000000000000000000000084528860048501612f74565b038183335af1801561048c57610ac0575b80610a31565b610aca8291612b45565b6101ad5780610aba565b5081855260026020526040852073ffffffffffffffffffffffffffffffffffffffff60a435166000526020526fffffffffffffffffffffffffffffffff600160406000200154168286526003602052610baf610b4e60016040892001546fffffffffffffffffffffffffffffffff8160801c9116846139c3565b610b57816139e6565b858952600360205260408920907fffffffffffffffffffffffffffffffff000000000000000000000000000000006fffffffffffffffffffffffffffffffff610ba4845493828516613006565b1691161790556139e6565b838752600360205260016040882001907fffffffffffffffffffffffffffffffff000000000000000000000000000000006fffffffffffffffffffffffffffffffff610bff845493828516613006565b169116179055610c2e610c11826139e6565b8488526003602052610869600160408a200191825460801c613006565b82865260026020526040862073ffffffffffffffffffffffffffffffffffffffff60a4351660005260205260016040600020017fffffffffffffffffffffffffffffffff0000000000000000000000000000000081541690556109ae565b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b96508585969296526003602052670de0b6b3a7640000610d57610d2960016040892001546fffffffffffffffffffffffffffffffff8160801c91168b6139c3565b9782036ec097ce7bc90715b34b9f100000000004670ff59ee833b300008181189181119190910218886136a6565b04806ec097ce7bc90715b34b9f10000000008102046ec097ce7bc90715b34b9f10000000001481151715610c8c57906ec097ce7bc90715b34b9f1000000000610da092026136b9565b956107bd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b90506020813d602011610dff575b81610df060209383612b91565b8101031261028b5751386105cd565b3d9150610de3565b6040513d87823e3d90fd5b50346101ad5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad5760ff60406020926004358152600584522054166040519015158152f35b50346101ad57610e6e36612c98565b849691959296958460a08520808552602096600388526fffffffffffffffffffffffffffffffff98610ead8a600260408a200154161515610313612e98565b1592610ec3610eba612ed1565b82158618612dc3565b73ffffffffffffffffffffffffffffffffffffffff809c1693610eef610ee7612f0a565b861515612dc3565b610ef9848a613146565b61107457505080855260038752610f1b6040862054898160801c91168b613956565b975b81865260028852604086208360005288526040600020610f3e8a8254612f43565b9055610f65610f4c8a6139e6565b83885260038a526108696040892091825460801c612f50565b610f6e8a6139e6565b828752600389527fffffffffffffffffffffffffffffffff000000000000000000000000000000006040882092610fa9845493828516612f50565b1691161790556040519089825288888301527fedf8870433c83823eb071d3df1caa8d008f12f6440918c20d75a3602cda30fe060403393a481611007575b50505083604095610ffd92511630903390613869565b8351928352820152f35b333b156104885761104991839160405193849283927f2075be030000000000000000000000000000000000000000000000000000000084528b60048501612f74565b038183335af1801561048c57611060575b80610fe7565b61106a8291612b45565b6101ad578061105a565b61109591999a50828752600389526040872054908b8260801c9216906139c3565b98610f1d565b50346101ad5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad5773ffffffffffffffffffffffffffffffffffffffff60406110ea612b22565b926004358152600260205220911660005260205260606040600020600181549101546040519182526fffffffffffffffffffffffffffffffff8116602083015260801c6040820152f35b50346101ad57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad5773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b50346101ad5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad576111be36612bd2565b7fac4b2400f169220b0c0afdde7a0b32e775ba727ea1cb30b35f935cdaab8683ac60a08083209260608101600473ffffffffffffffffffffffffffffffffffffffff9182815116885260209082825261125360ff60408b2054166040519061122582612b75565b600f82527f49524d206e6f7420656e61626c6564000000000000000000000000000000000085830152612dc3565b608085019182518a52600581526112a660ff60408c2054166040519061127882612b75565b601082527f4c4c5456206e6f7420656e61626c65640000000000000000000000000000000084830152612dc3565b888a526003815260406113098b60026fffffffffffffffffffffffffffffffff9384922001541615604051906112db82612b75565b601682527f6d61726b657420616c726561647920637265617465640000000000000000000085830152612dc3565b898b5260038252600260408c20019042167fffffffffffffffffffffffffffffffff000000000000000000000000000000008254161790556008815260408a209480875116917fffffffffffffffffffffffff0000000000000000000000000000000000000000928388541617875581600188019189015116838254161790556002860181604089015116838254161790556003860192511690825416179055519101556113fe60405180926080809173ffffffffffffffffffffffffffffffffffffffff80825116855280602083015116602086015280604083015116604086015260608201511660608501520151910152565ba280f35b50346101ad576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad5761143c36612bd2565b60a435611447612aff565b60e4359073ffffffffffffffffffffffffffffffffffffffff908183169485840361028b57610471958760209361153861153060a0862092838552600388526114ad6fffffffffffffffffffffffffffffffff6002604088200154161515610313612e98565b6114c06114b861309a565b8c1515612dc3565b6114d36114cb612f0a565b871515612dc3565b6114e76114df82613100565b610313612fc0565b6114f18488613146565b61152960406114ff8d6139e6565b9686815260028b5220958a831696876000528a52610869600160406000200191825460801c613006565b83876134e7565b610313613061565b60408051338152602081018a90527fe80ebd7cc9223d7382aab2e0d1d6155c65651f83d53c8b9b06901d167e3211429190a401511661377c565b50346101ad57610100367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc018181126104885760a013610497576040516115b881612b59565b6115c0612adc565b81526115ca612b22565b9060209081810192835260443593841515850361028b5760408201948552606082016064358152608435608084019080825260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c360112611956576040516116669161163682612b75565b601182527f7369676e61747572652065787069726564000000000000000000000000000000888301524210612dc3565b8151926116da73ffffffffffffffffffffffffffffffffffffffff94858751168b526007885260408b2080549061169c826130d3565b9055604051916116ab83612b75565b600d83527f696e76616c6964206e6f6e6365000000000000000000000000000000000000008a84015214612dc3565b60405191868301907f81d0284fb0e2cde18d0553b06189d6f7613c96a01bb5b5e7828eade6a0dcac918252858751166040850152858951166060850152895115156080850152845160a08501525160c084015260c0835260e083019167ffffffffffffffff9184841083851117611927578360405284519020908401907f190100000000000000000000000000000000000000000000000000000000000082527f00000000000000000000000000000000000000000000000000000000000000006101028601526101228501526042835261016084019183831090831117611927578a92826040525190209060a4359360ff8516809503611923578894608093835261018082015260c4356101a08201526101c060e43591015282805260015afa15611918577fd5e969f01efe921d3f766bdebad25f0a05e3f237311f56482bf132d0326309c0928291611871838a5116801515908161190b575b506040519061184382612b75565b601182527f696e76616c6964207369676e617475726500000000000000000000000000000089830152612dc3565b8282511690516040519081527fa58af1a0c70dba0c7aa60d1a1a147ebd61000d1690a968828ac718bca927f2c7873392a36118f587511515838351168a526006875260408a2084895116600052875260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b511693511693511515916040519283523392a480f35b9050848451161438611835565b6040513d88823e3d90fd5b8380fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8880fd5b50346101ad576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610497576004359067ffffffffffffffff90818311611923573660238401121561192357826004013591821161192357602491600590368482841b87010111611ac2578491816119d7889361368e565b956119e56040519788612b91565b8187526119f18261368e565b947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08789019601368737845b838110611a6757505050505060405193838594850191818652518092526040850193925b828110611a5057505050500390f35b835185528695509381019392810192600101611a41565b9497959694611a75816130d3565b9084811015611a9657851b82018301355481861b8801529597949695611a1d565b838a7f4e487b710000000000000000000000000000000000000000000000000000000081526032600452fd5b8580fd5b50346101ad5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad57604060209173ffffffffffffffffffffffffffffffffffffffff611b18612adc565b168152600783522054604051908152f35b50346101ad5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad57611b61612adc565b6040611b6b612b22565b9273ffffffffffffffffffffffffffffffffffffffff80931681526006602052209116600052602052602060ff604060002054166040519015158152f35b50346101ad5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad57604060c091600435815260036020522080546002600183015492015490604051926fffffffffffffffffffffffffffffffff91828116855260801c6020850152818116604085015260801c60608401528116608083015260801c60a0820152f35b50346101ad57604090611c4c36612d1a565b9294939190858260a08520918288526003602052611c866fffffffffffffffffffffffffffffffff60028c8b200154161515610313612e98565b1593611c9c611c93612ed1565b82158718612dc3565b73ffffffffffffffffffffffffffffffffffffffff871694611cbf6114cb612f0a565b611ccb6114df86613100565b611cd58488613146565b611e4057505092610a5b949273ffffffffffffffffffffffffffffffffffffffff9285899689526003602052611e008b611d29818c20546fffffffffffffffffffffffffffffffff8160801c91168b6139a1565b9a5b8381526002602052878282209516948560005260205281600020611d508d8254612ff9565b9055611d77611d5e8d6139e6565b858352600360205261086984842091825460801c613006565b611d808a6139e6565b8482526003602052828220907fffffffffffffffffffffffffffffffff000000000000000000000000000000006fffffffffffffffffffffffffffffffff611dcc845493828516613006565b1691161790558381526003602052206fffffffffffffffffffffffffffffffff806001830154169154161015610313613028565b8a5133815260208101889052604081018a90527fa56fc0ad5702ec05ce63666221f796fb62437c32db1aa1aa075fc6484cf58fbf90606090a4511661377c565b8998509282611e00611e9373ffffffffffffffffffffffffffffffffffffffff968b9996610a5b9b99969c5260036020528c8a2054906fffffffffffffffffffffffffffffffff8260801c92169061397b565b9a8b98611d2b565b50346101ad5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad57611ed3612adc565b73ffffffffffffffffffffffffffffffffffffffff90611efa828454163314610313612d8a565b168082526004602052611f1760ff60408420541615610313612e5f565b80825260046020526040822060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790557f590e04cdebeccba40f566186b9746ad295a4cd358ea4fefaaea6ce79630d96c08280a280f35b50346101ad57611f8236612d1a565b909291948294869160a08220958682526003966020968888526fffffffffffffffffffffffffffffffff90611fc4826002604088200154161515610313612e98565b1593611fda611fd1612ed1565b8d158718612dc3565b73ffffffffffffffffffffffffffffffffffffffff9687891695612007611fff612f0a565b881515612dc3565b6120136114df87613100565b61201d8589613146565b6121d857508a9b5082819b98999a9b528a8a526120486001604083200154838160801c91168a6139a1565b9a8b945b612055866139e6565b85845260028d528c8360408620988c8516998a60005283526040600020600101888154958187169061208691612f50565b167fffffffffffffffffffffffffffffffff000000000000000000000000000000008096161790556120b7906139e6565b91888752526040852060010190815460801c906120d391612f50565b81546fffffffffffffffffffffffffffffffff1660809190911b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000161790558c8361211d8d6139e6565b91888752526040852060010191868354928184169061213b91612f50565b16911617905561214c9085896134e7565b612154613061565b61215d91612dc3565b8382528a52604090209080600183015416915416101561217b613028565b61218491612dc3565b60408051338152602081018890529081018a90527f570954540bed6b1304a87dfe815a5eda4a648f7097a16240dcd85c9b5fd42a4390606090a45116916121ca9261377c565b604051928352820152604090f35b9a506121ff8b9498999a9c8483528d8c52600160408420015490848260801c92169061397b565b9b8c9861204c565b50346101ad5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad577f297b80e7a896fad470c630f6575072d609bde997260ff3db851939405ec29139602060043561228273ffffffffffffffffffffffffffffffffffffffff8554163314610313612d8a565b8084526005825261229d60ff60408620541615610313612e5f565b6122e56040516122ac81612b75565b601181527f6d6178204c4c545620657863656564656400000000000000000000000000000084820152670de0b6b3a76400008310612dc3565b808452600582526040842060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055604051908152a180f35b50346101ad57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad57602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b50346101ad57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346101ad5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad57604060a091600435815260086020522073ffffffffffffffffffffffffffffffffffffffff8082541691816001820154169160048160028401541691600384015416920154926040519485526020850152604084015260608301526080820152f35b50346101ad5760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad5761249936612bd2565b7f139d6f58e9a127229667c8e3b36e88890a66cfc8ab1024ddc513e189e125b75b602060a4356124e473ffffffffffffffffffffffffffffffffffffffff8654163314610313612d8a565b6125df60a08520948587526003845261258e866fffffffffffffffffffffffffffffffff9261252084600260408d200154161515610313612e98565b818a5260038752612540600260408c20015460801c871415610313612e5f565b61258960405161254f81612b75565b601081527f6d61782066656520657863656564656400000000000000000000000000000000898201526703782dace9d90000881115612dc3565b613146565b85875260038452821660026040882001906fffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffff0000000000000000000000000000000083549260801b169116179055565b604051908152a280f35b50346101ad576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad5761262336612bd2565b9060a43561262f612aff565b60e43567ffffffffffffffff81116119235761264f903690600401612c6a565b9060a0862080865260036020526126836fffffffffffffffffffffffffffffffff6002604089200154161515610313612e98565b61268e610ee761309a565b73ffffffffffffffffffffffffffffffffffffffff809416906126ba6126b2612f0a565b831515612dc3565b6126ed6126c6876139e6565b828952600260205260408920848a52602052610869600160408b200191825460801c612f50565b604051908682527fa3b9472a1399e17e123f3c2e6586c23e504184d504de59cdaa2b375e880c618460203393a481612735575b50506020610471939401511630903390613869565b333b156127af5761277791859160405193849283927fb1022fdf0000000000000000000000000000000000000000000000000000000084528860048501612f74565b038183335af180156127a45761278e575b80612720565b6104719361279d602092612b45565b9350612788565b6040513d86823e3d90fd5b8480fd5b50346101ad576127c236612c98565b849691959296958460a0852080855260036020978189526fffffffffffffffffffffffffffffffff996128028b600260408b200154161515610313612e98565b159361280f611c93612ed1565b73ffffffffffffffffffffffffffffffffffffffff809d16946128336114cb612f0a565b61283d858b613146565b6129e957505081865280885261286160016040882001548a8160801c91168c613956565b985b61286c8a6139e6565b9083885260028a52604088208589528a526001604089200181612893825494828616613006565b167fffffffffffffffffffffffffffffffff000000000000000000000000000000008094161790556128e26128c78c6139e6565b858a52848c52610869600160408c200191825460801c613006565b838852828a5261290181600160408b200154168d8082039111026139e6565b928489528a52600160408920019216908254161790556040519089825288888301527f52acb05cebbd3cd39715469f22afbf5a17496295ef3bc9bb5944056c63ccaa0960403393a4816129645750505083604095610ffd92511630903390613869565b333b15610488579180916129a79360405194859283927f05b4591c0000000000000000000000000000000000000000000000000000000084528b60048501612f74565b038183335af19081156129dd575095610ffd9286926040986129ce575b5092819750610fe7565b6129d790612b45565b386129c4565b604051903d90823e3d90fd5b612a0c919a9b50838852828a526001604089200154908c8260801c9216906139c3565b99612863565b50346101ad5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ad57612ab1612a4d612adc565b7fffffffffffffffffffffffff0000000000000000000000000000000000000000835473ffffffffffffffffffffffffffffffffffffffff80821693612a9c612a94612d8a565b863314612dc3565b16938493612aa8612e5f565b90851415612dc3565b161782557f167d3e9c1016ab80e58802ca9da10ce5c6a0f4debc46a2e7a2cd9e56899a4fb58280a280f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361028b57565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361028b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361028b57565b67ffffffffffffffff811161192757604052565b60a0810190811067ffffffffffffffff82111761192757604052565b6040810190811067ffffffffffffffff82111761192757604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761192757604052565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60a091011261028b5760405190612c0982612b59565b8173ffffffffffffffffffffffffffffffffffffffff600435818116810361028b578252602435818116810361028b576020830152604435818116810361028b576040830152606435908116810361028b5760608201526080608435910152565b9181601f8401121561028b5782359167ffffffffffffffff831161028b576020838186019501011161028b57565b6101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261028b57612ccc81612bd2565b9160a4359160c4359160e43573ffffffffffffffffffffffffffffffffffffffff8116810361028b5791610104359067ffffffffffffffff821161028b57612d1691600401612c6a565b9091565b6101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261028b57612d4e90612bd2565b9060a4359060c4359073ffffffffffffffffffffffffffffffffffffffff9060e435828116810361028b579161010435908116810361028b5790565b60405190612d9782612b75565b600982527f6e6f74206f776e657200000000000000000000000000000000000000000000006020830152565b15612dcb5750565b604051907f08c379a000000000000000000000000000000000000000000000000000000000825281602080600483015282519283602484015260005b848110612e48575050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f836000604480968601015201168101030190fd5b818101830151868201604401528593508201612e07565b60405190612e6c82612b75565b600b82527f616c7265616479207365740000000000000000000000000000000000000000006020830152565b60405190612ea582612b75565b601282527f6d61726b6574206e6f74206372656174656400000000000000000000000000006020830152565b60405190612ede82612b75565b601282527f696e636f6e73697374656e7420696e70757400000000000000000000000000006020830152565b60405190612f1782612b75565b600c82527f7a65726f206164647265737300000000000000000000000000000000000000006020830152565b91908201809211610cb957565b9190916fffffffffffffffffffffffffffffffff80809416911601918211610cb957565b9183606094601f927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0948652604060208701528160408701528686013760008582860101520116010190565b60405190612fcd82612b75565b600c82527f756e617574686f72697a656400000000000000000000000000000000000000006020830152565b91908203918211610cb957565b6fffffffffffffffffffffffffffffffff9182169082160391908211610cb957565b6040519061303582612b75565b601682527f696e73756666696369656e74206c6971756964697479000000000000000000006020830152565b6040519061306e82612b75565b601782527f696e73756666696369656e7420636f6c6c61746572616c0000000000000000006020830152565b604051906130a782612b75565b600b82527f7a65726f206173736574730000000000000000000000000000000000000000006020830152565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610cb95760010190565b73ffffffffffffffffffffffffffffffffffffffff16803314908115613124575090565b9050600052600660205260406000203360005260205260ff6040600020541690565b91906000908082526003916020928084526fffffffffffffffffffffffffffffffff9360409361317e86600287872001541642612ff9565b9788156134dc578185528383528585209860018a0154908882166131d7575b50505060029596975083525220019042167fffffffffffffffffffffffffffffffff00000000000000000000000000000000825416179055565b8473ffffffffffffffffffffffffffffffffffffffff93846060820151168a519d8e927f9451fed40000000000000000000000000000000000000000000000000000000084526004840161326e916080809173ffffffffffffffffffffffffffffffffffffffff80825116855280602083015116602086015280604083015116604086015260608201511660608501520151910152565b8054958d871660a4850152608096871c60c48501528d811660e4850152861c610104840152600201548c8116610124840152851c610144830152818a5a9261016493f19a8b156134d257879b61349e575b5088999a61335060029a86957f9d9bd501d0657d7dfe415f779a620a62b78bc508ddc0891fbbd8b7ac0f8fce8795898d8d8d6060998c835281855261335b613310896001878720015416928c6136a6565b91613355671bc16d674ec8000061332785806136a6565b0493670de0b6b3a76400009c856729a2241af62c00008f9784613349916136a6565b0492612f43565b612f43565b906136a6565b0496613366886139e6565b8d845282865260018585200182613381825493828516612f50565b167fffffffffffffffffffffffffffffffff000000000000000000000000000000008093161790558d6133b38a6139e6565b90855283875285852091836133cc845493828516612f50565b1691161790558c839981855283875260028686200154881c8061340b575b50505050505092505050519283528783015289820152a2879695388061319d565b61348d999b509161343e61086998979695949261342b613450958e6136a6565b048093838852868a528888205416612ff9565b90855283875285852054891c91613956565b988d8352600285528383209060015416835284528282206134728a8254612f43565b905561347d896139e6565b938d83525220928354901c612f50565b3880898f8d8f918e908c86806133ea565b909a508481813d83116134cb575b6134b68183612b91565b810103126134c757519960606132bf565b8680fd5b503d6134ac565b88513d89823e3d90fd5b505050505050509050565b909291600093808552602092600284526040862073ffffffffffffffffffffffffffffffffffffffff90818516885285526fffffffffffffffffffffffffffffffff600160408920015416156135cd5784600491604084015116604051928380927fa035b1fe0000000000000000000000000000000000000000000000000000000082525afa9485156135c257879561358b575b50506135889495506135d8565b90565b9080929550813d83116135bb575b6135a38183612b91565b81010312611ac257613588949550519285943861357b565b503d613599565b6040513d89823e3d90fd5b506001955050505050565b60806ec097ce7bc90715b34b9f100000000061367e613688949660016040670de0b6b3a7640000986000908b8252600260205273ffffffffffffffffffffffffffffffffffffffff8383209116908183526020526136636fffffffffffffffffffffffffffffffff8d8187878720015416908552600360205286868620015491828c1c9216906139c3565b9b82526002602052828220908252602052200154841c6136a6565b04910151906136a6565b04101590565b67ffffffffffffffff81116119275760051b60200190565b81810292918115918404141715610cb957565b8115610da6570490565b906136cd916136a6565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810191818311610cb9576135889261078791612f43565b3d1561375f573d9067ffffffffffffffff8211611927576040519161375360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184612b91565b82523d6000602084013e565b606090565b9081602091031261028b5751801515810361028b5790565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000006020820190815273ffffffffffffffffffffffffffffffffffffffff9384166024830152604480830195909552938152613838936000938493928491906137e8606482612b91565b5193165af16137f5613706565b8161383a575b506040519061380982612b75565b600f82527f7472616e73666572206661696c656400000000000000000000000000000000006020830152612dc3565b565b805180159250821561384f575b5050386137fb565b6138629250602080918301019101613764565b3880613847565b60009291838093613838966040519060208201947f23b872dd00000000000000000000000000000000000000000000000000000000865273ffffffffffffffffffffffffffffffffffffffff938480921660248501521660448301526064820152606481526138d781612b59565b5193165af16138e4613706565b81613927575b50604051906138f882612b75565b601382527f7472616e7366657246726f6d206661696c6564000000000000000000000000006020830152612dc3565b805180159250821561393c575b5050386138ea565b61394f9250602080918301019101613764565b3880613934565b620f42408301809311610cb95760018201809211610cb95761358892610787916136a6565b6001820192918310610cb957620f42408201809211610cb95761358892610787916136a6565b91620f42408101809111610cb95760018201809211610cb957613588926136c3565b919060018101809111610cb957620f42408201809211610cb957613588926136c3565b604051906139f382612b75565b601482527f6d61782075696e743132382065786365656465640000000000000000000000006020830152613a3b6fffffffffffffffffffffffffffffffff9283831115612dc3565b169056fea26469706673582212201a12e6c0cbebcc2e94f0becd304cd3364e2a02af402b04065babc8a5fc1f23c764736f6c63430008130033",
"sourceMap": "1076:19638:23:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;15995:54;16008:10;;1076:19638;;15995:12;1076:19638;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15995:54;1076:19638;;;;;16008:10;;16065:79;1076:19638;16008:10;16065:79;;1076:19638;;;;;;;;;;;;;;;;;;4164:63;1076:19638;;:::i;:::-;710:13:30;1076:19638:23;;2592:49;1076:19638;;;;2600:10;:19;1076:19638;;:::i;:::-;2592:49;;:::i;:::-;1076:19638;4191:12;1076:19638;;;;;;;;:::i;:::-;;;;4172:31;;;4164:63;:::i;:::-;710:13:30;;4191:12:23;710:13:30;4284:42:23;;;;1076:19638;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;15606:10;15618:6;15606:10;;15618:6;;:::i;:::-;1076:19638;;;;;;15641:46;1076:19638;15606:10;15641:46;;15606:10;15698:68;;;;;1076:19638;;;;;15698:68;;;;;1645:14:30;15698:68:23;;;1076:19638;15698:68;;;:::i;:::-;;15606:10;;;15698:68;;;;;;;;1076:19638;15828:4;;15835:6;15828:4;;15606:10;;15835:6;;:::i;:::-;1076:19638;;15698:68;;;;:::i;:::-;1076:19638;;15698:68;;;;1076:19638;;;;15698:68;1076:19638;;1645:14:30;1076:19638:23;;1645:14:30;;;;1076:19638:23;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;463:102:32;1076:19638:23;463:102:32;;1076:19638:23;;;;12673:6;1076:19638;;12665:65;1076:19638;12673:21;1076:19638;;;12673:21;1076:19638;;12673:26;;1076:19638;;:::i;12665:65::-;12740:90;1076:19638;;:::i;:::-;496:63:36;;;;;12740:90:23;:::i;:::-;12871:2;;;;:::i;:::-;1076:19638;;;;12919:19;;1076:19638;;;;12911:36;;;;1645:14:30;12911:36:23;;;;;;;;;;;;;1076:19638;;12958:93;12967:55;1076:19638;;;12967:55;;;:::i;:::-;12966:56;1076:19638;;;;;;:::i;:::-;;;;;;;;;12958:93;:::i;:::-;13368:17;;;844::30;93:4:33;1785:14:30;93:4:33;1785:14:30;;;;298:6:29;1076:19638:23;;;;;;;;;;93:4:33;1076:19638:23;;1785:14:30;93:4:33;1785:14:30;;;;;;1076:19638:23;93:4:33;1076:19638:23;;;496:63:36;;1076:19638:23;;1048:5:33;;;;;:::i;:::-;1785:14:30;1645;;;;;;;1076:19638:23;;;;93:4:33;1076:19638:23;;;93:4:33;1076:19638:23;;;;;;;402:7:29;93:4:33;1785:14:30;;;1076:19638:23;;695:70:36;;;;;-1:-1:-1;695:70:36;;;1785:14:30;;;;;;1047:21:33;;93:4;1785:14:30;;;1076:19638:23;;695:70:36;;;;;-1:-1:-1;695:70:36;;;;;1048:15:33;;1785:14:30;;;;1076:19638:23;1048:15:33;:::i;:::-;1047:21;:::i;:::-;1076:19638:23;;;;12673:6;1076:19638;;13586:85;1076:19638;;;;13612:28;1076:19638;;;13368:17;1076:19638;;;13586:85;;:::i;:::-;14001:24;;;:::i;:::-;1076:19638;;;12673:21;1076:19638;;;;;;;;;;;;;;;;;13962:35;1076:19638;1118:24:30;1076:19638:23;13962:63;1076:19638;;;;;;13962:63;:::i;:::-;1076:19638;1118:24:30;;;;;14035:56:23;14067:24;;;:::i;:::-;1076:19638;;;12673:6;1076:19638;;14035:56;1076:19638;;;;14035:28;1076:19638;;;13368:17;1076:19638;14035:56;:::i;:::-;1076:19638;592:18:30;;;;;;;;;;;;;14035:56:23;1076:19638;;;12673:6;1076:19638;;14132:77;1076:19638;;;;;14154:28;1076:19638;;1125:62:36;;;;;;;14132:77:23;:::i;:::-;1076:19638;;;12673:6;1076:19638;;;;;;;14101:28;1076:19638;;1118:24:30;;;;;;;14220:61:23;14257:24;;;:::i;:::-;1076:19638;;;12673:21;1076:19638;;;;;;;;;;;;;14220:61;1076:19638;;;;14220:33;1076:19638;;;13368:17;1076:19638;14220:61;:::i;:::-;14372:21;1076:19638;;;12673:21;1076:19638;;;;;;;;;;;;;;;;;14407:33;1076:19638;13368:17;1076:19638;14407:38;14403:490;;13416:526;14965:12;14910:28;1076:19638;;14910:28;;1076:19638;;14953:10;14965:12;;:::i;:::-;1076:19638;;;;;;;224:4:29;;1076:19638:23;224:4:29;1076:19638:23;224:4:29;;1076:19638:23;224:4:29;;;1076:19638:23;;;;;14953:10;15066:102;13368:17;14953:10;15066:102;;15183:15;15179:95;;13416:526;1076:19638;;;15366:12;1076:19638;;;;;;15359:4;14953:10;;15366:12;;:::i;:::-;1076:19638;;;;;;;;;;15179:95;14953:10;15200:74;;;;;1076:19638;;;;;15200:74;;;;;1645:14:30;15200:74:23;;;1076:19638;15200:74;;;:::i;:::-;;14953:10;;;15200:74;;;;;;;;15179:95;;;;15200:74;;;;;:::i;:::-;1076:19638;;15200:74;;;14403:490;1076:19638;;;;12673:21;1076:19638;;;;;;;;;;;;;;;;;;14477:35;1076:19638;;;;;12673:6;1076:19638;;14739:19;14544:84;1076:19638;;;;14569:28;1076:19638;;;13368:17;1076:19638;;;14544:84;;:::i;:::-;14674:19;;;:::i;:::-;1076:19638;;;12673:6;1076:19638;;;;;;1118:24:30;1076:19638:23;14642:51;1076:19638;;;;;;14642:51;:::i;:::-;1076:19638;1118:24:30;;;;;14739:19:23;:::i;:::-;1076:19638;;;12673:6;1076:19638;;;;;;14707:28;1076:19638;1118:24:30;1076:19638:23;14707:51;1076:19638;;;;;;14707:51;:::i;:::-;1076:19638;1118:24:30;;;;;14772:57:23;14804:25;;;:::i;:::-;1076:19638;;;12673:6;1076:19638;;14772:57;1076:19638;;;;14772:28;1076:19638;;;13368:17;1076:19638;14772:57;:::i;:::-;1076:19638;;;12673:21;1076:19638;;;;;;;;;;;;;;;;;14843:35;1118:24:30;;;;;;14403:490:23;;1785:14:30;1645;;;;;;1076:19638:23;1645:14:30;;1076:19638:23;1645:14:30;1076:19638:23;1645:14:30;;1076:19638:23;1645:14:30;;1076:19638:23;1645:14:30;13416:526:23;1076:19638;;;;;;;;12673:6;1076:19638;;93:4:33;887:5;13725:83:23;1076:19638;;;;13749:28;1076:19638;;;13368:17;1076:19638;;;13725:83;;:::i;:::-;402:7:29;1785:14:30;;1076:19638:23;;402:7:29;695:70:36;;;;;-1:-1:-1;695:70:36;;;;;402:7:29;887:5:33;:::i;:::-;1076:19638:23;;;;;;;;;;;;;;;;886:11:33;1076:19638:23;;886:11:33;:::i;:::-;13416:526:23;;;1076:19638;;;;;;;;;;12911:36;;;1076:19638;12911:36;;1076:19638;12911:36;;;;;;1076:19638;12911:36;;;:::i;:::-;;;1076:19638;;;;;12911:36;;;;;;-1:-1:-1;12911:36:23;;;1076:19638;;1645:14:30;1076:19638:23;;1645:14:30;;;;1076:19638:23;;;;;;;;;;;;;;;;;;;;1823:45;1076:19638;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;463:102:32;;;1076:19638:23;;;;;5248:6;1076:19638;;;;5240:65;1076:19638;5248:21;1076:19638;;;5248:21;1076:19638;;5248:26;;1076:19638;;:::i;5240:65::-;496:63:36;1076:19638:23;5315:78;1076:19638;;:::i;:::-;496:63:36;;;;5315:78:23;:::i;:::-;1076:19638;;;;1396:20:30;5403:55:23;1396:20:30;;:::i;:::-;5411:22:23;;;5403:55;:::i;:::-;5499:2;;;;:::i;:::-;5517:10;;1076:19638;;;;;5248:6;1076:19638;;5538:79;1076:19638;;;;;;;;;;5538:79;;:::i;:::-;5513:205;;1076:19638;;;5248:21;1076:19638;;;;;;;;;;;;;5729:45;1076:19638;;;5729:45;:::i;:::-;1118:24:30;;5784:50:23;5816:18;;;:::i;:::-;1076:19638;;;5248:6;1076:19638;;5784:50;1076:19638;;;;;;;;5784:50;:::i;:::-;5876:18;;;:::i;:::-;1076:19638;;;5248:6;1076:19638;;1118:24:30;1076:19638:23;;;;5844:50;1076:19638;;;;;;5844:50;:::i;:::-;1076:19638;1118:24:30;;;;;1076:19638:23;;;;;;;;;;;5910:58;1076:19638;5931:10;5910:58;;5983:15;5979:83;;5513:205;1076:19638;;;;;;6154:6;1076:19638;;;6147:4;5931:10;;6154:6;;:::i;:::-;1076:19638;;;;;;;;;5979:83;5931:10;6000:62;;;;;1076:19638;;;;;6000:62;;;;;1645:14:30;6000:62:23;;;1076:19638;6000:62;;;:::i;:::-;;5931:10;;;6000:62;;;;;;;;5979:83;;;;6000:62;;;;;:::i;:::-;1076:19638;;6000:62;;;5513:205;5641:77;1076:19638;;;;;;;5248:6;1076:19638;;;;;;;;;;;;;5641:77;;:::i;:::-;5513:205;;;1076:19638;;;;;;;;;;;;;;;;:::i;:::-;;;;;;1583:59;1076:19638;;;;;;;;;;;;;;;;1583:59;;1076:19638;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4882:40;1076:19638;463:102:32;;;4525:16:23;;;;1076:19638;;;;;;;;;;;;;;4504:66;1076:19638;;;;;;;;;;;;:::i;:::-;;;;;;;;;4504:66;:::i;:::-;4602:17;;;844::30;;;1076:19638:23;;4588:13;1076:19638;;4580:69;1076:19638;;;;;;;;;;;;:::i;:::-;844:17:30;1076:19638:23;;844:17:30;;;;;4580:69:23;:::i;:::-;1076:19638;;;4667:6;1076:19638;;;4659:69;1076:19638;4667:21;1076:19638;;;;;4667:21;1076:19638;;4667:26;1076:19638;;;;;;:::i;:::-;984:18:30;1076:19638:23;;984:18:30;;;;;4659:69:23;:::i;:::-;1076:19638;;;4667:6;1076:19638;;4667:21;1076:19638;;;4773:21;4805:15;;1076:19638;1118:24:30;;;;;;;4831:16:23;1076:19638;;;;;;;;;;710:13:30;;;;;;;;;;1118:24;;;;;;;1076:19638:23;;710:13:30;;;;;;;4667:21:23;1118:24:30;;;1076:19638:23;1118:24:30;;1076:19638:23;;710:13:30;;;;;;;4667:6:23;1118:24:30;;1076:19638:23;;;710:13:30;;;;;;;844:17;1118:24;;;;1076:19638:23;;1118:24:30;;;;;1076:19638:23;1118:24:30;;;1076:19638:23;;;1118:24:30;;;;;1076:19638:23;1118:24:30;;;1076:19638:23;1118:24:30;;;;;1076:19638:23;1118:24:30;;;1076:19638:23;1118:24:30;;;;1076:19638:23;1118:24:30;;;1076:19638:23;1118:24:30;;;;1076:19638:23;1118:24:30;;4882:40:23;1076:19638;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;12331:6;463:102:32;;1076:19638:23;463:102:32;12090:82:23;12098:38;1076:19638;463:102:32;;1076:19638:23;;;;11630:6;1076:19638;;11622:65;1076:19638;11630:21;1076:19638;;;11630:21;1076:19638;;11630:26;;1076:19638;;:::i;11622:65::-;11697:43;1076:19638;;:::i;:::-;11705:11;;;11697:43;:::i;:::-;11842:55;1396:20:30;;:::i;:::-;11850:22:23;;;11842:55;:::i;:::-;11907:62;11915:29;;;:::i;:::-;1076:19638;;:::i;11907:62::-;12010:2;;;;:::i;:::-;12024:55;1076:19638;12061:18;;;:::i;:::-;1076:19638;;;;11630:21;1076:19638;;;;;;;;;;;;;12024:55;1076:19638;;;;12024:33;1076:19638;;;;;12024:55;:::i;:::-;12098:38;;;:::i;:::-;1076:19638;;:::i;12090:82::-;1076:19638;;;12221:10;1076:19638;;;;;;;;12188:72;;1076:19638;12188:72;12278:28;1076:19638;;12331:6;:::i;1076:19638::-;;;;;;;;;;;;;;;-1:-1:-1;1076:19638:23;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16303:78;;1076:19638;;;:::i;:::-;;;;;;;;;16311:15;:40;16303:78;:::i;:::-;844:17:30;;1076:19638:23;16391:90;1076:19638;;;;;;;;16422:5;1076:19638;;;;;;;16422:33;;;;:::i;:::-;1118:24:30;;1076:19638:23;;;;;;:::i;:::-;2541:19:30;1076:19638:23;;2541:19:30;;;;;16399:56:23;16391:90;:::i;:::-;1076:19638;;16523:49;;;;1076:19638;661:114:29;1076:19638:23;;661:114:29;;;1076:19638:23;;661:114:29;;1076:19638:23;661:114:29;;;1076:19638:23;;661:114:29;;1076:19638:23;661:114:29;;1076:19638:23;;;661:114:29;;1076:19638:23;661:114:29;;1076:19638:23;661:114:29;;1076:19638:23;661:114:29;;;;1076:19638:23;661:114:29;16523:49:23;;1076:19638;;;;;;;;;;;;;;;;;;;;16513:60;;16610:58;;;661:114:29;;;;16639:16:23;661:114:29;;;1076:19638:23;661:114:29;;;1076:19638:23;661:114:29;16610:58:23;;1076:19638;;;;;;;;;;;;;;;;;;;16600:69;;661:114:29;1076:19638:23;661:114:29;1076:19638:23;;;;661:114:29;;;;;1076:19638:23;;;;;;661:114:29;;;;16730:11:23;661:114:29;;;;1076:19638:23;661:114:29;16743:11:23;661:114:29;;;1076:19638:23;16699:56;;;1076:19638;16699:56;;;;;17087:140;16699:56;;;16766:102;16699:56;;;1076:19638;16774:23;;;:64;;;;1076:19638;;;;;;;;:::i;:::-;;;;661:114:29;;;;;16766:102:23;:::i;:::-;1076:19638;;;;844:17:30;;1076:19638:23;;;;;16884:83;16909:10;;16884:83;;16978:93;2402:19:30;;1076:19638:23;;;;;;;;16978:12;1076:19638;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16978:93;1076:19638;;;;;2402:19:30;;1076:19638:23;;;;;;;;16909:10;17087:140;;1076:19638;;16774:64;1076:19638;;;;;;16801:37;16774:64;;;16699:56;1076:19638;;1645:14:30;1076:19638:23;;1645:14:30;;;;661:114:29;;;;1076:19638:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;20520:9;20531:10;;;;;;1076:19638;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1076:19638:23;;;;;;;;;;;;20520:9;20579:3;;;;;;;;:::i;:::-;1076:19638;;;;;;;;;;;;;661:114:29;20598:98:23;;;;;;;;;20520:9;;;;;1076:19638;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;2000:40;1076:19638;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;1902:64;1076:19638;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1676:35;1076:19638;;;;;1676:35;1076:19638;1676:35;;1076:19638;1676:35;;1076:19638;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;463:102:32;;;1076:19638:23;;;;6491:6;1076:19638;;6483:65;1076:19638;6491:21;1076:19638;;;6491:21;1076:19638;;6491:26;;1076:19638;;:::i;6483:65::-;496:63:36;1076:19638:23;6558:78;1076:19638;;:::i;:::-;496:63:36;;;;6558:78:23;:::i;:::-;1076:19638;;;1396:20:30;6738:55:23;1396:20:30;;:::i;6738:55:23:-;6803:62;6811:29;;;:::i;6803:62::-;6906:2;;;;:::i;:::-;6924:10;;1076:19638;;;7572:6;1076:19638;;;;;;;;;6491:6;1076:19638;;7312:103;1076:19638;6945:77;1076:19638;;;;;;;;;;6945:77;;:::i;:::-;6920:205;;1076:19638;;;6491:21;1076:19638;;;;;;;;;;;;;;;;;7136:45;1076:19638;;;7136:45;:::i;:::-;1118:24:30;;7191:50:23;7223:18;;;:::i;:::-;1076:19638;;;6491:6;1076:19638;;7191:50;1076:19638;;;;;;;;7191:50;:::i;:::-;7283:18;;;:::i;:::-;1076:19638;;;6491:6;1076:19638;;;;;;1118:24:30;1076:19638:23;7251:50;1076:19638;;;;;;7251:50;:::i;:::-;1076:19638;1118:24:30;;;;;1076:19638:23;;;6491:6;1076:19638;;;;7320:28;;;;1076:19638;;;;;-1:-1:-1;7320:60:23;1785:14:30;;:::i;7312:103:23:-;1076:19638;;7454:10;1076:19638;;2120:24:30;;;1076:19638:23;;;2120:24:30;;;1076:19638:23;;;7431:70;;2120:24:30;;7431:70:23;1076:19638;;7572:6;:::i;6920:205::-;1076:19638;;;;;7312:103;7046:79;1076:19638;;;;;7572:6;1076:19638;;;;;6491:6;1076:19638;;;;;;;;;;;;;7046:79;;:::i;:::-;6920:205;;;;;1076:19638;;;;;;;;;;;;;;:::i;:::-;;;2592:49;1076:19638;;;;2600:10;:19;1076:19638;;:::i;2592:49::-;1076:19638;;;;;;;3012:50;1076:19638;;;;;;3020:18;1076:19638;;:::i;3012:50::-;1076:19638;;;;;;;;;3093:4;1076:19638;;;;;;;3113:33;;;;1076:19638;;;;;;;;;;:::i;:::-;;;;;;;;463:102:32;;;;1076:19638:23;;;;7936:6;1076:19638;;;;;;;;7928:65;1076:19638;7936:21;1076:19638;;;7936:21;1076:19638;;7936:26;;1076:19638;;:::i;7928:65::-;496:63:36;1076:19638:23;8003:78;1076:19638;;:::i;:::-;496:63:36;;;;8003:78:23;:::i;:::-;1076:19638;;;;;1396:20:30;8183:55:23;1396:20:30;;:::i;:::-;8191:22:23;;;8183:55;:::i;:::-;8248:62;8256:29;;;:::i;8248:62::-;8351:2;;;;:::i;:::-;8369:10;;1076:19638;;;;;;;;;;;;;;;8390:77;8408:28;1076:19638;;;8408:28;1076:19638;;;;;;;8390:77;;:::i;:::-;8365:205;;;;8620:18;;;:::i;:::-;1076:19638;;;7936:21;1076:19638;;;;;;;;;;;;;;;;;;;;8581:35;;1076:19638;;;;;;;8581:57;;;;:::i;:::-;1076:19638;1118:24:30;;;;;;;8680:18:23;;;:::i;:::-;1076:19638;;;;;;;;8581:35;8648:28;1076:19638;;;;;8648:50;;;;:::i;:::-;592:18:30;;1076:19638:23;592:18:30;;;;;;;;;;;8740::23;;;;;:::i;:::-;1076:19638;;;;;;;;8581:35;8708:28;1076:19638;;;;;;;;8708:50;;;;:::i;:::-;1076:19638;1118:24:30;;;;;8777:38:23;;;;;:::i;:::-;1076:19638;;:::i;:::-;8769:82;;;:::i;:::-;1076:19638;;;;;;;;8869:28;;8581:35;8869:28;;1076:19638;;;;;-1:-1:-1;8869:60:23;1785:14:30;;:::i;:::-;8861:103:23;;;:::i;:::-;1076:19638;;;9001:10;1076:19638;;2120:24:30;;;1076:19638:23;;;2120:24:30;;;1076:19638:23;;;8980:68;;2120:24:30;;8980:68:23;1076:19638;;9119:6;;;;:::i;:::-;1076:19638;;;;;;;;;;;8365:205;1076:19638;;8491:79;1076:19638;;;;;;;;;;;;8511:28;1076:19638;;;8511:28;1076:19638;;;;;;;;8491:79;;:::i;:::-;8365:205;;;;;1076:19638;;;;;;;;;;;;3413:26;1076:19638;;;2592:49;1076:19638;;;;2600:10;:19;1076:19638;;:::i;2592:49::-;1076:19638;;;3259:13;1076:19638;;3250:52;1076:19638;;;;;;3258:20;1076:19638;;:::i;3250:52::-;3312:48;1076:19638;;;;;:::i;:::-;93:4:33;1076:19638:23;;93:4:33;;;;;;3320:10:23;;3312:48;:::i;:::-;1076:19638;;;3259:13;1076:19638;;;;;;;;;;;;;;;;;;3413:26;1076:19638;;;;;;;;;;;;;;;;1522:27;1076:19638;;;;;;;;;;;;;;;;;;;;;;;1373:41;1076:19638;;;;;;;;;;;;;;;;;;;;;;2074:51;1076:19638;;;;;;;;2074:51;;1076:19638;2074:51;;1076:19638;;2074:51;1076:19638;2074:51;;;;1076:19638;;2074:51;;;;1076:19638;;2074:51;;1076:19638;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4016:28;1076:19638;;;2592:49;1076:19638;;;;2600:10;:19;1076:19638;;:::i;2592:49::-;3968:32;1076:19638;463:102:32;;1076:19638:23;;;;3618:6;1076:19638;;3920:2;1076:19638;;;3610:65;1076:19638;3618:21;1076:19638;;;3618:21;1076:19638;;3618:26;;1076:19638;;:::i;3610:65::-;1076:19638;;;3618:6;1076:19638;;3685:56;3618:21;1076:19638;;;3703:14;1076:19638;;;3693:24;;;1076:19638;;:::i;3685:56::-;3751:54;1076:19638;;;;;:::i;:::-;147:7:29;1076:19638:23;;147:7:29;;;;;;3759:17:23;;;3751:54;:::i;:::-;3920:2;:::i;:::-;1076:19638;;;3618:6;1076:19638;;;;3618:21;1076:19638;;;3968:14;592:18:30;1076:19638:23;592:18:30;;;;;;;;;;;;;3968:32:23;1076:19638;;;;;4016:28;1076:19638;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;463:102:32;1076:19638:23;463:102:32;;1076:19638:23;;;10793:6;1076:19638;;10785:65;1076:19638;10793:21;1076:19638;;;10793:21;1076:19638;;10793:26;;1076:19638;;:::i;10785:65::-;10860:43;1076:19638;;:::i;10860:43::-;1076:19638;;;;1396:20:30;10913:55:23;1396:20:30;;:::i;:::-;10921:22:23;;;10913:55;:::i;:::-;11057;11094:18;;;:::i;:::-;1076:19638;;;10793:21;1076:19638;;;;;;;;;;11057:55;1076:19638;;;;11057:33;1076:19638;;;;;11057:55;:::i;:::-;1076:19638;;;;;;11128:60;1076:19638;11159:10;11128:60;;11203:15;11199:103;;1076:19638;11320:28;;1076:19638;11394:6;11320:28;;;1076:19638;;11387:4;11159:10;;11394:6;;:::i;11199:103::-;11159:10;11220:82;;;;;1076:19638;;;;;11220:82;;;;;1645:14:30;11220:82:23;;;1076:19638;11220:82;;;:::i;:::-;;11159:10;;;11220:82;;;;;;;;11199:103;;;;11220:82;11394:6;11220:82;;1076:19638;11220:82;;:::i;:::-;;;;;;1076:19638;;1645:14:30;1076:19638:23;;1645:14:30;;;;11220:82:23;1076:19638;;;;;;;;;;;:::i;:::-;;;;;;;;;463:102:32;;;1076:19638:23;;;9456:6;1076:19638;;;;;;;9448:65;1076:19638;9456:21;1076:19638;;;9456:21;1076:19638;;9456:26;;1076:19638;;:::i;9448:65::-;496:63:36;1076:19638:23;9523:78;1076:19638;;:::i;9523:78::-;1076:19638;;;;1396:20:30;9611:55:23;1396:20:30;;:::i;9611:55:23:-;9707:2;;;;:::i;:::-;9725:10;;1076:19638;;;;;;;;9746:79;9766:28;1076:19638;;;9766:28;1076:19638;;;;;;;9746:79;;:::i;:::-;9721:205;;9976:18;;;:::i;:::-;1076:19638;;;;9456:21;1076:19638;;;;;;;;;;9937:35;1076:19638;;;9937:35;1076:19638;9937:57;1076:19638;;;;;;9937:57;:::i;:::-;1076:19638;1118:24:30;;;;;;;10004:50:23;10036:18;;;:::i;:::-;1076:19638;;;;;;10004:50;9937:35;1076:19638;;;10004:28;1076:19638;;;;;10004:50;:::i;:::-;1076:19638;;;;;;10095:71;1076:19638;9937:35;1076:19638;;;10117:28;1076:19638;;1125:62:36;;;;;;;10095:71:23;:::i;:::-;1076:19638;;;;;;9937:35;1076:19638;;;10064:28;1076:19638;;1118:24:30;;;;;;;1076:19638:23;;;;;;;;;;;10248:57;1076:19638;10268:10;10248:57;;10320:15;10316:81;;1076:19638;;;;;;10489:6;1076:19638;;;10482:4;10268:10;;10489:6;;:::i;10316:81::-;10268:10;10337:60;;;;1076:19638;;;10337:60;1076:19638;;;10337:60;;;;;1645:14:30;10337:60:23;;;1076:19638;10337:60;;;:::i;:::-;;10268:10;;;10337:60;;;;;;;;;10489:6;10337:60;;;1076:19638;10337:60;;;10316:81;;;;;;;;10337:60;;;;:::i;:::-;;;;;1076:19638;;1645:14:30;;;;;;;;9721:205:23;9849:77;1076:19638;;;;;;;;;;9867:28;1076:19638;;;9867:28;1076:19638;;;;;;;;9849:77;;:::i;:::-;9721:205;;;1076:19638;;;;;;;;;;;;2790:49;1076:19638;;:::i;:::-;710:13:30;1076:19638:23;;;;;;;2592:49;1076:19638;;:::i;:::-;2600:10;;:19;2592:49;:::i;:::-;1076:19638;;;;;;:::i;:::-;2798:17;;;;2790:49;:::i;:::-;710:13:30;;;;2882:28:23;;;;1076:19638;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;318:11:30:-;;;;;:::o;:::-;1076:19638:23;;318:11:30;;;;;;;;;;;1076:19638:23;;318:11:30;;;;;1076:19638:23;-1:-1:-1;318:11:30;;;;;;;;;1076:19638:23;;318:11:30;-1:-1:-1;1076:19638:23;318:11:30;;;;;;1076:19638:23;;318:11:30;;;;;;;;;;;;;;;;1076:19638:23;318:11:30;;;;-1:-1:-1;318:11:30;;;;1076:19638:23;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;1396:20:30:-;1076:19638:23;;;;;;:::i;:::-;1396:20:30;1076:19638:23;;1396:20:30;;;;;:::o;1645:14::-;;;;;;;;;;:::o;:::-;;;;1076:19638:23;;;;;;;1645:14:30;;;;;;:::o;:::-;;;1076:19638:23;1645:14:30;1076:19638:23;1645:14:30;1076:19638:23;1645:14:30;1076:19638:23;;1645:14:30;;;;;;;;;1076:19638:23;;;;1645:14:30;;;;;;;;1076:19638:23;;1645:14:30;;;:::o;1076:19638:23:-;;;;;;;:::i;:::-;;;;;;;;;:::o;1785:14:30:-;;;;;;;;;;:::o;:::-;1076:19638:23;;;;;;;1785:14:30;;;;;;;:::o;:::-;1076:19638:23;;;;;;:::i;:::-;1785:14:30;1076:19638:23;;1785:14:30;;;;;:::o;1076:19638:23:-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;2541:19:30:-;;;;;;;;;:::o;17240:160:23:-;1076:19638;;17333:10;;:22;:60;;;;;17326:67;17240:160;:::o;17333:60::-;1076:19638;;-1:-1:-1;1076:19638:23;17359:12;1076:19638;;;-1:-1:-1;1076:19638:23;17333:10;-1:-1:-1;1076:19638:23;;;;;-1:-1:-1;1076:19638:23;;;17240:160;:::o;17572:1418::-;;;-1:-1:-1;1076:19638:23;;;;17693:6;1076:19638;;;;;;;;;;17675:39;1076:19638;17693:21;1076:19638;;;17693:21;1076:19638;;17675:15;:39;:::i;:::-;17729:12;;;17725:25;;1076:19638;;;;;;;;;17764:28;;;;1076:19638;;;;;17760:1131;;17572:1418;1076:19638;;;17693:21;1076:19638;;;;;;;;18935:21;17675:15;;1076:19638;1118:24:30;;;;;;;17572:1418:23:o;17760:1131::-;1076:19638;;17839:16;;;;;1076:19638;;;;17834:59;;;1645:14:30;17834:59:23;;;;;1076:19638;;1118:24:30;;;1076:19638:23;1118:24:30;;;1076:19638:23;;;1118:24:30;;;;;1076:19638:23;1118:24:30;;;1076:19638:23;1118:24:30;;;;;1076:19638:23;1118:24:30;;;1076:19638:23;1118:24:30;;;;1076:19638:23;1118:24:30;;;1076:19638:23;1118:24:30;;;;1076:19638:23;1118:24:30;1076:19638:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17693:21;1076:19638;;;;;;;;;;;;;;;17834:59;;;;1076:19638;17834:59;;;;;;;;;;;17760:1131;1076:19638;;;;1516:22:33;17693:21:23;1076:19638;;;18819:61;1076:19638;;;;;17839:16;1076:19638;;;;;;;887:5:33;1349;1076:19638:23;17764:28;1076:19638;;;17926:28;1076:19638;;1349:5:33;;;:::i;:::-;887;1516:34;1076:19638:23;887:5:33;;;;:::i;:::-;1076:19638:23;93:4:33;;887:5;;1076:19638:23;887:5:33;;;;;;:::i;:::-;1076:19638:23;1516:22:33;;:::i;:::-;:34;:::i;:::-;887:5;;:::i;:::-;1076:19638:23;18048:20;;;;:::i;:::-;1076:19638;;;;;;17764:28;1076:19638;;;18016:28;1076:19638;18016:52;1076:19638;;;;;;18016:52;:::i;:::-;1076:19638;1118:24:30;;;;;;;18114:20:23;;;;:::i;:::-;1076:19638;;;;;;;;;;;18082:52;1076:19638;;;;;;18082:52;:::i;:::-;1076:19638;1118:24:30;;;;;18149:17:23;;1076:19638;;;;;;;17693:21;1076:19638;;;18184:14;1076:19638;;;18184:19;18180:620;;17760:1131;1076:19638;;;;;;;;;;;;;;;;;;;;;;18819:61;17760:1131;;;;;;;18180:620;18732:53;887:5:33;;;;18573:40:23;18732:53;887:5:33;;;;;;;18550:94:23;887:5:33;;;:::i;:::-;1076:19638:23;;;;;;;;;;;;;;18573:40;:::i;:::-;1076:19638;;;;;;;;;;;;18550:94;;:::i;:::-;1076:19638;;;;17693:21;1076:19638;;;;;;17764:28;1076:19638;;;;;;;;;18662:52;1076:19638;;;18662:52;:::i;:::-;1118:24:30;;18764:21:23;;;:::i;:::-;1076:19638;;;;;;;;;;;18732:53;:::i;:::-;18180:620;;;;;;;;;;;;;;17834:59;;;;;;;;;;;;;;;;;:::i;:::-;;;1076:19638;;;;;;17839:16;17834:59;;1076:19638;;;;17834:59;;;;;;1076:19638;;1645:14:30;1076:19638:23;;1645:14:30;;;;17725:25:23;17743:7;;;;;;;;;:::o;19191:328::-;;;;-1:-1:-1;1076:19638:23;;;;;;19313:8;1076:19638;;;;;;;;;;;;;;;19313:35;1076:19638;;;19313:35;1076:19638;;19313:40;19309:57;;19411:19;19403:36;19411:19;1076:19638;19411:19;;1076:19638;;;;19403:36;;;;1645:14:30;19403:36:23;;;;;;;;;;;;;19191:328;19457:55;;;;;;;:::i;:::-;19191:328;:::o;19403:36::-;;;;;;;;;;;;;;;;;:::i;:::-;;;1076:19638;;;;19457:55;1076:19638;;;;19403:36;;;;;;;;;;;;1076:19638;;1645:14:30;1076:19638:23;;1645:14:30;;;;19309:57:23;-1:-1:-1;19313:35:23;;-1:-1:-1;;;;;19355:11:23:o;19745:534::-;1076:19638;224:4:29;887:5:33;;19745:534:23;;19943:35;1076:19638;93:4:33;19745:534:23;-1:-1:-1;1076:19638:23;;;;19943:8;1076:19638;;;;;;;;;;;;;;19935:137;1076:19638;;;;;;;19943:35;1076:19638;;;;;20004:6;1076:19638;;;;;;20004:28;1076:19638;;;;;;;19935:137;;:::i;:::-;1076:19638;;;19943:8;1076:19638;;;;;;;;;;;20110:33;1076:19638;;;887:5:33;:::i;:::-;1076:19638:23;20215:17;;844::30;887:5:33;;:::i;:::-;1076:19638:23;20251:21;;19745:534;:::o;1076:19638::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;947:128:33:-;;1048:5;947:128;1048:5;:::i;:::-;1785:14:30;;;;;;;;;;1047:21:33;1048:15;;;;:::i;1076:19638:23:-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;1076:19638:23;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;756:331:34:-;1076:19638:23;;912:52:34;;;;;;;1076:19638:23;;;;912:52:34;;;1076:19638:23;;;;;;;;;912:52:34;;;975:105;;-1:-1:-1;;;;892:73:34;-1:-1:-1;;1076:19638:23;912:52:34;1076:19638:23;;912:52:34;:::i;:::-;892:73;1076:19638:23;;892:73:34;;;;:::i;:::-;983:69;;;756:331;1076:19638:23;;;;;;;:::i;:::-;;;;;912:52:34;1076:19638:23;;;975:105:34;:::i;:::-;756:331::o;983:69::-;1076:19638:23;;995:22:34;;;-1:-1:-1;995:56:34;;;;983:69;;;;;;995:56;1021:30;;;912:52;1021:30;;;;;;;;:::i;:::-;995:56;;;;1093:364;-1:-1:-1;1093:364:34;;;;;1340:110;1093:364;1076:19638:23;;1267:62:34;;;;;;;;1076:19638:23;;;;;;1267:62:34;;;1076:19638:23;;;;;;;;;;;1267:62:34;;;;;:::i;:::-;1247:83;1076:19638:23;;1247:83:34;;;;:::i;:::-;1348:69;;;1093:364;1076:19638:23;;;;;;;:::i;:::-;;;;;1267:62:34;1076:19638:23;;;1340:110:34;:::i;1348:69::-;1076:19638:23;;1360:22:34;;;-1:-1:-1;1360:56:34;;;;1348:69;;;;;;1360:56;1386:30;;;1267:62;1386:30;;;;;;;;:::i;:::-;1360:56;;;;952:213:35;682:3;1645:14:30;;;;;;;865:1:35;1645:14:30;;;;;;;886:11:33;887:5;;;;:::i;1250:213:35:-;865:1;1645:14:30;;;1250:213:35;1645:14:30;-1:-1:-1;1645:14:30;;682:3:35;1645:14:30;;;;;;;886:11:33;887:5;;;;:::i;1546:209:35:-;;682:3;1645:14:30;;;;;;;865:1:35;1645:14:30;;;;;;;1673:75:35;;;:::i;1838:209::-;;;865:1;1645:14:30;;;;;;;682:3:35;1645:14:30;;;;;;;1965:75:35;;;:::i;826:169:36:-;1076:19638:23;;;;;;:::i;:::-;;;;;;;;;898:63:36;1076:19638:23;906:22:36;;;;;898:63;:::i;:::-;1076:19638:23;826:169:36;:::o",
"linkReferences": {},
"immutableReferences": {
"30107": [
{
"start": 6012,
"length": 32
},
{
"start": 9131,
"length": 32
}
]
}
},
"methodIdentifiers": {
"DOMAIN_SEPARATOR()": "3644e515",
"borrow((address,address,address,address,uint256),uint256,uint256,address,address)": "50d8cd4b",
"createMarket((address,address,address,address,uint256))": "8c1358a2",
"enableIrm(address)": "5a64f51e",
"enableLltv(uint256)": "4d98a93b",
"extSloads(bytes32[])": "7784c685",
"feeRecipient()": "46904840",
"flashLoan(address,uint256,bytes)": "e0232b42",
"idToMarketParams(bytes32)": "2c3c9157",
"isAuthorized(address,address)": "65e4ad9e",
"isIrmEnabled(address)": "f2b863ce",
"isLltvEnabled(uint256)": "b485f3b8",
"liquidate((address,address,address,address,uint256),address,uint256,uint256,bytes)": "d8eabcb8",
"market(bytes32)": "5c60e39a",
"nonce(address)": "70ae92d2",
"owner()": "8da5cb5b",
"position(bytes32,address)": "93c52062",
"repay((address,address,address,address,uint256),uint256,uint256,address,bytes)": "20b76e81",
"setAuthorization(address,bool)": "eecea000",
"setAuthorizationWithSig((address,address,bool,uint256,uint256),(uint8,bytes32,bytes32))": "8069218f",
"setFee((address,address,address,address,uint256),uint256)": "2b4f013c",
"setFeeRecipient(address)": "e74b981b",
"setOwner(address)": "13af4035",
"supply((address,address,address,address,uint256),uint256,uint256,address,bytes)": "a99aad89",
"supplyCollateral((address,address,address,address,uint256),uint256,address,bytes)": "238d6579",
"withdraw((address,address,address,address,uint256),uint256,uint256,address,address)": "5c2bea49",
"withdrawCollateral((address,address,address,address,uint256),uint256,address,address)": "8720316d"
},
"rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"borrowableToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"collateralToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"irm\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lltv\",\"type\":\"uint256\"}],\"internalType\":\"struct MarketParams\",\"name\":\"marketParams\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalf\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"borrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"borrowableToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"collateralToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"irm\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lltv\",\"type\":\"uint256\"}],\"internalType\":\"struct MarketParams\",\"name\":\"marketParams\",\"type\":\"tuple\"}],\"name\":\"createMarket\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"irm\",\"type\":\"address\"}],\"name\":\"enableIrm\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"lltv\",\"type\":\"uint256\"}],\"name\":\"enableLltv\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"slots\",\"type\":\"bytes32[]\"}],\"name\":\"extSloads\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"res\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Id\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"idToMarketParams\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"borrowableToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"collateralToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"irm\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lltv\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isAuthorized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isIrmEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"isLltvEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"borrowableToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"collateralToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"irm\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lltv\",\"type\":\"uint256\"}],\"internalType\":\"struct MarketParams\",\"name\":\"marketParams\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"seizedAssets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"repaidShares\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"liquidate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Id\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"market\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"totalSupplyAssets\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"totalSupplyShares\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"totalBorrowAssets\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"totalBorrowShares\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"lastUpdate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"fee\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Id\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"position\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"supplyShares\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"borrowShares\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"collateral\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"borrowableToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"collateralToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"irm\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lltv\",\"type\":\"uint256\"}],\"internalType\":\"struct MarketParams\",\"name\":\"marketParams\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalf\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"repay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"authorized\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"newIsAuthorized\",\"type\":\"bool\"}],\"name\":\"setAuthorization\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"authorizer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"authorized\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isAuthorized\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct Authorization\",\"name\":\"authorization\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct Signature\",\"name\":\"signature\",\"type\":\"tuple\"}],\"name\":\"setAuthorizationWithSig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"borrowableToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"collateralToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"irm\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lltv\",\"type\":\"uint256\"}],\"internalType\":\"struct MarketParams\",\"name\":\"marketParams\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"setFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newFeeRecipient\",\"type\":\"address\"}],\"name\":\"setFeeRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"borrowableToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"collateralToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"irm\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lltv\",\"type\":\"uint256\"}],\"internalType\":\"struct MarketParams\",\"name\":\"marketParams\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalf\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"supply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"borrowableToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"collateralToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"irm\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lltv\",\"type\":\"uint256\"}],\"internalType\":\"struct MarketParams\",\"name\":\"marketParams\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalf\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"supplyCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"borrowableToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"collateralToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"irm\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lltv\",\"type\":\"uint256\"}],\"internalType\":\"struct MarketParams\",\"name\":\"marketParams\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalf\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"borrowableToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"collateralToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"irm\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lltv\",\"type\":\"uint256\"}],\"internalType\":\"struct MarketParams\",\"name\":\"marketParams\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalf\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"withdrawCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Morpho Labs\",\"custom:contact\":\"security@morpho.xyz\",\"kind\":\"dev\",\"methods\":{\"borrow((address,address,address,address,uint256),uint256,uint256,address,address)\":{\"details\":\"Either `assets` or `shares` should be zero. Most usecases should rely on `assets` as an input so the caller is guaranteed to borrow `assets` of tokens, but the possibility to mint a specific amount of shares is given for full compatibility and precision.`msg.sender` must be authorized to manage `onBehalf`'s positions.Borrowing a large amount can revert for overflow.\",\"params\":{\"assets\":\"The amount of assets to borrow.\",\"marketParams\":\"The market to borrow assets from.\",\"onBehalf\":\"The address that will own the increased borrow position.\",\"receiver\":\"The address that will receive the borrowed assets.\",\"shares\":\"The amount of shares to mint.\"},\"returns\":{\"_0\":\"The amount of assets borrowed.\",\"_1\":\"The amount of shares minted.\"}},\"constructor\":{\"params\":{\"newOwner\":\"The new owner of the contract.\"}},\"createMarket((address,address,address,address,uint256))\":{\"details\":\"Here is the list of assumptions on the market's dependencies (tokens, IRM and oracle) that guarantees Morpho behaves as expected: - The token should be ERC-20 compliant, except that it can omit return values on `transfer` and `transferFrom`. - The token balance of Morpho should only decrease on `transfer` and `transferFrom`. In particular, tokens with burn functions are not supported. - The token should not re-enter Morpho on `transfer` nor `transferFrom`. - The token balance of the sender (resp. receiver) should decrease (resp. increase) by exactly the given amount on `transfer` and `transferFrom`. In particular, tokens with fees on transfer are not supported. - The IRM should not re-enter Morpho.Here is a list of properties on the market's dependencies that could break Morpho's liveness properties: - The token can revert on `transfer` and `transferFrom` for a reason other than an approval or balance issue. - A very high amount of assets (~1e35) supplied or borrowed can make the computation of `toSharesUp` and `toSharesDown` overflow. - The IRM can revert on `borrowRate`. - A very high borrow rate returned by the IRM can make the computation of `interest` in `_accrueInterest` overflow. - The oracle can revert on `price`. Note that this can be used to prevent `borrow`, `withdrawCollateral` and `liquidate` from being used under certain market conditions. - A very high price returned by the oracle can make the computation of `maxBorrow` in `_isHealthy` overflow, or the computation of `assetsRepaid` in `liquidate` overflow.\"},\"enableIrm(address)\":{\"details\":\"Warning: It is not possible to disable an IRM.\"},\"enableLltv(uint256)\":{\"details\":\"Warning: It is not possible to disable a LLTV.\"},\"flashLoan(address,uint256,bytes)\":{\"details\":\"Flash loans have access to the whole balance of the contract (the liquidity and deposited collateral of all markets combined, plus donations).\",\"params\":{\"assets\":\"The amount of assets to flash loan.\",\"data\":\"Arbitrary data to pass to the `onMorphoFlashLoan` callback.\",\"token\":\"The token to flash loan.\"}},\"liquidate((address,address,address,address,uint256),address,uint256,uint256,bytes)\":{\"details\":\"Either `seizedAssets` or `repaidShares` should be zero.Seizing more than the collateral balance will underflow and revert without any error message.Repaying more than the borrow balance will underflow and revert without any error message.\",\"params\":{\"borrower\":\"The owner of the position.\",\"data\":\"Arbitrary data to pass to the `onMorphoLiquidate` callback. Pass empty data if not needed.\",\"marketParams\":\"The market of the position.\",\"repaidShares\":\"The amount of shares to repay.\",\"seizedAssets\":\"The amount of collateral to seize.\"},\"returns\":{\"_0\":\"The amount of assets seized.\",\"_1\":\"The amount of assets repaid.\"}},\"repay((address,address,address,address,uint256),uint256,uint256,address,bytes)\":{\"details\":\"Either `assets` or `shares` should be zero. To repay max, pass the `shares`'s balance of `onBehalf`.Repaying an amount corresponding to more shares than borrowed will revert for underflow.\",\"params\":{\"assets\":\"The amount of assets to repay.\",\"data\":\"Arbitrary data to pass to the `onMorphoRepay` callback. Pass empty data if not needed.\",\"marketParams\":\"The market to repay assets to.\",\"onBehalf\":\"The address of the owner of the debt position.\",\"shares\":\"The amount of shares to burn.\"},\"returns\":{\"_0\":\"The amount of assets repaid.\",\"_1\":\"The amount of shares burned.\"}},\"setAuthorization(address,bool)\":{\"params\":{\"authorized\":\"The authorized address.\",\"newIsAuthorized\":\"The new authorization status.\"}},\"setAuthorizationWithSig((address,address,bool,uint256,uint256),(uint8,bytes32,bytes32))\":{\"details\":\"Warning: Reverts if the signature has already been submitted.The signature is malleable, but it has no impact on the security here.The nonce is passed as argument to be able to revert with a different error message.\",\"params\":{\"authorization\":\"The `Authorization` struct.\",\"signature\":\"The signature.\"}},\"setFee((address,address,address,address,uint256),uint256)\":{\"details\":\"Warning: The recipient can be the zero address.\"},\"setFeeRecipient(address)\":{\"details\":\"Warning: The fee recipient can be set to the zero address.Warning: The fee to be accrued on each market won't belong to the old fee recipient after calling this function.\"},\"setOwner(address)\":{\"details\":\"Warning: No two-step transfer ownership.Warning: The owner can be set to the zero address.\"},\"supply((address,address,address,address,uint256),uint256,uint256,address,bytes)\":{\"details\":\"Either `assets` or `shares` should be zero. Most usecases should rely on `assets` as an input so the caller is guaranteed to have `assets` tokens pulled from their balance, but the possibility to mint a specific amount of shares is given for full compatibility and precision.Supplying a large amount can revert for overflow.\",\"params\":{\"assets\":\"The amount of assets to supply.\",\"data\":\"Arbitrary data to pass to the `onMorphoSupply` callback. Pass empty data if not needed.\",\"marketParams\":\"The market to supply assets to.\",\"onBehalf\":\"The address that will own the increased supply position.\",\"shares\":\"The amount of shares to mint.\"},\"returns\":{\"_0\":\"The amount of assets supplied.\",\"_1\":\"The amount of shares minted.\"}},\"supplyCollateral((address,address,address,address,uint256),uint256,address,bytes)\":{\"details\":\"Interest are not accrued since it's not required and it saves gas.Supplying a large amount can revert for overflow.\",\"params\":{\"assets\":\"The amount of collateral to supply.\",\"data\":\"Arbitrary data to pass to the `onMorphoSupplyCollateral` callback. Pass empty data if not needed.\",\"marketParams\":\"The market to supply collateral to.\",\"onBehalf\":\"The address that will own the increased collateral position.\"}},\"withdraw((address,address,address,address,uint256),uint256,uint256,address,address)\":{\"details\":\"Either `assets` or `shares` should be zero. To withdraw max, pass the `shares`'s balance of `onBehalf`.`msg.sender` must be authorized to manage `onBehalf`'s positions.Withdrawing an amount corresponding to more shares than supplied will revert for underflow.\",\"params\":{\"assets\":\"The amount of assets to withdraw.\",\"marketParams\":\"The market to withdraw assets from.\",\"onBehalf\":\"The address of the owner of the supply position.\",\"receiver\":\"The address that will receive the withdrawn assets.\",\"shares\":\"The amount of shares to burn.\"},\"returns\":{\"_0\":\"The amount of assets withdrawn.\",\"_1\":\"The amount of shares burned.\"}},\"withdrawCollateral((address,address,address,address,uint256),uint256,address,address)\":{\"details\":\"`msg.sender` must be authorized to manage `onBehalf`'s positions.Withdrawing an amount corresponding to more collateral than supplied will revert for underflow.\",\"params\":{\"assets\":\"The amount of collateral to withdraw.\",\"marketParams\":\"The market to withdraw collateral from.\",\"onBehalf\":\"The address of the owner of the collateral position.\",\"receiver\":\"The address that will receive the collateral assets.\"}}},\"stateVariables\":{\"feeRecipient\":{\"details\":\"The recipient receives the fees of a given market through a supply position on that market.\"},\"idToMarketParams\":{\"details\":\"This mapping is not used in Morpho. It is there to enable reducing the cost associated to calldata on layer 2s by creating a wrapper contract with functions that take `id` as input instead of `marketParams`.\"},\"isAuthorized\":{\"details\":\"Anyone is authorized to modify their own positions, regardless of this variable.\"},\"owner\":{\"details\":\"It has the power to change the owner.It has the power to set fees on markets and set the fee recipient.It has the power to enable but not disable IRMs and LLTVs.\"}},\"title\":\"Morpho\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"notice\":\"The EIP-712 domain separator.\"},\"borrow((address,address,address,address,uint256),uint256,uint256,address,address)\":{\"notice\":\"Borrows `assets` or `shares` on behalf of `onBehalf` to `receiver`.\"},\"constructor\":{\"notice\":\"Initializes the contract.\"},\"createMarket((address,address,address,address,uint256))\":{\"notice\":\"Creates the market `marketParams`.\"},\"enableIrm(address)\":{\"notice\":\"Enables `irm` as a possible IRM for market creation.\"},\"enableLltv(uint256)\":{\"notice\":\"Enables `lltv` as a possible LLTV for market creation.\"},\"extSloads(bytes32[])\":{\"notice\":\"Returns the data stored on the different `slots`.\"},\"feeRecipient()\":{\"notice\":\"The fee recipient of all markets.\"},\"flashLoan(address,uint256,bytes)\":{\"notice\":\"Executes a flash loan.\"},\"idToMarketParams(bytes32)\":{\"notice\":\"The market params corresponding to `id`.\"},\"isAuthorized(address,address)\":{\"notice\":\"Whether `authorized` is authorized to modify `authorizer`'s positions.\"},\"isIrmEnabled(address)\":{\"notice\":\"Whether the `irm` is enabled.\"},\"isLltvEnabled(uint256)\":{\"notice\":\"Whether the `lltv` is enabled.\"},\"liquidate((address,address,address,address,uint256),address,uint256,uint256,bytes)\":{\"notice\":\"Liquidates the given `repaidShares` of debt asset or seize the given `seizedAssets` of collateral on the given market `marketParams` of the given `borrower`'s position, optionally calling back the caller's `onMorphoLiquidate` function with the given `data`.\"},\"market(bytes32)\":{\"notice\":\"The state of the market corresponding to `id`.\"},\"nonce(address)\":{\"notice\":\"The `authorizer`'s current nonce. Used to prevent replay attacks with EIP-712 signatures.\"},\"owner()\":{\"notice\":\"The owner of the contract.\"},\"position(bytes32,address)\":{\"notice\":\"The state of the position of `user` on the market corresponding to `id`.\"},\"repay((address,address,address,address,uint256),uint256,uint256,address,bytes)\":{\"notice\":\"Repays `assets` or `shares` on behalf of `onBehalf`, optionally calling back the caller's `onMorphoReplay` function with the given `data`.\"},\"setAuthorization(address,bool)\":{\"notice\":\"Sets the authorization for `authorized` to manage `msg.sender`'s positions.\"},\"setAuthorizationWithSig((address,address,bool,uint256,uint256),(uint8,bytes32,bytes32))\":{\"notice\":\"Sets the authorization for `authorization.authorized` to manage `authorization.authorizer`'s positions.\"},\"setFee((address,address,address,address,uint256),uint256)\":{\"notice\":\"Sets the `newFee` for the given market `marketParams`.\"},\"setFeeRecipient(address)\":{\"notice\":\"Sets `newFeeRecipient` as recipient of the fee.\"},\"setOwner(address)\":{\"notice\":\"Sets `newOwner` as owner of the contract.\"},\"supply((address,address,address,address,uint256),uint256,uint256,address,bytes)\":{\"notice\":\"Supplies `assets` or `shares` on behalf of `onBehalf`, optionally calling back the caller's `onMorphoSupply` function with the given `data`.\"},\"supplyCollateral((address,address,address,address,uint256),uint256,address,bytes)\":{\"notice\":\"Supplies `assets` of collateral on behalf of `onBehalf`, optionally calling back the caller's `onMorphoSupplyCollateral` function with the given `data`.\"},\"withdraw((address,address,address,address,uint256),uint256,uint256,address,address)\":{\"notice\":\"Withdraws `assets` or `shares` on behalf of `onBehalf` to `receiver`.\"},\"withdrawCollateral((address,address,address,address,uint256),uint256,address,address)\":{\"notice\":\"Withdraws `assets` of collateral on behalf of `onBehalf` to `receiver`.\"}},\"notice\":\"The Morpho contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Morpho.sol\":\"Morpho\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":eth-gas-reporter/=node_modules/eth-gas-reporter/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"src/Morpho.sol\":{\"keccak256\":\"0x6df7aca60c2893658a3e40152fc917527b8c1fba860ae67a62b023ca13f06e54\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3d37ec38f9554c393e125b7fb0578510f2cdd3ce06a8ea7d5788cbb9bbe43341\",\"dweb:/ipfs/QmTq4GtEFQNQPTEJ4wHZR7viV2MiUZLPTEQwMaAiTnvDCz\"]},\"src/interfaces/IERC20.sol\":{\"keccak256\":\"0x0c7c2b3fa79ea7c74c251b0584d34a8a2802614eeffcc6f9d9822909f2813b7e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://911b686245f8039bfd4ec5ff3130f03b8b18f05f52782d9a8c64a487ba727a70\",\"dweb:/ipfs/QmRFw3FPzfTsPBmjHT6uv1DhsXfj1zbnvwRxQT5YKkjFQa\"]},\"src/interfaces/IIrm.sol\":{\"keccak256\":\"0xddaeaeea11e94d7c93b8d09f7daa3d63bf81bdae0275706e2ab17772985aef49\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://94aff1d90af4e24400261371b37eb13c45998307e9b3dc92542abfa68331626f\",\"dweb:/ipfs/QmXms3rqe7sQBExbYgA7e75AxUUnEn37E8BSTGYtpc8nQc\"]},\"src/interfaces/IMorpho.sol\":{\"keccak256\":\"0x1f6581a03d25d416df170b83c9d52e7015d503bc9721794482fba57746b53b5e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ac308e5e321bfad283b2a3b446a2fcb9e8471f598057854db4d5178edfcf0d06\",\"dweb:/ipfs/QmUHCJZkWsTGb6XAXm9F16DNxLXXEH8M67W44HhAv15GDx\"]},\"src/interfaces/IMorphoCallbacks.sol\":{\"keccak256\":\"0x7258d6dc3a32fccb9b05206f7643fcbb6992e29f4d6df9b7f4815147d9c7aafd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://46da02be43c0f396033c447af774c2a06781686afb3df9d4c697ec02ae39aec6\",\"dweb:/ipfs/QmWzstqJRHxajiAguSr7zHQHhz37YaFQ22pxXD7LfomRx5\"]},\"src/interfaces/IOracle.sol\":{\"keccak256\":\"0xd682c688f9d19ae6e7c7a023b85bd28c902e79a258472250595a561c86a88480\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f1be6c749a6f30c1f39006db1c1721633f90cd917e7216d81ff9fcfb218d67ab\",\"dweb:/ipfs/QmPD9HR7cXZ1Wi15ysSChdUBiLnJWiP5W6HAiqZ29gKPac\"]},\"src/libraries/ConstantsLib.sol\":{\"keccak256\":\"0x34f33fef6867defa982f42d0d543ec23d62a17580ba628dd109ad3a547e58637\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d5447f6ea5b7d83d5be7eab207d2a448caa82ce8b202090008b2fadcf87a8bfd\",\"dweb:/ipfs/Qme7ZvdhCmMrHA12AqDW5FCLwhdt5Z1c1HQ5pEkgi89YwQ\"]},\"src/libraries/ErrorsLib.sol\":{\"keccak256\":\"0xa75548857261e9edf937b0540fb6a508b9e479c8d89730b490bdf42acfcb22ca\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://130ab3751e643049ac148e6c44fd2b3b4bd4060870a1bce6e59b85769ac8bc6b\",\"dweb:/ipfs/QmRDpo55KajizDqVwfF1JsdFZmfPkMGRciXEUWt7q4aGkB\"]},\"src/libraries/EventsLib.sol\":{\"keccak256\":\"0xe337b0499820a64353386a6089c426f3985346f67035ca777e610c4e2b98c85d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://51cfa605b159273f1ecebbae6dc605a6e2c0acf70f7f39f662391fa92283b2f0\",\"dweb:/ipfs/QmZGxxfv7mVBqdH7Cs6RYiZ25YUv8zykgX5zj4hBsyabGB\"]},\"src/libraries/MarketParamsLib.sol\":{\"keccak256\":\"0x816c3f61b2d2f2cf7b3ad071b496318b463f56c9dcd01bdca3727a80ee43662a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f50a724cc23d540d56cf95fcf673502bd9c1a5d435b89951ab9c286311022a80\",\"dweb:/ipfs/QmcJiLXw7BJGcYzCdpVajhDo6esHvu5fziaXje4ufX3G28\"]},\"src/libraries/MathLib.sol\":{\"keccak256\":\"0x1f86f8b6eea4487fbbfc206ecbbf904ddfce880f937d621d985e4e9487d8fddb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2f0020f26376b9015df50c1fc32ddf0a6a68601945213c34234cae3990ce33f8\",\"dweb:/ipfs/QmZcpP2wPeWmovaUNGvXQL6bkxtPzk5G5o356oNGJAEEZA\"]},\"src/libraries/SafeTransferLib.sol\":{\"keccak256\":\"0x6010465ff0fdc28a1ae5665eda31cf14302653e047c70c175673c59c5833c366\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ab3b2e1d652c987a2443d0bfffd870fc58f242cdb0eda8977d234f994d184bbe\",\"dweb:/ipfs/QmX51ivMGh9rMsz9sjR62C932Q2XuarTn5jXDcqzn48XAX\"]},\"src/libraries/SharesMathLib.sol\":{\"keccak256\":\"0x7fb38b7dfb06ca008e94f1bd53ca7353114b28d1131c7bc95d53bbc847c24d4f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://29ad2985e0cbb34c69971fd1f4faa61a589ca97aa6ddb98cb986433b9c8bf5e9\",\"dweb:/ipfs/QmdJddyCDgsL7fVNxfYbAsvpbX8uVP3w2tMmiPEi3ubTRY\"]},\"src/libraries/UtilsLib.sol\":{\"keccak256\":\"0x9069de1da6dd0f83993b82e91e1d35e81da89934b76a1fa405665f9a969e1fe9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bcc0f2b20e92e329bf63230aff690fe5c8fc462da242999d63116024afc6b96f\",\"dweb:/ipfs/QmVrJggfaYsQnByCiN1WbHCsyTjn5KEYkyTzFRxJ2p1pU3\"]}},\"version\":1}",
"metadata": {
"compiler": {
"version": "0.8.19+commit.7dd6d404"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "DOMAIN_SEPARATOR",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
]
},
{
"inputs": [
{
"internalType": "struct MarketParams",
"name": "marketParams",
"type": "tuple",
"components": [
{
"internalType": "address",
"name": "borrowableToken",
"type": "address"
},
{
"internalType": "address",
"name": "collateralToken",
"type": "address"
},
{
"internalType": "address",
"name": "oracle",
"type": "address"
},
{
"internalType": "address",
"name": "irm",
"type": "address"
},
{
"internalType": "uint256",
"name": "lltv",
"type": "uint256"
}
]
},
{
"internalType": "uint256",
"name": "assets",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "shares",
"type": "uint256"
},
{
"internalType": "address",
"name": "onBehalf",
"type": "address"
},
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "borrow",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [
{
"internalType": "struct MarketParams",
"name": "marketParams",
"type": "tuple",
"components": [
{
"internalType": "address",
"name": "borrowableToken",
"type": "address"
},
{
"internalType": "address",
"name": "collateralToken",
"type": "address"
},
{
"internalType": "address",
"name": "oracle",
"type": "address"
},
{
"internalType": "address",
"name": "irm",
"type": "address"
},
{
"internalType": "uint256",
"name": "lltv",
"type": "uint256"
}
]
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "createMarket"
},
{
"inputs": [
{
"internalType": "address",
"name": "irm",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "enableIrm"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "lltv",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "enableLltv"
},
{
"inputs": [
{
"internalType": "bytes32[]",
"name": "slots",
"type": "bytes32[]"
}
],
"stateMutability": "view",
"type": "function",
"name": "extSloads",
"outputs": [
{
"internalType": "bytes32[]",
"name": "res",
"type": "bytes32[]"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "feeRecipient",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "assets",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "flashLoan"
},
{
"inputs": [
{
"internalType": "Id",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function",
"name": "idToMarketParams",
"outputs": [
{
"internalType": "address",
"name": "borrowableToken",
"type": "address"
},
{
"internalType": "address",
"name": "collateralToken",
"type": "address"
},
{
"internalType": "address",
"name": "oracle",
"type": "address"
},
{
"internalType": "address",
"name": "irm",
"type": "address"
},
{
"internalType": "uint256",
"name": "lltv",
"type": "uint256"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"name": "isAuthorized",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"name": "isIrmEnabled",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
]
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"name": "isLltvEnabled",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
]
},
{
"inputs": [
{
"internalType": "struct MarketParams",
"name": "marketParams",
"type": "tuple",
"components": [
{
"internalType": "address",
"name": "borrowableToken",
"type": "address"
},
{
"internalType": "address",
"name": "collateralToken",
"type": "address"
},
{
"internalType": "address",
"name": "oracle",
"type": "address"
},
{
"internalType": "address",
"name": "irm",
"type": "address"
},
{
"internalType": "uint256",
"name": "lltv",
"type": "uint256"
}
]
},
{
"internalType": "address",
"name": "borrower",
"type": "address"
},
{
"internalType": "uint256",
"name": "seizedAssets",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "repaidShares",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "liquidate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [
{
"internalType": "Id",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function",
"name": "market",
"outputs": [
{
"internalType": "uint128",
"name": "totalSupplyAssets",
"type": "uint128"
},
{
"internalType": "uint128",
"name": "totalSupplyShares",
"type": "uint128"
},
{
"internalType": "uint128",
"name": "totalBorrowAssets",
"type": "uint128"
},
{
"internalType": "uint128",
"name": "totalBorrowShares",
"type": "uint128"
},
{
"internalType": "uint128",
"name": "lastUpdate",
"type": "uint128"
},
{
"internalType": "uint128",
"name": "fee",
"type": "uint128"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"name": "nonce",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
]
},
{
"inputs": [
{
"internalType": "Id",
"name": "",
"type": "bytes32"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"name": "position",
"outputs": [
{
"internalType": "uint256",
"name": "supplyShares",
"type": "uint256"
},
{
"internalType": "uint128",
"name": "borrowShares",
"type": "uint128"
},
{
"internalType": "uint128",
"name": "collateral",
"type": "uint128"
}
]
},
{
"inputs": [
{
"internalType": "struct MarketParams",
"name": "marketParams",
"type": "tuple",
"components": [
{
"internalType": "address",
"name": "borrowableToken",
"type": "address"
},
{
"internalType": "address",
"name": "collateralToken",
"type": "address"
},
{
"internalType": "address",
"name": "oracle",
"type": "address"
},
{
"internalType": "address",
"name": "irm",
"type": "address"
},
{
"internalType": "uint256",
"name": "lltv",
"type": "uint256"
}
]
},
{
"internalType": "uint256",
"name": "assets",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "shares",
"type": "uint256"
},
{
"internalType": "address",
"name": "onBehalf",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "repay",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "authorized",
"type": "address"
},
{
"internalType": "bool",
"name": "newIsAuthorized",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "setAuthorization"
},
{
"inputs": [
{
"internalType": "struct Authorization",
"name": "authorization",
"type": "tuple",
"components": [
{
"internalType": "address",
"name": "authorizer",
"type": "address"
},
{
"internalType": "address",
"name": "authorized",
"type": "address"
},
{
"internalType": "bool",
"name": "isAuthorized",
"type": "bool"
},
{
"internalType": "uint256",
"name": "nonce",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
}
]
},
{
"internalType": "struct Signature",
"name": "signature",
"type": "tuple",
"components": [
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
]
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "setAuthorizationWithSig"
},
{
"inputs": [
{
"internalType": "struct MarketParams",
"name": "marketParams",
"type": "tuple",
"components": [
{
"internalType": "address",
"name": "borrowableToken",
"type": "address"
},
{
"internalType": "address",
"name": "collateralToken",
"type": "address"
},
{
"internalType": "address",
"name": "oracle",
"type": "address"
},
{
"internalType": "address",
"name": "irm",
"type": "address"
},
{
"internalType": "uint256",
"name": "lltv",
"type": "uint256"
}
]
},
{
"internalType": "uint256",
"name": "newFee",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "setFee"
},
{
"inputs": [
{
"internalType": "address",
"name": "newFeeRecipient",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "setFeeRecipient"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "setOwner"
},
{
"inputs": [
{
"internalType": "struct MarketParams",
"name": "marketParams",
"type": "tuple",
"components": [
{
"internalType": "address",
"name": "borrowableToken",
"type": "address"
},
{
"internalType": "address",
"name": "collateralToken",
"type": "address"
},
{
"internalType": "address",
"name": "oracle",
"type": "address"
},
{
"internalType": "address",
"name": "irm",
"type": "address"
},
{
"internalType": "uint256",
"name": "lltv",
"type": "uint256"
}
]
},
{
"internalType": "uint256",
"name": "assets",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "shares",
"type": "uint256"
},
{
"internalType": "address",
"name": "onBehalf",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "supply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [
{
"internalType": "struct MarketParams",
"name": "marketParams",
"type": "tuple",
"components": [
{
"internalType": "address",
"name": "borrowableToken",
"type": "address"
},
{
"internalType": "address",
"name": "collateralToken",
"type": "address"
},
{
"internalType": "address",
"name": "oracle",
"type": "address"
},
{
"internalType": "address",
"name": "irm",
"type": "address"
},
{
"internalType": "uint256",
"name": "lltv",
"type": "uint256"
}
]
},
{
"internalType": "uint256",
"name": "assets",
"type": "uint256"
},
{
"internalType": "address",
"name": "onBehalf",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "supplyCollateral"
},
{
"inputs": [
{
"internalType": "struct MarketParams",
"name": "marketParams",
"type": "tuple",
"components": [
{
"internalType": "address",
"name": "borrowableToken",
"type": "address"
},
{
"internalType": "address",
"name": "collateralToken",
"type": "address"
},
{
"internalType": "address",
"name": "oracle",
"type": "address"
},
{
"internalType": "address",
"name": "irm",
"type": "address"
},
{
"internalType": "uint256",
"name": "lltv",
"type": "uint256"
}
]
},
{
"internalType": "uint256",
"name": "assets",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "shares",
"type": "uint256"
},
{
"internalType": "address",
"name": "onBehalf",
"type": "address"
},
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "withdraw",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [
{
"internalType": "struct MarketParams",
"name": "marketParams",
"type": "tuple",
"components": [
{
"internalType": "address",
"name": "borrowableToken",
"type": "address"
},
{
"internalType": "address",
"name": "collateralToken",
"type": "address"
},
{
"internalType": "address",
"name": "oracle",
"type": "address"
},
{
"internalType": "address",
"name": "irm",
"type": "address"
},
{
"internalType": "uint256",
"name": "lltv",
"type": "uint256"
}
]
},
{
"internalType": "uint256",
"name": "assets",
"type": "uint256"
},
{
"internalType": "address",
"name": "onBehalf",
"type": "address"
},
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "withdrawCollateral"
}
],
"devdoc": {
"kind": "dev",
"methods": {
"borrow((address,address,address,address,uint256),uint256,uint256,address,address)": {
"details": "Either `assets` or `shares` should be zero. Most usecases should rely on `assets` as an input so the caller is guaranteed to borrow `assets` of tokens, but the possibility to mint a specific amount of shares is given for full compatibility and precision.`msg.sender` must be authorized to manage `onBehalf`'s positions.Borrowing a large amount can revert for overflow.",
"params": {
"assets": "The amount of assets to borrow.",
"marketParams": "The market to borrow assets from.",
"onBehalf": "The address that will own the increased borrow position.",
"receiver": "The address that will receive the borrowed assets.",
"shares": "The amount of shares to mint."
},
"returns": {
"_0": "The amount of assets borrowed.",
"_1": "The amount of shares minted."
}
},
"constructor": {
"params": {
"newOwner": "The new owner of the contract."
}
},
"createMarket((address,address,address,address,uint256))": {
"details": "Here is the list of assumptions on the market's dependencies (tokens, IRM and oracle) that guarantees Morpho behaves as expected: - The token should be ERC-20 compliant, except that it can omit return values on `transfer` and `transferFrom`. - The token balance of Morpho should only decrease on `transfer` and `transferFrom`. In particular, tokens with burn functions are not supported. - The token should not re-enter Morpho on `transfer` nor `transferFrom`. - The token balance of the sender (resp. receiver) should decrease (resp. increase) by exactly the given amount on `transfer` and `transferFrom`. In particular, tokens with fees on transfer are not supported. - The IRM should not re-enter Morpho.Here is a list of properties on the market's dependencies that could break Morpho's liveness properties: - The token can revert on `transfer` and `transferFrom` for a reason other than an approval or balance issue. - A very high amount of assets (~1e35) supplied or borrowed can make the computation of `toSharesUp` and `toSharesDown` overflow. - The IRM can revert on `borrowRate`. - A very high borrow rate returned by the IRM can make the computation of `interest` in `_accrueInterest` overflow. - The oracle can revert on `price`. Note that this can be used to prevent `borrow`, `withdrawCollateral` and `liquidate` from being used under certain market conditions. - A very high price returned by the oracle can make the computation of `maxBorrow` in `_isHealthy` overflow, or the computation of `assetsRepaid` in `liquidate` overflow."
},
"enableIrm(address)": {
"details": "Warning: It is not possible to disable an IRM."
},
"enableLltv(uint256)": {
"details": "Warning: It is not possible to disable a LLTV."
},
"flashLoan(address,uint256,bytes)": {
"details": "Flash loans have access to the whole balance of the contract (the liquidity and deposited collateral of all markets combined, plus donations).",
"params": {
"assets": "The amount of assets to flash loan.",
"data": "Arbitrary data to pass to the `onMorphoFlashLoan` callback.",
"token": "The token to flash loan."
}
},
"liquidate((address,address,address,address,uint256),address,uint256,uint256,bytes)": {
"details": "Either `seizedAssets` or `repaidShares` should be zero.Seizing more than the collateral balance will underflow and revert without any error message.Repaying more than the borrow balance will underflow and revert without any error message.",
"params": {
"borrower": "The owner of the position.",
"data": "Arbitrary data to pass to the `onMorphoLiquidate` callback. Pass empty data if not needed.",
"marketParams": "The market of the position.",
"repaidShares": "The amount of shares to repay.",
"seizedAssets": "The amount of collateral to seize."
},
"returns": {
"_0": "The amount of assets seized.",
"_1": "The amount of assets repaid."
}
},
"repay((address,address,address,address,uint256),uint256,uint256,address,bytes)": {
"details": "Either `assets` or `shares` should be zero. To repay max, pass the `shares`'s balance of `onBehalf`.Repaying an amount corresponding to more shares than borrowed will revert for underflow.",
"params": {
"assets": "The amount of assets to repay.",
"data": "Arbitrary data to pass to the `onMorphoRepay` callback. Pass empty data if not needed.",
"marketParams": "The market to repay assets to.",
"onBehalf": "The address of the owner of the debt position.",
"shares": "The amount of shares to burn."
},
"returns": {
"_0": "The amount of assets repaid.",
"_1": "The amount of shares burned."
}
},
"setAuthorization(address,bool)": {
"params": {
"authorized": "The authorized address.",
"newIsAuthorized": "The new authorization status."
}
},
"setAuthorizationWithSig((address,address,bool,uint256,uint256),(uint8,bytes32,bytes32))": {
"details": "Warning: Reverts if the signature has already been submitted.The signature is malleable, but it has no impact on the security here.The nonce is passed as argument to be able to revert with a different error message.",
"params": {
"authorization": "The `Authorization` struct.",
"signature": "The signature."
}
},
"setFee((address,address,address,address,uint256),uint256)": {
"details": "Warning: The recipient can be the zero address."
},
"setFeeRecipient(address)": {
"details": "Warning: The fee recipient can be set to the zero address.Warning: The fee to be accrued on each market won't belong to the old fee recipient after calling this function."
},
"setOwner(address)": {
"details": "Warning: No two-step transfer ownership.Warning: The owner can be set to the zero address."
},
"supply((address,address,address,address,uint256),uint256,uint256,address,bytes)": {
"details": "Either `assets` or `shares` should be zero. Most usecases should rely on `assets` as an input so the caller is guaranteed to have `assets` tokens pulled from their balance, but the possibility to mint a specific amount of shares is given for full compatibility and precision.Supplying a large amount can revert for overflow.",
"params": {
"assets": "The amount of assets to supply.",
"data": "Arbitrary data to pass to the `onMorphoSupply` callback. Pass empty data if not needed.",
"marketParams": "The market to supply assets to.",
"onBehalf": "The address that will own the increased supply position.",
"shares": "The amount of shares to mint."
},
"returns": {
"_0": "The amount of assets supplied.",
"_1": "The amount of shares minted."
}
},
"supplyCollateral((address,address,address,address,uint256),uint256,address,bytes)": {
"details": "Interest are not accrued since it's not required and it saves gas.Supplying a large amount can revert for overflow.",
"params": {
"assets": "The amount of collateral to supply.",
"data": "Arbitrary data to pass to the `onMorphoSupplyCollateral` callback. Pass empty data if not needed.",
"marketParams": "The market to supply collateral to.",
"onBehalf": "The address that will own the increased collateral position."
}
},
"withdraw((address,address,address,address,uint256),uint256,uint256,address,address)": {
"details": "Either `assets` or `shares` should be zero. To withdraw max, pass the `shares`'s balance of `onBehalf`.`msg.sender` must be authorized to manage `onBehalf`'s positions.Withdrawing an amount corresponding to more shares than supplied will revert for underflow.",
"params": {
"assets": "The amount of assets to withdraw.",
"marketParams": "The market to withdraw assets from.",
"onBehalf": "The address of the owner of the supply position.",
"receiver": "The address that will receive the withdrawn assets.",
"shares": "The amount of shares to burn."
},
"returns": {
"_0": "The amount of assets withdrawn.",
"_1": "The amount of shares burned."
}
},
"withdrawCollateral((address,address,address,address,uint256),uint256,address,address)": {
"details": "`msg.sender` must be authorized to manage `onBehalf`'s positions.Withdrawing an amount corresponding to more collateral than supplied will revert for underflow.",
"params": {
"assets": "The amount of collateral to withdraw.",
"marketParams": "The market to withdraw collateral from.",
"onBehalf": "The address of the owner of the collateral position.",
"receiver": "The address that will receive the collateral assets."
}
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {
"DOMAIN_SEPARATOR()": {
"notice": "The EIP-712 domain separator."
},
"borrow((address,address,address,address,uint256),uint256,uint256,address,address)": {
"notice": "Borrows `assets` or `shares` on behalf of `onBehalf` to `receiver`."
},
"constructor": {
"notice": "Initializes the contract."
},
"createMarket((address,address,address,address,uint256))": {
"notice": "Creates the market `marketParams`."
},
"enableIrm(address)": {
"notice": "Enables `irm` as a possible IRM for market creation."
},
"enableLltv(uint256)": {
"notice": "Enables `lltv` as a possible LLTV for market creation."
},
"extSloads(bytes32[])": {
"notice": "Returns the data stored on the different `slots`."
},
"feeRecipient()": {
"notice": "The fee recipient of all markets."
},
"flashLoan(address,uint256,bytes)": {
"notice": "Executes a flash loan."
},
"idToMarketParams(bytes32)": {
"notice": "The market params corresponding to `id`."
},
"isAuthorized(address,address)": {
"notice": "Whether `authorized` is authorized to modify `authorizer`'s positions."
},
"isIrmEnabled(address)": {
"notice": "Whether the `irm` is enabled."
},
"isLltvEnabled(uint256)": {
"notice": "Whether the `lltv` is enabled."
},
"liquidate((address,address,address,address,uint256),address,uint256,uint256,bytes)": {
"notice": "Liquidates the given `repaidShares` of debt asset or seize the given `seizedAssets` of collateral on the given market `marketParams` of the given `borrower`'s position, optionally calling back the caller's `onMorphoLiquidate` function with the given `data`."
},
"market(bytes32)": {
"notice": "The state of the market corresponding to `id`."
},
"nonce(address)": {
"notice": "The `authorizer`'s current nonce. Used to prevent replay attacks with EIP-712 signatures."
},
"owner()": {
"notice": "The owner of the contract."
},
"position(bytes32,address)": {
"notice": "The state of the position of `user` on the market corresponding to `id`."
},
"repay((address,address,address,address,uint256),uint256,uint256,address,bytes)": {
"notice": "Repays `assets` or `shares` on behalf of `onBehalf`, optionally calling back the caller's `onMorphoReplay` function with the given `data`."
},
"setAuthorization(address,bool)": {
"notice": "Sets the authorization for `authorized` to manage `msg.sender`'s positions."
},
"setAuthorizationWithSig((address,address,bool,uint256,uint256),(uint8,bytes32,bytes32))": {
"notice": "Sets the authorization for `authorization.authorized` to manage `authorization.authorizer`'s positions."
},
"setFee((address,address,address,address,uint256),uint256)": {
"notice": "Sets the `newFee` for the given market `marketParams`."
},
"setFeeRecipient(address)": {
"notice": "Sets `newFeeRecipient` as recipient of the fee."
},
"setOwner(address)": {
"notice": "Sets `newOwner` as owner of the contract."
},
"supply((address,address,address,address,uint256),uint256,uint256,address,bytes)": {
"notice": "Supplies `assets` or `shares` on behalf of `onBehalf`, optionally calling back the caller's `onMorphoSupply` function with the given `data`."
},
"supplyCollateral((address,address,address,address,uint256),uint256,address,bytes)": {
"notice": "Supplies `assets` of collateral on behalf of `onBehalf`, optionally calling back the caller's `onMorphoSupplyCollateral` function with the given `data`."
},
"withdraw((address,address,address,address,uint256),uint256,uint256,address,address)": {
"notice": "Withdraws `assets` or `shares` on behalf of `onBehalf` to `receiver`."
},
"withdrawCollateral((address,address,address,address,uint256),uint256,address,address)": {
"notice": "Withdraws `assets` of collateral on behalf of `onBehalf` to `receiver`."
}
},
"version": 1
}
},
"settings": {
"remappings": [
"ds-test/=lib/forge-std/lib/ds-test/src/",
"erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
"eth-gas-reporter/=node_modules/eth-gas-reporter/",
"forge-std/=lib/forge-std/src/",
"hardhat/=node_modules/hardhat/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/",
"openzeppelin/=lib/openzeppelin-contracts/contracts/",
"solmate/=lib/solmate/src/"
],
"optimizer": {
"enabled": true,
"runs": 4294967295
},
"metadata": {
"bytecodeHash": "ipfs"
},
"compilationTarget": {
"src/Morpho.sol": "Morpho"
},
"libraries": {},
"viaIR": true
},
"sources": {
"src/Morpho.sol": {
"keccak256": "0x6df7aca60c2893658a3e40152fc917527b8c1fba860ae67a62b023ca13f06e54",
"urls": [
"bzz-raw://3d37ec38f9554c393e125b7fb0578510f2cdd3ce06a8ea7d5788cbb9bbe43341",
"dweb:/ipfs/QmTq4GtEFQNQPTEJ4wHZR7viV2MiUZLPTEQwMaAiTnvDCz"
],
"license": "BUSL-1.1"
},
"src/interfaces/IERC20.sol": {
"keccak256": "0x0c7c2b3fa79ea7c74c251b0584d34a8a2802614eeffcc6f9d9822909f2813b7e",
"urls": [
"bzz-raw://911b686245f8039bfd4ec5ff3130f03b8b18f05f52782d9a8c64a487ba727a70",
"dweb:/ipfs/QmRFw3FPzfTsPBmjHT6uv1DhsXfj1zbnvwRxQT5YKkjFQa"
],
"license": "GPL-2.0-or-later"
},
"src/interfaces/IIrm.sol": {
"keccak256": "0xddaeaeea11e94d7c93b8d09f7daa3d63bf81bdae0275706e2ab17772985aef49",
"urls": [
"bzz-raw://94aff1d90af4e24400261371b37eb13c45998307e9b3dc92542abfa68331626f",
"dweb:/ipfs/QmXms3rqe7sQBExbYgA7e75AxUUnEn37E8BSTGYtpc8nQc"
],
"license": "GPL-2.0-or-later"
},
"src/interfaces/IMorpho.sol": {
"keccak256": "0x1f6581a03d25d416df170b83c9d52e7015d503bc9721794482fba57746b53b5e",
"urls": [
"bzz-raw://ac308e5e321bfad283b2a3b446a2fcb9e8471f598057854db4d5178edfcf0d06",
"dweb:/ipfs/QmUHCJZkWsTGb6XAXm9F16DNxLXXEH8M67W44HhAv15GDx"
],
"license": "GPL-2.0-or-later"
},
"src/interfaces/IMorphoCallbacks.sol": {
"keccak256": "0x7258d6dc3a32fccb9b05206f7643fcbb6992e29f4d6df9b7f4815147d9c7aafd",
"urls": [
"bzz-raw://46da02be43c0f396033c447af774c2a06781686afb3df9d4c697ec02ae39aec6",
"dweb:/ipfs/QmWzstqJRHxajiAguSr7zHQHhz37YaFQ22pxXD7LfomRx5"
],
"license": "GPL-2.0-or-later"
},
"src/interfaces/IOracle.sol": {
"keccak256": "0xd682c688f9d19ae6e7c7a023b85bd28c902e79a258472250595a561c86a88480",
"urls": [
"bzz-raw://f1be6c749a6f30c1f39006db1c1721633f90cd917e7216d81ff9fcfb218d67ab",
"dweb:/ipfs/QmPD9HR7cXZ1Wi15ysSChdUBiLnJWiP5W6HAiqZ29gKPac"
],
"license": "GPL-2.0-or-later"
},
"src/libraries/ConstantsLib.sol": {
"keccak256": "0x34f33fef6867defa982f42d0d543ec23d62a17580ba628dd109ad3a547e58637",
"urls": [
"bzz-raw://d5447f6ea5b7d83d5be7eab207d2a448caa82ce8b202090008b2fadcf87a8bfd",
"dweb:/ipfs/Qme7ZvdhCmMrHA12AqDW5FCLwhdt5Z1c1HQ5pEkgi89YwQ"
],
"license": "GPL-2.0-or-later"
},
"src/libraries/ErrorsLib.sol": {
"keccak256": "0xa75548857261e9edf937b0540fb6a508b9e479c8d89730b490bdf42acfcb22ca",
"urls": [
"bzz-raw://130ab3751e643049ac148e6c44fd2b3b4bd4060870a1bce6e59b85769ac8bc6b",
"dweb:/ipfs/QmRDpo55KajizDqVwfF1JsdFZmfPkMGRciXEUWt7q4aGkB"
],
"license": "GPL-2.0-or-later"
},
"src/libraries/EventsLib.sol": {
"keccak256": "0xe337b0499820a64353386a6089c426f3985346f67035ca777e610c4e2b98c85d",
"urls": [
"bzz-raw://51cfa605b159273f1ecebbae6dc605a6e2c0acf70f7f39f662391fa92283b2f0",
"dweb:/ipfs/QmZGxxfv7mVBqdH7Cs6RYiZ25YUv8zykgX5zj4hBsyabGB"
],
"license": "GPL-2.0-or-later"
},
"src/libraries/MarketParamsLib.sol": {
"keccak256": "0x816c3f61b2d2f2cf7b3ad071b496318b463f56c9dcd01bdca3727a80ee43662a",
"urls": [
"bzz-raw://f50a724cc23d540d56cf95fcf673502bd9c1a5d435b89951ab9c286311022a80",
"dweb:/ipfs/QmcJiLXw7BJGcYzCdpVajhDo6esHvu5fziaXje4ufX3G28"
],
"license": "GPL-2.0-or-later"
},
"src/libraries/MathLib.sol": {
"keccak256": "0x1f86f8b6eea4487fbbfc206ecbbf904ddfce880f937d621d985e4e9487d8fddb",
"urls": [
"bzz-raw://2f0020f26376b9015df50c1fc32ddf0a6a68601945213c34234cae3990ce33f8",
"dweb:/ipfs/QmZcpP2wPeWmovaUNGvXQL6bkxtPzk5G5o356oNGJAEEZA"
],
"license": "GPL-2.0-or-later"
},
"src/libraries/SafeTransferLib.sol": {
"keccak256": "0x6010465ff0fdc28a1ae5665eda31cf14302653e047c70c175673c59c5833c366",
"urls": [
"bzz-raw://ab3b2e1d652c987a2443d0bfffd870fc58f242cdb0eda8977d234f994d184bbe",
"dweb:/ipfs/QmX51ivMGh9rMsz9sjR62C932Q2XuarTn5jXDcqzn48XAX"
],
"license": "GPL-2.0-or-later"
},
"src/libraries/SharesMathLib.sol": {
"keccak256": "0x7fb38b7dfb06ca008e94f1bd53ca7353114b28d1131c7bc95d53bbc847c24d4f",
"urls": [
"bzz-raw://29ad2985e0cbb34c69971fd1f4faa61a589ca97aa6ddb98cb986433b9c8bf5e9",
"dweb:/ipfs/QmdJddyCDgsL7fVNxfYbAsvpbX8uVP3w2tMmiPEi3ubTRY"
],
"license": "GPL-2.0-or-later"
},
"src/libraries/UtilsLib.sol": {
"keccak256": "0x9069de1da6dd0f83993b82e91e1d35e81da89934b76a1fa405665f9a969e1fe9",
"urls": [
"bzz-raw://bcc0f2b20e92e329bf63230aff690fe5c8fc462da242999d63116024afc6b96f",
"dweb:/ipfs/QmVrJggfaYsQnByCiN1WbHCsyTjn5KEYkyTzFRxJ2p1pU3"
],
"license": "GPL-2.0-or-later"
}
},
"version": 1
},
"ast": {
"absolutePath": "src/Morpho.sol",
"id": 32216,
"exportedSymbols": {
"AUTHORIZATION_TYPEHASH": [
32699
],
"Authorization": [
32296
],
"DOMAIN_TYPEHASH": [
32693
],
"ErrorsLib": [
32787
],
"EventsLib": [
32976
],
"IERC20": [
32219
],
"IIrm": [
32250
],
"IMorpho": [
32607
],
"IMorphoFlashLoanCallback": [
32659
],
"IMorphoLiquidateCallback": [
32619
],
"IMorphoRepayCallback": [
32629
],
"IMorphoSupplyCallback": [
32639
],
"IMorphoSupplyCollateralCallback": [
32649
],
"IOracle": [
32669
],
"Id": [
32254
],
"LIQUIDATION_CURSOR": [
32683
],
"MAX_FEE": [
32675
],
"MAX_LIQUIDATION_INCENTIVE_FACTOR": [
32687
],
"Market": [
32285
],
"MarketParams": [
32265
],
"MarketParamsLib": [
32995
],
"MathLib": [
33141
],
"Morpho": [
32215
],
"ORACLE_PRICE_SCALE": [
32679
],
"Position": [
32272
],
"SafeTransferLib": [
33273
],
"SharesMathLib": [
33382
],
"Signature": [
32303
],
"UtilsLib": [
33450
],
"WAD": [
33000
]
},
"nodeType": "SourceUnit",
"src": "37:20678:23",
"nodes": [
{
"id": 30045,
"nodeType": "PragmaDirective",
"src": "37:23:23",
"nodes": [],
"literals": [
"solidity",
"0.8",
".19"
]
},
{
"id": 30053,
"nodeType": "ImportDirective",
"src": "62:111:23",
"nodes": [],
"absolutePath": "src/interfaces/IMorpho.sol",
"file": "./interfaces/IMorpho.sol",
"nameLocation": "-1:-1:-1",
"scope": 32216,
"sourceUnit": 32608,
"symbolAliases": [
{
"foreign": {
"id": 30046,
"name": "Id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32254,
"src": "70:2:23",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
},
{
"foreign": {
"id": 30047,
"name": "IMorpho",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32607,
"src": "74:7:23",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
},
{
"foreign": {
"id": 30048,
"name": "MarketParams",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32265,
"src": "83:12:23",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
},
{
"foreign": {
"id": 30049,
"name": "Position",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32272,
"src": "97:8:23",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
},
{
"foreign": {
"id": 30050,
"name": "Market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32285,
"src": "107:6:23",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
},
{
"foreign": {
"id": 30051,
"name": "Authorization",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32296,
"src": "115:13:23",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
},
{
"foreign": {
"id": 30052,
"name": "Signature",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32303,
"src": "130:9:23",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 30059,
"nodeType": "ImportDirective",
"src": "174:201:23",
"nodes": [],
"absolutePath": "src/interfaces/IMorphoCallbacks.sol",
"file": "./interfaces/IMorphoCallbacks.sol",
"nameLocation": "-1:-1:-1",
"scope": 32216,
"sourceUnit": 32660,
"symbolAliases": [
{
"foreign": {
"id": 30054,
"name": "IMorphoLiquidateCallback",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32619,
"src": "187:24:23",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
},
{
"foreign": {
"id": 30055,
"name": "IMorphoRepayCallback",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32629,
"src": "217:20:23",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
},
{
"foreign": {
"id": 30056,
"name": "IMorphoSupplyCallback",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32639,
"src": "243:21:23",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
},
{
"foreign": {
"id": 30057,
"name": "IMorphoSupplyCollateralCallback",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32649,
"src": "270:31:23",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
},
{
"foreign": {
"id": 30058,
"name": "IMorphoFlashLoanCallback",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32659,
"src": "307:24:23",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 30061,
"nodeType": "ImportDirective",
"src": "376:43:23",
"nodes": [],
"absolutePath": "src/interfaces/IIrm.sol",
"file": "./interfaces/IIrm.sol",
"nameLocation": "-1:-1:-1",
"scope": 32216,
"sourceUnit": 32251,
"symbolAliases": [
{
"foreign": {
"id": 30060,
"name": "IIrm",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32250,
"src": "384:4:23",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 30063,
"nodeType": "ImportDirective",
"src": "420:47:23",
"nodes": [],
"absolutePath": "src/interfaces/IERC20.sol",
"file": "./interfaces/IERC20.sol",
"nameLocation": "-1:-1:-1",
"scope": 32216,
"sourceUnit": 32220,
"symbolAliases": [
{
"foreign": {
"id": 30062,
"name": "IERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32219,
"src": "428:6:23",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 30065,
"nodeType": "ImportDirective",
"src": "468:49:23",
"nodes": [],
"absolutePath": "src/interfaces/IOracle.sol",
"file": "./interfaces/IOracle.sol",
"nameLocation": "-1:-1:-1",
"scope": 32216,
"sourceUnit": 32670,
"symbolAliases": [
{
"foreign": {
"id": 30064,
"name": "IOracle",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32669,
"src": "476:7:23",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 30066,
"nodeType": "ImportDirective",
"src": "519:38:23",
"nodes": [],
"absolutePath": "src/libraries/ConstantsLib.sol",
"file": "./libraries/ConstantsLib.sol",
"nameLocation": "-1:-1:-1",
"scope": 32216,
"sourceUnit": 32700,
"symbolAliases": [],
"unitAlias": ""
},
{
"id": 30068,
"nodeType": "ImportDirective",
"src": "558:50:23",
"nodes": [],
"absolutePath": "src/libraries/UtilsLib.sol",
"file": "./libraries/UtilsLib.sol",
"nameLocation": "-1:-1:-1",
"scope": 32216,
"sourceUnit": 33451,
"symbolAliases": [
{
"foreign": {
"id": 30067,
"name": "UtilsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 33450,
"src": "566:8:23",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 30070,
"nodeType": "ImportDirective",
"src": "609:52:23",
"nodes": [],
"absolutePath": "src/libraries/EventsLib.sol",
"file": "./libraries/EventsLib.sol",
"nameLocation": "-1:-1:-1",
"scope": 32216,
"sourceUnit": 32977,
"symbolAliases": [
{
"foreign": {
"id": 30069,
"name": "EventsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32976,
"src": "617:9:23",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 30072,
"nodeType": "ImportDirective",
"src": "662:52:23",
"nodes": [],
"absolutePath": "src/libraries/ErrorsLib.sol",
"file": "./libraries/ErrorsLib.sol",
"nameLocation": "-1:-1:-1",
"scope": 32216,
"sourceUnit": 32788,
"symbolAliases": [
{
"foreign": {
"id": 30071,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "670:9:23",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 30075,
"nodeType": "ImportDirective",
"src": "715:53:23",
"nodes": [],
"absolutePath": "src/libraries/MathLib.sol",
"file": "./libraries/MathLib.sol",
"nameLocation": "-1:-1:-1",
"scope": 32216,
"sourceUnit": 33142,
"symbolAliases": [
{
"foreign": {
"id": 30073,
"name": "MathLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 33141,
"src": "723:7:23",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
},
{
"foreign": {
"id": 30074,
"name": "WAD",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 33000,
"src": "732:3:23",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 30077,
"nodeType": "ImportDirective",
"src": "769:60:23",
"nodes": [],
"absolutePath": "src/libraries/SharesMathLib.sol",
"file": "./libraries/SharesMathLib.sol",
"nameLocation": "-1:-1:-1",
"scope": 32216,
"sourceUnit": 33383,
"symbolAliases": [
{
"foreign": {
"id": 30076,
"name": "SharesMathLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 33382,
"src": "777:13:23",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 30079,
"nodeType": "ImportDirective",
"src": "830:64:23",
"nodes": [],
"absolutePath": "src/libraries/MarketParamsLib.sol",
"file": "./libraries/MarketParamsLib.sol",
"nameLocation": "-1:-1:-1",
"scope": 32216,
"sourceUnit": 32996,
"symbolAliases": [
{
"foreign": {
"id": 30078,
"name": "MarketParamsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32995,
"src": "838:15:23",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 30081,
"nodeType": "ImportDirective",
"src": "895:64:23",
"nodes": [],
"absolutePath": "src/libraries/SafeTransferLib.sol",
"file": "./libraries/SafeTransferLib.sol",
"nameLocation": "-1:-1:-1",
"scope": 32216,
"sourceUnit": 33274,
"symbolAliases": [
{
"foreign": {
"id": 30080,
"name": "SafeTransferLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 33273,
"src": "903:15:23",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 32215,
"nodeType": "ContractDefinition",
"src": "1076:19638:23",
"nodes": [
{
"id": 30087,
"nodeType": "UsingForDirective",
"src": "1109:26:23",
"nodes": [],
"global": false,
"libraryName": {
"id": 30085,
"name": "MathLib",
"nameLocations": [
"1115:7:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 33141,
"src": "1115:7:23"
},
"typeName": {
"id": 30086,
"name": "uint128",
"nodeType": "ElementaryTypeName",
"src": "1127:7:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
}
},
{
"id": 30090,
"nodeType": "UsingForDirective",
"src": "1140:26:23",
"nodes": [],
"global": false,
"libraryName": {
"id": 30088,
"name": "MathLib",
"nameLocations": [
"1146:7:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 33141,
"src": "1146:7:23"
},
"typeName": {
"id": 30089,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1158:7:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
{
"id": 30093,
"nodeType": "UsingForDirective",
"src": "1171:27:23",
"nodes": [],
"global": false,
"libraryName": {
"id": 30091,
"name": "UtilsLib",
"nameLocations": [
"1177:8:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 33450,
"src": "1177:8:23"
},
"typeName": {
"id": 30092,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1190:7:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
{
"id": 30096,
"nodeType": "UsingForDirective",
"src": "1203:32:23",
"nodes": [],
"global": false,
"libraryName": {
"id": 30094,
"name": "SharesMathLib",
"nameLocations": [
"1209:13:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 33382,
"src": "1209:13:23"
},
"typeName": {
"id": 30095,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1227:7:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
{
"id": 30100,
"nodeType": "UsingForDirective",
"src": "1240:33:23",
"nodes": [],
"global": false,
"libraryName": {
"id": 30097,
"name": "SafeTransferLib",
"nameLocations": [
"1246:15:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 33273,
"src": "1246:15:23"
},
"typeName": {
"id": 30099,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 30098,
"name": "IERC20",
"nameLocations": [
"1266:6:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 32219,
"src": "1266:6:23"
},
"referencedDeclaration": 32219,
"src": "1266:6:23",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$32219",
"typeString": "contract IERC20"
}
}
},
{
"id": 30104,
"nodeType": "UsingForDirective",
"src": "1278:39:23",
"nodes": [],
"global": false,
"libraryName": {
"id": 30101,
"name": "MarketParamsLib",
"nameLocations": [
"1284:15:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 32995,
"src": "1284:15:23"
},
"typeName": {
"id": 30103,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 30102,
"name": "MarketParams",
"nameLocations": [
"1304:12:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 32265,
"src": "1304:12:23"
},
"referencedDeclaration": 32265,
"src": "1304:12:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_storage_ptr",
"typeString": "struct MarketParams"
}
}
},
{
"id": 30107,
"nodeType": "VariableDeclaration",
"src": "1373:41:23",
"nodes": [],
"baseFunctions": [
32310
],
"constant": false,
"documentation": {
"id": 30105,
"nodeType": "StructuredDocumentation",
"src": "1345:23:23",
"text": "@inheritdoc IMorpho"
},
"functionSelector": "3644e515",
"mutability": "immutable",
"name": "DOMAIN_SEPARATOR",
"nameLocation": "1398:16:23",
"scope": 32215,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 30106,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1373:7:23",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"visibility": "public"
},
{
"id": 30110,
"nodeType": "VariableDeclaration",
"src": "1468:20:23",
"nodes": [],
"baseFunctions": [
32316
],
"constant": false,
"documentation": {
"id": 30108,
"nodeType": "StructuredDocumentation",
"src": "1440:23:23",
"text": "@inheritdoc IMorpho"
},
"functionSelector": "8da5cb5b",
"mutability": "mutable",
"name": "owner",
"nameLocation": "1483:5:23",
"scope": 32215,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 30109,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1468:7:23",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "public"
},
{
"id": 30113,
"nodeType": "VariableDeclaration",
"src": "1522:27:23",
"nodes": [],
"baseFunctions": [
32322
],
"constant": false,
"documentation": {
"id": 30111,
"nodeType": "StructuredDocumentation",
"src": "1494:23:23",
"text": "@inheritdoc IMorpho"
},
"functionSelector": "46904840",
"mutability": "mutable",
"name": "feeRecipient",
"nameLocation": "1537:12:23",
"scope": 32215,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 30112,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1522:7:23",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "public"
},
{
"id": 30122,
"nodeType": "VariableDeclaration",
"src": "1583:59:23",
"nodes": [],
"baseFunctions": [
32337
],
"constant": false,
"documentation": {
"id": 30114,
"nodeType": "StructuredDocumentation",
"src": "1555:23:23",
"text": "@inheritdoc IMorpho"
},
"functionSelector": "93c52062",
"mutability": "mutable",
"name": "position",
"nameLocation": "1634:8:23",
"scope": 32215,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_mapping$_t_address_$_t_struct$_Position_$32272_storage_$_$",
"typeString": "mapping(Id => mapping(address => struct Position))"
},
"typeName": {
"id": 30121,
"keyName": "",
"keyNameLocation": "-1:-1:-1",
"keyType": {
"id": 30116,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 30115,
"name": "Id",
"nameLocations": [
"1591:2:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 32254,
"src": "1591:2:23"
},
"referencedDeclaration": 32254,
"src": "1591:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"nodeType": "Mapping",
"src": "1583:43:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_mapping$_t_address_$_t_struct$_Position_$32272_storage_$_$",
"typeString": "mapping(Id => mapping(address => struct Position))"
},
"valueName": "",
"valueNameLocation": "-1:-1:-1",
"valueType": {
"id": 30120,
"keyName": "",
"keyNameLocation": "-1:-1:-1",
"keyType": {
"id": 30117,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1605:7:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "1597:28:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Position_$32272_storage_$",
"typeString": "mapping(address => struct Position)"
},
"valueName": "",
"valueNameLocation": "-1:-1:-1",
"valueType": {
"id": 30119,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 30118,
"name": "Position",
"nameLocations": [
"1616:8:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 32272,
"src": "1616:8:23"
},
"referencedDeclaration": 32272,
"src": "1616:8:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Position_$32272_storage_ptr",
"typeString": "struct Position"
}
}
}
},
"visibility": "public"
},
{
"id": 30129,
"nodeType": "VariableDeclaration",
"src": "1676:35:23",
"nodes": [],
"baseFunctions": [
32356
],
"constant": false,
"documentation": {
"id": 30123,
"nodeType": "StructuredDocumentation",
"src": "1648:23:23",
"text": "@inheritdoc IMorpho"
},
"functionSelector": "5c60e39a",
"mutability": "mutable",
"name": "market",
"nameLocation": "1705:6:23",
"scope": 32215,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market)"
},
"typeName": {
"id": 30128,
"keyName": "",
"keyNameLocation": "-1:-1:-1",
"keyType": {
"id": 30125,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 30124,
"name": "Id",
"nameLocations": [
"1684:2:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 32254,
"src": "1684:2:23"
},
"referencedDeclaration": 32254,
"src": "1684:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"nodeType": "Mapping",
"src": "1676:21:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market)"
},
"valueName": "",
"valueNameLocation": "-1:-1:-1",
"valueType": {
"id": 30127,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 30126,
"name": "Market",
"nameLocations": [
"1690:6:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 32285,
"src": "1690:6:23"
},
"referencedDeclaration": 32285,
"src": "1690:6:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage_ptr",
"typeString": "struct Market"
}
}
},
"visibility": "public"
},
{
"id": 30134,
"nodeType": "VariableDeclaration",
"src": "1745:44:23",
"nodes": [],
"baseFunctions": [
32364
],
"constant": false,
"documentation": {
"id": 30130,
"nodeType": "StructuredDocumentation",
"src": "1717:23:23",
"text": "@inheritdoc IMorpho"
},
"functionSelector": "f2b863ce",
"mutability": "mutable",
"name": "isIrmEnabled",
"nameLocation": "1777:12:23",
"scope": 32215,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"typeName": {
"id": 30133,
"keyName": "",
"keyNameLocation": "-1:-1:-1",
"keyType": {
"id": 30131,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1753:7:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "1745:24:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"valueName": "",
"valueNameLocation": "-1:-1:-1",
"valueType": {
"id": 30132,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "1764:4:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
},
"visibility": "public"
},
{
"id": 30139,
"nodeType": "VariableDeclaration",
"src": "1823:45:23",
"nodes": [],
"baseFunctions": [
32372
],
"constant": false,
"documentation": {
"id": 30135,
"nodeType": "StructuredDocumentation",
"src": "1795:23:23",
"text": "@inheritdoc IMorpho"
},
"functionSelector": "b485f3b8",
"mutability": "mutable",
"name": "isLltvEnabled",
"nameLocation": "1855:13:23",
"scope": 32215,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
"typeString": "mapping(uint256 => bool)"
},
"typeName": {
"id": 30138,
"keyName": "",
"keyNameLocation": "-1:-1:-1",
"keyType": {
"id": 30136,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1831:7:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Mapping",
"src": "1823:24:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
"typeString": "mapping(uint256 => bool)"
},
"valueName": "",
"valueNameLocation": "-1:-1:-1",
"valueType": {
"id": 30137,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "1842:4:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
},
"visibility": "public"
},
{
"id": 30146,
"nodeType": "VariableDeclaration",
"src": "1902:64:23",
"nodes": [],
"baseFunctions": [
32382
],
"constant": false,
"documentation": {
"id": 30140,
"nodeType": "StructuredDocumentation",
"src": "1874:23:23",
"text": "@inheritdoc IMorpho"
},
"functionSelector": "65e4ad9e",
"mutability": "mutable",
"name": "isAuthorized",
"nameLocation": "1954:12:23",
"scope": 32215,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(address => mapping(address => bool))"
},
"typeName": {
"id": 30145,
"keyName": "",
"keyNameLocation": "-1:-1:-1",
"keyType": {
"id": 30141,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1910:7:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "1902:44:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(address => mapping(address => bool))"
},
"valueName": "",
"valueNameLocation": "-1:-1:-1",
"valueType": {
"id": 30144,
"keyName": "",
"keyNameLocation": "-1:-1:-1",
"keyType": {
"id": 30142,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1929:7:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "1921:24:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"valueName": "",
"valueNameLocation": "-1:-1:-1",
"valueType": {
"id": 30143,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "1940:4:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
}
},
"visibility": "public"
},
{
"id": 30151,
"nodeType": "VariableDeclaration",
"src": "2000:40:23",
"nodes": [],
"baseFunctions": [
32390
],
"constant": false,
"documentation": {
"id": 30147,
"nodeType": "StructuredDocumentation",
"src": "1972:23:23",
"text": "@inheritdoc IMorpho"
},
"functionSelector": "70ae92d2",
"mutability": "mutable",
"name": "nonce",
"nameLocation": "2035:5:23",
"scope": 32215,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
},
"typeName": {
"id": 30150,
"keyName": "",
"keyNameLocation": "-1:-1:-1",
"keyType": {
"id": 30148,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2008:7:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "2000:27:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
},
"valueName": "",
"valueNameLocation": "-1:-1:-1",
"valueType": {
"id": 30149,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2019:7:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
"visibility": "public"
},
{
"id": 30158,
"nodeType": "VariableDeclaration",
"src": "2074:51:23",
"nodes": [],
"baseFunctions": [
32407
],
"constant": false,
"documentation": {
"id": 30152,
"nodeType": "StructuredDocumentation",
"src": "2046:23:23",
"text": "@inheritdoc IMorpho"
},
"functionSelector": "2c3c9157",
"mutability": "mutable",
"name": "idToMarketParams",
"nameLocation": "2109:16:23",
"scope": 32215,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_MarketParams_$32265_storage_$",
"typeString": "mapping(Id => struct MarketParams)"
},
"typeName": {
"id": 30157,
"keyName": "",
"keyNameLocation": "-1:-1:-1",
"keyType": {
"id": 30154,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 30153,
"name": "Id",
"nameLocations": [
"2082:2:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 32254,
"src": "2082:2:23"
},
"referencedDeclaration": 32254,
"src": "2082:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"nodeType": "Mapping",
"src": "2074:27:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_MarketParams_$32265_storage_$",
"typeString": "mapping(Id => struct MarketParams)"
},
"valueName": "",
"valueNameLocation": "-1:-1:-1",
"valueType": {
"id": 30156,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 30155,
"name": "MarketParams",
"nameLocations": [
"2088:12:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 32265,
"src": "2088:12:23"
},
"referencedDeclaration": 32265,
"src": "2088:12:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_storage_ptr",
"typeString": "struct MarketParams"
}
}
},
"visibility": "public"
},
{
"id": 30195,
"nodeType": "FunctionDefinition",
"src": "2252:226:23",
"nodes": [],
"body": {
"id": 30194,
"nodeType": "Block",
"src": "2282:196:23",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 30170,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 30165,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30161,
"src": "2300:8:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 30168,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2320:1:23",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 30167,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2312:7:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 30166,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2312:7:23",
"typeDescriptions": {}
}
},
"id": 30169,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2312:10:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2300:22:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 30171,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "2324:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 30172,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "2334:12:23",
"memberName": "ZERO_ADDRESS",
"nodeType": "MemberAccess",
"referencedDeclaration": 32746,
"src": "2324:22:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 30164,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2292:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 30173,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2292:55:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30174,
"nodeType": "ExpressionStatement",
"src": "2292:55:23"
},
{
"expression": {
"id": 30177,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 30175,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30110,
"src": "2358:5:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 30176,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30161,
"src": "2366:8:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2358:16:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 30178,
"nodeType": "ExpressionStatement",
"src": "2358:16:23"
},
{
"expression": {
"id": 30192,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 30179,
"name": "DOMAIN_SEPARATOR",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30107,
"src": "2384:16:23",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"arguments": [
{
"id": 30183,
"name": "DOMAIN_TYPEHASH",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32693,
"src": "2424:15:23",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"expression": {
"id": 30184,
"name": "block",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -4,
"src": "2441:5:23",
"typeDescriptions": {
"typeIdentifier": "t_magic_block",
"typeString": "block"
}
},
"id": 30185,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2447:7:23",
"memberName": "chainid",
"nodeType": "MemberAccess",
"src": "2441:13:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"arguments": [
{
"id": 30188,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -28,
"src": "2464:4:23",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Morpho_$32215",
"typeString": "contract Morpho"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_Morpho_$32215",
"typeString": "contract Morpho"
}
],
"id": 30187,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2456:7:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 30186,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2456:7:23",
"typeDescriptions": {}
}
},
"id": 30189,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2456:13:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 30181,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "2413:3:23",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 30182,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "2417:6:23",
"memberName": "encode",
"nodeType": "MemberAccess",
"src": "2413:10:23",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 30190,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2413:57:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 30180,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -8,
"src": "2403:9:23",
"typeDescriptions": {
"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (bytes memory) pure returns (bytes32)"
}
},
"id": 30191,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2403:68:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"src": "2384:87:23",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 30193,
"nodeType": "ExpressionStatement",
"src": "2384:87:23"
}
]
},
"documentation": {
"id": 30159,
"nodeType": "StructuredDocumentation",
"src": "2155:92:23",
"text": "@notice Initializes the contract.\n @param newOwner The new owner of the contract."
},
"implemented": true,
"kind": "constructor",
"modifiers": [],
"name": "",
"nameLocation": "-1:-1:-1",
"parameters": {
"id": 30162,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 30161,
"mutability": "mutable",
"name": "newOwner",
"nameLocation": "2272:8:23",
"nodeType": "VariableDeclaration",
"scope": 30195,
"src": "2264:16:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 30160,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2264:7:23",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "2263:18:23"
},
"returnParameters": {
"id": 30163,
"nodeType": "ParameterList",
"parameters": [],
"src": "2282:0:23"
},
"scope": 32215,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"id": 30209,
"nodeType": "ModifierDefinition",
"src": "2561:98:23",
"nodes": [],
"body": {
"id": 30208,
"nodeType": "Block",
"src": "2582:77:23",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 30202,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 30199,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "2600:3:23",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 30200,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2604:6:23",
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "2600:10:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"id": 30201,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30110,
"src": "2614:5:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2600:19:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 30203,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "2621:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 30204,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "2631:9:23",
"memberName": "NOT_OWNER",
"nodeType": "MemberAccess",
"referencedDeclaration": 32706,
"src": "2621:19:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 30198,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2592:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 30205,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2592:49:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30206,
"nodeType": "ExpressionStatement",
"src": "2592:49:23"
},
{
"id": 30207,
"nodeType": "PlaceholderStatement",
"src": "2651:1:23"
}
]
},
"documentation": {
"id": 30196,
"nodeType": "StructuredDocumentation",
"src": "2505:51:23",
"text": "@notice Reverts if the caller is not the owner."
},
"name": "onlyOwner",
"nameLocation": "2570:9:23",
"parameters": {
"id": 30197,
"nodeType": "ParameterList",
"parameters": [],
"src": "2579:2:23"
},
"virtual": false,
"visibility": "internal"
},
{
"id": 30236,
"nodeType": "FunctionDefinition",
"src": "2725:192:23",
"nodes": [],
"body": {
"id": 30235,
"nodeType": "Block",
"src": "2780:137:23",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 30220,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 30218,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30212,
"src": "2798:8:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"id": 30219,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30110,
"src": "2810:5:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2798:17:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 30221,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "2817:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 30222,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "2827:11:23",
"memberName": "ALREADY_SET",
"nodeType": "MemberAccess",
"referencedDeclaration": 32718,
"src": "2817:21:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 30217,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2790:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 30223,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2790:49:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30224,
"nodeType": "ExpressionStatement",
"src": "2790:49:23"
},
{
"expression": {
"id": 30227,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 30225,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30110,
"src": "2850:5:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 30226,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30212,
"src": "2858:8:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2850:16:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 30228,
"nodeType": "ExpressionStatement",
"src": "2850:16:23"
},
{
"eventCall": {
"arguments": [
{
"id": 30232,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30212,
"src": "2901:8:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 30229,
"name": "EventsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32976,
"src": "2882:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_EventsLib_$32976_$",
"typeString": "type(library EventsLib)"
}
},
"id": 30231,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2892:8:23",
"memberName": "SetOwner",
"nodeType": "MemberAccess",
"referencedDeclaration": 32798,
"src": "2882:18:23",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 30233,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2882:28:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30234,
"nodeType": "EmitStatement",
"src": "2877:33:23"
}
]
},
"baseFunctions": [
32413
],
"documentation": {
"id": 30210,
"nodeType": "StructuredDocumentation",
"src": "2697:23:23",
"text": "@inheritdoc IMorpho"
},
"functionSelector": "13af4035",
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 30215,
"kind": "modifierInvocation",
"modifierName": {
"id": 30214,
"name": "onlyOwner",
"nameLocations": [
"2770:9:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 30209,
"src": "2770:9:23"
},
"nodeType": "ModifierInvocation",
"src": "2770:9:23"
}
],
"name": "setOwner",
"nameLocation": "2734:8:23",
"parameters": {
"id": 30213,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 30212,
"mutability": "mutable",
"name": "newOwner",
"nameLocation": "2751:8:23",
"nodeType": "VariableDeclaration",
"scope": 30236,
"src": "2743:16:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 30211,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2743:7:23",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "2742:18:23"
},
"returnParameters": {
"id": 30216,
"nodeType": "ParameterList",
"parameters": [],
"src": "2780:0:23"
},
"scope": 32215,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 30269,
"nodeType": "FunctionDefinition",
"src": "2951:202:23",
"nodes": [],
"body": {
"id": 30268,
"nodeType": "Block",
"src": "3002:151:23",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"id": 30248,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "3020:18:23",
"subExpression": {
"baseExpression": {
"id": 30245,
"name": "isIrmEnabled",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30134,
"src": "3021:12:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 30247,
"indexExpression": {
"id": 30246,
"name": "irm",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30239,
"src": "3034:3:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3021:17:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 30249,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "3040:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 30250,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "3050:11:23",
"memberName": "ALREADY_SET",
"nodeType": "MemberAccess",
"referencedDeclaration": 32718,
"src": "3040:21:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 30244,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "3012:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 30251,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3012:50:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30252,
"nodeType": "ExpressionStatement",
"src": "3012:50:23"
},
{
"expression": {
"id": 30257,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 30253,
"name": "isIrmEnabled",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30134,
"src": "3073:12:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 30255,
"indexExpression": {
"id": 30254,
"name": "irm",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30239,
"src": "3086:3:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "3073:17:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"hexValue": "74727565",
"id": 30256,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3093:4:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "3073:24:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 30258,
"nodeType": "ExpressionStatement",
"src": "3073:24:23"
},
{
"eventCall": {
"arguments": [
{
"arguments": [
{
"id": 30264,
"name": "irm",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30239,
"src": "3141:3:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 30263,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3133:7:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 30262,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3133:7:23",
"typeDescriptions": {}
}
},
"id": 30265,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3133:12:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 30259,
"name": "EventsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32976,
"src": "3113:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_EventsLib_$32976_$",
"typeString": "type(library EventsLib)"
}
},
"id": 30261,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "3123:9:23",
"memberName": "EnableIrm",
"nodeType": "MemberAccess",
"referencedDeclaration": 32816,
"src": "3113:19:23",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 30266,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3113:33:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30267,
"nodeType": "EmitStatement",
"src": "3108:38:23"
}
]
},
"baseFunctions": [
32419
],
"documentation": {
"id": 30237,
"nodeType": "StructuredDocumentation",
"src": "2923:23:23",
"text": "@inheritdoc IMorpho"
},
"functionSelector": "5a64f51e",
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 30242,
"kind": "modifierInvocation",
"modifierName": {
"id": 30241,
"name": "onlyOwner",
"nameLocations": [
"2992:9:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 30209,
"src": "2992:9:23"
},
"nodeType": "ModifierInvocation",
"src": "2992:9:23"
}
],
"name": "enableIrm",
"nameLocation": "2960:9:23",
"parameters": {
"id": 30240,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 30239,
"mutability": "mutable",
"name": "irm",
"nameLocation": "2978:3:23",
"nodeType": "VariableDeclaration",
"scope": 30269,
"src": "2970:11:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 30238,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2970:7:23",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "2969:13:23"
},
"returnParameters": {
"id": 30243,
"nodeType": "ParameterList",
"parameters": [],
"src": "3002:0:23"
},
"scope": 32215,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 30307,
"nodeType": "FunctionDefinition",
"src": "3187:259:23",
"nodes": [],
"body": {
"id": 30306,
"nodeType": "Block",
"src": "3240:206:23",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"id": 30281,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "3258:20:23",
"subExpression": {
"baseExpression": {
"id": 30278,
"name": "isLltvEnabled",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30139,
"src": "3259:13:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
"typeString": "mapping(uint256 => bool)"
}
},
"id": 30280,
"indexExpression": {
"id": 30279,
"name": "lltv",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30272,
"src": "3273:4:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3259:19:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 30282,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "3280:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 30283,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "3290:11:23",
"memberName": "ALREADY_SET",
"nodeType": "MemberAccess",
"referencedDeclaration": 32718,
"src": "3280:21:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 30277,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "3250:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 30284,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3250:52:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30285,
"nodeType": "ExpressionStatement",
"src": "3250:52:23"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 30289,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 30287,
"name": "lltv",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30272,
"src": "3320:4:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"id": 30288,
"name": "WAD",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 33000,
"src": "3327:3:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3320:10:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 30290,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "3332:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 30291,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "3342:17:23",
"memberName": "MAX_LLTV_EXCEEDED",
"nodeType": "MemberAccess",
"referencedDeclaration": 32710,
"src": "3332:27:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 30286,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "3312:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 30292,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3312:48:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30293,
"nodeType": "ExpressionStatement",
"src": "3312:48:23"
},
{
"expression": {
"id": 30298,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 30294,
"name": "isLltvEnabled",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30139,
"src": "3371:13:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
"typeString": "mapping(uint256 => bool)"
}
},
"id": 30296,
"indexExpression": {
"id": 30295,
"name": "lltv",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30272,
"src": "3385:4:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "3371:19:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"hexValue": "74727565",
"id": 30297,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3393:4:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "3371:26:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 30299,
"nodeType": "ExpressionStatement",
"src": "3371:26:23"
},
{
"eventCall": {
"arguments": [
{
"id": 30303,
"name": "lltv",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30272,
"src": "3434:4:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 30300,
"name": "EventsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32976,
"src": "3413:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_EventsLib_$32976_$",
"typeString": "type(library EventsLib)"
}
},
"id": 30302,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "3423:10:23",
"memberName": "EnableLltv",
"nodeType": "MemberAccess",
"referencedDeclaration": 32821,
"src": "3413:20:23",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
"typeString": "function (uint256)"
}
},
"id": 30304,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3413:26:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30305,
"nodeType": "EmitStatement",
"src": "3408:31:23"
}
]
},
"baseFunctions": [
32425
],
"documentation": {
"id": 30270,
"nodeType": "StructuredDocumentation",
"src": "3159:23:23",
"text": "@inheritdoc IMorpho"
},
"functionSelector": "4d98a93b",
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 30275,
"kind": "modifierInvocation",
"modifierName": {
"id": 30274,
"name": "onlyOwner",
"nameLocations": [
"3230:9:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 30209,
"src": "3230:9:23"
},
"nodeType": "ModifierInvocation",
"src": "3230:9:23"
}
],
"name": "enableLltv",
"nameLocation": "3196:10:23",
"parameters": {
"id": 30273,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 30272,
"mutability": "mutable",
"name": "lltv",
"nameLocation": "3215:4:23",
"nodeType": "VariableDeclaration",
"scope": 30307,
"src": "3207:12:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 30271,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3207:7:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "3206:14:23"
},
"returnParameters": {
"id": 30276,
"nodeType": "ParameterList",
"parameters": [],
"src": "3240:0:23"
},
"scope": 32215,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 30378,
"nodeType": "FunctionDefinition",
"src": "3480:571:23",
"nodes": [],
"body": {
"id": 30377,
"nodeType": "Block",
"src": "3565:486:23",
"nodes": [],
"statements": [
{
"assignments": [
30320
],
"declarations": [
{
"constant": false,
"id": 30320,
"mutability": "mutable",
"name": "id",
"nameLocation": "3578:2:23",
"nodeType": "VariableDeclaration",
"scope": 30377,
"src": "3575:5:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
},
"typeName": {
"id": 30319,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 30318,
"name": "Id",
"nameLocations": [
"3575:2:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 32254,
"src": "3575:2:23"
},
"referencedDeclaration": 32254,
"src": "3575:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"visibility": "internal"
}
],
"id": 30324,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 30321,
"name": "marketParams",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30311,
"src": "3583:12:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams memory"
}
},
"id": 30322,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "3596:2:23",
"memberName": "id",
"nodeType": "MemberAccess",
"referencedDeclaration": 32994,
"src": "3583:15:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_struct$_MarketParams_$32265_memory_ptr_$returns$_t_userDefinedValueType$_Id_$32254_$attached_to$_t_struct$_MarketParams_$32265_memory_ptr_$",
"typeString": "function (struct MarketParams memory) pure returns (Id)"
}
},
"id": 30323,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3583:17:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3575:25:23"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
},
"id": 30331,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"baseExpression": {
"id": 30326,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "3618:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 30328,
"indexExpression": {
"id": 30327,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30320,
"src": "3625:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3618:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 30329,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "3629:10:23",
"memberName": "lastUpdate",
"nodeType": "MemberAccess",
"referencedDeclaration": 32282,
"src": "3618:21:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"hexValue": "30",
"id": 30330,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3643:1:23",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3618:26:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 30332,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "3646:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 30333,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "3656:18:23",
"memberName": "MARKET_NOT_CREATED",
"nodeType": "MemberAccess",
"referencedDeclaration": 32734,
"src": "3646:28:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 30325,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "3610:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 30334,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3610:65:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30335,
"nodeType": "ExpressionStatement",
"src": "3610:65:23"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 30342,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 30337,
"name": "newFee",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30313,
"src": "3693:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"expression": {
"baseExpression": {
"id": 30338,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "3703:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 30340,
"indexExpression": {
"id": 30339,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30320,
"src": "3710:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3703:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 30341,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "3714:3:23",
"memberName": "fee",
"nodeType": "MemberAccess",
"referencedDeclaration": 32284,
"src": "3703:14:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"src": "3693:24:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 30343,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "3719:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 30344,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "3729:11:23",
"memberName": "ALREADY_SET",
"nodeType": "MemberAccess",
"referencedDeclaration": 32718,
"src": "3719:21:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 30336,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "3685:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 30345,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3685:56:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30346,
"nodeType": "ExpressionStatement",
"src": "3685:56:23"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 30350,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 30348,
"name": "newFee",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30313,
"src": "3759:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"id": 30349,
"name": "MAX_FEE",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32675,
"src": "3769:7:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3759:17:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 30351,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "3778:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 30352,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "3788:16:23",
"memberName": "MAX_FEE_EXCEEDED",
"nodeType": "MemberAccess",
"referencedDeclaration": 32714,
"src": "3778:26:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 30347,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "3751:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 30353,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3751:54:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30354,
"nodeType": "ExpressionStatement",
"src": "3751:54:23"
},
{
"expression": {
"arguments": [
{
"id": 30356,
"name": "marketParams",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30311,
"src": "3906:12:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams memory"
}
},
{
"id": 30357,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30320,
"src": "3920:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams memory"
},
{
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
],
"id": 30355,
"name": "_accrueInterest",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32069,
"src": "3890:15:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_MarketParams_$32265_memory_ptr_$_t_userDefinedValueType$_Id_$32254_$returns$__$",
"typeString": "function (struct MarketParams memory,Id)"
}
},
"id": 30358,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3890:33:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30359,
"nodeType": "ExpressionStatement",
"src": "3890:33:23"
},
{
"expression": {
"id": 30368,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"expression": {
"baseExpression": {
"id": 30360,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "3968:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 30362,
"indexExpression": {
"id": 30361,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30320,
"src": "3975:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3968:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 30363,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberLocation": "3979:3:23",
"memberName": "fee",
"nodeType": "MemberAccess",
"referencedDeclaration": 32284,
"src": "3968:14:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 30366,
"name": "newFee",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30313,
"src": "3993:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 30365,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3985:7:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint128_$",
"typeString": "type(uint128)"
},
"typeName": {
"id": 30364,
"name": "uint128",
"nodeType": "ElementaryTypeName",
"src": "3985:7:23",
"typeDescriptions": {}
}
},
"id": 30367,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3985:15:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"src": "3968:32:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"id": 30369,
"nodeType": "ExpressionStatement",
"src": "3968:32:23"
},
{
"eventCall": {
"arguments": [
{
"id": 30373,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30320,
"src": "4033:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
{
"id": 30374,
"name": "newFee",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30313,
"src": "4037:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 30370,
"name": "EventsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32976,
"src": "4016:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_EventsLib_$32976_$",
"typeString": "type(library EventsLib)"
}
},
"id": 30372,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4026:6:23",
"memberName": "SetFee",
"nodeType": "MemberAccess",
"referencedDeclaration": 32806,
"src": "4016:16:23",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_userDefinedValueType$_Id_$32254_$_t_uint256_$returns$__$",
"typeString": "function (Id,uint256)"
}
},
"id": 30375,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4016:28:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30376,
"nodeType": "EmitStatement",
"src": "4011:33:23"
}
]
},
"baseFunctions": [
32434
],
"documentation": {
"id": 30308,
"nodeType": "StructuredDocumentation",
"src": "3452:23:23",
"text": "@inheritdoc IMorpho"
},
"functionSelector": "2b4f013c",
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 30316,
"kind": "modifierInvocation",
"modifierName": {
"id": 30315,
"name": "onlyOwner",
"nameLocations": [
"3555:9:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 30209,
"src": "3555:9:23"
},
"nodeType": "ModifierInvocation",
"src": "3555:9:23"
}
],
"name": "setFee",
"nameLocation": "3489:6:23",
"parameters": {
"id": 30314,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 30311,
"mutability": "mutable",
"name": "marketParams",
"nameLocation": "3516:12:23",
"nodeType": "VariableDeclaration",
"scope": 30378,
"src": "3496:32:23",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams"
},
"typeName": {
"id": 30310,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 30309,
"name": "MarketParams",
"nameLocations": [
"3496:12:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 32265,
"src": "3496:12:23"
},
"referencedDeclaration": 32265,
"src": "3496:12:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_storage_ptr",
"typeString": "struct MarketParams"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 30313,
"mutability": "mutable",
"name": "newFee",
"nameLocation": "3538:6:23",
"nodeType": "VariableDeclaration",
"scope": 30378,
"src": "3530:14:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 30312,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3530:7:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "3495:50:23"
},
"returnParameters": {
"id": 30317,
"nodeType": "ParameterList",
"parameters": [],
"src": "3565:0:23"
},
"scope": 32215,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 30405,
"nodeType": "FunctionDefinition",
"src": "4085:248:23",
"nodes": [],
"body": {
"id": 30404,
"nodeType": "Block",
"src": "4154:179:23",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 30389,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 30387,
"name": "newFeeRecipient",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30381,
"src": "4172:15:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"id": 30388,
"name": "feeRecipient",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30113,
"src": "4191:12:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "4172:31:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 30390,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "4205:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 30391,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "4215:11:23",
"memberName": "ALREADY_SET",
"nodeType": "MemberAccess",
"referencedDeclaration": 32718,
"src": "4205:21:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 30386,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "4164:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 30392,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4164:63:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30393,
"nodeType": "ExpressionStatement",
"src": "4164:63:23"
},
{
"expression": {
"id": 30396,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 30394,
"name": "feeRecipient",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30113,
"src": "4238:12:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 30395,
"name": "newFeeRecipient",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30381,
"src": "4253:15:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "4238:30:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 30397,
"nodeType": "ExpressionStatement",
"src": "4238:30:23"
},
{
"eventCall": {
"arguments": [
{
"id": 30401,
"name": "newFeeRecipient",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30381,
"src": "4310:15:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 30398,
"name": "EventsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32976,
"src": "4284:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_EventsLib_$32976_$",
"typeString": "type(library EventsLib)"
}
},
"id": 30400,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4294:15:23",
"memberName": "SetFeeRecipient",
"nodeType": "MemberAccess",
"referencedDeclaration": 32811,
"src": "4284:25:23",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 30402,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4284:42:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30403,
"nodeType": "EmitStatement",
"src": "4279:47:23"
}
]
},
"baseFunctions": [
32440
],
"documentation": {
"id": 30379,
"nodeType": "StructuredDocumentation",
"src": "4057:23:23",
"text": "@inheritdoc IMorpho"
},
"functionSelector": "e74b981b",
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 30384,
"kind": "modifierInvocation",
"modifierName": {
"id": 30383,
"name": "onlyOwner",
"nameLocations": [
"4144:9:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 30209,
"src": "4144:9:23"
},
"nodeType": "ModifierInvocation",
"src": "4144:9:23"
}
],
"name": "setFeeRecipient",
"nameLocation": "4094:15:23",
"parameters": {
"id": 30382,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 30381,
"mutability": "mutable",
"name": "newFeeRecipient",
"nameLocation": "4118:15:23",
"nodeType": "VariableDeclaration",
"scope": 30405,
"src": "4110:23:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 30380,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4110:7:23",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "4109:25:23"
},
"returnParameters": {
"id": 30385,
"nodeType": "ParameterList",
"parameters": [],
"src": "4154:0:23"
},
"scope": 32215,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 30473,
"nodeType": "FunctionDefinition",
"src": "4394:535:23",
"nodes": [],
"body": {
"id": 30472,
"nodeType": "Block",
"src": "4459:470:23",
"nodes": [],
"statements": [
{
"assignments": [
30414
],
"declarations": [
{
"constant": false,
"id": 30414,
"mutability": "mutable",
"name": "id",
"nameLocation": "4472:2:23",
"nodeType": "VariableDeclaration",
"scope": 30472,
"src": "4469:5:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
},
"typeName": {
"id": 30413,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 30412,
"name": "Id",
"nameLocations": [
"4469:2:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 32254,
"src": "4469:2:23"
},
"referencedDeclaration": 32254,
"src": "4469:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"visibility": "internal"
}
],
"id": 30418,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 30415,
"name": "marketParams",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30409,
"src": "4477:12:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams memory"
}
},
"id": 30416,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4490:2:23",
"memberName": "id",
"nodeType": "MemberAccess",
"referencedDeclaration": 32994,
"src": "4477:15:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_struct$_MarketParams_$32265_memory_ptr_$returns$_t_userDefinedValueType$_Id_$32254_$attached_to$_t_struct$_MarketParams_$32265_memory_ptr_$",
"typeString": "function (struct MarketParams memory) pure returns (Id)"
}
},
"id": 30417,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4477:17:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4469:25:23"
},
{
"expression": {
"arguments": [
{
"baseExpression": {
"id": 30420,
"name": "isIrmEnabled",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30134,
"src": "4512:12:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 30423,
"indexExpression": {
"expression": {
"id": 30421,
"name": "marketParams",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30409,
"src": "4525:12:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams memory"
}
},
"id": 30422,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4538:3:23",
"memberName": "irm",
"nodeType": "MemberAccess",
"referencedDeclaration": 32262,
"src": "4525:16:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4512:30:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 30424,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "4544:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 30425,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "4554:15:23",
"memberName": "IRM_NOT_ENABLED",
"nodeType": "MemberAccess",
"referencedDeclaration": 32722,
"src": "4544:25:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 30419,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "4504:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 30426,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4504:66:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30427,
"nodeType": "ExpressionStatement",
"src": "4504:66:23"
},
{
"expression": {
"arguments": [
{
"baseExpression": {
"id": 30429,
"name": "isLltvEnabled",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30139,
"src": "4588:13:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
"typeString": "mapping(uint256 => bool)"
}
},
"id": 30432,
"indexExpression": {
"expression": {
"id": 30430,
"name": "marketParams",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30409,
"src": "4602:12:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams memory"
}
},
"id": 30431,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4615:4:23",
"memberName": "lltv",
"nodeType": "MemberAccess",
"referencedDeclaration": 32264,
"src": "4602:17:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4588:32:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 30433,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "4622:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 30434,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "4632:16:23",
"memberName": "LLTV_NOT_ENABLED",
"nodeType": "MemberAccess",
"referencedDeclaration": 32726,
"src": "4622:26:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 30428,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "4580:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 30435,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4580:69:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30436,
"nodeType": "ExpressionStatement",
"src": "4580:69:23"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
},
"id": 30443,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"baseExpression": {
"id": 30438,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "4667:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 30440,
"indexExpression": {
"id": 30439,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30414,
"src": "4674:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4667:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 30441,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4678:10:23",
"memberName": "lastUpdate",
"nodeType": "MemberAccess",
"referencedDeclaration": 32282,
"src": "4667:21:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 30442,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4692:1:23",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "4667:26:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 30444,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "4695:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 30445,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "4705:22:23",
"memberName": "MARKET_ALREADY_CREATED",
"nodeType": "MemberAccess",
"referencedDeclaration": 32730,
"src": "4695:32:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 30437,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "4659:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 30446,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4659:69:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30447,
"nodeType": "ExpressionStatement",
"src": "4659:69:23"
},
{
"expression": {
"id": 30457,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"expression": {
"baseExpression": {
"id": 30448,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "4773:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 30450,
"indexExpression": {
"id": 30449,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30414,
"src": "4780:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4773:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 30451,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberLocation": "4784:10:23",
"memberName": "lastUpdate",
"nodeType": "MemberAccess",
"referencedDeclaration": 32282,
"src": "4773:21:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"expression": {
"id": 30454,
"name": "block",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -4,
"src": "4805:5:23",
"typeDescriptions": {
"typeIdentifier": "t_magic_block",
"typeString": "block"
}
},
"id": 30455,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4811:9:23",
"memberName": "timestamp",
"nodeType": "MemberAccess",
"src": "4805:15:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 30453,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "4797:7:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint128_$",
"typeString": "type(uint128)"
},
"typeName": {
"id": 30452,
"name": "uint128",
"nodeType": "ElementaryTypeName",
"src": "4797:7:23",
"typeDescriptions": {}
}
},
"id": 30456,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4797:24:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"src": "4773:48:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"id": 30458,
"nodeType": "ExpressionStatement",
"src": "4773:48:23"
},
{
"expression": {
"id": 30463,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 30459,
"name": "idToMarketParams",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30158,
"src": "4831:16:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_MarketParams_$32265_storage_$",
"typeString": "mapping(Id => struct MarketParams storage ref)"
}
},
"id": 30461,
"indexExpression": {
"id": 30460,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30414,
"src": "4848:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "4831:20:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_storage",
"typeString": "struct MarketParams storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 30462,
"name": "marketParams",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30409,
"src": "4854:12:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams memory"
}
},
"src": "4831:35:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_storage",
"typeString": "struct MarketParams storage ref"
}
},
"id": 30464,
"nodeType": "ExpressionStatement",
"src": "4831:35:23"
},
{
"eventCall": {
"arguments": [
{
"id": 30468,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30414,
"src": "4905:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
{
"id": 30469,
"name": "marketParams",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30409,
"src": "4909:12:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
},
{
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams memory"
}
],
"expression": {
"id": 30465,
"name": "EventsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32976,
"src": "4882:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_EventsLib_$32976_$",
"typeString": "type(library EventsLib)"
}
},
"id": 30467,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4892:12:23",
"memberName": "CreateMarket",
"nodeType": "MemberAccess",
"referencedDeclaration": 32830,
"src": "4882:22:23",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_userDefinedValueType$_Id_$32254_$_t_struct$_MarketParams_$32265_memory_ptr_$returns$__$",
"typeString": "function (Id,struct MarketParams memory)"
}
},
"id": 30470,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4882:40:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30471,
"nodeType": "EmitStatement",
"src": "4877:45:23"
}
]
},
"baseFunctions": [
32447
],
"documentation": {
"id": 30406,
"nodeType": "StructuredDocumentation",
"src": "4366:23:23",
"text": "@inheritdoc IMorpho"
},
"functionSelector": "8c1358a2",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "createMarket",
"nameLocation": "4403:12:23",
"parameters": {
"id": 30410,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 30409,
"mutability": "mutable",
"name": "marketParams",
"nameLocation": "4436:12:23",
"nodeType": "VariableDeclaration",
"scope": 30473,
"src": "4416:32:23",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams"
},
"typeName": {
"id": 30408,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 30407,
"name": "MarketParams",
"nameLocations": [
"4416:12:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 32265,
"src": "4416:12:23"
},
"referencedDeclaration": 32265,
"src": "4416:12:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_storage_ptr",
"typeString": "struct MarketParams"
}
},
"visibility": "internal"
}
],
"src": "4415:34:23"
},
"returnParameters": {
"id": 30411,
"nodeType": "ParameterList",
"parameters": [],
"src": "4459:0:23"
},
"scope": 32215,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 30639,
"nodeType": "FunctionDefinition",
"src": "4992:1210:23",
"nodes": [],
"body": {
"id": 30638,
"nodeType": "Block",
"src": "5195:1007:23",
"nodes": [],
"statements": [
{
"assignments": [
30494
],
"declarations": [
{
"constant": false,
"id": 30494,
"mutability": "mutable",
"name": "id",
"nameLocation": "5208:2:23",
"nodeType": "VariableDeclaration",
"scope": 30638,
"src": "5205:5:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
},
"typeName": {
"id": 30493,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 30492,
"name": "Id",
"nameLocations": [
"5205:2:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 32254,
"src": "5205:2:23"
},
"referencedDeclaration": 32254,
"src": "5205:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"visibility": "internal"
}
],
"id": 30498,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 30495,
"name": "marketParams",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30477,
"src": "5213:12:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams memory"
}
},
"id": 30496,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5226:2:23",
"memberName": "id",
"nodeType": "MemberAccess",
"referencedDeclaration": 32994,
"src": "5213:15:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_struct$_MarketParams_$32265_memory_ptr_$returns$_t_userDefinedValueType$_Id_$32254_$attached_to$_t_struct$_MarketParams_$32265_memory_ptr_$",
"typeString": "function (struct MarketParams memory) pure returns (Id)"
}
},
"id": 30497,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5213:17:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5205:25:23"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
},
"id": 30505,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"baseExpression": {
"id": 30500,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "5248:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 30502,
"indexExpression": {
"id": 30501,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30494,
"src": "5255:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5248:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 30503,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5259:10:23",
"memberName": "lastUpdate",
"nodeType": "MemberAccess",
"referencedDeclaration": 32282,
"src": "5248:21:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"hexValue": "30",
"id": 30504,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5273:1:23",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "5248:26:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 30506,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "5276:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 30507,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "5286:18:23",
"memberName": "MARKET_NOT_CREATED",
"nodeType": "MemberAccess",
"referencedDeclaration": 32734,
"src": "5276:28:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 30499,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "5240:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 30508,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5240:65:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30509,
"nodeType": "ExpressionStatement",
"src": "5240:65:23"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"id": 30513,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30479,
"src": "5347:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 30514,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30481,
"src": "5355:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 30511,
"name": "UtilsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 33450,
"src": "5323:8:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_UtilsLib_$33450_$",
"typeString": "type(library UtilsLib)"
}
},
"id": 30512,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5332:14:23",
"memberName": "exactlyOneZero",
"nodeType": "MemberAccess",
"referencedDeclaration": 33399,
"src": "5323:23:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (uint256,uint256) pure returns (bool)"
}
},
"id": 30515,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5323:39:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 30516,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "5364:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 30517,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "5374:18:23",
"memberName": "INCONSISTENT_INPUT",
"nodeType": "MemberAccess",
"referencedDeclaration": 32738,
"src": "5364:28:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 30510,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "5315:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 30518,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5315:78:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30519,
"nodeType": "ExpressionStatement",
"src": "5315:78:23"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 30526,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 30521,
"name": "onBehalf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30483,
"src": "5411:8:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 30524,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5431:1:23",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 30523,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "5423:7:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 30522,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5423:7:23",
"typeDescriptions": {}
}
},
"id": 30525,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5423:10:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "5411:22:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 30527,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "5435:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 30528,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "5445:12:23",
"memberName": "ZERO_ADDRESS",
"nodeType": "MemberAccess",
"referencedDeclaration": 32746,
"src": "5435:22:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 30520,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "5403:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 30529,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5403:55:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30530,
"nodeType": "ExpressionStatement",
"src": "5403:55:23"
},
{
"expression": {
"arguments": [
{
"id": 30532,
"name": "marketParams",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30477,
"src": "5485:12:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams memory"
}
},
{
"id": 30533,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30494,
"src": "5499:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams memory"
},
{
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
],
"id": 30531,
"name": "_accrueInterest",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32069,
"src": "5469:15:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_MarketParams_$32265_memory_ptr_$_t_userDefinedValueType$_Id_$32254_$returns$__$",
"typeString": "function (struct MarketParams memory,Id)"
}
},
"id": 30534,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5469:33:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30535,
"nodeType": "ExpressionStatement",
"src": "5469:33:23"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 30538,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 30536,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30479,
"src": "5517:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"hexValue": "30",
"id": 30537,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5526:1:23",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "5517:10:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"expression": {
"id": 30565,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 30553,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30479,
"src": "5632:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"expression": {
"baseExpression": {
"id": 30556,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "5659:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 30558,
"indexExpression": {
"id": 30557,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30494,
"src": "5666:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5659:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 30559,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5670:17:23",
"memberName": "totalSupplyAssets",
"nodeType": "MemberAccess",
"referencedDeclaration": 32274,
"src": "5659:28:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
{
"expression": {
"baseExpression": {
"id": 30560,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "5689:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 30562,
"indexExpression": {
"id": 30561,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30494,
"src": "5696:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5689:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 30563,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5700:17:23",
"memberName": "totalSupplyShares",
"nodeType": "MemberAccess",
"referencedDeclaration": 32276,
"src": "5689:28:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint128",
"typeString": "uint128"
},
{
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
],
"expression": {
"id": 30554,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30481,
"src": "5641:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 30555,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5648:10:23",
"memberName": "toAssetsUp",
"nodeType": "MemberAccess",
"referencedDeclaration": 33381,
"src": "5641:17:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$",
"typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
}
},
"id": 30564,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5641:77:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "5632:86:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 30566,
"nodeType": "ExpressionStatement",
"src": "5632:86:23"
},
"id": 30567,
"nodeType": "IfStatement",
"src": "5513:205:23",
"trueBody": {
"expression": {
"id": 30551,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 30539,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30481,
"src": "5529:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"expression": {
"baseExpression": {
"id": 30542,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "5558:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 30544,
"indexExpression": {
"id": 30543,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30494,
"src": "5565:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5558:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 30545,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5569:17:23",
"memberName": "totalSupplyAssets",
"nodeType": "MemberAccess",
"referencedDeclaration": 32274,
"src": "5558:28:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
{
"expression": {
"baseExpression": {
"id": 30546,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "5588:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 30548,
"indexExpression": {
"id": 30547,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30494,
"src": "5595:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5588:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 30549,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5599:17:23",
"memberName": "totalSupplyShares",
"nodeType": "MemberAccess",
"referencedDeclaration": 32276,
"src": "5588:28:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint128",
"typeString": "uint128"
},
{
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
],
"expression": {
"id": 30540,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30479,
"src": "5538:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 30541,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5545:12:23",
"memberName": "toSharesDown",
"nodeType": "MemberAccess",
"referencedDeclaration": 33312,
"src": "5538:19:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$",
"typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
}
},
"id": 30550,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5538:79:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "5529:88:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 30552,
"nodeType": "ExpressionStatement",
"src": "5529:88:23"
}
},
{
"expression": {
"id": 30575,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"expression": {
"baseExpression": {
"baseExpression": {
"id": 30568,
"name": "position",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30122,
"src": "5729:8:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_mapping$_t_address_$_t_struct$_Position_$32272_storage_$_$",
"typeString": "mapping(Id => mapping(address => struct Position storage ref))"
}
},
"id": 30571,
"indexExpression": {
"id": 30569,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30494,
"src": "5738:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5729:12:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Position_$32272_storage_$",
"typeString": "mapping(address => struct Position storage ref)"
}
},
"id": 30572,
"indexExpression": {
"id": 30570,
"name": "onBehalf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30483,
"src": "5742:8:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5729:22:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Position_$32272_storage",
"typeString": "struct Position storage ref"
}
},
"id": 30573,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberLocation": "5752:12:23",
"memberName": "supplyShares",
"nodeType": "MemberAccess",
"referencedDeclaration": 32267,
"src": "5729:35:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"id": 30574,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30481,
"src": "5768:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "5729:45:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 30576,
"nodeType": "ExpressionStatement",
"src": "5729:45:23"
},
{
"expression": {
"id": 30584,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"expression": {
"baseExpression": {
"id": 30577,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "5784:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 30579,
"indexExpression": {
"id": 30578,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30494,
"src": "5791:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5784:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 30580,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberLocation": "5795:17:23",
"memberName": "totalSupplyShares",
"nodeType": "MemberAccess",
"referencedDeclaration": 32276,
"src": "5784:28:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 30581,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30481,
"src": "5816:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 30582,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5823:9:23",
"memberName": "toUint128",
"nodeType": "MemberAccess",
"referencedDeclaration": 33437,
"src": "5816:16:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$attached_to$_t_uint256_$",
"typeString": "function (uint256) pure returns (uint128)"
}
},
"id": 30583,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5816:18:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"src": "5784:50:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"id": 30585,
"nodeType": "ExpressionStatement",
"src": "5784:50:23"
},
{
"expression": {
"id": 30593,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"expression": {
"baseExpression": {
"id": 30586,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "5844:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 30588,
"indexExpression": {
"id": 30587,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30494,
"src": "5851:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5844:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 30589,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberLocation": "5855:17:23",
"memberName": "totalSupplyAssets",
"nodeType": "MemberAccess",
"referencedDeclaration": 32274,
"src": "5844:28:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 30590,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30479,
"src": "5876:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 30591,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5883:9:23",
"memberName": "toUint128",
"nodeType": "MemberAccess",
"referencedDeclaration": 33437,
"src": "5876:16:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$attached_to$_t_uint256_$",
"typeString": "function (uint256) pure returns (uint128)"
}
},
"id": 30592,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5876:18:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"src": "5844:50:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"id": 30594,
"nodeType": "ExpressionStatement",
"src": "5844:50:23"
},
{
"eventCall": {
"arguments": [
{
"id": 30598,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30494,
"src": "5927:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
{
"expression": {
"id": 30599,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "5931:3:23",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 30600,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5935:6:23",
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "5931:10:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 30601,
"name": "onBehalf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30483,
"src": "5943:8:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 30602,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30479,
"src": "5953:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 30603,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30481,
"src": "5961:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 30595,
"name": "EventsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32976,
"src": "5910:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_EventsLib_$32976_$",
"typeString": "type(library EventsLib)"
}
},
"id": 30597,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5920:6:23",
"memberName": "Supply",
"nodeType": "MemberAccess",
"referencedDeclaration": 32844,
"src": "5910:16:23",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_userDefinedValueType$_Id_$32254_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (Id,address,address,uint256,uint256)"
}
},
"id": 30604,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5910:58:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30605,
"nodeType": "EmitStatement",
"src": "5905:63:23"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 30609,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 30606,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30485,
"src": "5983:4:23",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 30607,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5988:6:23",
"memberName": "length",
"nodeType": "MemberAccess",
"src": "5983:11:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"hexValue": "30",
"id": 30608,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5997:1:23",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "5983:15:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 30619,
"nodeType": "IfStatement",
"src": "5979:83:23",
"trueBody": {
"expression": {
"arguments": [
{
"id": 30615,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30479,
"src": "6049:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 30616,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30485,
"src": "6057:4:23",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
],
"expression": {
"arguments": [
{
"expression": {
"id": 30611,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "6022:3:23",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 30612,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6026:6:23",
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "6022:10:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 30610,
"name": "IMorphoSupplyCallback",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32639,
"src": "6000:21:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IMorphoSupplyCallback_$32639_$",
"typeString": "type(contract IMorphoSupplyCallback)"
}
},
"id": 30613,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6000:33:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IMorphoSupplyCallback_$32639",
"typeString": "contract IMorphoSupplyCallback"
}
},
"id": 30614,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6034:14:23",
"memberName": "onMorphoSupply",
"nodeType": "MemberAccess",
"referencedDeclaration": 32638,
"src": "6000:48:23",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (uint256,bytes memory) external"
}
},
"id": 30617,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6000:62:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30618,
"nodeType": "ExpressionStatement",
"src": "6000:62:23"
}
},
{
"expression": {
"arguments": [
{
"expression": {
"id": 30625,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "6127:3:23",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 30626,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6131:6:23",
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "6127:10:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"id": 30629,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -28,
"src": "6147:4:23",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Morpho_$32215",
"typeString": "contract Morpho"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_Morpho_$32215",
"typeString": "contract Morpho"
}
],
"id": 30628,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "6139:7:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 30627,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6139:7:23",
"typeDescriptions": {}
}
},
"id": 30630,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6139:13:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 30631,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30479,
"src": "6154:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"arguments": [
{
"expression": {
"id": 30621,
"name": "marketParams",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30477,
"src": "6080:12:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams memory"
}
},
"id": 30622,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6093:15:23",
"memberName": "borrowableToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 32256,
"src": "6080:28:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 30620,
"name": "IERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32219,
"src": "6073:6:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20_$32219_$",
"typeString": "type(contract IERC20)"
}
},
"id": 30623,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6073:36:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$32219",
"typeString": "contract IERC20"
}
},
"id": 30624,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6110:16:23",
"memberName": "safeTransferFrom",
"nodeType": "MemberAccess",
"referencedDeclaration": 33272,
"src": "6073:53:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$32219_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$32219_$",
"typeString": "function (contract IERC20,address,address,uint256)"
}
},
"id": 30632,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6073:88:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30633,
"nodeType": "ExpressionStatement",
"src": "6073:88:23"
},
{
"expression": {
"components": [
{
"id": 30634,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30479,
"src": "6180:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 30635,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30481,
"src": "6188:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 30636,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "6179:16:23",
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
"typeString": "tuple(uint256,uint256)"
}
},
"functionReturnParameters": 30491,
"id": 30637,
"nodeType": "Return",
"src": "6172:23:23"
}
]
},
"baseFunctions": [
32466
],
"documentation": {
"id": 30474,
"nodeType": "StructuredDocumentation",
"src": "4964:23:23",
"text": "@inheritdoc IMorpho"
},
"functionSelector": "a99aad89",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "supply",
"nameLocation": "5001:6:23",
"parameters": {
"id": 30486,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 30477,
"mutability": "mutable",
"name": "marketParams",
"nameLocation": "5037:12:23",
"nodeType": "VariableDeclaration",
"scope": 30639,
"src": "5017:32:23",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams"
},
"typeName": {
"id": 30476,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 30475,
"name": "MarketParams",
"nameLocations": [
"5017:12:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 32265,
"src": "5017:12:23"
},
"referencedDeclaration": 32265,
"src": "5017:12:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_storage_ptr",
"typeString": "struct MarketParams"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 30479,
"mutability": "mutable",
"name": "assets",
"nameLocation": "5067:6:23",
"nodeType": "VariableDeclaration",
"scope": 30639,
"src": "5059:14:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 30478,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5059:7:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 30481,
"mutability": "mutable",
"name": "shares",
"nameLocation": "5091:6:23",
"nodeType": "VariableDeclaration",
"scope": 30639,
"src": "5083:14:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 30480,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5083:7:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 30483,
"mutability": "mutable",
"name": "onBehalf",
"nameLocation": "5115:8:23",
"nodeType": "VariableDeclaration",
"scope": 30639,
"src": "5107:16:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 30482,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5107:7:23",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 30485,
"mutability": "mutable",
"name": "data",
"nameLocation": "5148:4:23",
"nodeType": "VariableDeclaration",
"scope": 30639,
"src": "5133:19:23",
"stateVariable": false,
"storageLocation": "calldata",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 30484,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "5133:5:23",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "5007:151:23"
},
"returnParameters": {
"id": 30491,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 30488,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 30639,
"src": "5177:7:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 30487,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5177:7:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 30490,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 30639,
"src": "5186:7:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 30489,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5186:7:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "5176:18:23"
},
"scope": 32215,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 30809,
"nodeType": "FunctionDefinition",
"src": "6236:1384:23",
"nodes": [],
"body": {
"id": 30808,
"nodeType": "Block",
"src": "6438:1182:23",
"nodes": [],
"statements": [
{
"assignments": [
30660
],
"declarations": [
{
"constant": false,
"id": 30660,
"mutability": "mutable",
"name": "id",
"nameLocation": "6451:2:23",
"nodeType": "VariableDeclaration",
"scope": 30808,
"src": "6448:5:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
},
"typeName": {
"id": 30659,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 30658,
"name": "Id",
"nameLocations": [
"6448:2:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 32254,
"src": "6448:2:23"
},
"referencedDeclaration": 32254,
"src": "6448:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"visibility": "internal"
}
],
"id": 30664,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 30661,
"name": "marketParams",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30643,
"src": "6456:12:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams memory"
}
},
"id": 30662,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6469:2:23",
"memberName": "id",
"nodeType": "MemberAccess",
"referencedDeclaration": 32994,
"src": "6456:15:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_struct$_MarketParams_$32265_memory_ptr_$returns$_t_userDefinedValueType$_Id_$32254_$attached_to$_t_struct$_MarketParams_$32265_memory_ptr_$",
"typeString": "function (struct MarketParams memory) pure returns (Id)"
}
},
"id": 30663,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6456:17:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "6448:25:23"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
},
"id": 30671,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"baseExpression": {
"id": 30666,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "6491:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 30668,
"indexExpression": {
"id": 30667,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30660,
"src": "6498:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "6491:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 30669,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6502:10:23",
"memberName": "lastUpdate",
"nodeType": "MemberAccess",
"referencedDeclaration": 32282,
"src": "6491:21:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"hexValue": "30",
"id": 30670,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6516:1:23",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "6491:26:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 30672,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "6519:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 30673,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "6529:18:23",
"memberName": "MARKET_NOT_CREATED",
"nodeType": "MemberAccess",
"referencedDeclaration": 32734,
"src": "6519:28:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 30665,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "6483:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 30674,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6483:65:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30675,
"nodeType": "ExpressionStatement",
"src": "6483:65:23"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"id": 30679,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30645,
"src": "6590:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 30680,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30647,
"src": "6598:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 30677,
"name": "UtilsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 33450,
"src": "6566:8:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_UtilsLib_$33450_$",
"typeString": "type(library UtilsLib)"
}
},
"id": 30678,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6575:14:23",
"memberName": "exactlyOneZero",
"nodeType": "MemberAccess",
"referencedDeclaration": 33399,
"src": "6566:23:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (uint256,uint256) pure returns (bool)"
}
},
"id": 30681,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6566:39:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 30682,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "6607:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 30683,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "6617:18:23",
"memberName": "INCONSISTENT_INPUT",
"nodeType": "MemberAccess",
"referencedDeclaration": 32738,
"src": "6607:28:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 30676,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "6558:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 30684,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6558:78:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30685,
"nodeType": "ExpressionStatement",
"src": "6558:78:23"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 30692,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 30687,
"name": "receiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30651,
"src": "6746:8:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 30690,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6766:1:23",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 30689,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "6758:7:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 30688,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6758:7:23",
"typeDescriptions": {}
}
},
"id": 30691,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6758:10:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "6746:22:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 30693,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "6770:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 30694,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "6780:12:23",
"memberName": "ZERO_ADDRESS",
"nodeType": "MemberAccess",
"referencedDeclaration": 32746,
"src": "6770:22:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 30686,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "6738:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 30695,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6738:55:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30696,
"nodeType": "ExpressionStatement",
"src": "6738:55:23"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"id": 30699,
"name": "onBehalf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30649,
"src": "6831:8:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 30698,
"name": "_isSenderAuthorized",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31916,
"src": "6811:19:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
"typeString": "function (address) view returns (bool)"
}
},
"id": 30700,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6811:29:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 30701,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "6842:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 30702,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "6852:12:23",
"memberName": "UNAUTHORIZED",
"nodeType": "MemberAccess",
"referencedDeclaration": 32750,
"src": "6842:22:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 30697,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "6803:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 30703,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6803:62:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30704,
"nodeType": "ExpressionStatement",
"src": "6803:62:23"
},
{
"expression": {
"arguments": [
{
"id": 30706,
"name": "marketParams",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30643,
"src": "6892:12:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams memory"
}
},
{
"id": 30707,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30660,
"src": "6906:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams memory"
},
{
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
],
"id": 30705,
"name": "_accrueInterest",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32069,
"src": "6876:15:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_MarketParams_$32265_memory_ptr_$_t_userDefinedValueType$_Id_$32254_$returns$__$",
"typeString": "function (struct MarketParams memory,Id)"
}
},
"id": 30708,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6876:33:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30709,
"nodeType": "ExpressionStatement",
"src": "6876:33:23"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 30712,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 30710,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30645,
"src": "6924:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"hexValue": "30",
"id": 30711,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6933:1:23",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "6924:10:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"expression": {
"id": 30739,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 30727,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30645,
"src": "7037:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"expression": {
"baseExpression": {
"id": 30730,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "7066:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 30732,
"indexExpression": {
"id": 30731,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30660,
"src": "7073:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7066:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 30733,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7077:17:23",
"memberName": "totalSupplyAssets",
"nodeType": "MemberAccess",
"referencedDeclaration": 32274,
"src": "7066:28:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
{
"expression": {
"baseExpression": {
"id": 30734,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "7096:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 30736,
"indexExpression": {
"id": 30735,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30660,
"src": "7103:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7096:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 30737,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7107:17:23",
"memberName": "totalSupplyShares",
"nodeType": "MemberAccess",
"referencedDeclaration": 32276,
"src": "7096:28:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint128",
"typeString": "uint128"
},
{
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
],
"expression": {
"id": 30728,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30647,
"src": "7046:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 30729,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7053:12:23",
"memberName": "toAssetsDown",
"nodeType": "MemberAccess",
"referencedDeclaration": 33335,
"src": "7046:19:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$",
"typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
}
},
"id": 30738,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7046:79:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "7037:88:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 30740,
"nodeType": "ExpressionStatement",
"src": "7037:88:23"
},
"id": 30741,
"nodeType": "IfStatement",
"src": "6920:205:23",
"trueBody": {
"expression": {
"id": 30725,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 30713,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30647,
"src": "6936:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"expression": {
"baseExpression": {
"id": 30716,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "6963:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 30718,
"indexExpression": {
"id": 30717,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30660,
"src": "6970:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "6963:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 30719,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6974:17:23",
"memberName": "totalSupplyAssets",
"nodeType": "MemberAccess",
"referencedDeclaration": 32274,
"src": "6963:28:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
{
"expression": {
"baseExpression": {
"id": 30720,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "6993:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 30722,
"indexExpression": {
"id": 30721,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30660,
"src": "7000:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "6993:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 30723,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7004:17:23",
"memberName": "totalSupplyShares",
"nodeType": "MemberAccess",
"referencedDeclaration": 32276,
"src": "6993:28:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint128",
"typeString": "uint128"
},
{
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
],
"expression": {
"id": 30714,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30645,
"src": "6945:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 30715,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6952:10:23",
"memberName": "toSharesUp",
"nodeType": "MemberAccess",
"referencedDeclaration": 33358,
"src": "6945:17:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$",
"typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
}
},
"id": 30724,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6945:77:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "6936:86:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 30726,
"nodeType": "ExpressionStatement",
"src": "6936:86:23"
}
},
{
"expression": {
"id": 30749,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"expression": {
"baseExpression": {
"baseExpression": {
"id": 30742,
"name": "position",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30122,
"src": "7136:8:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_mapping$_t_address_$_t_struct$_Position_$32272_storage_$_$",
"typeString": "mapping(Id => mapping(address => struct Position storage ref))"
}
},
"id": 30745,
"indexExpression": {
"id": 30743,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30660,
"src": "7145:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7136:12:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Position_$32272_storage_$",
"typeString": "mapping(address => struct Position storage ref)"
}
},
"id": 30746,
"indexExpression": {
"id": 30744,
"name": "onBehalf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30649,
"src": "7149:8:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7136:22:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Position_$32272_storage",
"typeString": "struct Position storage ref"
}
},
"id": 30747,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberLocation": "7159:12:23",
"memberName": "supplyShares",
"nodeType": "MemberAccess",
"referencedDeclaration": 32267,
"src": "7136:35:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "-=",
"rightHandSide": {
"id": 30748,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30647,
"src": "7175:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "7136:45:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 30750,
"nodeType": "ExpressionStatement",
"src": "7136:45:23"
},
{
"expression": {
"id": 30758,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"expression": {
"baseExpression": {
"id": 30751,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "7191:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 30753,
"indexExpression": {
"id": 30752,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30660,
"src": "7198:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7191:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 30754,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberLocation": "7202:17:23",
"memberName": "totalSupplyShares",
"nodeType": "MemberAccess",
"referencedDeclaration": 32276,
"src": "7191:28:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"nodeType": "Assignment",
"operator": "-=",
"rightHandSide": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 30755,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30647,
"src": "7223:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 30756,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7230:9:23",
"memberName": "toUint128",
"nodeType": "MemberAccess",
"referencedDeclaration": 33437,
"src": "7223:16:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$attached_to$_t_uint256_$",
"typeString": "function (uint256) pure returns (uint128)"
}
},
"id": 30757,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7223:18:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"src": "7191:50:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"id": 30759,
"nodeType": "ExpressionStatement",
"src": "7191:50:23"
},
{
"expression": {
"id": 30767,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"expression": {
"baseExpression": {
"id": 30760,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "7251:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 30762,
"indexExpression": {
"id": 30761,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30660,
"src": "7258:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7251:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 30763,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberLocation": "7262:17:23",
"memberName": "totalSupplyAssets",
"nodeType": "MemberAccess",
"referencedDeclaration": 32274,
"src": "7251:28:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"nodeType": "Assignment",
"operator": "-=",
"rightHandSide": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 30764,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30645,
"src": "7283:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 30765,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7290:9:23",
"memberName": "toUint128",
"nodeType": "MemberAccess",
"referencedDeclaration": 33437,
"src": "7283:16:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$attached_to$_t_uint256_$",
"typeString": "function (uint256) pure returns (uint128)"
}
},
"id": 30766,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7283:18:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"src": "7251:50:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"id": 30768,
"nodeType": "ExpressionStatement",
"src": "7251:50:23"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
},
"id": 30778,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"baseExpression": {
"id": 30770,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "7320:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 30772,
"indexExpression": {
"id": 30771,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30660,
"src": "7327:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7320:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 30773,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7331:17:23",
"memberName": "totalBorrowAssets",
"nodeType": "MemberAccess",
"referencedDeclaration": 32278,
"src": "7320:28:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"expression": {
"baseExpression": {
"id": 30774,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "7352:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 30776,
"indexExpression": {
"id": 30775,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30660,
"src": "7359:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7352:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 30777,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7363:17:23",
"memberName": "totalSupplyAssets",
"nodeType": "MemberAccess",
"referencedDeclaration": 32274,
"src": "7352:28:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"src": "7320:60:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 30779,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "7382:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 30780,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "7392:22:23",
"memberName": "INSUFFICIENT_LIQUIDITY",
"nodeType": "MemberAccess",
"referencedDeclaration": 32758,
"src": "7382:32:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 30769,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "7312:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 30781,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7312:103:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30782,
"nodeType": "ExpressionStatement",
"src": "7312:103:23"
},
{
"eventCall": {
"arguments": [
{
"id": 30786,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30660,
"src": "7450:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
{
"expression": {
"id": 30787,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "7454:3:23",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 30788,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7458:6:23",
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "7454:10:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 30789,
"name": "onBehalf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30649,
"src": "7466:8:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 30790,
"name": "receiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30651,
"src": "7476:8:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 30791,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30645,
"src": "7486:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 30792,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30647,
"src": "7494:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 30783,
"name": "EventsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32976,
"src": "7431:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_EventsLib_$32976_$",
"typeString": "type(library EventsLib)"
}
},
"id": 30785,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7441:8:23",
"memberName": "Withdraw",
"nodeType": "MemberAccess",
"referencedDeclaration": 32860,
"src": "7431:18:23",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_userDefinedValueType$_Id_$32254_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (Id,address,address,address,uint256,uint256)"
}
},
"id": 30793,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7431:70:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30794,
"nodeType": "EmitStatement",
"src": "7426:75:23"
},
{
"expression": {
"arguments": [
{
"id": 30800,
"name": "receiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30651,
"src": "7562:8:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 30801,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30645,
"src": "7572:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"arguments": [
{
"expression": {
"id": 30796,
"name": "marketParams",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30643,
"src": "7519:12:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams memory"
}
},
"id": 30797,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7532:15:23",
"memberName": "borrowableToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 32256,
"src": "7519:28:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 30795,
"name": "IERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32219,
"src": "7512:6:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20_$32219_$",
"typeString": "type(contract IERC20)"
}
},
"id": 30798,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7512:36:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$32219",
"typeString": "contract IERC20"
}
},
"id": 30799,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7549:12:23",
"memberName": "safeTransfer",
"nodeType": "MemberAccess",
"referencedDeclaration": 33219,
"src": "7512:49:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$32219_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$32219_$",
"typeString": "function (contract IERC20,address,uint256)"
}
},
"id": 30802,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7512:67:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30803,
"nodeType": "ExpressionStatement",
"src": "7512:67:23"
},
{
"expression": {
"components": [
{
"id": 30804,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30645,
"src": "7598:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 30805,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30647,
"src": "7606:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 30806,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "7597:16:23",
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
"typeString": "tuple(uint256,uint256)"
}
},
"functionReturnParameters": 30657,
"id": 30807,
"nodeType": "Return",
"src": "7590:23:23"
}
]
},
"baseFunctions": [
32485
],
"documentation": {
"id": 30640,
"nodeType": "StructuredDocumentation",
"src": "6208:23:23",
"text": "@inheritdoc IMorpho"
},
"functionSelector": "5c2bea49",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "withdraw",
"nameLocation": "6245:8:23",
"parameters": {
"id": 30652,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 30643,
"mutability": "mutable",
"name": "marketParams",
"nameLocation": "6283:12:23",
"nodeType": "VariableDeclaration",
"scope": 30809,
"src": "6263:32:23",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams"
},
"typeName": {
"id": 30642,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 30641,
"name": "MarketParams",
"nameLocations": [
"6263:12:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 32265,
"src": "6263:12:23"
},
"referencedDeclaration": 32265,
"src": "6263:12:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_storage_ptr",
"typeString": "struct MarketParams"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 30645,
"mutability": "mutable",
"name": "assets",
"nameLocation": "6313:6:23",
"nodeType": "VariableDeclaration",
"scope": 30809,
"src": "6305:14:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 30644,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6305:7:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 30647,
"mutability": "mutable",
"name": "shares",
"nameLocation": "6337:6:23",
"nodeType": "VariableDeclaration",
"scope": 30809,
"src": "6329:14:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 30646,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6329:7:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 30649,
"mutability": "mutable",
"name": "onBehalf",
"nameLocation": "6361:8:23",
"nodeType": "VariableDeclaration",
"scope": 30809,
"src": "6353:16:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 30648,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6353:7:23",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 30651,
"mutability": "mutable",
"name": "receiver",
"nameLocation": "6387:8:23",
"nodeType": "VariableDeclaration",
"scope": 30809,
"src": "6379:16:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 30650,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6379:7:23",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "6253:148:23"
},
"returnParameters": {
"id": 30657,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 30654,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 30809,
"src": "6420:7:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 30653,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6420:7:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 30656,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 30809,
"src": "6429:7:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 30655,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6429:7:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "6419:18:23"
},
"scope": 32215,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 30991,
"nodeType": "FunctionDefinition",
"src": "7683:1484:23",
"nodes": [],
"body": {
"id": 30990,
"nodeType": "Block",
"src": "7883:1284:23",
"nodes": [],
"statements": [
{
"assignments": [
30830
],
"declarations": [
{
"constant": false,
"id": 30830,
"mutability": "mutable",
"name": "id",
"nameLocation": "7896:2:23",
"nodeType": "VariableDeclaration",
"scope": 30990,
"src": "7893:5:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
},
"typeName": {
"id": 30829,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 30828,
"name": "Id",
"nameLocations": [
"7893:2:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 32254,
"src": "7893:2:23"
},
"referencedDeclaration": 32254,
"src": "7893:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"visibility": "internal"
}
],
"id": 30834,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 30831,
"name": "marketParams",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30813,
"src": "7901:12:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams memory"
}
},
"id": 30832,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7914:2:23",
"memberName": "id",
"nodeType": "MemberAccess",
"referencedDeclaration": 32994,
"src": "7901:15:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_struct$_MarketParams_$32265_memory_ptr_$returns$_t_userDefinedValueType$_Id_$32254_$attached_to$_t_struct$_MarketParams_$32265_memory_ptr_$",
"typeString": "function (struct MarketParams memory) pure returns (Id)"
}
},
"id": 30833,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7901:17:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "7893:25:23"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
},
"id": 30841,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"baseExpression": {
"id": 30836,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "7936:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 30838,
"indexExpression": {
"id": 30837,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30830,
"src": "7943:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7936:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 30839,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7947:10:23",
"memberName": "lastUpdate",
"nodeType": "MemberAccess",
"referencedDeclaration": 32282,
"src": "7936:21:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"hexValue": "30",
"id": 30840,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7961:1:23",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "7936:26:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 30842,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "7964:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 30843,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "7974:18:23",
"memberName": "MARKET_NOT_CREATED",
"nodeType": "MemberAccess",
"referencedDeclaration": 32734,
"src": "7964:28:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 30835,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "7928:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 30844,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7928:65:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30845,
"nodeType": "ExpressionStatement",
"src": "7928:65:23"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"id": 30849,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30815,
"src": "8035:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 30850,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30817,
"src": "8043:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 30847,
"name": "UtilsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 33450,
"src": "8011:8:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_UtilsLib_$33450_$",
"typeString": "type(library UtilsLib)"
}
},
"id": 30848,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "8020:14:23",
"memberName": "exactlyOneZero",
"nodeType": "MemberAccess",
"referencedDeclaration": 33399,
"src": "8011:23:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (uint256,uint256) pure returns (bool)"
}
},
"id": 30851,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8011:39:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 30852,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "8052:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 30853,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "8062:18:23",
"memberName": "INCONSISTENT_INPUT",
"nodeType": "MemberAccess",
"referencedDeclaration": 32738,
"src": "8052:28:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 30846,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "8003:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 30854,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8003:78:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30855,
"nodeType": "ExpressionStatement",
"src": "8003:78:23"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 30862,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 30857,
"name": "receiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30821,
"src": "8191:8:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 30860,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8211:1:23",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 30859,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8203:7:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 30858,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8203:7:23",
"typeDescriptions": {}
}
},
"id": 30861,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8203:10:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "8191:22:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 30863,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "8215:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 30864,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "8225:12:23",
"memberName": "ZERO_ADDRESS",
"nodeType": "MemberAccess",
"referencedDeclaration": 32746,
"src": "8215:22:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 30856,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "8183:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 30865,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8183:55:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30866,
"nodeType": "ExpressionStatement",
"src": "8183:55:23"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"id": 30869,
"name": "onBehalf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30819,
"src": "8276:8:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 30868,
"name": "_isSenderAuthorized",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31916,
"src": "8256:19:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
"typeString": "function (address) view returns (bool)"
}
},
"id": 30870,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8256:29:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 30871,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "8287:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 30872,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "8297:12:23",
"memberName": "UNAUTHORIZED",
"nodeType": "MemberAccess",
"referencedDeclaration": 32750,
"src": "8287:22:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 30867,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "8248:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 30873,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8248:62:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30874,
"nodeType": "ExpressionStatement",
"src": "8248:62:23"
},
{
"expression": {
"arguments": [
{
"id": 30876,
"name": "marketParams",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30813,
"src": "8337:12:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams memory"
}
},
{
"id": 30877,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30830,
"src": "8351:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams memory"
},
{
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
],
"id": 30875,
"name": "_accrueInterest",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32069,
"src": "8321:15:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_MarketParams_$32265_memory_ptr_$_t_userDefinedValueType$_Id_$32254_$returns$__$",
"typeString": "function (struct MarketParams memory,Id)"
}
},
"id": 30878,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8321:33:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30879,
"nodeType": "ExpressionStatement",
"src": "8321:33:23"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 30882,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 30880,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30815,
"src": "8369:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"hexValue": "30",
"id": 30881,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8378:1:23",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "8369:10:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"expression": {
"id": 30909,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 30897,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30815,
"src": "8482:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"expression": {
"baseExpression": {
"id": 30900,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "8511:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 30902,
"indexExpression": {
"id": 30901,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30830,
"src": "8518:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8511:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 30903,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "8522:17:23",
"memberName": "totalBorrowAssets",
"nodeType": "MemberAccess",
"referencedDeclaration": 32278,
"src": "8511:28:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
{
"expression": {
"baseExpression": {
"id": 30904,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "8541:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 30906,
"indexExpression": {
"id": 30905,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30830,
"src": "8548:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8541:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 30907,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "8552:17:23",
"memberName": "totalBorrowShares",
"nodeType": "MemberAccess",
"referencedDeclaration": 32280,
"src": "8541:28:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint128",
"typeString": "uint128"
},
{
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
],
"expression": {
"id": 30898,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30817,
"src": "8491:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 30899,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "8498:12:23",
"memberName": "toAssetsDown",
"nodeType": "MemberAccess",
"referencedDeclaration": 33335,
"src": "8491:19:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$",
"typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
}
},
"id": 30908,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8491:79:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "8482:88:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 30910,
"nodeType": "ExpressionStatement",
"src": "8482:88:23"
},
"id": 30911,
"nodeType": "IfStatement",
"src": "8365:205:23",
"trueBody": {
"expression": {
"id": 30895,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 30883,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30817,
"src": "8381:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"expression": {
"baseExpression": {
"id": 30886,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "8408:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 30888,
"indexExpression": {
"id": 30887,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30830,
"src": "8415:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8408:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 30889,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "8419:17:23",
"memberName": "totalBorrowAssets",
"nodeType": "MemberAccess",
"referencedDeclaration": 32278,
"src": "8408:28:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
{
"expression": {
"baseExpression": {
"id": 30890,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "8438:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 30892,
"indexExpression": {
"id": 30891,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30830,
"src": "8445:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8438:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 30893,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "8449:17:23",
"memberName": "totalBorrowShares",
"nodeType": "MemberAccess",
"referencedDeclaration": 32280,
"src": "8438:28:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint128",
"typeString": "uint128"
},
{
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
],
"expression": {
"id": 30884,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30815,
"src": "8390:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 30885,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "8397:10:23",
"memberName": "toSharesUp",
"nodeType": "MemberAccess",
"referencedDeclaration": 33358,
"src": "8390:17:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$",
"typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
}
},
"id": 30894,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8390:77:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "8381:86:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 30896,
"nodeType": "ExpressionStatement",
"src": "8381:86:23"
}
},
{
"expression": {
"id": 30921,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"expression": {
"baseExpression": {
"baseExpression": {
"id": 30912,
"name": "position",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30122,
"src": "8581:8:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_mapping$_t_address_$_t_struct$_Position_$32272_storage_$_$",
"typeString": "mapping(Id => mapping(address => struct Position storage ref))"
}
},
"id": 30915,
"indexExpression": {
"id": 30913,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30830,
"src": "8590:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8581:12:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Position_$32272_storage_$",
"typeString": "mapping(address => struct Position storage ref)"
}
},
"id": 30916,
"indexExpression": {
"id": 30914,
"name": "onBehalf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30819,
"src": "8594:8:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8581:22:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Position_$32272_storage",
"typeString": "struct Position storage ref"
}
},
"id": 30917,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberLocation": "8604:12:23",
"memberName": "borrowShares",
"nodeType": "MemberAccess",
"referencedDeclaration": 32269,
"src": "8581:35:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 30918,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30817,
"src": "8620:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 30919,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "8627:9:23",
"memberName": "toUint128",
"nodeType": "MemberAccess",
"referencedDeclaration": 33437,
"src": "8620:16:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$attached_to$_t_uint256_$",
"typeString": "function (uint256) pure returns (uint128)"
}
},
"id": 30920,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8620:18:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"src": "8581:57:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"id": 30922,
"nodeType": "ExpressionStatement",
"src": "8581:57:23"
},
{
"expression": {
"id": 30930,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"expression": {
"baseExpression": {
"id": 30923,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "8648:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 30925,
"indexExpression": {
"id": 30924,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30830,
"src": "8655:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8648:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 30926,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberLocation": "8659:17:23",
"memberName": "totalBorrowShares",
"nodeType": "MemberAccess",
"referencedDeclaration": 32280,
"src": "8648:28:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 30927,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30817,
"src": "8680:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 30928,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "8687:9:23",
"memberName": "toUint128",
"nodeType": "MemberAccess",
"referencedDeclaration": 33437,
"src": "8680:16:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$attached_to$_t_uint256_$",
"typeString": "function (uint256) pure returns (uint128)"
}
},
"id": 30929,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8680:18:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"src": "8648:50:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"id": 30931,
"nodeType": "ExpressionStatement",
"src": "8648:50:23"
},
{
"expression": {
"id": 30939,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"expression": {
"baseExpression": {
"id": 30932,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "8708:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 30934,
"indexExpression": {
"id": 30933,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30830,
"src": "8715:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8708:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 30935,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberLocation": "8719:17:23",
"memberName": "totalBorrowAssets",
"nodeType": "MemberAccess",
"referencedDeclaration": 32278,
"src": "8708:28:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 30936,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30815,
"src": "8740:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 30937,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "8747:9:23",
"memberName": "toUint128",
"nodeType": "MemberAccess",
"referencedDeclaration": 33437,
"src": "8740:16:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$attached_to$_t_uint256_$",
"typeString": "function (uint256) pure returns (uint128)"
}
},
"id": 30938,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8740:18:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"src": "8708:50:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"id": 30940,
"nodeType": "ExpressionStatement",
"src": "8708:50:23"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"id": 30943,
"name": "marketParams",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30813,
"src": "8788:12:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams memory"
}
},
{
"id": 30944,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30830,
"src": "8802:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
{
"id": 30945,
"name": "onBehalf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30819,
"src": "8806:8:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams memory"
},
{
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 30942,
"name": "_isHealthy",
"nodeType": "Identifier",
"overloadedDeclarations": [
32111,
32174
],
"referencedDeclaration": 32111,
"src": "8777:10:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_struct$_MarketParams_$32265_memory_ptr_$_t_userDefinedValueType$_Id_$32254_$_t_address_$returns$_t_bool_$",
"typeString": "function (struct MarketParams memory,Id,address) view returns (bool)"
}
},
"id": 30946,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8777:38:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 30947,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "8817:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 30948,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "8827:23:23",
"memberName": "INSUFFICIENT_COLLATERAL",
"nodeType": "MemberAccess",
"referencedDeclaration": 32754,
"src": "8817:33:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 30941,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "8769:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 30949,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8769:82:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30950,
"nodeType": "ExpressionStatement",
"src": "8769:82:23"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
},
"id": 30960,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"baseExpression": {
"id": 30952,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "8869:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 30954,
"indexExpression": {
"id": 30953,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30830,
"src": "8876:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8869:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 30955,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "8880:17:23",
"memberName": "totalBorrowAssets",
"nodeType": "MemberAccess",
"referencedDeclaration": 32278,
"src": "8869:28:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"expression": {
"baseExpression": {
"id": 30956,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "8901:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 30958,
"indexExpression": {
"id": 30957,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30830,
"src": "8908:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8901:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 30959,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "8912:17:23",
"memberName": "totalSupplyAssets",
"nodeType": "MemberAccess",
"referencedDeclaration": 32274,
"src": "8901:28:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"src": "8869:60:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 30961,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "8931:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 30962,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "8941:22:23",
"memberName": "INSUFFICIENT_LIQUIDITY",
"nodeType": "MemberAccess",
"referencedDeclaration": 32758,
"src": "8931:32:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 30951,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "8861:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 30963,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8861:103:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30964,
"nodeType": "ExpressionStatement",
"src": "8861:103:23"
},
{
"eventCall": {
"arguments": [
{
"id": 30968,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30830,
"src": "8997:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
{
"expression": {
"id": 30969,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "9001:3:23",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 30970,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "9005:6:23",
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "9001:10:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 30971,
"name": "onBehalf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30819,
"src": "9013:8:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 30972,
"name": "receiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30821,
"src": "9023:8:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 30973,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30815,
"src": "9033:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 30974,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30817,
"src": "9041:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 30965,
"name": "EventsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32976,
"src": "8980:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_EventsLib_$32976_$",
"typeString": "type(library EventsLib)"
}
},
"id": 30967,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "8990:6:23",
"memberName": "Borrow",
"nodeType": "MemberAccess",
"referencedDeclaration": 32876,
"src": "8980:16:23",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_userDefinedValueType$_Id_$32254_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (Id,address,address,address,uint256,uint256)"
}
},
"id": 30975,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8980:68:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30976,
"nodeType": "EmitStatement",
"src": "8975:73:23"
},
{
"expression": {
"arguments": [
{
"id": 30982,
"name": "receiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30821,
"src": "9109:8:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 30983,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30815,
"src": "9119:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"arguments": [
{
"expression": {
"id": 30978,
"name": "marketParams",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30813,
"src": "9066:12:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams memory"
}
},
"id": 30979,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "9079:15:23",
"memberName": "borrowableToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 32256,
"src": "9066:28:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 30977,
"name": "IERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32219,
"src": "9059:6:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20_$32219_$",
"typeString": "type(contract IERC20)"
}
},
"id": 30980,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9059:36:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$32219",
"typeString": "contract IERC20"
}
},
"id": 30981,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "9096:12:23",
"memberName": "safeTransfer",
"nodeType": "MemberAccess",
"referencedDeclaration": 33219,
"src": "9059:49:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$32219_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$32219_$",
"typeString": "function (contract IERC20,address,uint256)"
}
},
"id": 30984,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9059:67:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 30985,
"nodeType": "ExpressionStatement",
"src": "9059:67:23"
},
{
"expression": {
"components": [
{
"id": 30986,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30815,
"src": "9145:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 30987,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30817,
"src": "9153:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 30988,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "9144:16:23",
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
"typeString": "tuple(uint256,uint256)"
}
},
"functionReturnParameters": 30827,
"id": 30989,
"nodeType": "Return",
"src": "9137:23:23"
}
]
},
"baseFunctions": [
32504
],
"documentation": {
"id": 30810,
"nodeType": "StructuredDocumentation",
"src": "7655:23:23",
"text": "@inheritdoc IMorpho"
},
"functionSelector": "50d8cd4b",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "borrow",
"nameLocation": "7692:6:23",
"parameters": {
"id": 30822,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 30813,
"mutability": "mutable",
"name": "marketParams",
"nameLocation": "7728:12:23",
"nodeType": "VariableDeclaration",
"scope": 30991,
"src": "7708:32:23",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams"
},
"typeName": {
"id": 30812,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 30811,
"name": "MarketParams",
"nameLocations": [
"7708:12:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 32265,
"src": "7708:12:23"
},
"referencedDeclaration": 32265,
"src": "7708:12:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_storage_ptr",
"typeString": "struct MarketParams"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 30815,
"mutability": "mutable",
"name": "assets",
"nameLocation": "7758:6:23",
"nodeType": "VariableDeclaration",
"scope": 30991,
"src": "7750:14:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 30814,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7750:7:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 30817,
"mutability": "mutable",
"name": "shares",
"nameLocation": "7782:6:23",
"nodeType": "VariableDeclaration",
"scope": 30991,
"src": "7774:14:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 30816,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7774:7:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 30819,
"mutability": "mutable",
"name": "onBehalf",
"nameLocation": "7806:8:23",
"nodeType": "VariableDeclaration",
"scope": 30991,
"src": "7798:16:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 30818,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7798:7:23",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 30821,
"mutability": "mutable",
"name": "receiver",
"nameLocation": "7832:8:23",
"nodeType": "VariableDeclaration",
"scope": 30991,
"src": "7824:16:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 30820,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7824:7:23",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "7698:148:23"
},
"returnParameters": {
"id": 30827,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 30824,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 30991,
"src": "7865:7:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 30823,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7865:7:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 30826,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 30991,
"src": "7874:7:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 30825,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7874:7:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "7864:18:23"
},
"scope": 32215,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 31166,
"nodeType": "FunctionDefinition",
"src": "9201:1336:23",
"nodes": [],
"body": {
"id": 31165,
"nodeType": "Block",
"src": "9403:1134:23",
"nodes": [],
"statements": [
{
"assignments": [
31012
],
"declarations": [
{
"constant": false,
"id": 31012,
"mutability": "mutable",
"name": "id",
"nameLocation": "9416:2:23",
"nodeType": "VariableDeclaration",
"scope": 31165,
"src": "9413:5:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
},
"typeName": {
"id": 31011,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 31010,
"name": "Id",
"nameLocations": [
"9413:2:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 32254,
"src": "9413:2:23"
},
"referencedDeclaration": 32254,
"src": "9413:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"visibility": "internal"
}
],
"id": 31016,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 31013,
"name": "marketParams",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30995,
"src": "9421:12:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams memory"
}
},
"id": 31014,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "9434:2:23",
"memberName": "id",
"nodeType": "MemberAccess",
"referencedDeclaration": 32994,
"src": "9421:15:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_struct$_MarketParams_$32265_memory_ptr_$returns$_t_userDefinedValueType$_Id_$32254_$attached_to$_t_struct$_MarketParams_$32265_memory_ptr_$",
"typeString": "function (struct MarketParams memory) pure returns (Id)"
}
},
"id": 31015,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9421:17:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "9413:25:23"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
},
"id": 31023,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"baseExpression": {
"id": 31018,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "9456:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 31020,
"indexExpression": {
"id": 31019,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31012,
"src": "9463:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9456:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 31021,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "9467:10:23",
"memberName": "lastUpdate",
"nodeType": "MemberAccess",
"referencedDeclaration": 32282,
"src": "9456:21:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"hexValue": "30",
"id": 31022,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9481:1:23",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "9456:26:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 31024,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "9484:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 31025,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "9494:18:23",
"memberName": "MARKET_NOT_CREATED",
"nodeType": "MemberAccess",
"referencedDeclaration": 32734,
"src": "9484:28:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 31017,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "9448:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 31026,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9448:65:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 31027,
"nodeType": "ExpressionStatement",
"src": "9448:65:23"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"id": 31031,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30997,
"src": "9555:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 31032,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30999,
"src": "9563:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 31029,
"name": "UtilsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 33450,
"src": "9531:8:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_UtilsLib_$33450_$",
"typeString": "type(library UtilsLib)"
}
},
"id": 31030,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "9540:14:23",
"memberName": "exactlyOneZero",
"nodeType": "MemberAccess",
"referencedDeclaration": 33399,
"src": "9531:23:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (uint256,uint256) pure returns (bool)"
}
},
"id": 31033,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9531:39:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 31034,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "9572:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 31035,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "9582:18:23",
"memberName": "INCONSISTENT_INPUT",
"nodeType": "MemberAccess",
"referencedDeclaration": 32738,
"src": "9572:28:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 31028,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "9523:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 31036,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9523:78:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 31037,
"nodeType": "ExpressionStatement",
"src": "9523:78:23"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 31044,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 31039,
"name": "onBehalf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31001,
"src": "9619:8:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 31042,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9639:1:23",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 31041,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9631:7:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 31040,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9631:7:23",
"typeDescriptions": {}
}
},
"id": 31043,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9631:10:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "9619:22:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 31045,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "9643:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 31046,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "9653:12:23",
"memberName": "ZERO_ADDRESS",
"nodeType": "MemberAccess",
"referencedDeclaration": 32746,
"src": "9643:22:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 31038,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "9611:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 31047,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9611:55:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 31048,
"nodeType": "ExpressionStatement",
"src": "9611:55:23"
},
{
"expression": {
"arguments": [
{
"id": 31050,
"name": "marketParams",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30995,
"src": "9693:12:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams memory"
}
},
{
"id": 31051,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31012,
"src": "9707:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams memory"
},
{
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
],
"id": 31049,
"name": "_accrueInterest",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32069,
"src": "9677:15:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_MarketParams_$32265_memory_ptr_$_t_userDefinedValueType$_Id_$32254_$returns$__$",
"typeString": "function (struct MarketParams memory,Id)"
}
},
"id": 31052,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9677:33:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 31053,
"nodeType": "ExpressionStatement",
"src": "9677:33:23"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 31056,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 31054,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30997,
"src": "9725:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"hexValue": "30",
"id": 31055,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9734:1:23",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "9725:10:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"expression": {
"id": 31083,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 31071,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30997,
"src": "9840:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"expression": {
"baseExpression": {
"id": 31074,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "9867:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 31076,
"indexExpression": {
"id": 31075,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31012,
"src": "9874:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9867:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 31077,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "9878:17:23",
"memberName": "totalBorrowAssets",
"nodeType": "MemberAccess",
"referencedDeclaration": 32278,
"src": "9867:28:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
{
"expression": {
"baseExpression": {
"id": 31078,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "9897:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 31080,
"indexExpression": {
"id": 31079,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31012,
"src": "9904:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9897:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 31081,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "9908:17:23",
"memberName": "totalBorrowShares",
"nodeType": "MemberAccess",
"referencedDeclaration": 32280,
"src": "9897:28:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint128",
"typeString": "uint128"
},
{
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
],
"expression": {
"id": 31072,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30999,
"src": "9849:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 31073,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "9856:10:23",
"memberName": "toAssetsUp",
"nodeType": "MemberAccess",
"referencedDeclaration": 33381,
"src": "9849:17:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$",
"typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
}
},
"id": 31082,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9849:77:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9840:86:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 31084,
"nodeType": "ExpressionStatement",
"src": "9840:86:23"
},
"id": 31085,
"nodeType": "IfStatement",
"src": "9721:205:23",
"trueBody": {
"expression": {
"id": 31069,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 31057,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30999,
"src": "9737:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"expression": {
"baseExpression": {
"id": 31060,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "9766:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 31062,
"indexExpression": {
"id": 31061,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31012,
"src": "9773:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9766:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 31063,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "9777:17:23",
"memberName": "totalBorrowAssets",
"nodeType": "MemberAccess",
"referencedDeclaration": 32278,
"src": "9766:28:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
{
"expression": {
"baseExpression": {
"id": 31064,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "9796:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 31066,
"indexExpression": {
"id": 31065,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31012,
"src": "9803:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9796:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 31067,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "9807:17:23",
"memberName": "totalBorrowShares",
"nodeType": "MemberAccess",
"referencedDeclaration": 32280,
"src": "9796:28:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint128",
"typeString": "uint128"
},
{
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
],
"expression": {
"id": 31058,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30997,
"src": "9746:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 31059,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "9753:12:23",
"memberName": "toSharesDown",
"nodeType": "MemberAccess",
"referencedDeclaration": 33312,
"src": "9746:19:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$",
"typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
}
},
"id": 31068,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9746:79:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9737:88:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 31070,
"nodeType": "ExpressionStatement",
"src": "9737:88:23"
}
},
{
"expression": {
"id": 31095,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"expression": {
"baseExpression": {
"baseExpression": {
"id": 31086,
"name": "position",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30122,
"src": "9937:8:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_mapping$_t_address_$_t_struct$_Position_$32272_storage_$_$",
"typeString": "mapping(Id => mapping(address => struct Position storage ref))"
}
},
"id": 31089,
"indexExpression": {
"id": 31087,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31012,
"src": "9946:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9937:12:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Position_$32272_storage_$",
"typeString": "mapping(address => struct Position storage ref)"
}
},
"id": 31090,
"indexExpression": {
"id": 31088,
"name": "onBehalf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31001,
"src": "9950:8:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9937:22:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Position_$32272_storage",
"typeString": "struct Position storage ref"
}
},
"id": 31091,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberLocation": "9960:12:23",
"memberName": "borrowShares",
"nodeType": "MemberAccess",
"referencedDeclaration": 32269,
"src": "9937:35:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"nodeType": "Assignment",
"operator": "-=",
"rightHandSide": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 31092,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30999,
"src": "9976:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 31093,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "9983:9:23",
"memberName": "toUint128",
"nodeType": "MemberAccess",
"referencedDeclaration": 33437,
"src": "9976:16:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$attached_to$_t_uint256_$",
"typeString": "function (uint256) pure returns (uint128)"
}
},
"id": 31094,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9976:18:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"src": "9937:57:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"id": 31096,
"nodeType": "ExpressionStatement",
"src": "9937:57:23"
},
{
"expression": {
"id": 31104,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"expression": {
"baseExpression": {
"id": 31097,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "10004:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 31099,
"indexExpression": {
"id": 31098,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31012,
"src": "10011:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10004:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 31100,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberLocation": "10015:17:23",
"memberName": "totalBorrowShares",
"nodeType": "MemberAccess",
"referencedDeclaration": 32280,
"src": "10004:28:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"nodeType": "Assignment",
"operator": "-=",
"rightHandSide": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 31101,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30999,
"src": "10036:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 31102,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "10043:9:23",
"memberName": "toUint128",
"nodeType": "MemberAccess",
"referencedDeclaration": 33437,
"src": "10036:16:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$attached_to$_t_uint256_$",
"typeString": "function (uint256) pure returns (uint128)"
}
},
"id": 31103,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10036:18:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"src": "10004:50:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"id": 31105,
"nodeType": "ExpressionStatement",
"src": "10004:50:23"
},
{
"expression": {
"id": 31120,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"expression": {
"baseExpression": {
"id": 31106,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "10064:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 31108,
"indexExpression": {
"id": 31107,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31012,
"src": "10071:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10064:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 31109,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberLocation": "10075:17:23",
"memberName": "totalBorrowAssets",
"nodeType": "MemberAccess",
"referencedDeclaration": 32278,
"src": "10064:28:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"arguments": [
{
"expression": {
"baseExpression": {
"id": 31112,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "10117:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 31114,
"indexExpression": {
"id": 31113,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31012,
"src": "10124:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10117:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 31115,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "10128:17:23",
"memberName": "totalBorrowAssets",
"nodeType": "MemberAccess",
"referencedDeclaration": 32278,
"src": "10117:28:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
{
"id": 31116,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30997,
"src": "10147:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint128",
"typeString": "uint128"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 31110,
"name": "UtilsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 33450,
"src": "10095:8:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_UtilsLib_$33450_$",
"typeString": "type(library UtilsLib)"
}
},
"id": 31111,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "10104:12:23",
"memberName": "zeroFloorSub",
"nodeType": "MemberAccess",
"referencedDeclaration": 33449,
"src": "10095:21:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 31117,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10095:59:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 31118,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "10155:9:23",
"memberName": "toUint128",
"nodeType": "MemberAccess",
"referencedDeclaration": 33437,
"src": "10095:69:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$attached_to$_t_uint256_$",
"typeString": "function (uint256) pure returns (uint128)"
}
},
"id": 31119,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10095:71:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"src": "10064:102:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"id": 31121,
"nodeType": "ExpressionStatement",
"src": "10064:102:23"
},
{
"eventCall": {
"arguments": [
{
"id": 31125,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31012,
"src": "10264:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
{
"expression": {
"id": 31126,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "10268:3:23",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 31127,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "10272:6:23",
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "10268:10:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 31128,
"name": "onBehalf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31001,
"src": "10280:8:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 31129,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30997,
"src": "10290:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 31130,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30999,
"src": "10298:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 31122,
"name": "EventsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32976,
"src": "10248:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_EventsLib_$32976_$",
"typeString": "type(library EventsLib)"
}
},
"id": 31124,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "10258:5:23",
"memberName": "Repay",
"nodeType": "MemberAccess",
"referencedDeclaration": 32890,
"src": "10248:15:23",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_userDefinedValueType$_Id_$32254_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (Id,address,address,uint256,uint256)"
}
},
"id": 31131,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10248:57:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 31132,
"nodeType": "EmitStatement",
"src": "10243:62:23"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 31136,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 31133,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31003,
"src": "10320:4:23",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 31134,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "10325:6:23",
"memberName": "length",
"nodeType": "MemberAccess",
"src": "10320:11:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"hexValue": "30",
"id": 31135,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10334:1:23",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "10320:15:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 31146,
"nodeType": "IfStatement",
"src": "10316:81:23",
"trueBody": {
"expression": {
"arguments": [
{
"id": 31142,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30997,
"src": "10384:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 31143,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31003,
"src": "10392:4:23",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
],
"expression": {
"arguments": [
{
"expression": {
"id": 31138,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "10358:3:23",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 31139,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "10362:6:23",
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "10358:10:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 31137,
"name": "IMorphoRepayCallback",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32629,
"src": "10337:20:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IMorphoRepayCallback_$32629_$",
"typeString": "type(contract IMorphoRepayCallback)"
}
},
"id": 31140,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10337:32:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IMorphoRepayCallback_$32629",
"typeString": "contract IMorphoRepayCallback"
}
},
"id": 31141,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "10370:13:23",
"memberName": "onMorphoRepay",
"nodeType": "MemberAccess",
"referencedDeclaration": 32628,
"src": "10337:46:23",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (uint256,bytes memory) external"
}
},
"id": 31144,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10337:60:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 31145,
"nodeType": "ExpressionStatement",
"src": "10337:60:23"
}
},
{
"expression": {
"arguments": [
{
"expression": {
"id": 31152,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "10462:3:23",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 31153,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "10466:6:23",
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "10462:10:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"id": 31156,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -28,
"src": "10482:4:23",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Morpho_$32215",
"typeString": "contract Morpho"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_Morpho_$32215",
"typeString": "contract Morpho"
}
],
"id": 31155,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "10474:7:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 31154,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "10474:7:23",
"typeDescriptions": {}
}
},
"id": 31157,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10474:13:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 31158,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30997,
"src": "10489:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"arguments": [
{
"expression": {
"id": 31148,
"name": "marketParams",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30995,
"src": "10415:12:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams memory"
}
},
"id": 31149,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "10428:15:23",
"memberName": "borrowableToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 32256,
"src": "10415:28:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 31147,
"name": "IERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32219,
"src": "10408:6:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20_$32219_$",
"typeString": "type(contract IERC20)"
}
},
"id": 31150,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10408:36:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$32219",
"typeString": "contract IERC20"
}
},
"id": 31151,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "10445:16:23",
"memberName": "safeTransferFrom",
"nodeType": "MemberAccess",
"referencedDeclaration": 33272,
"src": "10408:53:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$32219_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$32219_$",
"typeString": "function (contract IERC20,address,address,uint256)"
}
},
"id": 31159,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10408:88:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 31160,
"nodeType": "ExpressionStatement",
"src": "10408:88:23"
},
{
"expression": {
"components": [
{
"id": 31161,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30997,
"src": "10515:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 31162,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30999,
"src": "10523:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 31163,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "10514:16:23",
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
"typeString": "tuple(uint256,uint256)"
}
},
"functionReturnParameters": 31009,
"id": 31164,
"nodeType": "Return",
"src": "10507:23:23"
}
]
},
"baseFunctions": [
32523
],
"documentation": {
"id": 30992,
"nodeType": "StructuredDocumentation",
"src": "9173:23:23",
"text": "@inheritdoc IMorpho"
},
"functionSelector": "20b76e81",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "repay",
"nameLocation": "9210:5:23",
"parameters": {
"id": 31004,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 30995,
"mutability": "mutable",
"name": "marketParams",
"nameLocation": "9245:12:23",
"nodeType": "VariableDeclaration",
"scope": 31166,
"src": "9225:32:23",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams"
},
"typeName": {
"id": 30994,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 30993,
"name": "MarketParams",
"nameLocations": [
"9225:12:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 32265,
"src": "9225:12:23"
},
"referencedDeclaration": 32265,
"src": "9225:12:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_storage_ptr",
"typeString": "struct MarketParams"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 30997,
"mutability": "mutable",
"name": "assets",
"nameLocation": "9275:6:23",
"nodeType": "VariableDeclaration",
"scope": 31166,
"src": "9267:14:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 30996,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9267:7:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 30999,
"mutability": "mutable",
"name": "shares",
"nameLocation": "9299:6:23",
"nodeType": "VariableDeclaration",
"scope": 31166,
"src": "9291:14:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 30998,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9291:7:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 31001,
"mutability": "mutable",
"name": "onBehalf",
"nameLocation": "9323:8:23",
"nodeType": "VariableDeclaration",
"scope": 31166,
"src": "9315:16:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 31000,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9315:7:23",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 31003,
"mutability": "mutable",
"name": "data",
"nameLocation": "9356:4:23",
"nodeType": "VariableDeclaration",
"scope": 31166,
"src": "9341:19:23",
"stateVariable": false,
"storageLocation": "calldata",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 31002,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "9341:5:23",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "9215:151:23"
},
"returnParameters": {
"id": 31009,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 31006,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 31166,
"src": "9385:7:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 31005,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9385:7:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 31008,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 31166,
"src": "9394:7:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 31007,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9394:7:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "9384:18:23"
},
"scope": 32215,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 31266,
"nodeType": "FunctionDefinition",
"src": "10604:804:23",
"nodes": [],
"body": {
"id": 31265,
"nodeType": "Block",
"src": "10740:668:23",
"nodes": [],
"statements": [
{
"assignments": [
31181
],
"declarations": [
{
"constant": false,
"id": 31181,
"mutability": "mutable",
"name": "id",
"nameLocation": "10753:2:23",
"nodeType": "VariableDeclaration",
"scope": 31265,
"src": "10750:5:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
},
"typeName": {
"id": 31180,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 31179,
"name": "Id",
"nameLocations": [
"10750:2:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 32254,
"src": "10750:2:23"
},
"referencedDeclaration": 32254,
"src": "10750:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"visibility": "internal"
}
],
"id": 31185,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 31182,
"name": "marketParams",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31170,
"src": "10758:12:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams memory"
}
},
"id": 31183,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "10771:2:23",
"memberName": "id",
"nodeType": "MemberAccess",
"referencedDeclaration": 32994,
"src": "10758:15:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_struct$_MarketParams_$32265_memory_ptr_$returns$_t_userDefinedValueType$_Id_$32254_$attached_to$_t_struct$_MarketParams_$32265_memory_ptr_$",
"typeString": "function (struct MarketParams memory) pure returns (Id)"
}
},
"id": 31184,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10758:17:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "10750:25:23"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
},
"id": 31192,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"baseExpression": {
"id": 31187,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "10793:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 31189,
"indexExpression": {
"id": 31188,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31181,
"src": "10800:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10793:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 31190,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "10804:10:23",
"memberName": "lastUpdate",
"nodeType": "MemberAccess",
"referencedDeclaration": 32282,
"src": "10793:21:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"hexValue": "30",
"id": 31191,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10818:1:23",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "10793:26:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 31193,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "10821:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 31194,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "10831:18:23",
"memberName": "MARKET_NOT_CREATED",
"nodeType": "MemberAccess",
"referencedDeclaration": 32734,
"src": "10821:28:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 31186,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "10785:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 31195,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10785:65:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 31196,
"nodeType": "ExpressionStatement",
"src": "10785:65:23"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 31200,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 31198,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31172,
"src": "10868:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"hexValue": "30",
"id": 31199,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10878:1:23",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "10868:11:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 31201,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "10881:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 31202,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "10891:11:23",
"memberName": "ZERO_ASSETS",
"nodeType": "MemberAccess",
"referencedDeclaration": 32742,
"src": "10881:21:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 31197,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "10860:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 31203,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10860:43:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 31204,
"nodeType": "ExpressionStatement",
"src": "10860:43:23"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 31211,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 31206,
"name": "onBehalf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31174,
"src": "10921:8:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 31209,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10941:1:23",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 31208,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "10933:7:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 31207,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "10933:7:23",
"typeDescriptions": {}
}
},
"id": 31210,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10933:10:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "10921:22:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 31212,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "10945:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 31213,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "10955:12:23",
"memberName": "ZERO_ADDRESS",
"nodeType": "MemberAccess",
"referencedDeclaration": 32746,
"src": "10945:22:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 31205,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "10913:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 31214,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10913:55:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 31215,
"nodeType": "ExpressionStatement",
"src": "10913:55:23"
},
{
"expression": {
"id": 31225,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"expression": {
"baseExpression": {
"baseExpression": {
"id": 31216,
"name": "position",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30122,
"src": "11057:8:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_mapping$_t_address_$_t_struct$_Position_$32272_storage_$_$",
"typeString": "mapping(Id => mapping(address => struct Position storage ref))"
}
},
"id": 31219,
"indexExpression": {
"id": 31217,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31181,
"src": "11066:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "11057:12:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Position_$32272_storage_$",
"typeString": "mapping(address => struct Position storage ref)"
}
},
"id": 31220,
"indexExpression": {
"id": 31218,
"name": "onBehalf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31174,
"src": "11070:8:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "11057:22:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Position_$32272_storage",
"typeString": "struct Position storage ref"
}
},
"id": 31221,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberLocation": "11080:10:23",
"memberName": "collateral",
"nodeType": "MemberAccess",
"referencedDeclaration": 32271,
"src": "11057:33:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 31222,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31172,
"src": "11094:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 31223,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "11101:9:23",
"memberName": "toUint128",
"nodeType": "MemberAccess",
"referencedDeclaration": 33437,
"src": "11094:16:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$attached_to$_t_uint256_$",
"typeString": "function (uint256) pure returns (uint128)"
}
},
"id": 31224,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "11094:18:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"src": "11057:55:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"id": 31226,
"nodeType": "ExpressionStatement",
"src": "11057:55:23"
},
{
"eventCall": {
"arguments": [
{
"id": 31230,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31181,
"src": "11155:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
{
"expression": {
"id": 31231,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "11159:3:23",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 31232,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "11163:6:23",
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "11159:10:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 31233,
"name": "onBehalf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31174,
"src": "11171:8:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 31234,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31172,
"src": "11181:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 31227,
"name": "EventsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32976,
"src": "11128:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_EventsLib_$32976_$",
"typeString": "type(library EventsLib)"
}
},
"id": 31229,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "11138:16:23",
"memberName": "SupplyCollateral",
"nodeType": "MemberAccess",
"referencedDeclaration": 32902,
"src": "11128:26:23",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_userDefinedValueType$_Id_$32254_$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (Id,address,address,uint256)"
}
},
"id": 31235,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "11128:60:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 31236,
"nodeType": "EmitStatement",
"src": "11123:65:23"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 31240,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 31237,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31176,
"src": "11203:4:23",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 31238,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "11208:6:23",
"memberName": "length",
"nodeType": "MemberAccess",
"src": "11203:11:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"hexValue": "30",
"id": 31239,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "11217:1:23",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "11203:15:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 31250,
"nodeType": "IfStatement",
"src": "11199:103:23",
"trueBody": {
"expression": {
"arguments": [
{
"id": 31246,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31172,
"src": "11289:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 31247,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31176,
"src": "11297:4:23",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
],
"expression": {
"arguments": [
{
"expression": {
"id": 31242,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "11252:3:23",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 31243,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "11256:6:23",
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "11252:10:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 31241,
"name": "IMorphoSupplyCollateralCallback",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32649,
"src": "11220:31:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IMorphoSupplyCollateralCallback_$32649_$",
"typeString": "type(contract IMorphoSupplyCollateralCallback)"
}
},
"id": 31244,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "11220:43:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IMorphoSupplyCollateralCallback_$32649",
"typeString": "contract IMorphoSupplyCollateralCallback"
}
},
"id": 31245,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "11264:24:23",
"memberName": "onMorphoSupplyCollateral",
"nodeType": "MemberAccess",
"referencedDeclaration": 32648,
"src": "11220:68:23",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (uint256,bytes memory) external"
}
},
"id": 31248,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "11220:82:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 31249,
"nodeType": "ExpressionStatement",
"src": "11220:82:23"
}
},
{
"expression": {
"arguments": [
{
"expression": {
"id": 31256,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "11367:3:23",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 31257,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "11371:6:23",
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "11367:10:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"id": 31260,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -28,
"src": "11387:4:23",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Morpho_$32215",
"typeString": "contract Morpho"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_Morpho_$32215",
"typeString": "contract Morpho"
}
],
"id": 31259,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "11379:7:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 31258,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "11379:7:23",
"typeDescriptions": {}
}
},
"id": 31261,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "11379:13:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 31262,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31172,
"src": "11394:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"arguments": [
{
"expression": {
"id": 31252,
"name": "marketParams",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31170,
"src": "11320:12:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams memory"
}
},
"id": 31253,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "11333:15:23",
"memberName": "collateralToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 32258,
"src": "11320:28:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 31251,
"name": "IERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32219,
"src": "11313:6:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20_$32219_$",
"typeString": "type(contract IERC20)"
}
},
"id": 31254,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "11313:36:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$32219",
"typeString": "contract IERC20"
}
},
"id": 31255,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "11350:16:23",
"memberName": "safeTransferFrom",
"nodeType": "MemberAccess",
"referencedDeclaration": 33272,
"src": "11313:53:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$32219_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$32219_$",
"typeString": "function (contract IERC20,address,address,uint256)"
}
},
"id": 31263,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "11313:88:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 31264,
"nodeType": "ExpressionStatement",
"src": "11313:88:23"
}
]
},
"baseFunctions": [
32536
],
"documentation": {
"id": 31167,
"nodeType": "StructuredDocumentation",
"src": "10576:23:23",
"text": "@inheritdoc IMorpho"
},
"functionSelector": "238d6579",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "supplyCollateral",
"nameLocation": "10613:16:23",
"parameters": {
"id": 31177,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 31170,
"mutability": "mutable",
"name": "marketParams",
"nameLocation": "10650:12:23",
"nodeType": "VariableDeclaration",
"scope": 31266,
"src": "10630:32:23",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams"
},
"typeName": {
"id": 31169,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 31168,
"name": "MarketParams",
"nameLocations": [
"10630:12:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 32265,
"src": "10630:12:23"
},
"referencedDeclaration": 32265,
"src": "10630:12:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_storage_ptr",
"typeString": "struct MarketParams"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 31172,
"mutability": "mutable",
"name": "assets",
"nameLocation": "10672:6:23",
"nodeType": "VariableDeclaration",
"scope": 31266,
"src": "10664:14:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 31171,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "10664:7:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 31174,
"mutability": "mutable",
"name": "onBehalf",
"nameLocation": "10688:8:23",
"nodeType": "VariableDeclaration",
"scope": 31266,
"src": "10680:16:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 31173,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "10680:7:23",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 31176,
"mutability": "mutable",
"name": "data",
"nameLocation": "10713:4:23",
"nodeType": "VariableDeclaration",
"scope": 31266,
"src": "10698:19:23",
"stateVariable": false,
"storageLocation": "calldata",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 31175,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "10698:5:23",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "10629:89:23"
},
"returnParameters": {
"id": 31178,
"nodeType": "ParameterList",
"parameters": [],
"src": "10740:0:23"
},
"scope": 32215,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 31371,
"nodeType": "FunctionDefinition",
"src": "11442:903:23",
"nodes": [],
"body": {
"id": 31370,
"nodeType": "Block",
"src": "11577:768:23",
"nodes": [],
"statements": [
{
"assignments": [
31281
],
"declarations": [
{
"constant": false,
"id": 31281,
"mutability": "mutable",
"name": "id",
"nameLocation": "11590:2:23",
"nodeType": "VariableDeclaration",
"scope": 31370,
"src": "11587:5:23",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
},
"typeName": {
"id": 31280,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 31279,
"name": "Id",
"nameLocations": [
"11587:2:23"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 32254,
"src": "11587:2:23"
},
"referencedDeclaration": 32254,
"src": "11587:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"visibility": "internal"
}
],
"id": 31285,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 31282,
"name": "marketParams",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31270,
"src": "11595:12:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MarketParams_$32265_memory_ptr",
"typeString": "struct MarketParams memory"
}
},
"id": 31283,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "11608:2:23",
"memberName": "id",
"nodeType": "MemberAccess",
"referencedDeclaration": 32994,
"src": "11595:15:23",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_struct$_MarketParams_$32265_memory_ptr_$returns$_t_userDefinedValueType$_Id_$32254_$attached_to$_t_struct$_MarketParams_$32265_memory_ptr_$",
"typeString": "function (struct MarketParams memory) pure returns (Id)"
}
},
"id": 31284,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "11595:17:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "11587:25:23"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
},
"id": 31292,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"baseExpression": {
"id": 31287,
"name": "market",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30129,
"src": "11630:6:23",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Id_$32254_$_t_struct$_Market_$32285_storage_$",
"typeString": "mapping(Id => struct Market storage ref)"
}
},
"id": 31289,
"indexExpression": {
"id": 31288,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31281,
"src": "11637:2:23",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Id_$32254",
"typeString": "Id"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "11630:10:23",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Market_$32285_storage",
"typeString": "struct Market storage ref"
}
},
"id": 31290,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "11641:10:23",
"memberName": "lastUpdate",
"nodeType": "MemberAccess",
"referencedDeclaration": 32282,
"src": "11630:21:23",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"hexValue": "30",
"id": 31291,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "11655:1:23",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "11630:26:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 31293,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "11658:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 31294,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "11668:18:23",
"memberName": "MARKET_NOT_CREATED",
"nodeType": "MemberAccess",
"referencedDeclaration": 32734,
"src": "11658:28:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 31286,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "11622:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 31295,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "11622:65:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 31296,
"nodeType": "ExpressionStatement",
"src": "11622:65:23"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 31300,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 31298,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31272,
"src": "11705:6:23",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"hexValue": "30",
"id": 31299,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "11715:1:23",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "11705:11:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 31301,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "11718:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 31302,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "11728:11:23",
"memberName": "ZERO_ASSETS",
"nodeType": "MemberAccess",
"referencedDeclaration": 32742,
"src": "11718:21:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 31297,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "11697:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 31303,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "11697:43:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 31304,
"nodeType": "ExpressionStatement",
"src": "11697:43:23"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 31311,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 31306,
"name": "receiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31276,
"src": "11850:8:23",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 31309,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "11870:1:23",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 31308,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "11862:7:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 31307,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "11862:7:23",
"typeDescriptions": {}
}
},
"id": 31310,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "11862:10:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "11850:22:23",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 31312,
"name": "ErrorsLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32787,
"src": "11874:9:23",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ErrorsLib_$32787_$",
"typeString": "type(library ErrorsLib)"
}
},
"id": 31313,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "11884:12:23",
"memberName": "ZERO_ADDRESS",
"nodeType": "MemberAccess",
"referencedDeclaration": 32746,
"src": "11874:22:23",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 31305,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "11842:7:23",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 31314,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "11842:55:23",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 31315,
"nodeType": "ExpressionStatement",
"src": "11842:55:23"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"id": 31318,
"name": "onBehalf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31274,
"src": "11935:8:23",
"typ
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment