From 64d7c81a75969ebd7ba11ffd7ee680c936e00086 Mon Sep 17 00:00:00 2001 From: zhl Date: Tue, 18 Apr 2023 17:47:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=A9=BA=E6=8A=95=E5=90=88?= =?UTF-8?q?=E7=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/contracts/NftDistributor.json | 14808 ++++++++++++++++++++++++++ contracts/interfaces/IBEERC721.sol | 2 + contracts/logic/NftDistributor.sol | 164 + 3 files changed, 14974 insertions(+) create mode 100644 build/contracts/NftDistributor.json create mode 100644 contracts/logic/NftDistributor.sol diff --git a/build/contracts/NftDistributor.json b/build/contracts/NftDistributor.json new file mode 100644 index 0000000..9c45715 --- /dev/null +++ b/build/contracts/NftDistributor.json @@ -0,0 +1,14808 @@ +{ + "contractName": "NftDistributor", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_nftTarget", + "type": "address" + }, + { + "internalType": "address", + "name": "_nftSource", + "type": "address" + }, + { + "internalType": "address", + "name": "_manageAddress", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "nft", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "nftSIds", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "nftTIds", + "type": "uint256[]" + } + ], + "name": "Minted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "inputs": [], + "name": "ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MANAGE_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nft", + "outputs": [ + { + "internalType": "contract IBEERC721", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "nftMinted", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "ownerToNFTs", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "source", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "_nftIds", + "type": "uint256[]" + } + ], + "name": "mintToUser", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "_nftIds", + "type": "uint256[]" + } + ], + "name": "addNFTData", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "getMintableCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_nftTarget\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_nftSource\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_manageAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"nft\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"nftSIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"nftTIds\",\"type\":\"uint256[]\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MANAGE_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_nftIds\",\"type\":\"uint256[]\"}],\"name\":\"addNFTData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getMintableCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_nftIds\",\"type\":\"uint256[]\"}],\"name\":\"mintToUser\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nft\",\"outputs\":[{\"internalType\":\"contract IBEERC721\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"nftMinted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"ownerToNFTs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"source\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addNFTData(address,uint256[])\":{\"details\":\"The addNFTData function adds an array of NFT IDs to the list of NFT IDs owned by a user. mintToUser method would check if target user had permission to mint NFTs. Only functions called by an address with the MANAGE_ROLE permission can access this function. The function takes in the address of the user and an array of NFT IDs. It then loops through the array of NFT IDs, and adds each one to the end of the array of NFTs owned by that user to update their ownership data.\",\"params\":{\"_nftIds\":\"- An array of NFT IDs being added to the user's NFT data\",\"_user\":\"- The address of the user being updated with new NFT data\"}},\"constructor\":{\"details\":\"Contract constructor. Initializes the contract with the specified addresses and sets the admin and management roles. Parameters: - _nftTarget: The address of NFT that will be minted by this contract. Need MINTER_ROLE - _nftSource: The address of the source NFT that will check if user has mint permission. - _manageAddress: The address that will have the MANAGE_ROLE assigned.\"},\"getMintableCount(address)\":{\"details\":\"The getMintableCount function gets the number of NFTs owned by a user that have not yet been minted. This is a read-only function, meaning it doesn't modify the state of the blockchain. It takes in the address of the user whose mintable count is being determined, and returns the number of NFTs owned by the user that have not yet been minted.\",\"params\":{\"_user\":\"- The address of the user whose mintable count is being determined\"},\"returns\":{\"_0\":\"count - The number of NFTs owned by the user that have not yet been minted\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"mintToUser(address,uint256[])\":{\"details\":\"The mintToUser function mints NFTs to a given user. Only functions called by an address with the MANAGE_ROLE permission can access this function. The function takes an array of nftIds and checks that there are enough mintable NFTs for the user. It then loops through the user's owned NFTs, checking if each is mintable, and if so, adds it to a list to be minted. Then it emits the Minted event with details of the operation.\",\"params\":{\"_nftIds\":\"- An array of the IDs for the NFTs being minted\",\"_user\":\"- The address of the user receiving the NFTs\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/logic/NftDistributor.sol\":\"NftDistributor\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x4a1a0ba12bf1a33f10d9fe226278cf59675c0b929d29e4da99658a079b27fb84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bda1319db846d6d6f92d8a57a9bdee8bde1dc39aa7546165791692c24dd6f30a\",\"dweb:/ipfs/Qma5oZ7DmbdAjd8mpiW7mx896PDtwsQtCQ2hj9Upf7b7JK\"]},\"@openzeppelin/contracts/access/AccessControlEnumerable.sol\":{\"keccak256\":\"0x13f5e15f2a0650c0b6aaee2ef19e89eaf4870d6e79662d572a393334c1397247\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ee05f28f549a5d6515e152580716b87636ed4bfab9812499a6e3803df88288b\",\"dweb:/ipfs/QmeEnhdwY1t5Y3YU5a4ffzgXuToydH2PNdNxV9W7dEPRQJ\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/access/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xba4459ab871dfa300f5212c6c30178b63898c03533a1ede28436f11546626676\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dcc7b09bfa6e18aab262ca372f4a9b1fc82e294b430706a4e1378cf58e6a276\",\"dweb:/ipfs/QmT8oSAcesdctR15HMLhr2a1HRpXymxdjTfdtfTYJcj2N2\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x516a22876c1fab47f49b1bc22b4614491cd05338af8bd2e7b382da090a079990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a439187f7126d31add4557f82d8aed6be0162007cd7182c48fd934dbab8f3849\",\"dweb:/ipfs/QmRPLguRFvrRJS7r6F1bcLvsx6q1VrgjEpZafyeL8D7xZh\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x32c202bd28995dd20c4347b7c6467a6d3241c74c8ad3edcbb610cd9205916c45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8179c356adb19e70d6b31a1eedc8c5c7f0c00e669e2540f4099e3844c6074d30\",\"dweb:/ipfs/QmWFbivarEobbqhS1go64ootVuHfVohBseerYy9FTEd1W2\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9772845c886f87a3aab315f8d6b68aa599027c20f441b131cd4afaf65b588900\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad2f29a9c17a4f746416c9e254e17671f43c409dbfa6e4d7d76c3e4a83212d31\",\"dweb:/ipfs/QmTqU65L6iu6yqmXKzcNLPioR8etzKPWycpDJCm17ifVdS\"]},\"project:/contracts/interfaces/IBEERC721.sol\":{\"keccak256\":\"0x41e372150274c8f64d1b7fcd047067ad2f8ad75742985b7b39bf3a58492a817d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15dd6b75bc85926688f51d606c9581f90a275bbc1ce8acdd01ff991ce47b0414\",\"dweb:/ipfs/Qmennh7yJUU6tpbNYAWVpr8qz3gfqSbji5UrU8ooLg1qw4\"]},\"project:/contracts/logic/NftDistributor.sol\":{\"keccak256\":\"0x9600771b2f937bf26c080e6cf8e1933b566f92fa430ad619988f89c81bafdc9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc29f523cf79c5d9645dfa369de050dddae4c640b485a78df5666f09faaf660f\",\"dweb:/ipfs/QmbBXgzKNCpeUAAkEoXfgH1DNpy5AH2tvT7JkLR3WPP9Gb\"]}},\"version\":1}", + "bytecode": "0x60806040523480156200001157600080fd5b50604051620025f8380380620025f883398181016040528101906200003791906200056d565b620000697fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177580620001eb60201b60201c565b620000bb7fa076a07f65bcd51bcb15a0f01a65bc18f2d922acb81bcfd8af4caf5adb5570917fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775620001eb60201b60201c565b620000fc7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775620000f06200024e60201b60201c565b6200025660201b60201c565b6200012e7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775306200025660201b60201c565b620001607fa076a07f65bcd51bcb15a0f01a65bc18f2d922acb81bcfd8af4caf5adb557091826200025660201b60201c565b82600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050620005c9565b6000620001fe836200026c60201b60201c565b905081600080858152602001908152602001600020600101819055508181847fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff60405160405180910390a4505050565b600033905090565b6200026882826200028b60201b60201c565b5050565b6000806000838152602001908152602001600020600101549050919050565b620002a28282620002d360201b62000c201760201c565b620002ce8160016000858152602001908152602001600020620003c460201b62000d001790919060201c565b505050565b620002e58282620003fc60201b60201c565b620003c057600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620003656200024e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000620003f4836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6200046660201b60201c565b905092915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60006200047a8383620004e060201b60201c565b620004d5578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050620004da565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620005358262000508565b9050919050565b620005478162000528565b81146200055357600080fd5b50565b60008151905062000567816200053c565b92915050565b60008060006060848603121562000589576200058862000503565b5b6000620005998682870162000556565b9350506020620005ac8682870162000556565b9250506040620005bf8682870162000556565b9150509250925092565b61201f80620005d96000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806375b238fc116100a2578063a217fddf11610071578063a217fddf146102f3578063ad0f93ad14610311578063ca15c87314610341578063d547741f14610371578063ffd68f151461038d57610116565b806375b238fc1461025957806384be00e4146102775780639010d07c1461029357806391d14854146102c357610116565b806336136433116100e957806336136433146101c757806336568abe146101e357806347ccca02146101ff57806360a4b76a1461021d57806367e828bf1461023b57610116565b806301ffc9a71461011b5780630431f2051461014b578063248a9ca31461017b5780632f2ff15d146101ab575b600080fd5b610135600480360381019061013091906114e2565b6103bd565b604051610142919061152a565b60405180910390f35b610165600480360381019061016091906115a3565b610437565b60405161017291906115e9565b60405180910390f35b6101956004803603810190610190919061163a565b610549565b6040516101a29190611676565b60405180910390f35b6101c560048036038101906101c09190611691565b610568565b005b6101e160048036038101906101dc9190611736565b610591565b005b6101fd60048036038101906101f89190611691565b6108f4565b005b610207610977565b60405161021491906117f5565b60405180910390f35b61022561099d565b6040516102329190611676565b60405180910390f35b6102436109c1565b604051610250919061181f565b60405180910390f35b6102616109e7565b60405161026e9190611676565b60405180910390f35b610291600480360381019061028c9190611736565b610a0b565b005b6102ad60048036038101906102a89190611866565b610ae2565b6040516102ba919061181f565b60405180910390f35b6102dd60048036038101906102d89190611691565b610b11565b6040516102ea919061152a565b60405180910390f35b6102fb610b7b565b6040516103089190611676565b60405180910390f35b61032b600480360381019061032691906118a6565b610b82565b60405161033891906115e9565b60405180910390f35b61035b6004803603810190610356919061163a565b610bb3565b60405161036891906115e9565b60405180910390f35b61038b60048036038101906103869190611691565b610bd7565b005b6103a760048036038101906103a291906118e6565b610c00565b6040516103b4919061152a565b60405180910390f35b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610430575061042f82610d30565b5b9050919050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156104c357602002820191906000526020600020905b8154815260200190600101908083116104af575b505050505090506000805b825181101561053e5760008382815181106104ec576104eb611913565b5b602002602001015190506003600082815260200190815260200160002060009054906101000a900460ff1661052a57828061052690611971565b9350505b50808061053690611971565b9150506104ce565b508092505050919050565b6000806000838152602001908152602001600020600101549050919050565b61057182610549565b6105828161057d610daa565b610db2565b61058c8383610e4f565b505050565b6105c27fa076a07f65bcd51bcb15a0f01a65bc18f2d922acb81bcfd8af4caf5adb5570916105bd610daa565b610db2565b6105cb83610437565b828290501115610610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060790611a17565b60405180910390fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561069b57602002820191906000526020600020905b815481526020019060010190808311610687575b505050505090506000808484905067ffffffffffffffff8111156106c2576106c1611a37565b5b6040519080825280602002602001820160405280156106f05781602001602082028036833780820191505090505b50905060005b835181101561086057600084828151811061071457610713611913565b5b602002602001015190506003600082815260200190815260200160002060009054906101000a900460ff1661084c57600087878681811061075857610757611913565b5b905060200201359050848061076c90611971565b95505060016003600084815260200190815260200160002060006101000a81548160ff021916908315150217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f198a836040518363ffffffff1660e01b81526004016107f8929190611a66565b600060405180830381600087803b15801561081257600080fd5b505af1158015610826573d6000803e3d6000fd5b505050508184868151811061083e5761083d611913565b5b602002602001018181525050505b50808061085890611971565b9150506106f6565b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f044ffb6dcd4ec715d7d57b6c88fa43e63f1e156efb2a93d1072314f910286e9d8388886040516108e493929190611bbd565b60405180910390a3505050505050565b6108fc610daa565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096090611c68565b60405180910390fd5b6109738282610e83565b5050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7fa076a07f65bcd51bcb15a0f01a65bc18f2d922acb81bcfd8af4caf5adb55709181565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b610a3c7fa076a07f65bcd51bcb15a0f01a65bc18f2d922acb81bcfd8af4caf5adb557091610a37610daa565b610db2565b60005b82829050811015610adc57600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838383818110610a9c57610a9b611913565b5b9050602002013590806001815401808255809150506001900390600052602060002001600090919091909150558080610ad490611971565b915050610a3f565b50505050565b6000610b098260016000868152602001908152602001600020610eb790919063ffffffff16565b905092915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b81565b60026020528160005260406000208181548110610b9e57600080fd5b90600052602060002001600091509150505481565b6000610bd060016000848152602001908152602001600020610ed1565b9050919050565b610be082610549565b610bf181610bec610daa565b610db2565b610bfb8383610e83565b505050565b60036020528060005260406000206000915054906101000a900460ff1681565b610c2a8282610b11565b610cfc57600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610ca1610daa565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000610d28836000018373ffffffffffffffffffffffffffffffffffffffff1660001b610ee6565b905092915050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610da35750610da282610f56565b5b9050919050565b600033905090565b610dbc8282610b11565b610e4b57610de18173ffffffffffffffffffffffffffffffffffffffff166014610fc0565b610def8360001c6020610fc0565b604051602001610e00929190611d9a565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e429190611e1e565b60405180910390fd5b5050565b610e598282610c20565b610e7e8160016000858152602001908152602001600020610d0090919063ffffffff16565b505050565b610e8d82826111fc565b610eb281600160008581526020019081526020016000206112dd90919063ffffffff16565b505050565b6000610ec6836000018361130d565b60001c905092915050565b6000610edf82600001611338565b9050919050565b6000610ef28383611349565b610f4b578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050610f50565b600090505b92915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b606060006002836002610fd39190611e40565b610fdd9190611e9a565b67ffffffffffffffff811115610ff657610ff5611a37565b5b6040519080825280601f01601f1916602001820160405280156110285781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106110605761105f611913565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106110c4576110c3611913565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026111049190611e40565b61110e9190611e9a565b90505b60018111156111ae577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106111505761114f611913565b5b1a60f81b82828151811061116757611166611913565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806111a790611ef0565b9050611111565b50600084146111f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e990611f66565b60405180910390fd5b8091505092915050565b6112068282610b11565b156112d957600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061127e610daa565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000611305836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61136c565b905092915050565b600082600001828154811061132557611324611913565b5b9060005260206000200154905092915050565b600081600001805490509050919050565b600080836001016000848152602001908152602001600020541415905092915050565b6000808360010160008481526020019081526020016000205490506000811461147457600060018261139e9190611f86565b90506000600186600001805490506113b69190611f86565b90508181146114255760008660000182815481106113d7576113d6611913565b5b90600052602060002001549050808760000184815481106113fb576113fa611913565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b8560000180548061143957611438611fba565b5b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061147a565b60009150505b92915050565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6114bf8161148a565b81146114ca57600080fd5b50565b6000813590506114dc816114b6565b92915050565b6000602082840312156114f8576114f7611480565b5b6000611506848285016114cd565b91505092915050565b60008115159050919050565b6115248161150f565b82525050565b600060208201905061153f600083018461151b565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061157082611545565b9050919050565b61158081611565565b811461158b57600080fd5b50565b60008135905061159d81611577565b92915050565b6000602082840312156115b9576115b8611480565b5b60006115c78482850161158e565b91505092915050565b6000819050919050565b6115e3816115d0565b82525050565b60006020820190506115fe60008301846115da565b92915050565b6000819050919050565b61161781611604565b811461162257600080fd5b50565b6000813590506116348161160e565b92915050565b6000602082840312156116505761164f611480565b5b600061165e84828501611625565b91505092915050565b61167081611604565b82525050565b600060208201905061168b6000830184611667565b92915050565b600080604083850312156116a8576116a7611480565b5b60006116b685828601611625565b92505060206116c78582860161158e565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f8401126116f6576116f56116d1565b5b8235905067ffffffffffffffff811115611713576117126116d6565b5b60208301915083602082028301111561172f5761172e6116db565b5b9250929050565b60008060006040848603121561174f5761174e611480565b5b600061175d8682870161158e565b935050602084013567ffffffffffffffff81111561177e5761177d611485565b5b61178a868287016116e0565b92509250509250925092565b6000819050919050565b60006117bb6117b66117b184611545565b611796565b611545565b9050919050565b60006117cd826117a0565b9050919050565b60006117df826117c2565b9050919050565b6117ef816117d4565b82525050565b600060208201905061180a60008301846117e6565b92915050565b61181981611565565b82525050565b60006020820190506118346000830184611810565b92915050565b611843816115d0565b811461184e57600080fd5b50565b6000813590506118608161183a565b92915050565b6000806040838503121561187d5761187c611480565b5b600061188b85828601611625565b925050602061189c85828601611851565b9150509250929050565b600080604083850312156118bd576118bc611480565b5b60006118cb8582860161158e565b92505060206118dc85828601611851565b9150509250929050565b6000602082840312156118fc576118fb611480565b5b600061190a84828501611851565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061197c826115d0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156119af576119ae611942565b5b600182019050919050565b600082825260208201905092915050565b7f4d696e7461626c6520636f756e74206973206e6f7420656e6f75676800000000600082015250565b6000611a01601c836119ba565b9150611a0c826119cb565b602082019050919050565b60006020820190508181036000830152611a30816119f4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000604082019050611a7b6000830185611810565b611a8860208301846115da565b9392505050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611ac4816115d0565b82525050565b6000611ad68383611abb565b60208301905092915050565b6000602082019050919050565b6000611afa82611a8f565b611b048185611a9a565b9350611b0f83611aab565b8060005b83811015611b40578151611b278882611aca565b9750611b3283611ae2565b925050600181019050611b13565b5085935050505092915050565b600080fd5b82818337600083830152505050565b6000611b6d8385611a9a565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115611ba057611b9f611b4d565b5b602083029250611bb1838584611b52565b82840190509392505050565b60006040820190508181036000830152611bd78186611aef565b90508181036020830152611bec818486611b61565b9050949350505050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000611c52602f836119ba565b9150611c5d82611bf6565b604082019050919050565b60006020820190508181036000830152611c8181611c45565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000611cc9601783611c88565b9150611cd482611c93565b601782019050919050565b600081519050919050565b60005b83811015611d08578082015181840152602081019050611ced565b83811115611d17576000848401525b50505050565b6000611d2882611cdf565b611d328185611c88565b9350611d42818560208601611cea565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000611d84601183611c88565b9150611d8f82611d4e565b601182019050919050565b6000611da582611cbc565b9150611db18285611d1d565b9150611dbc82611d77565b9150611dc88284611d1d565b91508190509392505050565b6000601f19601f8301169050919050565b6000611df082611cdf565b611dfa81856119ba565b9350611e0a818560208601611cea565b611e1381611dd4565b840191505092915050565b60006020820190508181036000830152611e388184611de5565b905092915050565b6000611e4b826115d0565b9150611e56836115d0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611e8f57611e8e611942565b5b828202905092915050565b6000611ea5826115d0565b9150611eb0836115d0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611ee557611ee4611942565b5b828201905092915050565b6000611efb826115d0565b91506000821415611f0f57611f0e611942565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000611f506020836119ba565b9150611f5b82611f1a565b602082019050919050565b60006020820190508181036000830152611f7f81611f43565b9050919050565b6000611f91826115d0565b9150611f9c836115d0565b925082821015611faf57611fae611942565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212201957a7ce796dcee0223bfd51d57dbbaab2ef8022e12c29e416f4c0c78d8380a764736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c806375b238fc116100a2578063a217fddf11610071578063a217fddf146102f3578063ad0f93ad14610311578063ca15c87314610341578063d547741f14610371578063ffd68f151461038d57610116565b806375b238fc1461025957806384be00e4146102775780639010d07c1461029357806391d14854146102c357610116565b806336136433116100e957806336136433146101c757806336568abe146101e357806347ccca02146101ff57806360a4b76a1461021d57806367e828bf1461023b57610116565b806301ffc9a71461011b5780630431f2051461014b578063248a9ca31461017b5780632f2ff15d146101ab575b600080fd5b610135600480360381019061013091906114e2565b6103bd565b604051610142919061152a565b60405180910390f35b610165600480360381019061016091906115a3565b610437565b60405161017291906115e9565b60405180910390f35b6101956004803603810190610190919061163a565b610549565b6040516101a29190611676565b60405180910390f35b6101c560048036038101906101c09190611691565b610568565b005b6101e160048036038101906101dc9190611736565b610591565b005b6101fd60048036038101906101f89190611691565b6108f4565b005b610207610977565b60405161021491906117f5565b60405180910390f35b61022561099d565b6040516102329190611676565b60405180910390f35b6102436109c1565b604051610250919061181f565b60405180910390f35b6102616109e7565b60405161026e9190611676565b60405180910390f35b610291600480360381019061028c9190611736565b610a0b565b005b6102ad60048036038101906102a89190611866565b610ae2565b6040516102ba919061181f565b60405180910390f35b6102dd60048036038101906102d89190611691565b610b11565b6040516102ea919061152a565b60405180910390f35b6102fb610b7b565b6040516103089190611676565b60405180910390f35b61032b600480360381019061032691906118a6565b610b82565b60405161033891906115e9565b60405180910390f35b61035b6004803603810190610356919061163a565b610bb3565b60405161036891906115e9565b60405180910390f35b61038b60048036038101906103869190611691565b610bd7565b005b6103a760048036038101906103a291906118e6565b610c00565b6040516103b4919061152a565b60405180910390f35b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610430575061042f82610d30565b5b9050919050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156104c357602002820191906000526020600020905b8154815260200190600101908083116104af575b505050505090506000805b825181101561053e5760008382815181106104ec576104eb611913565b5b602002602001015190506003600082815260200190815260200160002060009054906101000a900460ff1661052a57828061052690611971565b9350505b50808061053690611971565b9150506104ce565b508092505050919050565b6000806000838152602001908152602001600020600101549050919050565b61057182610549565b6105828161057d610daa565b610db2565b61058c8383610e4f565b505050565b6105c27fa076a07f65bcd51bcb15a0f01a65bc18f2d922acb81bcfd8af4caf5adb5570916105bd610daa565b610db2565b6105cb83610437565b828290501115610610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060790611a17565b60405180910390fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561069b57602002820191906000526020600020905b815481526020019060010190808311610687575b505050505090506000808484905067ffffffffffffffff8111156106c2576106c1611a37565b5b6040519080825280602002602001820160405280156106f05781602001602082028036833780820191505090505b50905060005b835181101561086057600084828151811061071457610713611913565b5b602002602001015190506003600082815260200190815260200160002060009054906101000a900460ff1661084c57600087878681811061075857610757611913565b5b905060200201359050848061076c90611971565b95505060016003600084815260200190815260200160002060006101000a81548160ff021916908315150217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f198a836040518363ffffffff1660e01b81526004016107f8929190611a66565b600060405180830381600087803b15801561081257600080fd5b505af1158015610826573d6000803e3d6000fd5b505050508184868151811061083e5761083d611913565b5b602002602001018181525050505b50808061085890611971565b9150506106f6565b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f044ffb6dcd4ec715d7d57b6c88fa43e63f1e156efb2a93d1072314f910286e9d8388886040516108e493929190611bbd565b60405180910390a3505050505050565b6108fc610daa565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096090611c68565b60405180910390fd5b6109738282610e83565b5050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7fa076a07f65bcd51bcb15a0f01a65bc18f2d922acb81bcfd8af4caf5adb55709181565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b610a3c7fa076a07f65bcd51bcb15a0f01a65bc18f2d922acb81bcfd8af4caf5adb557091610a37610daa565b610db2565b60005b82829050811015610adc57600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838383818110610a9c57610a9b611913565b5b9050602002013590806001815401808255809150506001900390600052602060002001600090919091909150558080610ad490611971565b915050610a3f565b50505050565b6000610b098260016000868152602001908152602001600020610eb790919063ffffffff16565b905092915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b81565b60026020528160005260406000208181548110610b9e57600080fd5b90600052602060002001600091509150505481565b6000610bd060016000848152602001908152602001600020610ed1565b9050919050565b610be082610549565b610bf181610bec610daa565b610db2565b610bfb8383610e83565b505050565b60036020528060005260406000206000915054906101000a900460ff1681565b610c2a8282610b11565b610cfc57600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610ca1610daa565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000610d28836000018373ffffffffffffffffffffffffffffffffffffffff1660001b610ee6565b905092915050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610da35750610da282610f56565b5b9050919050565b600033905090565b610dbc8282610b11565b610e4b57610de18173ffffffffffffffffffffffffffffffffffffffff166014610fc0565b610def8360001c6020610fc0565b604051602001610e00929190611d9a565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e429190611e1e565b60405180910390fd5b5050565b610e598282610c20565b610e7e8160016000858152602001908152602001600020610d0090919063ffffffff16565b505050565b610e8d82826111fc565b610eb281600160008581526020019081526020016000206112dd90919063ffffffff16565b505050565b6000610ec6836000018361130d565b60001c905092915050565b6000610edf82600001611338565b9050919050565b6000610ef28383611349565b610f4b578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050610f50565b600090505b92915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b606060006002836002610fd39190611e40565b610fdd9190611e9a565b67ffffffffffffffff811115610ff657610ff5611a37565b5b6040519080825280601f01601f1916602001820160405280156110285781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106110605761105f611913565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106110c4576110c3611913565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026111049190611e40565b61110e9190611e9a565b90505b60018111156111ae577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106111505761114f611913565b5b1a60f81b82828151811061116757611166611913565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806111a790611ef0565b9050611111565b50600084146111f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e990611f66565b60405180910390fd5b8091505092915050565b6112068282610b11565b156112d957600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061127e610daa565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000611305836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61136c565b905092915050565b600082600001828154811061132557611324611913565b5b9060005260206000200154905092915050565b600081600001805490509050919050565b600080836001016000848152602001908152602001600020541415905092915050565b6000808360010160008481526020019081526020016000205490506000811461147457600060018261139e9190611f86565b90506000600186600001805490506113b69190611f86565b90508181146114255760008660000182815481106113d7576113d6611913565b5b90600052602060002001549050808760000184815481106113fb576113fa611913565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b8560000180548061143957611438611fba565b5b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061147a565b60009150505b92915050565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6114bf8161148a565b81146114ca57600080fd5b50565b6000813590506114dc816114b6565b92915050565b6000602082840312156114f8576114f7611480565b5b6000611506848285016114cd565b91505092915050565b60008115159050919050565b6115248161150f565b82525050565b600060208201905061153f600083018461151b565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061157082611545565b9050919050565b61158081611565565b811461158b57600080fd5b50565b60008135905061159d81611577565b92915050565b6000602082840312156115b9576115b8611480565b5b60006115c78482850161158e565b91505092915050565b6000819050919050565b6115e3816115d0565b82525050565b60006020820190506115fe60008301846115da565b92915050565b6000819050919050565b61161781611604565b811461162257600080fd5b50565b6000813590506116348161160e565b92915050565b6000602082840312156116505761164f611480565b5b600061165e84828501611625565b91505092915050565b61167081611604565b82525050565b600060208201905061168b6000830184611667565b92915050565b600080604083850312156116a8576116a7611480565b5b60006116b685828601611625565b92505060206116c78582860161158e565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f8401126116f6576116f56116d1565b5b8235905067ffffffffffffffff811115611713576117126116d6565b5b60208301915083602082028301111561172f5761172e6116db565b5b9250929050565b60008060006040848603121561174f5761174e611480565b5b600061175d8682870161158e565b935050602084013567ffffffffffffffff81111561177e5761177d611485565b5b61178a868287016116e0565b92509250509250925092565b6000819050919050565b60006117bb6117b66117b184611545565b611796565b611545565b9050919050565b60006117cd826117a0565b9050919050565b60006117df826117c2565b9050919050565b6117ef816117d4565b82525050565b600060208201905061180a60008301846117e6565b92915050565b61181981611565565b82525050565b60006020820190506118346000830184611810565b92915050565b611843816115d0565b811461184e57600080fd5b50565b6000813590506118608161183a565b92915050565b6000806040838503121561187d5761187c611480565b5b600061188b85828601611625565b925050602061189c85828601611851565b9150509250929050565b600080604083850312156118bd576118bc611480565b5b60006118cb8582860161158e565b92505060206118dc85828601611851565b9150509250929050565b6000602082840312156118fc576118fb611480565b5b600061190a84828501611851565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061197c826115d0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156119af576119ae611942565b5b600182019050919050565b600082825260208201905092915050565b7f4d696e7461626c6520636f756e74206973206e6f7420656e6f75676800000000600082015250565b6000611a01601c836119ba565b9150611a0c826119cb565b602082019050919050565b60006020820190508181036000830152611a30816119f4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000604082019050611a7b6000830185611810565b611a8860208301846115da565b9392505050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611ac4816115d0565b82525050565b6000611ad68383611abb565b60208301905092915050565b6000602082019050919050565b6000611afa82611a8f565b611b048185611a9a565b9350611b0f83611aab565b8060005b83811015611b40578151611b278882611aca565b9750611b3283611ae2565b925050600181019050611b13565b5085935050505092915050565b600080fd5b82818337600083830152505050565b6000611b6d8385611a9a565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115611ba057611b9f611b4d565b5b602083029250611bb1838584611b52565b82840190509392505050565b60006040820190508181036000830152611bd78186611aef565b90508181036020830152611bec818486611b61565b9050949350505050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000611c52602f836119ba565b9150611c5d82611bf6565b604082019050919050565b60006020820190508181036000830152611c8181611c45565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000611cc9601783611c88565b9150611cd482611c93565b601782019050919050565b600081519050919050565b60005b83811015611d08578082015181840152602081019050611ced565b83811115611d17576000848401525b50505050565b6000611d2882611cdf565b611d328185611c88565b9350611d42818560208601611cea565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000611d84601183611c88565b9150611d8f82611d4e565b601182019050919050565b6000611da582611cbc565b9150611db18285611d1d565b9150611dbc82611d77565b9150611dc88284611d1d565b91508190509392505050565b6000601f19601f8301169050919050565b6000611df082611cdf565b611dfa81856119ba565b9350611e0a818560208601611cea565b611e1381611dd4565b840191505092915050565b60006020820190508181036000830152611e388184611de5565b905092915050565b6000611e4b826115d0565b9150611e56836115d0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611e8f57611e8e611942565b5b828202905092915050565b6000611ea5826115d0565b9150611eb0836115d0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611ee557611ee4611942565b5b828201905092915050565b6000611efb826115d0565b91506000821415611f0f57611f0e611942565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000611f506020836119ba565b9150611f5b82611f1a565b602082019050919050565b60006020820190508181036000830152611f7f81611f43565b9050919050565b6000611f91826115d0565b9150611f9c836115d0565b925082821015611faf57611fae611942565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212201957a7ce796dcee0223bfd51d57dbbaab2ef8022e12c29e416f4c0c78d8380a764736f6c634300080a0033", + "immutableReferences": {}, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:1511:12", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "47:35:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "57:19:12", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "73:2:12", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "67:5:12" + }, + "nodeType": "YulFunctionCall", + "src": "67:9:12" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "57:6:12" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "40:6:12", + "type": "" + } + ], + "src": "7:75:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "177:28:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "194:1:12", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "197:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "187:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "187:12:12" + }, + "nodeType": "YulExpressionStatement", + "src": "187:12:12" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "88:117:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "300:28:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "317:1:12", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "320:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "310:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "310:12:12" + }, + "nodeType": "YulExpressionStatement", + "src": "310:12:12" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "211:117:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "379:81:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "389:65:12", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "404:5:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "411:42:12", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "400:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "400:54:12" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "389:7:12" + } + ] + } + ] + }, + "name": "cleanup_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "361:5:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "371:7:12", + "type": "" + } + ], + "src": "334:126:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "511:51:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "521:35:12", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "550:5:12" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "532:17:12" + }, + "nodeType": "YulFunctionCall", + "src": "532:24:12" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "521:7:12" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "493:5:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "503:7:12", + "type": "" + } + ], + "src": "466:96:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "611:79:12", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "668:16:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "677:1:12", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "680:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "670:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "670:12:12" + }, + "nodeType": "YulExpressionStatement", + "src": "670:12:12" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "634:5:12" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "659:5:12" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "641:17:12" + }, + "nodeType": "YulFunctionCall", + "src": "641:24:12" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "631:2:12" + }, + "nodeType": "YulFunctionCall", + "src": "631:35:12" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "624:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "624:43:12" + }, + "nodeType": "YulIf", + "src": "621:63:12" + } + ] + }, + "name": "validator_revert_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "604:5:12", + "type": "" + } + ], + "src": "568:122:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "759:80:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "769:22:12", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "784:6:12" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "778:5:12" + }, + "nodeType": "YulFunctionCall", + "src": "778:13:12" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "769:5:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "827:5:12" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "800:26:12" + }, + "nodeType": "YulFunctionCall", + "src": "800:33:12" + }, + "nodeType": "YulExpressionStatement", + "src": "800:33:12" + } + ] + }, + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "737:6:12", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "745:3:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "753:5:12", + "type": "" + } + ], + "src": "696:143:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "956:552:12", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1002:83:12", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "1004:77:12" + }, + "nodeType": "YulFunctionCall", + "src": "1004:79:12" + }, + "nodeType": "YulExpressionStatement", + "src": "1004:79:12" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "977:7:12" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "986:9:12" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "973:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "973:23:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "998:2:12", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "969:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "969:32:12" + }, + "nodeType": "YulIf", + "src": "966:119:12" + }, + { + "nodeType": "YulBlock", + "src": "1095:128:12", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1110:15:12", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1124:1:12", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1114:6:12", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1139:74:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1185:9:12" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1196:6:12" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1181:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "1181:22:12" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1205:7:12" + } + ], + "functionName": { + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "1149:31:12" + }, + "nodeType": "YulFunctionCall", + "src": "1149:64:12" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1139:6:12" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "1233:129:12", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1248:16:12", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1262:2:12", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1252:6:12", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1278:74:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1324:9:12" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1335:6:12" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1320:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "1320:22:12" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1344:7:12" + } + ], + "functionName": { + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "1288:31:12" + }, + "nodeType": "YulFunctionCall", + "src": "1288:64:12" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1278:6:12" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "1372:129:12", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1387:16:12", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1401:2:12", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1391:6:12", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1417:74:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1463:9:12" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1474:6:12" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1459:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "1459:22:12" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1483:7:12" + } + ], + "functionName": { + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "1427:31:12" + }, + "nodeType": "YulFunctionCall", + "src": "1427:64:12" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "1417:6:12" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "910:9:12", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "921:7:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "933:6:12", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "941:6:12", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "949:6:12", + "type": "" + } + ], + "src": "845:663:12" + } + ] + }, + "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_addresst_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n", + "id": 12, + "language": "Yul", + "name": "#utility.yul" + } + ], + "deployedGeneratedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:21419:12", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "47:35:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "57:19:12", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "73:2:12", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "67:5:12" + }, + "nodeType": "YulFunctionCall", + "src": "67:9:12" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "57:6:12" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "40:6:12", + "type": "" + } + ], + "src": "7:75:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "177:28:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "194:1:12", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "197:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "187:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "187:12:12" + }, + "nodeType": "YulExpressionStatement", + "src": "187:12:12" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "88:117:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "300:28:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "317:1:12", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "320:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "310:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "310:12:12" + }, + "nodeType": "YulExpressionStatement", + "src": "310:12:12" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "211:117:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "378:105:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "388:89:12", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "403:5:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "410:66:12", + "type": "", + "value": "0xffffffff00000000000000000000000000000000000000000000000000000000" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "399:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "399:78:12" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "388:7:12" + } + ] + } + ] + }, + "name": "cleanup_t_bytes4", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "360:5:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "370:7:12", + "type": "" + } + ], + "src": "334:149:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "531:78:12", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "587:16:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "596:1:12", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "599:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "589:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "589:12:12" + }, + "nodeType": "YulExpressionStatement", + "src": "589:12:12" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "554:5:12" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "578:5:12" + } + ], + "functionName": { + "name": "cleanup_t_bytes4", + "nodeType": "YulIdentifier", + "src": "561:16:12" + }, + "nodeType": "YulFunctionCall", + "src": "561:23:12" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "551:2:12" + }, + "nodeType": "YulFunctionCall", + "src": "551:34:12" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "544:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "544:42:12" + }, + "nodeType": "YulIf", + "src": "541:62:12" + } + ] + }, + "name": "validator_revert_t_bytes4", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "524:5:12", + "type": "" + } + ], + "src": "489:120:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "666:86:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "676:29:12", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "698:6:12" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "685:12:12" + }, + "nodeType": "YulFunctionCall", + "src": "685:20:12" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "676:5:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "740:5:12" + } + ], + "functionName": { + "name": "validator_revert_t_bytes4", + "nodeType": "YulIdentifier", + "src": "714:25:12" + }, + "nodeType": "YulFunctionCall", + "src": "714:32:12" + }, + "nodeType": "YulExpressionStatement", + "src": "714:32:12" + } + ] + }, + "name": "abi_decode_t_bytes4", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "644:6:12", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "652:3:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "660:5:12", + "type": "" + } + ], + "src": "615:137:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "823:262:12", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "869:83:12", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "871:77:12" + }, + "nodeType": "YulFunctionCall", + "src": "871:79:12" + }, + "nodeType": "YulExpressionStatement", + "src": "871:79:12" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "844:7:12" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "853:9:12" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "840:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "840:23:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "865:2:12", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "836:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "836:32:12" + }, + "nodeType": "YulIf", + "src": "833:119:12" + }, + { + "nodeType": "YulBlock", + "src": "962:116:12", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "977:15:12", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "991:1:12", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "981:6:12", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1006:62:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1040:9:12" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1051:6:12" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1036:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "1036:22:12" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1060:7:12" + } + ], + "functionName": { + "name": "abi_decode_t_bytes4", + "nodeType": "YulIdentifier", + "src": "1016:19:12" + }, + "nodeType": "YulFunctionCall", + "src": "1016:52:12" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1006:6:12" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes4", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "793:9:12", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "804:7:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "816:6:12", + "type": "" + } + ], + "src": "758:327:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1133:48:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1143:32:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1168:5:12" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1161:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "1161:13:12" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1154:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "1154:21:12" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "1143:7:12" + } + ] + } + ] + }, + "name": "cleanup_t_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1115:5:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "1125:7:12", + "type": "" + } + ], + "src": "1091:90:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1246:50:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "1263:3:12" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1283:5:12" + } + ], + "functionName": { + "name": "cleanup_t_bool", + "nodeType": "YulIdentifier", + "src": "1268:14:12" + }, + "nodeType": "YulFunctionCall", + "src": "1268:21:12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1256:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "1256:34:12" + }, + "nodeType": "YulExpressionStatement", + "src": "1256:34:12" + } + ] + }, + "name": "abi_encode_t_bool_to_t_bool_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1234:5:12", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "1241:3:12", + "type": "" + } + ], + "src": "1187:109:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1394:118:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1404:26:12", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1416:9:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1427:2:12", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1412:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "1412:18:12" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1404:4:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1478:6:12" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1491:9:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1502:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1487:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "1487:17:12" + } + ], + "functionName": { + "name": "abi_encode_t_bool_to_t_bool_fromStack", + "nodeType": "YulIdentifier", + "src": "1440:37:12" + }, + "nodeType": "YulFunctionCall", + "src": "1440:65:12" + }, + "nodeType": "YulExpressionStatement", + "src": "1440:65:12" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1366:9:12", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1378:6:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1389:4:12", + "type": "" + } + ], + "src": "1302:210:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1563:81:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1573:65:12", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1588:5:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1595:42:12", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1584:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "1584:54:12" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "1573:7:12" + } + ] + } + ] + }, + "name": "cleanup_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1545:5:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "1555:7:12", + "type": "" + } + ], + "src": "1518:126:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1695:51:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1705:35:12", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1734:5:12" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "1716:17:12" + }, + "nodeType": "YulFunctionCall", + "src": "1716:24:12" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "1705:7:12" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1677:5:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "1687:7:12", + "type": "" + } + ], + "src": "1650:96:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1795:79:12", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1852:16:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1861:1:12", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1864:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1854:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "1854:12:12" + }, + "nodeType": "YulExpressionStatement", + "src": "1854:12:12" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1818:5:12" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1843:5:12" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "1825:17:12" + }, + "nodeType": "YulFunctionCall", + "src": "1825:24:12" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "1815:2:12" + }, + "nodeType": "YulFunctionCall", + "src": "1815:35:12" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1808:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "1808:43:12" + }, + "nodeType": "YulIf", + "src": "1805:63:12" + } + ] + }, + "name": "validator_revert_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1788:5:12", + "type": "" + } + ], + "src": "1752:122:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1932:87:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1942:29:12", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1964:6:12" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1951:12:12" + }, + "nodeType": "YulFunctionCall", + "src": "1951:20:12" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1942:5:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2007:5:12" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "1980:26:12" + }, + "nodeType": "YulFunctionCall", + "src": "1980:33:12" + }, + "nodeType": "YulExpressionStatement", + "src": "1980:33:12" + } + ] + }, + "name": "abi_decode_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1910:6:12", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "1918:3:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1926:5:12", + "type": "" + } + ], + "src": "1880:139:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2091:263:12", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2137:83:12", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "2139:77:12" + }, + "nodeType": "YulFunctionCall", + "src": "2139:79:12" + }, + "nodeType": "YulExpressionStatement", + "src": "2139:79:12" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2112:7:12" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2121:9:12" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2108:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "2108:23:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2133:2:12", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2104:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "2104:32:12" + }, + "nodeType": "YulIf", + "src": "2101:119:12" + }, + { + "nodeType": "YulBlock", + "src": "2230:117:12", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2245:15:12", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2259:1:12", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2249:6:12", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2274:63:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2309:9:12" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2320:6:12" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2305:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "2305:22:12" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2329:7:12" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "2284:20:12" + }, + "nodeType": "YulFunctionCall", + "src": "2284:53:12" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2274:6:12" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2061:9:12", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "2072:7:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2084:6:12", + "type": "" + } + ], + "src": "2025:329:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2405:32:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2415:16:12", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2426:5:12" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "2415:7:12" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2387:5:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "2397:7:12", + "type": "" + } + ], + "src": "2360:77:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2508:53:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2525:3:12" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2548:5:12" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "2530:17:12" + }, + "nodeType": "YulFunctionCall", + "src": "2530:24:12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2518:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "2518:37:12" + }, + "nodeType": "YulExpressionStatement", + "src": "2518:37:12" + } + ] + }, + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2496:5:12", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "2503:3:12", + "type": "" + } + ], + "src": "2443:118:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2665:124:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2675:26:12", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2687:9:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2698:2:12", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2683:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "2683:18:12" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2675:4:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2755:6:12" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2768:9:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2779:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2764:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "2764:17:12" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "2711:43:12" + }, + "nodeType": "YulFunctionCall", + "src": "2711:71:12" + }, + "nodeType": "YulExpressionStatement", + "src": "2711:71:12" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2637:9:12", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2649:6:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "2660:4:12", + "type": "" + } + ], + "src": "2567:222:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2840:32:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2850:16:12", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2861:5:12" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "2850:7:12" + } + ] + } + ] + }, + "name": "cleanup_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2822:5:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "2832:7:12", + "type": "" + } + ], + "src": "2795:77:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2921:79:12", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2978:16:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2987:1:12", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2990:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2980:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "2980:12:12" + }, + "nodeType": "YulExpressionStatement", + "src": "2980:12:12" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2944:5:12" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2969:5:12" + } + ], + "functionName": { + "name": "cleanup_t_bytes32", + "nodeType": "YulIdentifier", + "src": "2951:17:12" + }, + "nodeType": "YulFunctionCall", + "src": "2951:24:12" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "2941:2:12" + }, + "nodeType": "YulFunctionCall", + "src": "2941:35:12" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "2934:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "2934:43:12" + }, + "nodeType": "YulIf", + "src": "2931:63:12" + } + ] + }, + "name": "validator_revert_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2914:5:12", + "type": "" + } + ], + "src": "2878:122:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3058:87:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3068:29:12", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3090:6:12" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3077:12:12" + }, + "nodeType": "YulFunctionCall", + "src": "3077:20:12" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3068:5:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3133:5:12" + } + ], + "functionName": { + "name": "validator_revert_t_bytes32", + "nodeType": "YulIdentifier", + "src": "3106:26:12" + }, + "nodeType": "YulFunctionCall", + "src": "3106:33:12" + }, + "nodeType": "YulExpressionStatement", + "src": "3106:33:12" + } + ] + }, + "name": "abi_decode_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3036:6:12", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "3044:3:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "3052:5:12", + "type": "" + } + ], + "src": "3006:139:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3217:263:12", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3263:83:12", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "3265:77:12" + }, + "nodeType": "YulFunctionCall", + "src": "3265:79:12" + }, + "nodeType": "YulExpressionStatement", + "src": "3265:79:12" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3238:7:12" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3247:9:12" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "3234:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "3234:23:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3259:2:12", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3230:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "3230:32:12" + }, + "nodeType": "YulIf", + "src": "3227:119:12" + }, + { + "nodeType": "YulBlock", + "src": "3356:117:12", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3371:15:12", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3385:1:12", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3375:6:12", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3400:63:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3435:9:12" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3446:6:12" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3431:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "3431:22:12" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3455:7:12" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32", + "nodeType": "YulIdentifier", + "src": "3410:20:12" + }, + "nodeType": "YulFunctionCall", + "src": "3410:53:12" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3400:6:12" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3187:9:12", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "3198:7:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3210:6:12", + "type": "" + } + ], + "src": "3151:329:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3551:53:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3568:3:12" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3591:5:12" + } + ], + "functionName": { + "name": "cleanup_t_bytes32", + "nodeType": "YulIdentifier", + "src": "3573:17:12" + }, + "nodeType": "YulFunctionCall", + "src": "3573:24:12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3561:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "3561:37:12" + }, + "nodeType": "YulExpressionStatement", + "src": "3561:37:12" + } + ] + }, + "name": "abi_encode_t_bytes32_to_t_bytes32_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "3539:5:12", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "3546:3:12", + "type": "" + } + ], + "src": "3486:118:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3708:124:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3718:26:12", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3730:9:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3741:2:12", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3726:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "3726:18:12" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3718:4:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3798:6:12" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3811:9:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3822:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3807:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "3807:17:12" + } + ], + "functionName": { + "name": "abi_encode_t_bytes32_to_t_bytes32_fromStack", + "nodeType": "YulIdentifier", + "src": "3754:43:12" + }, + "nodeType": "YulFunctionCall", + "src": "3754:71:12" + }, + "nodeType": "YulExpressionStatement", + "src": "3754:71:12" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3680:9:12", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3692:6:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "3703:4:12", + "type": "" + } + ], + "src": "3610:222:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3921:391:12", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3967:83:12", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "3969:77:12" + }, + "nodeType": "YulFunctionCall", + "src": "3969:79:12" + }, + "nodeType": "YulExpressionStatement", + "src": "3969:79:12" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3942:7:12" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3951:9:12" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "3938:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "3938:23:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3963:2:12", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3934:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "3934:32:12" + }, + "nodeType": "YulIf", + "src": "3931:119:12" + }, + { + "nodeType": "YulBlock", + "src": "4060:117:12", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4075:15:12", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4089:1:12", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4079:6:12", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4104:63:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4139:9:12" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4150:6:12" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4135:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "4135:22:12" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4159:7:12" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32", + "nodeType": "YulIdentifier", + "src": "4114:20:12" + }, + "nodeType": "YulFunctionCall", + "src": "4114:53:12" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4104:6:12" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "4187:118:12", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4202:16:12", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4216:2:12", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4206:6:12", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4232:63:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4267:9:12" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4278:6:12" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4263:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "4263:22:12" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4287:7:12" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "4242:20:12" + }, + "nodeType": "YulFunctionCall", + "src": "4242:53:12" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "4232:6:12" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3883:9:12", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "3894:7:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3906:6:12", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "3914:6:12", + "type": "" + } + ], + "src": "3838:474:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4407:28:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4424:1:12", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4427:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4417:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "4417:12:12" + }, + "nodeType": "YulExpressionStatement", + "src": "4417:12:12" + } + ] + }, + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulFunctionDefinition", + "src": "4318:117:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4530:28:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4547:1:12", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4550:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4540:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "4540:12:12" + }, + "nodeType": "YulExpressionStatement", + "src": "4540:12:12" + } + ] + }, + "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490", + "nodeType": "YulFunctionDefinition", + "src": "4441:117:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4653:28:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4670:1:12", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4673:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4663:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "4663:12:12" + }, + "nodeType": "YulExpressionStatement", + "src": "4663:12:12" + } + ] + }, + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulFunctionDefinition", + "src": "4564:117:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4794:478:12", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4843:83:12", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "4845:77:12" + }, + "nodeType": "YulFunctionCall", + "src": "4845:79:12" + }, + "nodeType": "YulExpressionStatement", + "src": "4845:79:12" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4822:6:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4830:4:12", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4818:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "4818:17:12" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "4837:3:12" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4814:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "4814:27:12" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "4807:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "4807:35:12" + }, + "nodeType": "YulIf", + "src": "4804:122:12" + }, + { + "nodeType": "YulAssignment", + "src": "4935:30:12", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4958:6:12" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4945:12:12" + }, + "nodeType": "YulFunctionCall", + "src": "4945:20:12" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "4935:6:12" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5008:83:12", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490", + "nodeType": "YulIdentifier", + "src": "5010:77:12" + }, + "nodeType": "YulFunctionCall", + "src": "5010:79:12" + }, + "nodeType": "YulExpressionStatement", + "src": "5010:79:12" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "4980:6:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4988:18:12", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "4977:2:12" + }, + "nodeType": "YulFunctionCall", + "src": "4977:30:12" + }, + "nodeType": "YulIf", + "src": "4974:117:12" + }, + { + "nodeType": "YulAssignment", + "src": "5100:29:12", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5116:6:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5124:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5112:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "5112:17:12" + }, + "variableNames": [ + { + "name": "arrayPos", + "nodeType": "YulIdentifier", + "src": "5100:8:12" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5183:83:12", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulIdentifier", + "src": "5185:77:12" + }, + "nodeType": "YulFunctionCall", + "src": "5185:79:12" + }, + "nodeType": "YulExpressionStatement", + "src": "5185:79:12" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "arrayPos", + "nodeType": "YulIdentifier", + "src": "5148:8:12" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5162:6:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5170:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5158:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "5158:17:12" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5144:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "5144:32:12" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "5178:3:12" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "5141:2:12" + }, + "nodeType": "YulFunctionCall", + "src": "5141:41:12" + }, + "nodeType": "YulIf", + "src": "5138:128:12" + } + ] + }, + "name": "abi_decode_t_array$_t_uint256_$dyn_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4761:6:12", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "4769:3:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "arrayPos", + "nodeType": "YulTypedName", + "src": "4777:8:12", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "4787:6:12", + "type": "" + } + ], + "src": "4704:568:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5396:586:12", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5442:83:12", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "5444:77:12" + }, + "nodeType": "YulFunctionCall", + "src": "5444:79:12" + }, + "nodeType": "YulExpressionStatement", + "src": "5444:79:12" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5417:7:12" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5426:9:12" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5413:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "5413:23:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5438:2:12", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "5409:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "5409:32:12" + }, + "nodeType": "YulIf", + "src": "5406:119:12" + }, + { + "nodeType": "YulBlock", + "src": "5535:117:12", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "5550:15:12", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5564:1:12", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5554:6:12", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5579:63:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5614:9:12" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5625:6:12" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5610:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "5610:22:12" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5634:7:12" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "5589:20:12" + }, + "nodeType": "YulFunctionCall", + "src": "5589:53:12" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5579:6:12" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "5662:313:12", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "5677:46:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5708:9:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5719:2:12", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5704:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "5704:18:12" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5691:12:12" + }, + "nodeType": "YulFunctionCall", + "src": "5691:32:12" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5681:6:12", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5770:83:12", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "5772:77:12" + }, + "nodeType": "YulFunctionCall", + "src": "5772:79:12" + }, + "nodeType": "YulExpressionStatement", + "src": "5772:79:12" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5742:6:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5750:18:12", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "5739:2:12" + }, + "nodeType": "YulFunctionCall", + "src": "5739:30:12" + }, + "nodeType": "YulIf", + "src": "5736:117:12" + }, + { + "nodeType": "YulAssignment", + "src": "5867:98:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5937:9:12" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5948:6:12" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5933:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "5933:22:12" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5957:7:12" + } + ], + "functionName": { + "name": "abi_decode_t_array$_t_uint256_$dyn_calldata_ptr", + "nodeType": "YulIdentifier", + "src": "5885:47:12" + }, + "nodeType": "YulFunctionCall", + "src": "5885:80:12" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "5867:6:12" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "5875:6:12" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5350:9:12", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "5361:7:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5373:6:12", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "5381:6:12", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "5389:6:12", + "type": "" + } + ], + "src": "5278:704:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6020:28:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6030:12:12", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6037:5:12" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "6030:3:12" + } + ] + } + ] + }, + "name": "identity", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "6006:5:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "6016:3:12", + "type": "" + } + ], + "src": "5988:60:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6114:82:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6124:66:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6182:5:12" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "6164:17:12" + }, + "nodeType": "YulFunctionCall", + "src": "6164:24:12" + } + ], + "functionName": { + "name": "identity", + "nodeType": "YulIdentifier", + "src": "6155:8:12" + }, + "nodeType": "YulFunctionCall", + "src": "6155:34:12" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "6137:17:12" + }, + "nodeType": "YulFunctionCall", + "src": "6137:53:12" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "6124:9:12" + } + ] + } + ] + }, + "name": "convert_t_uint160_to_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "6094:5:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "6104:9:12", + "type": "" + } + ], + "src": "6054:142:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6262:66:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6272:50:12", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6316:5:12" + } + ], + "functionName": { + "name": "convert_t_uint160_to_t_uint160", + "nodeType": "YulIdentifier", + "src": "6285:30:12" + }, + "nodeType": "YulFunctionCall", + "src": "6285:37:12" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "6272:9:12" + } + ] + } + ] + }, + "name": "convert_t_uint160_to_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "6242:5:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "6252:9:12", + "type": "" + } + ], + "src": "6202:126:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6412:66:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6422:50:12", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6466:5:12" + } + ], + "functionName": { + "name": "convert_t_uint160_to_t_address", + "nodeType": "YulIdentifier", + "src": "6435:30:12" + }, + "nodeType": "YulFunctionCall", + "src": "6435:37:12" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "6422:9:12" + } + ] + } + ] + }, + "name": "convert_t_contract$_IBEERC721_$1549_to_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "6392:5:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "6402:9:12", + "type": "" + } + ], + "src": "6334:144:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6567:84:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "6584:3:12" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6638:5:12" + } + ], + "functionName": { + "name": "convert_t_contract$_IBEERC721_$1549_to_t_address", + "nodeType": "YulIdentifier", + "src": "6589:48:12" + }, + "nodeType": "YulFunctionCall", + "src": "6589:55:12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6577:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "6577:68:12" + }, + "nodeType": "YulExpressionStatement", + "src": "6577:68:12" + } + ] + }, + "name": "abi_encode_t_contract$_IBEERC721_$1549_to_t_address_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "6555:5:12", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "6562:3:12", + "type": "" + } + ], + "src": "6484:167:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6773:142:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6783:26:12", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6795:9:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6806:2:12", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6791:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "6791:18:12" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6783:4:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6881:6:12" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6894:9:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6905:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6890:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "6890:17:12" + } + ], + "functionName": { + "name": "abi_encode_t_contract$_IBEERC721_$1549_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "6819:61:12" + }, + "nodeType": "YulFunctionCall", + "src": "6819:89:12" + }, + "nodeType": "YulExpressionStatement", + "src": "6819:89:12" + } + ] + }, + "name": "abi_encode_tuple_t_contract$_IBEERC721_$1549__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6745:9:12", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "6757:6:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "6768:4:12", + "type": "" + } + ], + "src": "6657:258:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6986:53:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "7003:3:12" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "7026:5:12" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "7008:17:12" + }, + "nodeType": "YulFunctionCall", + "src": "7008:24:12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6996:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "6996:37:12" + }, + "nodeType": "YulExpressionStatement", + "src": "6996:37:12" + } + ] + }, + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "6974:5:12", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "6981:3:12", + "type": "" + } + ], + "src": "6921:118:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7143:124:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7153:26:12", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7165:9:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7176:2:12", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7161:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "7161:18:12" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7153:4:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "7233:6:12" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7246:9:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7257:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7242:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "7242:17:12" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "7189:43:12" + }, + "nodeType": "YulFunctionCall", + "src": "7189:71:12" + }, + "nodeType": "YulExpressionStatement", + "src": "7189:71:12" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7115:9:12", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "7127:6:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "7138:4:12", + "type": "" + } + ], + "src": "7045:222:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7316:79:12", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "7373:16:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7382:1:12", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7385:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "7375:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "7375:12:12" + }, + "nodeType": "YulExpressionStatement", + "src": "7375:12:12" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "7339:5:12" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "7364:5:12" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "7346:17:12" + }, + "nodeType": "YulFunctionCall", + "src": "7346:24:12" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "7336:2:12" + }, + "nodeType": "YulFunctionCall", + "src": "7336:35:12" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "7329:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "7329:43:12" + }, + "nodeType": "YulIf", + "src": "7326:63:12" + } + ] + }, + "name": "validator_revert_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "7309:5:12", + "type": "" + } + ], + "src": "7273:122:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7453:87:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7463:29:12", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7485:6:12" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "7472:12:12" + }, + "nodeType": "YulFunctionCall", + "src": "7472:20:12" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "7463:5:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "7528:5:12" + } + ], + "functionName": { + "name": "validator_revert_t_uint256", + "nodeType": "YulIdentifier", + "src": "7501:26:12" + }, + "nodeType": "YulFunctionCall", + "src": "7501:33:12" + }, + "nodeType": "YulExpressionStatement", + "src": "7501:33:12" + } + ] + }, + "name": "abi_decode_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "7431:6:12", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "7439:3:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "7447:5:12", + "type": "" + } + ], + "src": "7401:139:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7629:391:12", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "7675:83:12", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "7677:77:12" + }, + "nodeType": "YulFunctionCall", + "src": "7677:79:12" + }, + "nodeType": "YulExpressionStatement", + "src": "7677:79:12" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "7650:7:12" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7659:9:12" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "7646:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "7646:23:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7671:2:12", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "7642:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "7642:32:12" + }, + "nodeType": "YulIf", + "src": "7639:119:12" + }, + { + "nodeType": "YulBlock", + "src": "7768:117:12", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7783:15:12", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7797:1:12", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "7787:6:12", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "7812:63:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7847:9:12" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7858:6:12" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7843:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "7843:22:12" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "7867:7:12" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32", + "nodeType": "YulIdentifier", + "src": "7822:20:12" + }, + "nodeType": "YulFunctionCall", + "src": "7822:53:12" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "7812:6:12" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "7895:118:12", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7910:16:12", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7924:2:12", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "7914:6:12", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "7940:63:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7975:9:12" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7986:6:12" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7971:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "7971:22:12" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "7995:7:12" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "7950:20:12" + }, + "nodeType": "YulFunctionCall", + "src": "7950:53:12" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "7940:6:12" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7591:9:12", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "7602:7:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "7614:6:12", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "7622:6:12", + "type": "" + } + ], + "src": "7546:474:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8109:391:12", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "8155:83:12", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "8157:77:12" + }, + "nodeType": "YulFunctionCall", + "src": "8157:79:12" + }, + "nodeType": "YulExpressionStatement", + "src": "8157:79:12" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8130:7:12" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8139:9:12" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8126:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "8126:23:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8151:2:12", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "8122:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "8122:32:12" + }, + "nodeType": "YulIf", + "src": "8119:119:12" + }, + { + "nodeType": "YulBlock", + "src": "8248:117:12", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "8263:15:12", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8277:1:12", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "8267:6:12", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8292:63:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8327:9:12" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8338:6:12" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8323:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "8323:22:12" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8347:7:12" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "8302:20:12" + }, + "nodeType": "YulFunctionCall", + "src": "8302:53:12" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "8292:6:12" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "8375:118:12", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "8390:16:12", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8404:2:12", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "8394:6:12", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8420:63:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8455:9:12" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8466:6:12" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8451:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "8451:22:12" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8475:7:12" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "8430:20:12" + }, + "nodeType": "YulFunctionCall", + "src": "8430:53:12" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "8420:6:12" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "8071:9:12", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "8082:7:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "8094:6:12", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "8102:6:12", + "type": "" + } + ], + "src": "8026:474:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8572:263:12", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "8618:83:12", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "8620:77:12" + }, + "nodeType": "YulFunctionCall", + "src": "8620:79:12" + }, + "nodeType": "YulExpressionStatement", + "src": "8620:79:12" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8593:7:12" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8602:9:12" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8589:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "8589:23:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8614:2:12", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "8585:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "8585:32:12" + }, + "nodeType": "YulIf", + "src": "8582:119:12" + }, + { + "nodeType": "YulBlock", + "src": "8711:117:12", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "8726:15:12", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8740:1:12", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "8730:6:12", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8755:63:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8790:9:12" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8801:6:12" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8786:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "8786:22:12" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8810:7:12" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "8765:20:12" + }, + "nodeType": "YulFunctionCall", + "src": "8765:53:12" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "8755:6:12" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "8542:9:12", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "8553:7:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "8565:6:12", + "type": "" + } + ], + "src": "8506:329:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8869:152:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8886:1:12", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8889:77:12", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8879:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "8879:88:12" + }, + "nodeType": "YulExpressionStatement", + "src": "8879:88:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8983:1:12", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8986:4:12", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8976:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "8976:15:12" + }, + "nodeType": "YulExpressionStatement", + "src": "8976:15:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9007:1:12", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9010:4:12", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "9000:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "9000:15:12" + }, + "nodeType": "YulExpressionStatement", + "src": "9000:15:12" + } + ] + }, + "name": "panic_error_0x32", + "nodeType": "YulFunctionDefinition", + "src": "8841:180:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9055:152:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9072:1:12", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9075:77:12", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9065:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "9065:88:12" + }, + "nodeType": "YulExpressionStatement", + "src": "9065:88:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9169:1:12", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9172:4:12", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9162:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "9162:15:12" + }, + "nodeType": "YulExpressionStatement", + "src": "9162:15:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9193:1:12", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9196:4:12", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "9186:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "9186:15:12" + }, + "nodeType": "YulExpressionStatement", + "src": "9186:15:12" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "9027:180:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9256:190:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9266:33:12", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9293:5:12" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "9275:17:12" + }, + "nodeType": "YulFunctionCall", + "src": "9275:24:12" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9266:5:12" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9389:22:12", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "9391:16:12" + }, + "nodeType": "YulFunctionCall", + "src": "9391:18:12" + }, + "nodeType": "YulExpressionStatement", + "src": "9391:18:12" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9314:5:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9321:66:12", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "9311:2:12" + }, + "nodeType": "YulFunctionCall", + "src": "9311:77:12" + }, + "nodeType": "YulIf", + "src": "9308:103:12" + }, + { + "nodeType": "YulAssignment", + "src": "9420:20:12", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9431:5:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9438:1:12", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9427:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "9427:13:12" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "9420:3:12" + } + ] + } + ] + }, + "name": "increment_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "9242:5:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "9252:3:12", + "type": "" + } + ], + "src": "9213:233:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9548:73:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9565:3:12" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9570:6:12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9558:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "9558:19:12" + }, + "nodeType": "YulExpressionStatement", + "src": "9558:19:12" + }, + { + "nodeType": "YulAssignment", + "src": "9586:29:12", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9605:3:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9610:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9601:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "9601:14:12" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "9586:11:12" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "9520:3:12", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "9525:6:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "9536:11:12", + "type": "" + } + ], + "src": "9452:169:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9733:72:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "9755:6:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9763:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9751:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "9751:14:12" + }, + { + "hexValue": "4d696e7461626c6520636f756e74206973206e6f7420656e6f756768", + "kind": "string", + "nodeType": "YulLiteral", + "src": "9767:30:12", + "type": "", + "value": "Mintable count is not enough" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9744:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "9744:54:12" + }, + "nodeType": "YulExpressionStatement", + "src": "9744:54:12" + } + ] + }, + "name": "store_literal_in_memory_c0532a597c4fcdca619b8bd483d77a931af948aaf6338ee552604b6087393e08", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "9725:6:12", + "type": "" + } + ], + "src": "9627:178:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9957:220:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9967:74:12", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10033:3:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10038:2:12", + "type": "", + "value": "28" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "9974:58:12" + }, + "nodeType": "YulFunctionCall", + "src": "9974:67:12" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9967:3:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10139:3:12" + } + ], + "functionName": { + "name": "store_literal_in_memory_c0532a597c4fcdca619b8bd483d77a931af948aaf6338ee552604b6087393e08", + "nodeType": "YulIdentifier", + "src": "10050:88:12" + }, + "nodeType": "YulFunctionCall", + "src": "10050:93:12" + }, + "nodeType": "YulExpressionStatement", + "src": "10050:93:12" + }, + { + "nodeType": "YulAssignment", + "src": "10152:19:12", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10163:3:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10168:2:12", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10159:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "10159:12:12" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "10152:3:12" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_c0532a597c4fcdca619b8bd483d77a931af948aaf6338ee552604b6087393e08_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "9945:3:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "9953:3:12", + "type": "" + } + ], + "src": "9811:366:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10354:248:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10364:26:12", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10376:9:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10387:2:12", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10372:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "10372:18:12" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "10364:4:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10411:9:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10422:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10407:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "10407:17:12" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "10430:4:12" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10436:9:12" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "10426:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "10426:20:12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10400:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "10400:47:12" + }, + "nodeType": "YulExpressionStatement", + "src": "10400:47:12" + }, + { + "nodeType": "YulAssignment", + "src": "10456:139:12", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "10590:4:12" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_c0532a597c4fcdca619b8bd483d77a931af948aaf6338ee552604b6087393e08_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "10464:124:12" + }, + "nodeType": "YulFunctionCall", + "src": "10464:131:12" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "10456:4:12" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_c0532a597c4fcdca619b8bd483d77a931af948aaf6338ee552604b6087393e08__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "10334:9:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "10349:4:12", + "type": "" + } + ], + "src": "10183:419:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10636:152:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10653:1:12", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10656:77:12", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10646:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "10646:88:12" + }, + "nodeType": "YulExpressionStatement", + "src": "10646:88:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10750:1:12", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10753:4:12", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10743:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "10743:15:12" + }, + "nodeType": "YulExpressionStatement", + "src": "10743:15:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10774:1:12", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10777:4:12", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "10767:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "10767:15:12" + }, + "nodeType": "YulExpressionStatement", + "src": "10767:15:12" + } + ] + }, + "name": "panic_error_0x41", + "nodeType": "YulFunctionDefinition", + "src": "10608:180:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10920:206:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10930:26:12", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10942:9:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10953:2:12", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10938:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "10938:18:12" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "10930:4:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "11010:6:12" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11023:9:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11034:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11019:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "11019:17:12" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "10966:43:12" + }, + "nodeType": "YulFunctionCall", + "src": "10966:71:12" + }, + "nodeType": "YulExpressionStatement", + "src": "10966:71:12" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "11091:6:12" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11104:9:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11115:2:12", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11100:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "11100:18:12" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "11047:43:12" + }, + "nodeType": "YulFunctionCall", + "src": "11047:72:12" + }, + "nodeType": "YulExpressionStatement", + "src": "11047:72:12" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "10884:9:12", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "10896:6:12", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "10904:6:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "10915:4:12", + "type": "" + } + ], + "src": "10794:332:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11206:40:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "11217:22:12", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "11233:5:12" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "11227:5:12" + }, + "nodeType": "YulFunctionCall", + "src": "11227:12:12" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "11217:6:12" + } + ] + } + ] + }, + "name": "array_length_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "11189:5:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "11199:6:12", + "type": "" + } + ], + "src": "11132:114:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11363:73:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11380:3:12" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "11385:6:12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11373:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "11373:19:12" + }, + "nodeType": "YulExpressionStatement", + "src": "11373:19:12" + }, + { + "nodeType": "YulAssignment", + "src": "11401:29:12", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11420:3:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11425:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11416:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "11416:14:12" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "11401:11:12" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "11335:3:12", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "11340:6:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "11351:11:12", + "type": "" + } + ], + "src": "11252:184:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11514:60:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "11524:11:12", + "value": { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "11532:3:12" + }, + "variableNames": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "11524:4:12" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11545:22:12", + "value": { + "arguments": [ + { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "11557:3:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11562:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11553:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "11553:14:12" + }, + "variableNames": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "11545:4:12" + } + ] + } + ] + }, + "name": "array_dataslot_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nodeType": "YulTypedName", + "src": "11501:3:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "11509:4:12", + "type": "" + } + ], + "src": "11442:132:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11635:53:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11652:3:12" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "11675:5:12" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "11657:17:12" + }, + "nodeType": "YulFunctionCall", + "src": "11657:24:12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11645:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "11645:37:12" + }, + "nodeType": "YulExpressionStatement", + "src": "11645:37:12" + } + ] + }, + "name": "abi_encode_t_uint256_to_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "11623:5:12", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "11630:3:12", + "type": "" + } + ], + "src": "11580:108:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11774:99:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "11818:6:12" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11826:3:12" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256", + "nodeType": "YulIdentifier", + "src": "11784:33:12" + }, + "nodeType": "YulFunctionCall", + "src": "11784:46:12" + }, + "nodeType": "YulExpressionStatement", + "src": "11784:46:12" + }, + { + "nodeType": "YulAssignment", + "src": "11839:28:12", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11857:3:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11862:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11853:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "11853:14:12" + }, + "variableNames": [ + { + "name": "updatedPos", + "nodeType": "YulIdentifier", + "src": "11839:10:12" + } + ] + } + ] + }, + "name": "abi_encodeUpdatedPos_t_uint256_to_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "11747:6:12", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "11755:3:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updatedPos", + "nodeType": "YulTypedName", + "src": "11763:10:12", + "type": "" + } + ], + "src": "11694:179:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11954:38:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "11964:22:12", + "value": { + "arguments": [ + { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "11976:3:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11981:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11972:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "11972:14:12" + }, + "variableNames": [ + { + "name": "next", + "nodeType": "YulIdentifier", + "src": "11964:4:12" + } + ] + } + ] + }, + "name": "array_nextElement_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nodeType": "YulTypedName", + "src": "11941:3:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "next", + "nodeType": "YulTypedName", + "src": "11949:4:12", + "type": "" + } + ], + "src": "11879:113:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12152:608:12", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "12162:68:12", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "12224:5:12" + } + ], + "functionName": { + "name": "array_length_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "12176:47:12" + }, + "nodeType": "YulFunctionCall", + "src": "12176:54:12" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "12166:6:12", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "12239:93:12", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12320:3:12" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "12325:6:12" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "12246:73:12" + }, + "nodeType": "YulFunctionCall", + "src": "12246:86:12" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12239:3:12" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "12341:71:12", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "12406:5:12" + } + ], + "functionName": { + "name": "array_dataslot_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "12356:49:12" + }, + "nodeType": "YulFunctionCall", + "src": "12356:56:12" + }, + "variables": [ + { + "name": "baseRef", + "nodeType": "YulTypedName", + "src": "12345:7:12", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "12421:21:12", + "value": { + "name": "baseRef", + "nodeType": "YulIdentifier", + "src": "12435:7:12" + }, + "variables": [ + { + "name": "srcPtr", + "nodeType": "YulTypedName", + "src": "12425:6:12", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12511:224:12", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "12525:34:12", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "12552:6:12" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "12546:5:12" + }, + "nodeType": "YulFunctionCall", + "src": "12546:13:12" + }, + "variables": [ + { + "name": "elementValue0", + "nodeType": "YulTypedName", + "src": "12529:13:12", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "12572:70:12", + "value": { + "arguments": [ + { + "name": "elementValue0", + "nodeType": "YulIdentifier", + "src": "12623:13:12" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12638:3:12" + } + ], + "functionName": { + "name": "abi_encodeUpdatedPos_t_uint256_to_t_uint256", + "nodeType": "YulIdentifier", + "src": "12579:43:12" + }, + "nodeType": "YulFunctionCall", + "src": "12579:63:12" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12572:3:12" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "12655:70:12", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "12718:6:12" + } + ], + "functionName": { + "name": "array_nextElement_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "12665:52:12" + }, + "nodeType": "YulFunctionCall", + "src": "12665:60:12" + }, + "variableNames": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "12655:6:12" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "12473:1:12" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "12476:6:12" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "12470:2:12" + }, + "nodeType": "YulFunctionCall", + "src": "12470:13:12" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "12484:18:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "12486:14:12", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "12495:1:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12498:1:12", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12491:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "12491:9:12" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "12486:1:12" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "12455:14:12", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "12457:10:12", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12466:1:12", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "12461:1:12", + "type": "" + } + ] + } + ] + }, + "src": "12451:284:12" + }, + { + "nodeType": "YulAssignment", + "src": "12744:10:12", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12751:3:12" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "12744:3:12" + } + ] + } + ] + }, + "name": "abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "12131:5:12", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "12138:3:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "12147:3:12", + "type": "" + } + ], + "src": "12028:732:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12855:28:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12872:1:12", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12875:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "12865:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "12865:12:12" + }, + "nodeType": "YulExpressionStatement", + "src": "12865:12:12" + } + ] + }, + "name": "revert_error_d0468cefdb41083d2ff66f1e66140f10c9da08cd905521a779422e76a84d11ec", + "nodeType": "YulFunctionDefinition", + "src": "12766:117:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12940:103:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "12963:3:12" + }, + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "12968:3:12" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "12973:6:12" + } + ], + "functionName": { + "name": "calldatacopy", + "nodeType": "YulIdentifier", + "src": "12950:12:12" + }, + "nodeType": "YulFunctionCall", + "src": "12950:30:12" + }, + "nodeType": "YulExpressionStatement", + "src": "12950:30:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "13021:3:12" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "13026:6:12" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13017:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "13017:16:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13035:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13010:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "13010:27:12" + }, + "nodeType": "YulExpressionStatement", + "src": "13010:27:12" + } + ] + }, + "name": "copy_calldata_to_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "12922:3:12", + "type": "" + }, + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "12927:3:12", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "12932:6:12", + "type": "" + } + ], + "src": "12889:154:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13211:405:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "13221:93:12", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13302:3:12" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "13307:6:12" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "13228:73:12" + }, + "nodeType": "YulFunctionCall", + "src": "13228:86:12" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13221:3:12" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13406:83:12", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_d0468cefdb41083d2ff66f1e66140f10c9da08cd905521a779422e76a84d11ec", + "nodeType": "YulIdentifier", + "src": "13408:77:12" + }, + "nodeType": "YulFunctionCall", + "src": "13408:79:12" + }, + "nodeType": "YulExpressionStatement", + "src": "13408:79:12" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "13330:6:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13338:66:12", + "type": "", + "value": "0x07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "13327:2:12" + }, + "nodeType": "YulFunctionCall", + "src": "13327:78:12" + }, + "nodeType": "YulIf", + "src": "13324:165:12" + }, + { + "nodeType": "YulAssignment", + "src": "13498:27:12", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "13512:6:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13520:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "13508:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "13508:17:12" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "13498:6:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "13559:5:12" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13566:3:12" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "13571:6:12" + } + ], + "functionName": { + "name": "copy_calldata_to_memory", + "nodeType": "YulIdentifier", + "src": "13535:23:12" + }, + "nodeType": "YulFunctionCall", + "src": "13535:43:12" + }, + "nodeType": "YulExpressionStatement", + "src": "13535:43:12" + }, + { + "nodeType": "YulAssignment", + "src": "13587:23:12", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13598:3:12" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "13603:6:12" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13594:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "13594:16:12" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "13587:3:12" + } + ] + } + ] + }, + "name": "abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "start", + "nodeType": "YulTypedName", + "src": "13184:5:12", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "13191:6:12", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "13199:3:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "13207:3:12", + "type": "" + } + ], + "src": "13079:537:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13858:418:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "13868:26:12", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13880:9:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13891:2:12", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13876:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "13876:18:12" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13868:4:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13915:9:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13926:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13911:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "13911:17:12" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13934:4:12" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13940:9:12" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "13930:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "13930:20:12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13904:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "13904:47:12" + }, + "nodeType": "YulExpressionStatement", + "src": "13904:47:12" + }, + { + "nodeType": "YulAssignment", + "src": "13960:116:12", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "14062:6:12" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "14071:4:12" + } + ], + "functionName": { + "name": "abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "13968:93:12" + }, + "nodeType": "YulFunctionCall", + "src": "13968:108:12" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13960:4:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14097:9:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14108:2:12", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14093:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "14093:18:12" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "14117:4:12" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14123:9:12" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "14113:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "14113:20:12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14086:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "14086:48:12" + }, + "nodeType": "YulExpressionStatement", + "src": "14086:48:12" + }, + { + "nodeType": "YulAssignment", + "src": "14143:126:12", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "14247:6:12" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "14255:6:12" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "14264:4:12" + } + ], + "functionName": { + "name": "abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "14151:95:12" + }, + "nodeType": "YulFunctionCall", + "src": "14151:118:12" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "14143:4:12" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_calldata_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "13814:9:12", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "13826:6:12", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "13834:6:12", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "13842:6:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "13853:4:12", + "type": "" + } + ], + "src": "13622:654:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14388:128:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "14410:6:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14418:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14406:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "14406:14:12" + }, + { + "hexValue": "416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e6365", + "kind": "string", + "nodeType": "YulLiteral", + "src": "14422:34:12", + "type": "", + "value": "AccessControl: can only renounce" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14399:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "14399:58:12" + }, + "nodeType": "YulExpressionStatement", + "src": "14399:58:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "14478:6:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14486:2:12", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14474:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "14474:15:12" + }, + { + "hexValue": "20726f6c657320666f722073656c66", + "kind": "string", + "nodeType": "YulLiteral", + "src": "14491:17:12", + "type": "", + "value": " roles for self" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14467:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "14467:42:12" + }, + "nodeType": "YulExpressionStatement", + "src": "14467:42:12" + } + ] + }, + "name": "store_literal_in_memory_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "14380:6:12", + "type": "" + } + ], + "src": "14282:234:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14668:220:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "14678:74:12", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14744:3:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14749:2:12", + "type": "", + "value": "47" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "14685:58:12" + }, + "nodeType": "YulFunctionCall", + "src": "14685:67:12" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14678:3:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14850:3:12" + } + ], + "functionName": { + "name": "store_literal_in_memory_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b", + "nodeType": "YulIdentifier", + "src": "14761:88:12" + }, + "nodeType": "YulFunctionCall", + "src": "14761:93:12" + }, + "nodeType": "YulExpressionStatement", + "src": "14761:93:12" + }, + { + "nodeType": "YulAssignment", + "src": "14863:19:12", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14874:3:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14879:2:12", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14870:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "14870:12:12" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "14863:3:12" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "14656:3:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "14664:3:12", + "type": "" + } + ], + "src": "14522:366:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15065:248:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15075:26:12", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15087:9:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15098:2:12", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15083:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "15083:18:12" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15075:4:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15122:9:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15133:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15118:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "15118:17:12" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15141:4:12" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15147:9:12" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "15137:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "15137:20:12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15111:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "15111:47:12" + }, + "nodeType": "YulExpressionStatement", + "src": "15111:47:12" + }, + { + "nodeType": "YulAssignment", + "src": "15167:139:12", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15301:4:12" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "15175:124:12" + }, + "nodeType": "YulFunctionCall", + "src": "15175:131:12" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15167:4:12" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "15045:9:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "15060:4:12", + "type": "" + } + ], + "src": "14894:419:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15433:34:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15443:18:12", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15458:3:12" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "15443:11:12" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "15405:3:12", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "15410:6:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "15421:11:12", + "type": "" + } + ], + "src": "15319:148:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15579:67:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "15601:6:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15609:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15597:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "15597:14:12" + }, + { + "hexValue": "416363657373436f6e74726f6c3a206163636f756e7420", + "kind": "string", + "nodeType": "YulLiteral", + "src": "15613:25:12", + "type": "", + "value": "AccessControl: account " + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15590:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "15590:49:12" + }, + "nodeType": "YulExpressionStatement", + "src": "15590:49:12" + } + ] + }, + "name": "store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "15571:6:12", + "type": "" + } + ], + "src": "15473:173:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15816:238:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15826:92:12", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15910:3:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15915:2:12", + "type": "", + "value": "23" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "15833:76:12" + }, + "nodeType": "YulFunctionCall", + "src": "15833:85:12" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15826:3:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "16016:3:12" + } + ], + "functionName": { + "name": "store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874", + "nodeType": "YulIdentifier", + "src": "15927:88:12" + }, + "nodeType": "YulFunctionCall", + "src": "15927:93:12" + }, + "nodeType": "YulExpressionStatement", + "src": "15927:93:12" + }, + { + "nodeType": "YulAssignment", + "src": "16029:19:12", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "16040:3:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16045:2:12", + "type": "", + "value": "23" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16036:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "16036:12:12" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "16029:3:12" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "15804:3:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "15812:3:12", + "type": "" + } + ], + "src": "15652:402:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16119:40:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "16130:22:12", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16146:5:12" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "16140:5:12" + }, + "nodeType": "YulFunctionCall", + "src": "16140:12:12" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "16130:6:12" + } + ] + } + ] + }, + "name": "array_length_t_string_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "16102:5:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "16112:6:12", + "type": "" + } + ], + "src": "16060:99:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16214:258:12", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "16224:10:12", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16233:1:12", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "16228:1:12", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16293:63:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "16318:3:12" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "16323:1:12" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16314:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "16314:11:12" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "16337:3:12" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "16342:1:12" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16333:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "16333:11:12" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "16327:5:12" + }, + "nodeType": "YulFunctionCall", + "src": "16327:18:12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16307:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "16307:39:12" + }, + "nodeType": "YulExpressionStatement", + "src": "16307:39:12" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "16254:1:12" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "16257:6:12" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "16251:2:12" + }, + "nodeType": "YulFunctionCall", + "src": "16251:13:12" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "16265:19:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "16267:15:12", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "16276:1:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16279:2:12", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16272:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "16272:10:12" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "16267:1:12" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "16247:3:12", + "statements": [] + }, + "src": "16243:113:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16390:76:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "16440:3:12" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "16445:6:12" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16436:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "16436:16:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16454:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16429:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "16429:27:12" + }, + "nodeType": "YulExpressionStatement", + "src": "16429:27:12" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "16371:1:12" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "16374:6:12" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "16368:2:12" + }, + "nodeType": "YulFunctionCall", + "src": "16368:13:12" + }, + "nodeType": "YulIf", + "src": "16365:101:12" + } + ] + }, + "name": "copy_memory_to_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "16196:3:12", + "type": "" + }, + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "16201:3:12", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "16206:6:12", + "type": "" + } + ], + "src": "16165:307:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16588:267:12", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "16598:53:12", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16645:5:12" + } + ], + "functionName": { + "name": "array_length_t_string_memory_ptr", + "nodeType": "YulIdentifier", + "src": "16612:32:12" + }, + "nodeType": "YulFunctionCall", + "src": "16612:39:12" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "16602:6:12", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "16660:96:12", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "16744:3:12" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "16749:6:12" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "16667:76:12" + }, + "nodeType": "YulFunctionCall", + "src": "16667:89:12" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "16660:3:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16791:5:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16798:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16787:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "16787:16:12" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "16805:3:12" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "16810:6:12" + } + ], + "functionName": { + "name": "copy_memory_to_memory", + "nodeType": "YulIdentifier", + "src": "16765:21:12" + }, + "nodeType": "YulFunctionCall", + "src": "16765:52:12" + }, + "nodeType": "YulExpressionStatement", + "src": "16765:52:12" + }, + { + "nodeType": "YulAssignment", + "src": "16826:23:12", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "16837:3:12" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "16842:6:12" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16833:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "16833:16:12" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "16826:3:12" + } + ] + } + ] + }, + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "16569:5:12", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "16576:3:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "16584:3:12", + "type": "" + } + ], + "src": "16478:377:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16967:61:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "16989:6:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16997:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16985:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "16985:14:12" + }, + { + "hexValue": "206973206d697373696e6720726f6c6520", + "kind": "string", + "nodeType": "YulLiteral", + "src": "17001:19:12", + "type": "", + "value": " is missing role " + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16978:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "16978:43:12" + }, + "nodeType": "YulExpressionStatement", + "src": "16978:43:12" + } + ] + }, + "name": "store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "16959:6:12", + "type": "" + } + ], + "src": "16861:167:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17198:238:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17208:92:12", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "17292:3:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17297:2:12", + "type": "", + "value": "17" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "17215:76:12" + }, + "nodeType": "YulFunctionCall", + "src": "17215:85:12" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "17208:3:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "17398:3:12" + } + ], + "functionName": { + "name": "store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69", + "nodeType": "YulIdentifier", + "src": "17309:88:12" + }, + "nodeType": "YulFunctionCall", + "src": "17309:93:12" + }, + "nodeType": "YulExpressionStatement", + "src": "17309:93:12" + }, + { + "nodeType": "YulAssignment", + "src": "17411:19:12", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "17422:3:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17427:2:12", + "type": "", + "value": "17" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17418:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "17418:12:12" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "17411:3:12" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "17186:3:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "17194:3:12", + "type": "" + } + ], + "src": "17034:402:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17828:581:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17839:155:12", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "17990:3:12" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "17846:142:12" + }, + "nodeType": "YulFunctionCall", + "src": "17846:148:12" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "17839:3:12" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "18004:102:12", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "18093:6:12" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18102:3:12" + } + ], + "functionName": { + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "18011:81:12" + }, + "nodeType": "YulFunctionCall", + "src": "18011:95:12" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18004:3:12" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "18116:155:12", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18267:3:12" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "18123:142:12" + }, + "nodeType": "YulFunctionCall", + "src": "18123:148:12" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18116:3:12" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "18281:102:12", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "18370:6:12" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18379:3:12" + } + ], + "functionName": { + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "18288:81:12" + }, + "nodeType": "YulFunctionCall", + "src": "18288:95:12" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18281:3:12" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "18393:10:12", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18400:3:12" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "18393:3:12" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "17799:3:12", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "17805:6:12", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "17813:6:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "17824:3:12", + "type": "" + } + ], + "src": "17442:967:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18463:54:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "18473:38:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "18491:5:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18498:2:12", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18487:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "18487:14:12" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18507:2:12", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "18503:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "18503:7:12" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "18483:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "18483:28:12" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "18473:6:12" + } + ] + } + ] + }, + "name": "round_up_to_mul_of_32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "18446:5:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "18456:6:12", + "type": "" + } + ], + "src": "18415:102:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18615:272:12", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "18625:53:12", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "18672:5:12" + } + ], + "functionName": { + "name": "array_length_t_string_memory_ptr", + "nodeType": "YulIdentifier", + "src": "18639:32:12" + }, + "nodeType": "YulFunctionCall", + "src": "18639:39:12" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "18629:6:12", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "18687:78:12", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18753:3:12" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "18758:6:12" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "18694:58:12" + }, + "nodeType": "YulFunctionCall", + "src": "18694:71:12" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18687:3:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "18800:5:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18807:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18796:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "18796:16:12" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18814:3:12" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "18819:6:12" + } + ], + "functionName": { + "name": "copy_memory_to_memory", + "nodeType": "YulIdentifier", + "src": "18774:21:12" + }, + "nodeType": "YulFunctionCall", + "src": "18774:52:12" + }, + "nodeType": "YulExpressionStatement", + "src": "18774:52:12" + }, + { + "nodeType": "YulAssignment", + "src": "18835:46:12", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18846:3:12" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "18873:6:12" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "18851:21:12" + }, + "nodeType": "YulFunctionCall", + "src": "18851:29:12" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18842:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "18842:39:12" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "18835:3:12" + } + ] + } + ] + }, + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "18596:5:12", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "18603:3:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "18611:3:12", + "type": "" + } + ], + "src": "18523:364:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19011:195:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "19021:26:12", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19033:9:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19044:2:12", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19029:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "19029:18:12" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "19021:4:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19068:9:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19079:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19064:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "19064:17:12" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "19087:4:12" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19093:9:12" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "19083:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "19083:20:12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19057:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "19057:47:12" + }, + "nodeType": "YulExpressionStatement", + "src": "19057:47:12" + }, + { + "nodeType": "YulAssignment", + "src": "19113:86:12", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "19185:6:12" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "19194:4:12" + } + ], + "functionName": { + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "19121:63:12" + }, + "nodeType": "YulFunctionCall", + "src": "19121:78:12" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "19113:4:12" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "18983:9:12", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "18995:6:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "19006:4:12", + "type": "" + } + ], + "src": "18893:313:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19260:300:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "19270:25:12", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "19293:1:12" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "19275:17:12" + }, + "nodeType": "YulFunctionCall", + "src": "19275:20:12" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "19270:1:12" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "19304:25:12", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "19327:1:12" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "19309:17:12" + }, + "nodeType": "YulFunctionCall", + "src": "19309:20:12" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "19304:1:12" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19502:22:12", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "19504:16:12" + }, + "nodeType": "YulFunctionCall", + "src": "19504:18:12" + }, + "nodeType": "YulExpressionStatement", + "src": "19504:18:12" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "19414:1:12" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "19407:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "19407:9:12" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "19400:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "19400:17:12" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "19422:1:12" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19429:66:12", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "19497:1:12" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "19425:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "19425:74:12" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "19419:2:12" + }, + "nodeType": "YulFunctionCall", + "src": "19419:81:12" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "19396:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "19396:105:12" + }, + "nodeType": "YulIf", + "src": "19393:131:12" + }, + { + "nodeType": "YulAssignment", + "src": "19534:20:12", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "19549:1:12" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "19552:1:12" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "19545:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "19545:9:12" + }, + "variableNames": [ + { + "name": "product", + "nodeType": "YulIdentifier", + "src": "19534:7:12" + } + ] + } + ] + }, + "name": "checked_mul_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "19243:1:12", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "19246:1:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "product", + "nodeType": "YulTypedName", + "src": "19252:7:12", + "type": "" + } + ], + "src": "19212:348:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19610:261:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "19620:25:12", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "19643:1:12" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "19625:17:12" + }, + "nodeType": "YulFunctionCall", + "src": "19625:20:12" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "19620:1:12" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "19654:25:12", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "19677:1:12" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "19659:17:12" + }, + "nodeType": "YulFunctionCall", + "src": "19659:20:12" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "19654:1:12" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19817:22:12", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "19819:16:12" + }, + "nodeType": "YulFunctionCall", + "src": "19819:18:12" + }, + "nodeType": "YulExpressionStatement", + "src": "19819:18:12" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "19738:1:12" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19745:66:12", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "19813:1:12" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "19741:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "19741:74:12" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "19735:2:12" + }, + "nodeType": "YulFunctionCall", + "src": "19735:81:12" + }, + "nodeType": "YulIf", + "src": "19732:107:12" + }, + { + "nodeType": "YulAssignment", + "src": "19849:16:12", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "19860:1:12" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "19863:1:12" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19856:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "19856:9:12" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "19849:3:12" + } + ] + } + ] + }, + "name": "checked_add_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "19597:1:12", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "19600:1:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "19606:3:12", + "type": "" + } + ], + "src": "19566:305:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19920:128:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "19930:33:12", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "19957:5:12" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "19939:17:12" + }, + "nodeType": "YulFunctionCall", + "src": "19939:24:12" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "19930:5:12" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19991:22:12", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "19993:16:12" + }, + "nodeType": "YulFunctionCall", + "src": "19993:18:12" + }, + "nodeType": "YulExpressionStatement", + "src": "19993:18:12" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "19978:5:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19985:4:12", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "19975:2:12" + }, + "nodeType": "YulFunctionCall", + "src": "19975:15:12" + }, + "nodeType": "YulIf", + "src": "19972:41:12" + }, + { + "nodeType": "YulAssignment", + "src": "20022:20:12", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "20033:5:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20040:1:12", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "20029:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "20029:13:12" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "20022:3:12" + } + ] + } + ] + }, + "name": "decrement_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "19906:5:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "19916:3:12", + "type": "" + } + ], + "src": "19877:171:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20160:76:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "20182:6:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20190:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20178:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "20178:14:12" + }, + { + "hexValue": "537472696e67733a20686578206c656e67746820696e73756666696369656e74", + "kind": "string", + "nodeType": "YulLiteral", + "src": "20194:34:12", + "type": "", + "value": "Strings: hex length insufficient" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20171:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "20171:58:12" + }, + "nodeType": "YulExpressionStatement", + "src": "20171:58:12" + } + ] + }, + "name": "store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "20152:6:12", + "type": "" + } + ], + "src": "20054:182:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20388:220:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "20398:74:12", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "20464:3:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20469:2:12", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "20405:58:12" + }, + "nodeType": "YulFunctionCall", + "src": "20405:67:12" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "20398:3:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "20570:3:12" + } + ], + "functionName": { + "name": "store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2", + "nodeType": "YulIdentifier", + "src": "20481:88:12" + }, + "nodeType": "YulFunctionCall", + "src": "20481:93:12" + }, + "nodeType": "YulExpressionStatement", + "src": "20481:93:12" + }, + { + "nodeType": "YulAssignment", + "src": "20583:19:12", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "20594:3:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20599:2:12", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20590:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "20590:12:12" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "20583:3:12" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "20376:3:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "20384:3:12", + "type": "" + } + ], + "src": "20242:366:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20785:248:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "20795:26:12", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20807:9:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20818:2:12", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20803:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "20803:18:12" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "20795:4:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20842:9:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20853:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20838:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "20838:17:12" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "20861:4:12" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20867:9:12" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "20857:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "20857:20:12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20831:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "20831:47:12" + }, + "nodeType": "YulExpressionStatement", + "src": "20831:47:12" + }, + { + "nodeType": "YulAssignment", + "src": "20887:139:12", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "21021:4:12" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "20895:124:12" + }, + "nodeType": "YulFunctionCall", + "src": "20895:131:12" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "20887:4:12" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "20765:9:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "20780:4:12", + "type": "" + } + ], + "src": "20614:419:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21084:146:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "21094:25:12", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "21117:1:12" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "21099:17:12" + }, + "nodeType": "YulFunctionCall", + "src": "21099:20:12" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "21094:1:12" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "21128:25:12", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "21151:1:12" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "21133:17:12" + }, + "nodeType": "YulFunctionCall", + "src": "21133:20:12" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "21128:1:12" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21175:22:12", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "21177:16:12" + }, + "nodeType": "YulFunctionCall", + "src": "21177:18:12" + }, + "nodeType": "YulExpressionStatement", + "src": "21177:18:12" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "21169:1:12" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "21172:1:12" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "21166:2:12" + }, + "nodeType": "YulFunctionCall", + "src": "21166:8:12" + }, + "nodeType": "YulIf", + "src": "21163:34:12" + }, + { + "nodeType": "YulAssignment", + "src": "21207:17:12", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "21219:1:12" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "21222:1:12" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "21215:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "21215:9:12" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "21207:4:12" + } + ] + } + ] + }, + "name": "checked_sub_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "21070:1:12", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "21073:1:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "21079:4:12", + "type": "" + } + ], + "src": "21039:191:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21264:152:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21281:1:12", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21284:77:12", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21274:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "21274:88:12" + }, + "nodeType": "YulExpressionStatement", + "src": "21274:88:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21378:1:12", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21381:4:12", + "type": "", + "value": "0x31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21371:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "21371:15:12" + }, + "nodeType": "YulExpressionStatement", + "src": "21371:15:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21402:1:12", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21405:4:12", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "21395:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "21395:15:12" + }, + "nodeType": "YulExpressionStatement", + "src": "21395:15:12" + } + ] + }, + "name": "panic_error_0x31", + "nodeType": "YulFunctionDefinition", + "src": "21236:180:12" + } + ] + }, + "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes4(value) -> cleaned {\n cleaned := and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000)\n }\n\n function validator_revert_t_bytes4(value) {\n if iszero(eq(value, cleanup_t_bytes4(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes4(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes4(value)\n }\n\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes4(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n revert(0, 0)\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n // uint256[]\n function abi_decode_t_array$_t_uint256_$dyn_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x20)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1, value2 := abi_decode_t_array$_t_uint256_$dyn_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint160_to_t_uint160(value) -> converted {\n converted := cleanup_t_uint160(identity(cleanup_t_uint160(value)))\n }\n\n function convert_t_uint160_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_uint160(value)\n }\n\n function convert_t_contract$_IBEERC721_$1549_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_IBEERC721_$1549_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_IBEERC721_$1549_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_IBEERC721_$1549__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_IBEERC721_$1549_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_bytes32t_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_c0532a597c4fcdca619b8bd483d77a931af948aaf6338ee552604b6087393e08(memPtr) {\n\n mstore(add(memPtr, 0), \"Mintable count is not enough\")\n\n }\n\n function abi_encode_t_stringliteral_c0532a597c4fcdca619b8bd483d77a931af948aaf6338ee552604b6087393e08_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 28)\n store_literal_in_memory_c0532a597c4fcdca619b8bd483d77a931af948aaf6338ee552604b6087393e08(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_c0532a597c4fcdca619b8bd483d77a931af948aaf6338ee552604b6087393e08__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_c0532a597c4fcdca619b8bd483d77a931af948aaf6338ee552604b6087393e08_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function array_length_t_array$_t_uint256_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_uint256_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function abi_encode_t_uint256_to_t_uint256(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encodeUpdatedPos_t_uint256_to_t_uint256(value0, pos) -> updatedPos {\n abi_encode_t_uint256_to_t_uint256(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function array_nextElement_t_array$_t_uint256_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // uint256[] -> uint256[]\n function abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_uint256_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_uint256_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_uint256_to_t_uint256(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_uint256_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n function revert_error_d0468cefdb41083d2ff66f1e66140f10c9da08cd905521a779422e76a84d11ec() {\n revert(0, 0)\n }\n\n function copy_calldata_to_memory(src, dst, length) {\n calldatacopy(dst, src, length)\n // clear end\n mstore(add(dst, length), 0)\n }\n\n // uint256[] -> uint256[]\n function abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(start, length, pos) -> end {\n pos := array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length)\n\n if gt(length, 0x07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { revert_error_d0468cefdb41083d2ff66f1e66140f10c9da08cd905521a779422e76a84d11ec() }\n length := mul(length, 0x20)\n\n copy_calldata_to_memory(start, pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_calldata_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 64)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value0, tail)\n\n mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value1, value2, tail)\n\n }\n\n function store_literal_in_memory_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b(memPtr) {\n\n mstore(add(memPtr, 0), \"AccessControl: can only renounce\")\n\n mstore(add(memPtr, 32), \" roles for self\")\n\n }\n\n function abi_encode_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 47)\n store_literal_in_memory_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874(memPtr) {\n\n mstore(add(memPtr, 0), \"AccessControl: account \")\n\n }\n\n function abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 23)\n store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874(pos)\n end := add(pos, 23)\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function copy_memory_to_memory(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69(memPtr) {\n\n mstore(add(memPtr, 0), \" is missing role \")\n\n }\n\n function abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 17)\n store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69(pos)\n end := add(pos, 17)\n }\n\n function abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value1, value0) -> end {\n\n pos := abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n pos := abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value1, pos)\n\n end := pos\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x != 0 and y > (maxValue / x)\n if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n\n product := mul(x, y)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x > (maxValue - y)\n if gt(x, sub(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, y)) { panic_error_0x11() }\n\n sum := add(x, y)\n }\n\n function decrement_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0x00) { panic_error_0x11() }\n ret := sub(value, 1)\n }\n\n function store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2(memPtr) {\n\n mstore(add(memPtr, 0), \"Strings: hex length insufficient\")\n\n }\n\n function abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n if lt(x, y) { panic_error_0x11() }\n\n diff := sub(x, y)\n }\n\n function panic_error_0x31() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n\n}\n", + "id": 12, + "language": "Yul", + "name": "#utility.yul" + } + ], + "sourceMap": "165:6007:11:-:0;;;1102:629;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1229:37;257:23;;1229:13;;;:37;;:::i;:::-;1272:38;322:24;257:23;1272:13;;;:38;;:::i;:::-;1388:36;257:23;1411:12;:10;;;:12;;:::i;:::-;1388:10;;;:36;;:::i;:::-;1430:37;257:23;1461:4;1430:10;;;:37;;:::i;:::-;1528:39;322:24;1552:14;1528:10;;;:39;;:::i;:::-;1650:10;1634:3;;:27;;;;;;;;;;;;;;;;;;1716:10;1707:6;;:19;;;;;;;;;;;;;;;;;;1102:629;;;165:6007;;6492:247:0;6575:25;6603:18;6616:4;6603:12;;;:18;;:::i;:::-;6575:46;;6656:9;6631:6;:12;6638:4;6631:12;;;;;;;;;;;:22;;:34;;;;6722:9;6703:17;6697:4;6680:52;;;;;;;;;;6565:174;6492:247;;:::o;640:96:5:-;693:7;719:10;712:17;;640:96;:::o;6257:110:0:-;6335:25;6346:4;6352:7;6335:10;;;:25;;:::i;:::-;6257:110;;:::o;4008:129::-;4082:7;4108:6;:12;4115:4;4108:12;;;;;;;;;;;:22;;;4101:29;;4008:129;;;:::o;1978:166:1:-;2065:31;2082:4;2088:7;2065:16;;;;;:31;;:::i;:::-;2106;2129:7;2106:12;:18;2119:4;2106:18;;;;;;;;;;;:22;;;;;;:31;;;;:::i;:::-;;1978:166;;:::o;6861:233:0:-;6944:22;6952:4;6958:7;6944;;;:22;;:::i;:::-;6939:149;;7014:4;6982:6;:12;6989:4;6982:12;;;;;;;;;;;:20;;:29;7003:7;6982:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;7064:12;:10;;;:12;;:::i;:::-;7037:40;;7055:7;7037:40;;7049:4;7037:40;;;;;;;;;;6939:149;6861:233;;:::o;7612:150:9:-;7682:4;7705:50;7710:3;:10;;7746:5;7730:23;;7722:32;;7705:4;;;:50;;:::i;:::-;7698:57;;7612:150;;;;:::o;2909:145:0:-;2995:4;3018:6;:12;3025:4;3018:12;;;;;;;;;;;:20;;:29;3039:7;3018:29;;;;;;;;;;;;;;;;;;;;;;;;;3011:36;;2909:145;;;;:::o;1697:404:9:-;1760:4;1781:21;1791:3;1796:5;1781:9;;;:21;;:::i;:::-;1776:319;;1818:3;:11;;1835:5;1818:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1998:3;:11;;:18;;;;1976:3;:12;;:19;1989:5;1976:19;;;;;;;;;;;:40;;;;2037:4;2030:11;;;;1776:319;2079:5;2072:12;;1697:404;;;;;:::o;3738:127::-;3811:4;3857:1;3834:3;:12;;:19;3847:5;3834:19;;;;;;;;;;;;:24;;3827:31;;3738:127;;;;:::o;88:117:12:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:143::-;753:5;784:6;778:13;769:22;;800:33;827:5;800:33;:::i;:::-;696:143;;;;:::o;845:663::-;933:6;941;949;998:2;986:9;977:7;973:23;969:32;966:119;;;1004:79;;:::i;:::-;966:119;1124:1;1149:64;1205:7;1196:6;1185:9;1181:22;1149:64;:::i;:::-;1139:74;;1095:128;1262:2;1288:64;1344:7;1335:6;1324:9;1320:22;1288:64;:::i;:::-;1278:74;;1233:129;1401:2;1427:64;1483:7;1474:6;1463:9;1459:22;1427:64;:::i;:::-;1417:74;;1372:129;845:663;;;;;:::o;165:6007:11:-;;;;;;;", + "deployedSourceMap": "165:6007:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;634:212:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5521:649:11;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4008:129:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4387:145;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2831:1118:11;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5404:214:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;500:20:11;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;284:62;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;524:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;220:60;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4636:317;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1431:151:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2909:145:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2027:49;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;380:48:11;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1750:140:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4766:147:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;454:41:11;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;634:212:1;719:4;757:42;742:57;;;:11;:57;;;;:97;;;;803:36;827:11;803:23;:36::i;:::-;742:97;735:104;;634:212;;;:::o;5521:649:11:-;5583:7;5651:21;5675:11;:18;5687:5;5675:18;;;;;;;;;;;;;;;5651:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5731:13;5800:9;5795:314;5819:4;:11;5815:1;:15;5795:314;;;5895:14;5912:4;5917:1;5912:7;;;;;;;;:::i;:::-;;;;;;;;5895:24;;5982:9;:17;5992:6;5982:17;;;;;;;;;;;;;;;;;;;;;5977:126;;6087:7;;;;;:::i;:::-;;;;5977:126;5837:272;5832:3;;;;;:::i;:::-;;;;5795:314;;;;6160:5;6153:12;;;;5521:649;;;:::o;4008:129:0:-;4082:7;4108:6;:12;4115:4;4108:12;;;;;;;;;;;:22;;;4101:29;;4008:129;;;:::o;4387:145::-;4470:18;4483:4;4470:12;:18::i;:::-;2505:30;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;4500:25:::1;4511:4;4517:7;4500:10;:25::i;:::-;4387:145:::0;;;:::o;2831:1118:11:-;2078:37;322:24;2102:12;:10;:12::i;:::-;2078:10;:37::i;:::-;3015:23:::1;3032:5;3015:16;:23::i;:::-;2997:7;;:14;;:41;;2982:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;3134:21;3158:11;:18;3170:5;3158:18;;;;;;;;;;;;;;;3134:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3210:13;3233:26:::0;3276:7:::1;;:14;;3262:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3233:58;;3345:9;3340:491;3364:4;:11;3360:1;:15;3340:491;;;3390:14;3407:4;3412:1;3407:7;;;;;;;;:::i;:::-;;;;;;;;3390:24;;3466:9;:17;3476:6;3466:17;;;;;;;;;;;;;;;;;;;;;3461:364;;3562:13;3578:7;;3586:5;3578:14;;;;;;;:::i;:::-;;;;;;;;3562:30;;3602:7;;;;;:::i;:::-;;;;3639:4;3619:9;:17;3629:6;3619:17;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;3699:3;;;;;;;;;;;:8;;;3708:5;3715;3699:22;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3809:6;3789:9;3799:5;3789:16;;;;;;;;:::i;:::-;;;;;;;:27;;;::::0;::::1;3485:340;3461:364;3382:449;3377:3;;;;;:::i;:::-;;;;3340:491;;;;3919:3;;;;;;;;;;;3897:47;;3904:5;3897:47;;;3925:9;3936:7;;3897:47;;;;;;;;:::i;:::-;;;;;;;;2927:1022;;;2831:1118:::0;;;:::o;5404:214:0:-;5510:12;:10;:12::i;:::-;5499:23;;:7;:23;;;5491:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;5585:26;5597:4;5603:7;5585:11;:26::i;:::-;5404:214;;:::o;500:20:11:-;;;;;;;;;;;;;:::o;284:62::-;322:24;284:62;:::o;524:21::-;;;;;;;;;;;;;:::o;220:60::-;257:23;220:60;:::o;4636:317::-;2078:37;322:24;2102:12;:10;:12::i;:::-;2078:10;:37::i;:::-;4784:9:::1;4779:170;4803:7;;:14;;4799:1;:18;4779:170;;;4907:11;:18;4919:5;4907:18;;;;;;;;;;;;;;;4931:7;;4939:1;4931:10;;;;;;;:::i;:::-;;;;;;;;4907:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4819:3;;;;;:::i;:::-;;;;4779:170;;;;4636:317:::0;;;:::o;1431:151:1:-;1521:7;1547:28;1569:5;1547:12;:18;1560:4;1547:18;;;;;;;;;;;:21;;:28;;;;:::i;:::-;1540:35;;1431:151;;;;:::o;2909:145:0:-;2995:4;3018:6;:12;3025:4;3018:12;;;;;;;;;;;:20;;:29;3039:7;3018:29;;;;;;;;;;;;;;;;;;;;;;;;;3011:36;;2909:145;;;;:::o;2027:49::-;2072:4;2027:49;;;:::o;380:48:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1750:140:1:-;1830:7;1856:27;:12;:18;1869:4;1856:18;;;;;;;;;;;:25;:27::i;:::-;1849:34;;1750:140;;;:::o;4766:147:0:-;4850:18;4863:4;4850:12;:18::i;:::-;2505:30;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;4880:26:::1;4892:4;4898:7;4880:11;:26::i;:::-;4766:147:::0;;;:::o;454:41:11:-;;;;;;;;;;;;;;;;;;;;;;:::o;6861:233:0:-;6944:22;6952:4;6958:7;6944;:22::i;:::-;6939:149;;7014:4;6982:6;:12;6989:4;6982:12;;;;;;;;;;;:20;;:29;7003:7;6982:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;7064:12;:10;:12::i;:::-;7037:40;;7055:7;7037:40;;7049:4;7037:40;;;;;;;;;;6939:149;6861:233;;:::o;7612:150:9:-;7682:4;7705:50;7710:3;:10;;7746:5;7730:23;;7722:32;;7705:4;:50::i;:::-;7698:57;;7612:150;;;;:::o;2620:202:0:-;2705:4;2743:32;2728:47;;;:11;:47;;;;:87;;;;2779:36;2803:11;2779:23;:36::i;:::-;2728:87;2721:94;;2620:202;;;:::o;640:96:5:-;693:7;719:10;712:17;;640:96;:::o;3335:492:0:-;3423:22;3431:4;3437:7;3423;:22::i;:::-;3418:403;;3606:41;3634:7;3606:41;;3644:2;3606:19;:41::i;:::-;3718:38;3746:4;3738:13;;3753:2;3718:19;:38::i;:::-;3513:265;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3461:349;;;;;;;;;;;:::i;:::-;;;;;;;;3418:403;3335:492;;:::o;1978:166:1:-;2065:31;2082:4;2088:7;2065:16;:31::i;:::-;2106;2129:7;2106:12;:18;2119:4;2106:18;;;;;;;;;;;:22;;:31;;;;:::i;:::-;;1978:166;;:::o;2233:171::-;2321:32;2339:4;2345:7;2321:17;:32::i;:::-;2363:34;2389:7;2363:12;:18;2376:4;2363:18;;;;;;;;;;;:25;;:34;;;;:::i;:::-;;2233:171;;:::o;8870:156:9:-;8944:7;8994:22;8998:3;:10;;9010:5;8994:3;:22::i;:::-;8986:31;;8963:56;;8870:156;;;;:::o;8413:115::-;8476:7;8502:19;8510:3;:10;;8502:7;:19::i;:::-;8495:26;;8413:115;;;:::o;1697:404::-;1760:4;1781:21;1791:3;1796:5;1781:9;:21::i;:::-;1776:319;;1818:3;:11;;1835:5;1818:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1998:3;:11;;:18;;;;1976:3;:12;;:19;1989:5;1976:19;;;;;;;;;;;:40;;;;2037:4;2030:11;;;;1776:319;2079:5;2072:12;;1697:404;;;;;:::o;829:155:7:-;914:4;952:25;937:40;;;:11;:40;;;;930:47;;829:155;;;:::o;1588:441:6:-;1663:13;1688:19;1733:1;1724:6;1720:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1710:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1688:47;;1745:15;:6;1752:1;1745:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1770;:6;1777:1;1770:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1800:9;1825:1;1816:6;1812:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1800:26;;1795:132;1832:1;1828;:5;1795:132;;;1866:12;1887:3;1879:5;:11;1866:25;;;;;;;:::i;:::-;;;;;1854:6;1861:1;1854:9;;;;;;;;:::i;:::-;;;;;:37;;;;;;;;;;;1915:1;1905:11;;;;;1835:3;;;;:::i;:::-;;;1795:132;;;;1953:1;1944:5;:10;1936:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;2015:6;2001:21;;;1588:441;;;;:::o;7219:234:0:-;7302:22;7310:4;7316:7;7302;:22::i;:::-;7298:149;;;7372:5;7340:6;:12;7347:4;7340:12;;;;;;;;;;;:20;;:29;7361:7;7340:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;7423:12;:10;:12::i;:::-;7396:40;;7414:7;7396:40;;7408:4;7396:40;;;;;;;;;;7298:149;7219:234;;:::o;7930:156:9:-;8003:4;8026:53;8034:3;:10;;8070:5;8054:23;;8046:32;;8026:7;:53::i;:::-;8019:60;;7930:156;;;;:::o;4395:118::-;4462:7;4488:3;:11;;4500:5;4488:18;;;;;;;;:::i;:::-;;;;;;;;;;4481:25;;4395:118;;;;:::o;3946:107::-;4002:7;4028:3;:11;;:18;;;;4021:25;;3946:107;;;:::o;3738:127::-;3811:4;3857:1;3834:3;:12;;:19;3847:5;3834:19;;;;;;;;;;;;:24;;3827:31;;3738:127;;;;:::o;2269:1388::-;2335:4;2451:18;2472:3;:12;;:19;2485:5;2472:19;;;;;;;;;;;;2451:40;;2520:1;2506:10;:15;2502:1149;;2875:21;2912:1;2899:10;:14;;;;:::i;:::-;2875:38;;2927:17;2968:1;2947:3;:11;;:18;;;;:22;;;;:::i;:::-;2927:42;;3001:13;2988:9;:26;2984:398;;3034:17;3054:3;:11;;3066:9;3054:22;;;;;;;;:::i;:::-;;;;;;;;;;3034:42;;3205:9;3176:3;:11;;3188:13;3176:26;;;;;;;;:::i;:::-;;;;;;;;;:38;;;;3314:10;3288:3;:12;;:23;3301:9;3288:23;;;;;;;;;;;:36;;;;3016:366;2984:398;3460:3;:11;;:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3552:3;:12;;:19;3565:5;3552:19;;;;;;;;;;;3545:26;;;3593:4;3586:11;;;;;;;2502:1149;3635:5;3628:12;;;2269:1388;;;;;:::o;88:117:12:-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:126::-;1555:7;1595:42;1588:5;1584:54;1573:65;;1518:126;;;:::o;1650:96::-;1687:7;1716:24;1734:5;1716:24;:::i;:::-;1705:35;;1650:96;;;:::o;1752:122::-;1825:24;1843:5;1825:24;:::i;:::-;1818:5;1815:35;1805:63;;1864:1;1861;1854:12;1805:63;1752:122;:::o;1880:139::-;1926:5;1964:6;1951:20;1942:29;;1980:33;2007:5;1980:33;:::i;:::-;1880:139;;;;:::o;2025:329::-;2084:6;2133:2;2121:9;2112:7;2108:23;2104:32;2101:119;;;2139:79;;:::i;:::-;2101:119;2259:1;2284:53;2329:7;2320:6;2309:9;2305:22;2284:53;:::i;:::-;2274:63;;2230:117;2025:329;;;;:::o;2360:77::-;2397:7;2426:5;2415:16;;2360:77;;;:::o;2443:118::-;2530:24;2548:5;2530:24;:::i;:::-;2525:3;2518:37;2443:118;;:::o;2567:222::-;2660:4;2698:2;2687:9;2683:18;2675:26;;2711:71;2779:1;2768:9;2764:17;2755:6;2711:71;:::i;:::-;2567:222;;;;:::o;2795:77::-;2832:7;2861:5;2850:16;;2795:77;;;:::o;2878:122::-;2951:24;2969:5;2951:24;:::i;:::-;2944:5;2941:35;2931:63;;2990:1;2987;2980:12;2931:63;2878:122;:::o;3006:139::-;3052:5;3090:6;3077:20;3068:29;;3106:33;3133:5;3106:33;:::i;:::-;3006:139;;;;:::o;3151:329::-;3210:6;3259:2;3247:9;3238:7;3234:23;3230:32;3227:119;;;3265:79;;:::i;:::-;3227:119;3385:1;3410:53;3455:7;3446:6;3435:9;3431:22;3410:53;:::i;:::-;3400:63;;3356:117;3151:329;;;;:::o;3486:118::-;3573:24;3591:5;3573:24;:::i;:::-;3568:3;3561:37;3486:118;;:::o;3610:222::-;3703:4;3741:2;3730:9;3726:18;3718:26;;3754:71;3822:1;3811:9;3807:17;3798:6;3754:71;:::i;:::-;3610:222;;;;:::o;3838:474::-;3906:6;3914;3963:2;3951:9;3942:7;3938:23;3934:32;3931:119;;;3969:79;;:::i;:::-;3931:119;4089:1;4114:53;4159:7;4150:6;4139:9;4135:22;4114:53;:::i;:::-;4104:63;;4060:117;4216:2;4242:53;4287:7;4278:6;4267:9;4263:22;4242:53;:::i;:::-;4232:63;;4187:118;3838:474;;;;;:::o;4318:117::-;4427:1;4424;4417:12;4441:117;4550:1;4547;4540:12;4564:117;4673:1;4670;4663:12;4704:568;4777:8;4787:6;4837:3;4830:4;4822:6;4818:17;4814:27;4804:122;;4845:79;;:::i;:::-;4804:122;4958:6;4945:20;4935:30;;4988:18;4980:6;4977:30;4974:117;;;5010:79;;:::i;:::-;4974:117;5124:4;5116:6;5112:17;5100:29;;5178:3;5170:4;5162:6;5158:17;5148:8;5144:32;5141:41;5138:128;;;5185:79;;:::i;:::-;5138:128;4704:568;;;;;:::o;5278:704::-;5373:6;5381;5389;5438:2;5426:9;5417:7;5413:23;5409:32;5406:119;;;5444:79;;:::i;:::-;5406:119;5564:1;5589:53;5634:7;5625:6;5614:9;5610:22;5589:53;:::i;:::-;5579:63;;5535:117;5719:2;5708:9;5704:18;5691:32;5750:18;5742:6;5739:30;5736:117;;;5772:79;;:::i;:::-;5736:117;5885:80;5957:7;5948:6;5937:9;5933:22;5885:80;:::i;:::-;5867:98;;;;5662:313;5278:704;;;;;:::o;5988:60::-;6016:3;6037:5;6030:12;;5988:60;;;:::o;6054:142::-;6104:9;6137:53;6155:34;6164:24;6182:5;6164:24;:::i;:::-;6155:34;:::i;:::-;6137:53;:::i;:::-;6124:66;;6054:142;;;:::o;6202:126::-;6252:9;6285:37;6316:5;6285:37;:::i;:::-;6272:50;;6202:126;;;:::o;6334:144::-;6402:9;6435:37;6466:5;6435:37;:::i;:::-;6422:50;;6334:144;;;:::o;6484:167::-;6589:55;6638:5;6589:55;:::i;:::-;6584:3;6577:68;6484:167;;:::o;6657:258::-;6768:4;6806:2;6795:9;6791:18;6783:26;;6819:89;6905:1;6894:9;6890:17;6881:6;6819:89;:::i;:::-;6657:258;;;;:::o;6921:118::-;7008:24;7026:5;7008:24;:::i;:::-;7003:3;6996:37;6921:118;;:::o;7045:222::-;7138:4;7176:2;7165:9;7161:18;7153:26;;7189:71;7257:1;7246:9;7242:17;7233:6;7189:71;:::i;:::-;7045:222;;;;:::o;7273:122::-;7346:24;7364:5;7346:24;:::i;:::-;7339:5;7336:35;7326:63;;7385:1;7382;7375:12;7326:63;7273:122;:::o;7401:139::-;7447:5;7485:6;7472:20;7463:29;;7501:33;7528:5;7501:33;:::i;:::-;7401:139;;;;:::o;7546:474::-;7614:6;7622;7671:2;7659:9;7650:7;7646:23;7642:32;7639:119;;;7677:79;;:::i;:::-;7639:119;7797:1;7822:53;7867:7;7858:6;7847:9;7843:22;7822:53;:::i;:::-;7812:63;;7768:117;7924:2;7950:53;7995:7;7986:6;7975:9;7971:22;7950:53;:::i;:::-;7940:63;;7895:118;7546:474;;;;;:::o;8026:::-;8094:6;8102;8151:2;8139:9;8130:7;8126:23;8122:32;8119:119;;;8157:79;;:::i;:::-;8119:119;8277:1;8302:53;8347:7;8338:6;8327:9;8323:22;8302:53;:::i;:::-;8292:63;;8248:117;8404:2;8430:53;8475:7;8466:6;8455:9;8451:22;8430:53;:::i;:::-;8420:63;;8375:118;8026:474;;;;;:::o;8506:329::-;8565:6;8614:2;8602:9;8593:7;8589:23;8585:32;8582:119;;;8620:79;;:::i;:::-;8582:119;8740:1;8765:53;8810:7;8801:6;8790:9;8786:22;8765:53;:::i;:::-;8755:63;;8711:117;8506:329;;;;:::o;8841:180::-;8889:77;8886:1;8879:88;8986:4;8983:1;8976:15;9010:4;9007:1;9000:15;9027:180;9075:77;9072:1;9065:88;9172:4;9169:1;9162:15;9196:4;9193:1;9186:15;9213:233;9252:3;9275:24;9293:5;9275:24;:::i;:::-;9266:33;;9321:66;9314:5;9311:77;9308:103;;;9391:18;;:::i;:::-;9308:103;9438:1;9431:5;9427:13;9420:20;;9213:233;;;:::o;9452:169::-;9536:11;9570:6;9565:3;9558:19;9610:4;9605:3;9601:14;9586:29;;9452:169;;;;:::o;9627:178::-;9767:30;9763:1;9755:6;9751:14;9744:54;9627:178;:::o;9811:366::-;9953:3;9974:67;10038:2;10033:3;9974:67;:::i;:::-;9967:74;;10050:93;10139:3;10050:93;:::i;:::-;10168:2;10163:3;10159:12;10152:19;;9811:366;;;:::o;10183:419::-;10349:4;10387:2;10376:9;10372:18;10364:26;;10436:9;10430:4;10426:20;10422:1;10411:9;10407:17;10400:47;10464:131;10590:4;10464:131;:::i;:::-;10456:139;;10183:419;;;:::o;10608:180::-;10656:77;10653:1;10646:88;10753:4;10750:1;10743:15;10777:4;10774:1;10767:15;10794:332;10915:4;10953:2;10942:9;10938:18;10930:26;;10966:71;11034:1;11023:9;11019:17;11010:6;10966:71;:::i;:::-;11047:72;11115:2;11104:9;11100:18;11091:6;11047:72;:::i;:::-;10794:332;;;;;:::o;11132:114::-;11199:6;11233:5;11227:12;11217:22;;11132:114;;;:::o;11252:184::-;11351:11;11385:6;11380:3;11373:19;11425:4;11420:3;11416:14;11401:29;;11252:184;;;;:::o;11442:132::-;11509:4;11532:3;11524:11;;11562:4;11557:3;11553:14;11545:22;;11442:132;;;:::o;11580:108::-;11657:24;11675:5;11657:24;:::i;:::-;11652:3;11645:37;11580:108;;:::o;11694:179::-;11763:10;11784:46;11826:3;11818:6;11784:46;:::i;:::-;11862:4;11857:3;11853:14;11839:28;;11694:179;;;;:::o;11879:113::-;11949:4;11981;11976:3;11972:14;11964:22;;11879:113;;;:::o;12028:732::-;12147:3;12176:54;12224:5;12176:54;:::i;:::-;12246:86;12325:6;12320:3;12246:86;:::i;:::-;12239:93;;12356:56;12406:5;12356:56;:::i;:::-;12435:7;12466:1;12451:284;12476:6;12473:1;12470:13;12451:284;;;12552:6;12546:13;12579:63;12638:3;12623:13;12579:63;:::i;:::-;12572:70;;12665:60;12718:6;12665:60;:::i;:::-;12655:70;;12511:224;12498:1;12495;12491:9;12486:14;;12451:284;;;12455:14;12751:3;12744:10;;12152:608;;;12028:732;;;;:::o;12766:117::-;12875:1;12872;12865:12;12889:154;12973:6;12968:3;12963;12950:30;13035:1;13026:6;13021:3;13017:16;13010:27;12889:154;;;:::o;13079:537::-;13207:3;13228:86;13307:6;13302:3;13228:86;:::i;:::-;13221:93;;13338:66;13330:6;13327:78;13324:165;;;13408:79;;:::i;:::-;13324:165;13520:4;13512:6;13508:17;13498:27;;13535:43;13571:6;13566:3;13559:5;13535:43;:::i;:::-;13603:6;13598:3;13594:16;13587:23;;13079:537;;;;;:::o;13622:654::-;13853:4;13891:2;13880:9;13876:18;13868:26;;13940:9;13934:4;13930:20;13926:1;13915:9;13911:17;13904:47;13968:108;14071:4;14062:6;13968:108;:::i;:::-;13960:116;;14123:9;14117:4;14113:20;14108:2;14097:9;14093:18;14086:48;14151:118;14264:4;14255:6;14247;14151:118;:::i;:::-;14143:126;;13622:654;;;;;;:::o;14282:234::-;14422:34;14418:1;14410:6;14406:14;14399:58;14491:17;14486:2;14478:6;14474:15;14467:42;14282:234;:::o;14522:366::-;14664:3;14685:67;14749:2;14744:3;14685:67;:::i;:::-;14678:74;;14761:93;14850:3;14761:93;:::i;:::-;14879:2;14874:3;14870:12;14863:19;;14522:366;;;:::o;14894:419::-;15060:4;15098:2;15087:9;15083:18;15075:26;;15147:9;15141:4;15137:20;15133:1;15122:9;15118:17;15111:47;15175:131;15301:4;15175:131;:::i;:::-;15167:139;;14894:419;;;:::o;15319:148::-;15421:11;15458:3;15443:18;;15319:148;;;;:::o;15473:173::-;15613:25;15609:1;15601:6;15597:14;15590:49;15473:173;:::o;15652:402::-;15812:3;15833:85;15915:2;15910:3;15833:85;:::i;:::-;15826:92;;15927:93;16016:3;15927:93;:::i;:::-;16045:2;16040:3;16036:12;16029:19;;15652:402;;;:::o;16060:99::-;16112:6;16146:5;16140:12;16130:22;;16060:99;;;:::o;16165:307::-;16233:1;16243:113;16257:6;16254:1;16251:13;16243:113;;;16342:1;16337:3;16333:11;16327:18;16323:1;16318:3;16314:11;16307:39;16279:2;16276:1;16272:10;16267:15;;16243:113;;;16374:6;16371:1;16368:13;16365:101;;;16454:1;16445:6;16440:3;16436:16;16429:27;16365:101;16214:258;16165:307;;;:::o;16478:377::-;16584:3;16612:39;16645:5;16612:39;:::i;:::-;16667:89;16749:6;16744:3;16667:89;:::i;:::-;16660:96;;16765:52;16810:6;16805:3;16798:4;16791:5;16787:16;16765:52;:::i;:::-;16842:6;16837:3;16833:16;16826:23;;16588:267;16478:377;;;;:::o;16861:167::-;17001:19;16997:1;16989:6;16985:14;16978:43;16861:167;:::o;17034:402::-;17194:3;17215:85;17297:2;17292:3;17215:85;:::i;:::-;17208:92;;17309:93;17398:3;17309:93;:::i;:::-;17427:2;17422:3;17418:12;17411:19;;17034:402;;;:::o;17442:967::-;17824:3;17846:148;17990:3;17846:148;:::i;:::-;17839:155;;18011:95;18102:3;18093:6;18011:95;:::i;:::-;18004:102;;18123:148;18267:3;18123:148;:::i;:::-;18116:155;;18288:95;18379:3;18370:6;18288:95;:::i;:::-;18281:102;;18400:3;18393:10;;17442:967;;;;;:::o;18415:102::-;18456:6;18507:2;18503:7;18498:2;18491:5;18487:14;18483:28;18473:38;;18415:102;;;:::o;18523:364::-;18611:3;18639:39;18672:5;18639:39;:::i;:::-;18694:71;18758:6;18753:3;18694:71;:::i;:::-;18687:78;;18774:52;18819:6;18814:3;18807:4;18800:5;18796:16;18774:52;:::i;:::-;18851:29;18873:6;18851:29;:::i;:::-;18846:3;18842:39;18835:46;;18615:272;18523:364;;;;:::o;18893:313::-;19006:4;19044:2;19033:9;19029:18;19021:26;;19093:9;19087:4;19083:20;19079:1;19068:9;19064:17;19057:47;19121:78;19194:4;19185:6;19121:78;:::i;:::-;19113:86;;18893:313;;;;:::o;19212:348::-;19252:7;19275:20;19293:1;19275:20;:::i;:::-;19270:25;;19309:20;19327:1;19309:20;:::i;:::-;19304:25;;19497:1;19429:66;19425:74;19422:1;19419:81;19414:1;19407:9;19400:17;19396:105;19393:131;;;19504:18;;:::i;:::-;19393:131;19552:1;19549;19545:9;19534:20;;19212:348;;;;:::o;19566:305::-;19606:3;19625:20;19643:1;19625:20;:::i;:::-;19620:25;;19659:20;19677:1;19659:20;:::i;:::-;19654:25;;19813:1;19745:66;19741:74;19738:1;19735:81;19732:107;;;19819:18;;:::i;:::-;19732:107;19863:1;19860;19856:9;19849:16;;19566:305;;;;:::o;19877:171::-;19916:3;19939:24;19957:5;19939:24;:::i;:::-;19930:33;;19985:4;19978:5;19975:15;19972:41;;;19993:18;;:::i;:::-;19972:41;20040:1;20033:5;20029:13;20022:20;;19877:171;;;:::o;20054:182::-;20194:34;20190:1;20182:6;20178:14;20171:58;20054:182;:::o;20242:366::-;20384:3;20405:67;20469:2;20464:3;20405:67;:::i;:::-;20398:74;;20481:93;20570:3;20481:93;:::i;:::-;20599:2;20594:3;20590:12;20583:19;;20242:366;;;:::o;20614:419::-;20780:4;20818:2;20807:9;20803:18;20795:26;;20867:9;20861:4;20857:20;20853:1;20842:9;20838:17;20831:47;20895:131;21021:4;20895:131;:::i;:::-;20887:139;;20614:419;;;:::o;21039:191::-;21079:4;21099:20;21117:1;21099:20;:::i;:::-;21094:25;;21133:20;21151:1;21133:20;:::i;:::-;21128:25;;21172:1;21169;21166:8;21163:34;;;21177:18;;:::i;:::-;21163:34;21222:1;21219;21215:9;21207:17;;21039:191;;;;:::o;21236:180::-;21284:77;21281:1;21274:88;21381:4;21378:1;21371:15;21405:4;21402:1;21395:15", + "source": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.10;\n\nimport \"@openzeppelin/contracts/access/AccessControlEnumerable.sol\";\nimport \"../interfaces/IBEERC721.sol\";\n\ncontract NftDistributor is AccessControlEnumerable {\n bytes32 public constant ADMIN_ROLE = keccak256(\"ADMIN_ROLE\");\n bytes32 public constant MANAGE_ROLE = keccak256(\"MANAGE_ROLE\");\n\n // user address => nft ids\n mapping(address => uint256[]) public ownerToNFTs;\n // nft id => minted\n mapping(uint256 => bool) public nftMinted;\n\n IBEERC721 public nft;\n address public source;\n\n event Minted(\n address indexed user,\n address indexed nft,\n uint256[] nftSIds,\n uint256[] nftTIds\n );\n\n /**\n * @dev Contract constructor.\n *\n * Initializes the contract with the specified addresses and sets the admin and management roles.\n *\n * Parameters:\n * - _nftTarget: The address of NFT that will be minted by this contract. Need MINTER_ROLE\n * - _nftSource: The address of the source NFT that will check if user has mint permission.\n * - _manageAddress: The address that will have the MANAGE_ROLE assigned.\n */\n constructor(address _nftTarget, address _nftSource, address _manageAddress) {\n // Set up the ADMIN_ROLE and MANAGE_ROLE\n _setRoleAdmin(ADMIN_ROLE, ADMIN_ROLE);\n _setRoleAdmin(MANAGE_ROLE, ADMIN_ROLE);\n\n // Grant the ADMIN_ROLE to the deployer and to the contract itself\n _setupRole(ADMIN_ROLE, _msgSender());\n _setupRole(ADMIN_ROLE, address(this));\n\n // Grant the MANAGE_ROLE to the specified address\n _setupRole(MANAGE_ROLE, _manageAddress);\n\n // Initialize the nft contract with IBEERC721 interface\n nft = IBEERC721(_nftTarget);\n\n // Set the source contract address\n source = _nftSource;\n }\n\n /**\n * @dev Modifier that checks if the caller has the MANAGE_ROLE.\n *\n * The function uses the _checkRole() function from the AccessControl library.\n * If the check is successful, the code defined by the function that uses this modifier is executed.\n */\n modifier onlyManager() {\n // Check if the caller has the MANAGE_ROLE\n _checkRole(MANAGE_ROLE, _msgSender());\n // If the check is successful, execute the code in the function that uses this modifier\n _;\n }\n\n /**\n * @dev The mintToUser function mints NFTs to a given user.\n *\n * Only functions called by an address with the MANAGE_ROLE permission can access this function.\n * The function takes an array of nftIds and checks that there are enough mintable NFTs for the user.\n * It then loops through the user's owned NFTs, checking if each is mintable, and if so, adds it to a list to be minted.\n * Then it emits the Minted event with details of the operation.\n *\n * @param _user - The address of the user receiving the NFTs\n * @param _nftIds - An array of the IDs for the NFTs being minted\n */\n function mintToUser(\n address _user,\n uint256[] calldata _nftIds\n ) external onlyManager {\n // Check that there are enough mintable NFTs\n require(\n _nftIds.length <= getMintableCount(_user),\n \"Mintable count is not enough\"\n );\n // Get the array of the user's owned NFTs\n uint256[] memory nfts = ownerToNFTs[_user];\n // Initialize variables\n uint256 index = 0;\n uint256[] memory nftSource = new uint256[](_nftIds.length);\n\n // Loop through the user's owned NFTs\n for (uint256 i = 0; i < nfts.length; i++) {\n uint256 nftSId = nfts[i];\n\n // Check if the NFT is mintable\n if (!nftMinted[nftSId]) {\n // If the NFT is mintable, add it to the list to be minted\n uint256 nftId = _nftIds[index];\n index++;\n nftMinted[nftSId] = true;\n // Mint the NFT to the user's address\n nft.mint(_user, nftId);\n // Add the NFT's source ID to the list of sources\n nftSource[index] = (nftSId);\n }\n }\n // Emit event with details of the minting operation\n emit Minted(_user, address(nft), nftSource, _nftIds);\n }\n\n /**\n * @dev The addNFTData function adds an array of NFT IDs to the list of NFT IDs owned by a user.\n * mintToUser method would check if target user had permission to mint NFTs.\n *\n * Only functions called by an address with the MANAGE_ROLE permission can access this function.\n * The function takes in the address of the user and an array of NFT IDs. It then loops through the array\n * of NFT IDs, and adds each one to the end of the array of NFTs owned by that user to update their ownership data.\n *\n * @param _user - The address of the user being updated with new NFT data\n * @param _nftIds - An array of NFT IDs being added to the user's NFT data\n */\n function addNFTData(\n address _user,\n uint256[] calldata _nftIds\n ) external onlyManager {\n // Loop through the array of NFT IDs\n for (uint256 i = 0; i < _nftIds.length; i++) {\n // Add each NFT ID to the end of the array of NFTs owned by the user\n ownerToNFTs[_user].push(_nftIds[i]);\n }\n }\n\n /**\n * @dev The getMintableCount function gets the number of NFTs owned by a user that have not yet been minted.\n *\n * This is a read-only function, meaning it doesn't modify the state of the blockchain.\n * It takes in the address of the user whose mintable count is being determined,\n * and returns the number of NFTs owned by the user that have not yet been minted.\n *\n * @param _user - The address of the user whose mintable count is being determined\n * @return count - The number of NFTs owned by the user that have not yet been minted\n */\n function getMintableCount(address _user) public view returns (uint256) {\n // Get an array of all NFT IDs owned by the user\n uint256[] memory nfts = ownerToNFTs[_user];\n // Initialize count to zero\n uint256 count = 0;\n // Loop through the array of NFT IDs\n for (uint256 i = 0; i < nfts.length; i++) {\n // Get the NFT ID at this index of the loop\n uint256 nftAId = nfts[i];\n // Check if the NFT has not yet been minted\n if (!nftMinted[nftAId]) {\n // If the NFT has not yet been minted, increment the mintable count\n count++;\n }\n }\n // Return the final mintable count\n return count;\n }\n}\n", + "sourcePath": "/Users/zhl/Documents/workspace/crypto/becrypto/contracts/logic/NftDistributor.sol", + "ast": { + "absolutePath": "project:/contracts/logic/NftDistributor.sol", + "exportedSymbols": { + "AccessControl": [ + 308 + ], + "AccessControlEnumerable": [ + 433 + ], + "Context": [ + 669 + ], + "ERC165": [ + 896 + ], + "EnumerableSet": [ + 1507 + ], + "IAccessControl": [ + 506 + ], + "IAccessControlEnumerable": [ + 531 + ], + "IBEERC721": [ + 1549 + ], + "IERC165": [ + 908 + ], + "IERC721": [ + 647 + ], + "NftDistributor": [ + 1850 + ], + "Strings": [ + 872 + ] + }, + "id": 1851, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1551, + "literals": [ + "solidity", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "32:23:11" + }, + { + "absolutePath": "@openzeppelin/contracts/access/AccessControlEnumerable.sol", + "file": "@openzeppelin/contracts/access/AccessControlEnumerable.sol", + "id": 1552, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1851, + "sourceUnit": 434, + "src": "57:68:11", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/interfaces/IBEERC721.sol", + "file": "../interfaces/IBEERC721.sol", + "id": 1553, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1851, + "sourceUnit": 1550, + "src": "126:37:11", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 1554, + "name": "AccessControlEnumerable", + "nodeType": "IdentifierPath", + "referencedDeclaration": 433, + "src": "192:23:11" + }, + "id": 1555, + "nodeType": "InheritanceSpecifier", + "src": "192:23:11" + } + ], + "canonicalName": "NftDistributor", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 1850, + "linearizedBaseContracts": [ + 1850, + 433, + 308, + 896, + 908, + 531, + 506, + 669 + ], + "name": "NftDistributor", + "nameLocation": "174:14:11", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "functionSelector": "75b238fc", + "id": 1560, + "mutability": "constant", + "name": "ADMIN_ROLE", + "nameLocation": "244:10:11", + "nodeType": "VariableDeclaration", + "scope": 1850, + "src": "220:60:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1556, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "220:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "41444d494e5f524f4c45", + "id": 1558, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "267:12:11", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775", + "typeString": "literal_string \"ADMIN_ROLE\"" + }, + "value": "ADMIN_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_a49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775", + "typeString": "literal_string \"ADMIN_ROLE\"" + } + ], + "id": 1557, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967288, + "src": "257:9:11", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 1559, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "257:23:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "60a4b76a", + "id": 1565, + "mutability": "constant", + "name": "MANAGE_ROLE", + "nameLocation": "308:11:11", + "nodeType": "VariableDeclaration", + "scope": 1850, + "src": "284:62:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1561, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "284:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "4d414e4147455f524f4c45", + "id": 1563, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "332:13:11", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a076a07f65bcd51bcb15a0f01a65bc18f2d922acb81bcfd8af4caf5adb557091", + "typeString": "literal_string \"MANAGE_ROLE\"" + }, + "value": "MANAGE_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_a076a07f65bcd51bcb15a0f01a65bc18f2d922acb81bcfd8af4caf5adb557091", + "typeString": "literal_string \"MANAGE_ROLE\"" + } + ], + "id": 1562, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967288, + "src": "322:9:11", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 1564, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "322:24:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "ad0f93ad", + "id": 1570, + "mutability": "mutable", + "name": "ownerToNFTs", + "nameLocation": "417:11:11", + "nodeType": "VariableDeclaration", + "scope": 1850, + "src": "380:48:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[])" + }, + "typeName": { + "id": 1569, + "keyType": { + "id": 1566, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "388:7:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "380:29:11", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[])" + }, + "valueType": { + "baseType": { + "id": 1567, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "399:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1568, + "nodeType": "ArrayTypeName", + "src": "399:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "ffd68f15", + "id": 1574, + "mutability": "mutable", + "name": "nftMinted", + "nameLocation": "486:9:11", + "nodeType": "VariableDeclaration", + "scope": 1850, + "src": "454:41:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$", + "typeString": "mapping(uint256 => bool)" + }, + "typeName": { + "id": 1573, + "keyType": { + "id": 1571, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "462:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "454:24:11", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$", + "typeString": "mapping(uint256 => bool)" + }, + "valueType": { + "id": 1572, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "473:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "47ccca02", + "id": 1577, + "mutability": "mutable", + "name": "nft", + "nameLocation": "517:3:11", + "nodeType": "VariableDeclaration", + "scope": 1850, + "src": "500:20:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBEERC721_$1549", + "typeString": "contract IBEERC721" + }, + "typeName": { + "id": 1576, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1575, + "name": "IBEERC721", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1549, + "src": "500:9:11" + }, + "referencedDeclaration": 1549, + "src": "500:9:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBEERC721_$1549", + "typeString": "contract IBEERC721" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "67e828bf", + "id": 1579, + "mutability": "mutable", + "name": "source", + "nameLocation": "539:6:11", + "nodeType": "VariableDeclaration", + "scope": 1850, + "src": "524:21:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1578, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "524:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "anonymous": false, + "id": 1591, + "name": "Minted", + "nameLocation": "556:6:11", + "nodeType": "EventDefinition", + "parameters": { + "id": 1590, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1581, + "indexed": true, + "mutability": "mutable", + "name": "user", + "nameLocation": "584:4:11", + "nodeType": "VariableDeclaration", + "scope": 1591, + "src": "568:20:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1580, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "568:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1583, + "indexed": true, + "mutability": "mutable", + "name": "nft", + "nameLocation": "610:3:11", + "nodeType": "VariableDeclaration", + "scope": 1591, + "src": "594:19:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1582, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "594:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1586, + "indexed": false, + "mutability": "mutable", + "name": "nftSIds", + "nameLocation": "629:7:11", + "nodeType": "VariableDeclaration", + "scope": 1591, + "src": "619:17:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1584, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "619:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1585, + "nodeType": "ArrayTypeName", + "src": "619:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1589, + "indexed": false, + "mutability": "mutable", + "name": "nftTIds", + "nameLocation": "652:7:11", + "nodeType": "VariableDeclaration", + "scope": 1591, + "src": "642:17:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1587, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "642:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1588, + "nodeType": "ArrayTypeName", + "src": "642:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "562:101:11" + }, + "src": "550:114:11" + }, + { + "body": { + "id": 1640, + "nodeType": "Block", + "src": "1178:553:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1602, + "name": "ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1560, + "src": "1243:10:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 1603, + "name": "ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1560, + "src": "1255:10:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1601, + "name": "_setRoleAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 244, + "src": "1229:13:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (bytes32,bytes32)" + } + }, + "id": 1604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1229:37:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1605, + "nodeType": "ExpressionStatement", + "src": "1229:37:11" + }, + { + "expression": { + "arguments": [ + { + "id": 1607, + "name": "MANAGE_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1565, + "src": "1286:11:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 1608, + "name": "ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1560, + "src": "1299:10:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1606, + "name": "_setRoleAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 244, + "src": "1272:13:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (bytes32,bytes32)" + } + }, + "id": 1609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1272:38:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1610, + "nodeType": "ExpressionStatement", + "src": "1272:38:11" + }, + { + "expression": { + "arguments": [ + { + "id": 1612, + "name": "ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1560, + "src": "1399:10:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1613, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 659, + "src": "1411:10:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 1614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1411:12:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1611, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 216, + "src": "1388:10:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 1615, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1388:36:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1616, + "nodeType": "ExpressionStatement", + "src": "1388:36:11" + }, + { + "expression": { + "arguments": [ + { + "id": 1618, + "name": "ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1560, + "src": "1441:10:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "id": 1621, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "1461:4:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NftDistributor_$1850", + "typeString": "contract NftDistributor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_NftDistributor_$1850", + "typeString": "contract NftDistributor" + } + ], + "id": 1620, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1453:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1619, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1453:7:11", + "typeDescriptions": {} + } + }, + "id": 1622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1453:13:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1617, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 216, + "src": "1430:10:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 1623, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1430:37:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1624, + "nodeType": "ExpressionStatement", + "src": "1430:37:11" + }, + { + "expression": { + "arguments": [ + { + "id": 1626, + "name": "MANAGE_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1565, + "src": "1539:11:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 1627, + "name": "_manageAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1598, + "src": "1552:14:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1625, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 216, + "src": "1528:10:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 1628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1528:39:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1629, + "nodeType": "ExpressionStatement", + "src": "1528:39:11" + }, + { + "expression": { + "id": 1634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1630, + "name": "nft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1577, + "src": "1634:3:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBEERC721_$1549", + "typeString": "contract IBEERC721" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1632, + "name": "_nftTarget", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1594, + "src": "1650:10:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1631, + "name": "IBEERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1549, + "src": "1640:9:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBEERC721_$1549_$", + "typeString": "type(contract IBEERC721)" + } + }, + "id": 1633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1640:21:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBEERC721_$1549", + "typeString": "contract IBEERC721" + } + }, + "src": "1634:27:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBEERC721_$1549", + "typeString": "contract IBEERC721" + } + }, + "id": 1635, + "nodeType": "ExpressionStatement", + "src": "1634:27:11" + }, + { + "expression": { + "id": 1638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1636, + "name": "source", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1579, + "src": "1707:6:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1637, + "name": "_nftSource", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1596, + "src": "1716:10:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1707:19:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1639, + "nodeType": "ExpressionStatement", + "src": "1707:19:11" + } + ] + }, + "documentation": { + "id": 1592, + "nodeType": "StructuredDocumentation", + "src": "668:431:11", + "text": " @dev Contract constructor.\n Initializes the contract with the specified addresses and sets the admin and management roles.\n Parameters:\n - _nftTarget: The address of NFT that will be minted by this contract. Need MINTER_ROLE\n - _nftSource: The address of the source NFT that will check if user has mint permission.\n - _manageAddress: The address that will have the MANAGE_ROLE assigned." + }, + "id": 1641, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1599, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1594, + "mutability": "mutable", + "name": "_nftTarget", + "nameLocation": "1122:10:11", + "nodeType": "VariableDeclaration", + "scope": 1641, + "src": "1114:18:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1593, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1114:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1596, + "mutability": "mutable", + "name": "_nftSource", + "nameLocation": "1142:10:11", + "nodeType": "VariableDeclaration", + "scope": 1641, + "src": "1134:18:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1595, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1134:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1598, + "mutability": "mutable", + "name": "_manageAddress", + "nameLocation": "1162:14:11", + "nodeType": "VariableDeclaration", + "scope": 1641, + "src": "1154:22:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1597, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1154:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1113:64:11" + }, + "returnParameters": { + "id": 1600, + "nodeType": "ParameterList", + "parameters": [], + "src": "1178:0:11" + }, + "scope": 1850, + "src": "1102:629:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1651, + "nodeType": "Block", + "src": "2025:194:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1645, + "name": "MANAGE_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1565, + "src": "2089:11:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1646, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 659, + "src": "2102:10:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 1647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2102:12:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1644, + "name": "_checkRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 124, + "src": "2078:10:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address) view" + } + }, + "id": 1648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2078:37:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1649, + "nodeType": "ExpressionStatement", + "src": "2078:37:11" + }, + { + "id": 1650, + "nodeType": "PlaceholderStatement", + "src": "2213:1:11" + } + ] + }, + "documentation": { + "id": 1642, + "nodeType": "StructuredDocumentation", + "src": "1735:264:11", + "text": " @dev Modifier that checks if the caller has the MANAGE_ROLE.\n The function uses the _checkRole() function from the AccessControl library.\n If the check is successful, the code defined by the function that uses this modifier is executed." + }, + "id": 1652, + "name": "onlyManager", + "nameLocation": "2011:11:11", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 1643, + "nodeType": "ParameterList", + "parameters": [], + "src": "2022:2:11" + }, + "src": "2002:217:11", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1762, + "nodeType": "Block", + "src": "2927:1022:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1664, + "name": "_nftIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1658, + "src": "2997:7:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 1665, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2997:14:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "arguments": [ + { + "id": 1667, + "name": "_user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1655, + "src": "3032:5:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1666, + "name": "getMintableCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1849, + "src": "3015:16:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view returns (uint256)" + } + }, + "id": 1668, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3015:23:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2997:41:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4d696e7461626c6520636f756e74206973206e6f7420656e6f756768", + "id": 1670, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3046:30:11", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c0532a597c4fcdca619b8bd483d77a931af948aaf6338ee552604b6087393e08", + "typeString": "literal_string \"Mintable count is not enough\"" + }, + "value": "Mintable count is not enough" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c0532a597c4fcdca619b8bd483d77a931af948aaf6338ee552604b6087393e08", + "typeString": "literal_string \"Mintable count is not enough\"" + } + ], + "id": 1663, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "2982:7:11", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1671, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2982:100:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1672, + "nodeType": "ExpressionStatement", + "src": "2982:100:11" + }, + { + "assignments": [ + 1677 + ], + "declarations": [ + { + "constant": false, + "id": 1677, + "mutability": "mutable", + "name": "nfts", + "nameLocation": "3151:4:11", + "nodeType": "VariableDeclaration", + "scope": 1762, + "src": "3134:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1675, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3134:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1676, + "nodeType": "ArrayTypeName", + "src": "3134:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "id": 1681, + "initialValue": { + "baseExpression": { + "id": 1678, + "name": "ownerToNFTs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1570, + "src": "3158:11:11", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 1680, + "indexExpression": { + "id": 1679, + "name": "_user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1655, + "src": "3170:5:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3158:18:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3134:42:11" + }, + { + "assignments": [ + 1683 + ], + "declarations": [ + { + "constant": false, + "id": 1683, + "mutability": "mutable", + "name": "index", + "nameLocation": "3218:5:11", + "nodeType": "VariableDeclaration", + "scope": 1762, + "src": "3210:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1682, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3210:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1685, + "initialValue": { + "hexValue": "30", + "id": 1684, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3226:1:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "3210:17:11" + }, + { + "assignments": [ + 1690 + ], + "declarations": [ + { + "constant": false, + "id": 1690, + "mutability": "mutable", + "name": "nftSource", + "nameLocation": "3250:9:11", + "nodeType": "VariableDeclaration", + "scope": 1762, + "src": "3233:26:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1688, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3233:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1689, + "nodeType": "ArrayTypeName", + "src": "3233:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "id": 1697, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 1694, + "name": "_nftIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1658, + "src": "3276:7:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 1695, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "3276:14:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1693, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "3262:13:11", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + }, + "typeName": { + "baseType": { + "id": 1691, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3266:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1692, + "nodeType": "ArrayTypeName", + "src": "3266:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "id": 1696, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3262:29:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3233:58:11" + }, + { + "body": { + "id": 1750, + "nodeType": "Block", + "src": "3382:449:11", + "statements": [ + { + "assignments": [ + 1710 + ], + "declarations": [ + { + "constant": false, + "id": 1710, + "mutability": "mutable", + "name": "nftSId", + "nameLocation": "3398:6:11", + "nodeType": "VariableDeclaration", + "scope": 1750, + "src": "3390:14:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1709, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3390:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1714, + "initialValue": { + "baseExpression": { + "id": 1711, + "name": "nfts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1677, + "src": "3407:4:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1713, + "indexExpression": { + "id": 1712, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1699, + "src": "3412:1:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3407:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3390:24:11" + }, + { + "condition": { + "id": 1718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "3465:18:11", + "subExpression": { + "baseExpression": { + "id": 1715, + "name": "nftMinted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1574, + "src": "3466:9:11", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$", + "typeString": "mapping(uint256 => bool)" + } + }, + "id": 1717, + "indexExpression": { + "id": 1716, + "name": "nftSId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1710, + "src": "3476:6:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3466:17:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1749, + "nodeType": "IfStatement", + "src": "3461:364:11", + "trueBody": { + "id": 1748, + "nodeType": "Block", + "src": "3485:340:11", + "statements": [ + { + "assignments": [ + 1720 + ], + "declarations": [ + { + "constant": false, + "id": 1720, + "mutability": "mutable", + "name": "nftId", + "nameLocation": "3570:5:11", + "nodeType": "VariableDeclaration", + "scope": 1748, + "src": "3562:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1719, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3562:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1724, + "initialValue": { + "baseExpression": { + "id": 1721, + "name": "_nftIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1658, + "src": "3578:7:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 1723, + "indexExpression": { + "id": 1722, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1683, + "src": "3586:5:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3578:14:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3562:30:11" + }, + { + "expression": { + "id": 1726, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3602:7:11", + "subExpression": { + "id": 1725, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1683, + "src": "3602:5:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1727, + "nodeType": "ExpressionStatement", + "src": "3602:7:11" + }, + { + "expression": { + "id": 1732, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 1728, + "name": "nftMinted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1574, + "src": "3619:9:11", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$", + "typeString": "mapping(uint256 => bool)" + } + }, + "id": 1730, + "indexExpression": { + "id": 1729, + "name": "nftSId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1710, + "src": "3629:6:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3619:17:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 1731, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3639:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "3619:24:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1733, + "nodeType": "ExpressionStatement", + "src": "3619:24:11" + }, + { + "expression": { + "arguments": [ + { + "id": 1737, + "name": "_user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1655, + "src": "3708:5:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1738, + "name": "nftId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1720, + "src": "3715:5:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 1734, + "name": "nft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1577, + "src": "3699:3:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBEERC721_$1549", + "typeString": "contract IBEERC721" + } + }, + "id": 1736, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 1519, + "src": "3699:8:11", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) external" + } + }, + "id": 1739, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3699:22:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1740, + "nodeType": "ExpressionStatement", + "src": "3699:22:11" + }, + { + "expression": { + "id": 1746, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 1741, + "name": "nftSource", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "3789:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1743, + "indexExpression": { + "id": 1742, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1683, + "src": "3799:5:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3789:16:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "components": [ + { + "id": 1744, + "name": "nftSId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1710, + "src": "3809:6:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1745, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3808:8:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3789:27:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1747, + "nodeType": "ExpressionStatement", + "src": "3789:27:11" + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1705, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1702, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1699, + "src": "3360:1:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 1703, + "name": "nfts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1677, + "src": "3364:4:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1704, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "3364:11:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3360:15:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1751, + "initializationExpression": { + "assignments": [ + 1699 + ], + "declarations": [ + { + "constant": false, + "id": 1699, + "mutability": "mutable", + "name": "i", + "nameLocation": "3353:1:11", + "nodeType": "VariableDeclaration", + "scope": 1751, + "src": "3345:9:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1698, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3345:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1701, + "initialValue": { + "hexValue": "30", + "id": 1700, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3357:1:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "3345:13:11" + }, + "loopExpression": { + "expression": { + "id": 1707, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3377:3:11", + "subExpression": { + "id": 1706, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1699, + "src": "3377:1:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1708, + "nodeType": "ExpressionStatement", + "src": "3377:3:11" + }, + "nodeType": "ForStatement", + "src": "3340:491:11" + }, + { + "eventCall": { + "arguments": [ + { + "id": 1753, + "name": "_user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1655, + "src": "3904:5:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 1756, + "name": "nft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1577, + "src": "3919:3:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBEERC721_$1549", + "typeString": "contract IBEERC721" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IBEERC721_$1549", + "typeString": "contract IBEERC721" + } + ], + "id": 1755, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3911:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1754, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3911:7:11", + "typeDescriptions": {} + } + }, + "id": 1757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3911:12:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1758, + "name": "nftSource", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "3925:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "id": 1759, + "name": "_nftIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1658, + "src": "3936:7:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + ], + "id": 1752, + "name": "Minted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1591, + "src": "3897:6:11", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$", + "typeString": "function (address,address,uint256[] memory,uint256[] memory)" + } + }, + "id": 1760, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3897:47:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1761, + "nodeType": "EmitStatement", + "src": "3892:52:11" + } + ] + }, + "documentation": { + "id": 1653, + "nodeType": "StructuredDocumentation", + "src": "2223:605:11", + "text": " @dev The mintToUser function mints NFTs to a given user.\n Only functions called by an address with the MANAGE_ROLE permission can access this function.\n The function takes an array of nftIds and checks that there are enough mintable NFTs for the user.\n It then loops through the user's owned NFTs, checking if each is mintable, and if so, adds it to a list to be minted.\n Then it emits the Minted event with details of the operation.\n @param _user - The address of the user receiving the NFTs\n @param _nftIds - An array of the IDs for the NFTs being minted" + }, + "functionSelector": "36136433", + "id": 1763, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1661, + "kind": "modifierInvocation", + "modifierName": { + "id": 1660, + "name": "onlyManager", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1652, + "src": "2915:11:11" + }, + "nodeType": "ModifierInvocation", + "src": "2915:11:11" + } + ], + "name": "mintToUser", + "nameLocation": "2840:10:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1659, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1655, + "mutability": "mutable", + "name": "_user", + "nameLocation": "2864:5:11", + "nodeType": "VariableDeclaration", + "scope": 1763, + "src": "2856:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1654, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2856:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1658, + "mutability": "mutable", + "name": "_nftIds", + "nameLocation": "2894:7:11", + "nodeType": "VariableDeclaration", + "scope": 1763, + "src": "2875:26:11", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1656, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2875:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1657, + "nodeType": "ArrayTypeName", + "src": "2875:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "2850:55:11" + }, + "returnParameters": { + "id": 1662, + "nodeType": "ParameterList", + "parameters": [], + "src": "2927:0:11" + }, + "scope": 1850, + "src": "2831:1118:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1796, + "nodeType": "Block", + "src": "4732:221:11", + "statements": [ + { + "body": { + "id": 1794, + "nodeType": "Block", + "src": "4824:125:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 1789, + "name": "_nftIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1769, + "src": "4931:7:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 1791, + "indexExpression": { + "id": 1790, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1775, + "src": "4939:1:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4931:10:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "baseExpression": { + "id": 1785, + "name": "ownerToNFTs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1570, + "src": "4907:11:11", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 1787, + "indexExpression": { + "id": 1786, + "name": "_user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1766, + "src": "4919:5:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4907:18:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 1788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "src": "4907:23:11", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_array$_t_uint256_$dyn_storage_ptr_$", + "typeString": "function (uint256[] storage pointer,uint256)" + } + }, + "id": 1792, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4907:35:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1793, + "nodeType": "ExpressionStatement", + "src": "4907:35:11" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1778, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1775, + "src": "4799:1:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 1779, + "name": "_nftIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1769, + "src": "4803:7:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 1780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4803:14:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4799:18:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1795, + "initializationExpression": { + "assignments": [ + 1775 + ], + "declarations": [ + { + "constant": false, + "id": 1775, + "mutability": "mutable", + "name": "i", + "nameLocation": "4792:1:11", + "nodeType": "VariableDeclaration", + "scope": 1795, + "src": "4784:9:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1774, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4784:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1777, + "initialValue": { + "hexValue": "30", + "id": 1776, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4796:1:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "4784:13:11" + }, + "loopExpression": { + "expression": { + "id": 1783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4819:3:11", + "subExpression": { + "id": 1782, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1775, + "src": "4819:1:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1784, + "nodeType": "ExpressionStatement", + "src": "4819:3:11" + }, + "nodeType": "ForStatement", + "src": "4779:170:11" + } + ] + }, + "documentation": { + "id": 1764, + "nodeType": "StructuredDocumentation", + "src": "3953:680:11", + "text": " @dev The addNFTData function adds an array of NFT IDs to the list of NFT IDs owned by a user.\n mintToUser method would check if target user had permission to mint NFTs.\n Only functions called by an address with the MANAGE_ROLE permission can access this function.\n The function takes in the address of the user and an array of NFT IDs. It then loops through the array\n of NFT IDs, and adds each one to the end of the array of NFTs owned by that user to update their ownership data.\n @param _user - The address of the user being updated with new NFT data\n @param _nftIds - An array of NFT IDs being added to the user's NFT data" + }, + "functionSelector": "84be00e4", + "id": 1797, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1772, + "kind": "modifierInvocation", + "modifierName": { + "id": 1771, + "name": "onlyManager", + "nodeType": "IdentifierPath", + "referencedDeclaration": 1652, + "src": "4720:11:11" + }, + "nodeType": "ModifierInvocation", + "src": "4720:11:11" + } + ], + "name": "addNFTData", + "nameLocation": "4645:10:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1770, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1766, + "mutability": "mutable", + "name": "_user", + "nameLocation": "4669:5:11", + "nodeType": "VariableDeclaration", + "scope": 1797, + "src": "4661:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1765, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4661:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1769, + "mutability": "mutable", + "name": "_nftIds", + "nameLocation": "4699:7:11", + "nodeType": "VariableDeclaration", + "scope": 1797, + "src": "4680:26:11", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1767, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4680:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1768, + "nodeType": "ArrayTypeName", + "src": "4680:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "4655:55:11" + }, + "returnParameters": { + "id": 1773, + "nodeType": "ParameterList", + "parameters": [], + "src": "4732:0:11" + }, + "scope": 1850, + "src": "4636:317:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1848, + "nodeType": "Block", + "src": "5592:578:11", + "statements": [ + { + "assignments": [ + 1809 + ], + "declarations": [ + { + "constant": false, + "id": 1809, + "mutability": "mutable", + "name": "nfts", + "nameLocation": "5668:4:11", + "nodeType": "VariableDeclaration", + "scope": 1848, + "src": "5651:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1807, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5651:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1808, + "nodeType": "ArrayTypeName", + "src": "5651:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "id": 1813, + "initialValue": { + "baseExpression": { + "id": 1810, + "name": "ownerToNFTs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1570, + "src": "5675:11:11", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 1812, + "indexExpression": { + "id": 1811, + "name": "_user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1800, + "src": "5687:5:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5675:18:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5651:42:11" + }, + { + "assignments": [ + 1815 + ], + "declarations": [ + { + "constant": false, + "id": 1815, + "mutability": "mutable", + "name": "count", + "nameLocation": "5739:5:11", + "nodeType": "VariableDeclaration", + "scope": 1848, + "src": "5731:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1814, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5731:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1817, + "initialValue": { + "hexValue": "30", + "id": 1816, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5747:1:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "5731:17:11" + }, + { + "body": { + "id": 1844, + "nodeType": "Block", + "src": "5837:272:11", + "statements": [ + { + "assignments": [ + 1830 + ], + "declarations": [ + { + "constant": false, + "id": 1830, + "mutability": "mutable", + "name": "nftAId", + "nameLocation": "5903:6:11", + "nodeType": "VariableDeclaration", + "scope": 1844, + "src": "5895:14:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1829, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5895:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1834, + "initialValue": { + "baseExpression": { + "id": 1831, + "name": "nfts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1809, + "src": "5912:4:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1833, + "indexExpression": { + "id": 1832, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1819, + "src": "5917:1:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5912:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5895:24:11" + }, + { + "condition": { + "id": 1838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "5981:18:11", + "subExpression": { + "baseExpression": { + "id": 1835, + "name": "nftMinted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1574, + "src": "5982:9:11", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$", + "typeString": "mapping(uint256 => bool)" + } + }, + "id": 1837, + "indexExpression": { + "id": 1836, + "name": "nftAId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1830, + "src": "5992:6:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5982:17:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1843, + "nodeType": "IfStatement", + "src": "5977:126:11", + "trueBody": { + "id": 1842, + "nodeType": "Block", + "src": "6001:102:11", + "statements": [ + { + "expression": { + "id": 1840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "6087:7:11", + "subExpression": { + "id": 1839, + "name": "count", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1815, + "src": "6087:5:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1841, + "nodeType": "ExpressionStatement", + "src": "6087:7:11" + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1825, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1822, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1819, + "src": "5815:1:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 1823, + "name": "nfts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1809, + "src": "5819:4:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5819:11:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5815:15:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1845, + "initializationExpression": { + "assignments": [ + 1819 + ], + "declarations": [ + { + "constant": false, + "id": 1819, + "mutability": "mutable", + "name": "i", + "nameLocation": "5808:1:11", + "nodeType": "VariableDeclaration", + "scope": 1845, + "src": "5800:9:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1818, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5800:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1821, + "initialValue": { + "hexValue": "30", + "id": 1820, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5812:1:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "5800:13:11" + }, + "loopExpression": { + "expression": { + "id": 1827, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "5832:3:11", + "subExpression": { + "id": 1826, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1819, + "src": "5832:1:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1828, + "nodeType": "ExpressionStatement", + "src": "5832:3:11" + }, + "nodeType": "ForStatement", + "src": "5795:314:11" + }, + { + "expression": { + "id": 1846, + "name": "count", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1815, + "src": "6160:5:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1804, + "id": 1847, + "nodeType": "Return", + "src": "6153:12:11" + } + ] + }, + "documentation": { + "id": 1798, + "nodeType": "StructuredDocumentation", + "src": "4957:561:11", + "text": " @dev The getMintableCount function gets the number of NFTs owned by a user that have not yet been minted.\n This is a read-only function, meaning it doesn't modify the state of the blockchain.\n It takes in the address of the user whose mintable count is being determined,\n and returns the number of NFTs owned by the user that have not yet been minted.\n @param _user - The address of the user whose mintable count is being determined\n @return count - The number of NFTs owned by the user that have not yet been minted" + }, + "functionSelector": "0431f205", + "id": 1849, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getMintableCount", + "nameLocation": "5530:16:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1801, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1800, + "mutability": "mutable", + "name": "_user", + "nameLocation": "5555:5:11", + "nodeType": "VariableDeclaration", + "scope": 1849, + "src": "5547:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1799, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5547:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5546:15:11" + }, + "returnParameters": { + "id": 1804, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1803, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1849, + "src": "5583:7:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1802, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5583:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5582:9:11" + }, + "scope": 1850, + "src": "5521:649:11", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + } + ], + "scope": 1851, + "src": "165:6007:11", + "usedErrors": [] + } + ], + "src": "32:6141:11" + }, + "compiler": { + "name": "solc", + "version": "0.8.10+commit.fc410830.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.4.11", + "updatedAt": "2023-04-18T09:41:12.894Z", + "devdoc": { + "kind": "dev", + "methods": { + "addNFTData(address,uint256[])": { + "details": "The addNFTData function adds an array of NFT IDs to the list of NFT IDs owned by a user. mintToUser method would check if target user had permission to mint NFTs. Only functions called by an address with the MANAGE_ROLE permission can access this function. The function takes in the address of the user and an array of NFT IDs. It then loops through the array of NFT IDs, and adds each one to the end of the array of NFTs owned by that user to update their ownership data.", + "params": { + "_nftIds": "- An array of NFT IDs being added to the user's NFT data", + "_user": "- The address of the user being updated with new NFT data" + } + }, + "constructor": { + "details": "Contract constructor. Initializes the contract with the specified addresses and sets the admin and management roles. Parameters: - _nftTarget: The address of NFT that will be minted by this contract. Need MINTER_ROLE - _nftSource: The address of the source NFT that will check if user has mint permission. - _manageAddress: The address that will have the MANAGE_ROLE assigned." + }, + "getMintableCount(address)": { + "details": "The getMintableCount function gets the number of NFTs owned by a user that have not yet been minted. This is a read-only function, meaning it doesn't modify the state of the blockchain. It takes in the address of the user whose mintable count is being determined, and returns the number of NFTs owned by the user that have not yet been minted.", + "params": { + "_user": "- The address of the user whose mintable count is being determined" + }, + "returns": { + "_0": "count - The number of NFTs owned by the user that have not yet been minted" + } + }, + "getRoleAdmin(bytes32)": { + "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}." + }, + "getRoleMember(bytes32,uint256)": { + "details": "Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information." + }, + "getRoleMemberCount(bytes32)": { + "details": "Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role." + }, + "grantRole(bytes32,address)": { + "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role." + }, + "hasRole(bytes32,address)": { + "details": "Returns `true` if `account` has been granted `role`." + }, + "mintToUser(address,uint256[])": { + "details": "The mintToUser function mints NFTs to a given user. Only functions called by an address with the MANAGE_ROLE permission can access this function. The function takes an array of nftIds and checks that there are enough mintable NFTs for the user. It then loops through the user's owned NFTs, checking if each is mintable, and if so, adds it to a list to be minted. Then it emits the Minted event with details of the operation.", + "params": { + "_nftIds": "- An array of the IDs for the NFTs being minted", + "_user": "- The address of the user receiving the NFTs" + } + }, + "renounceRole(bytes32,address)": { + "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`." + }, + "revokeRole(bytes32,address)": { + "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role." + }, + "supportsInterface(bytes4)": { + "details": "See {IERC165-supportsInterface}." + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } +} \ No newline at end of file diff --git a/contracts/interfaces/IBEERC721.sol b/contracts/interfaces/IBEERC721.sol index 148e4cd..2bef131 100644 --- a/contracts/interfaces/IBEERC721.sol +++ b/contracts/interfaces/IBEERC721.sol @@ -6,6 +6,8 @@ import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; interface IBEERC721 is IERC721 { function mint(address to, uint256 tokenId) external; + function batchMint(address to, uint256[] calldata tokenIds) external; + function burn(address owner, uint256 tokenId) external; function ownerOf(uint256 tokenId) external view returns (address owner); diff --git a/contracts/logic/NftDistributor.sol b/contracts/logic/NftDistributor.sol new file mode 100644 index 0000000..7c20d92 --- /dev/null +++ b/contracts/logic/NftDistributor.sol @@ -0,0 +1,164 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.10; + +import "@openzeppelin/contracts/access/AccessControlEnumerable.sol"; +import "../interfaces/IBEERC721.sol"; + +contract NftDistributor is AccessControlEnumerable { + bytes32 public constant ADMIN_ROLE = keccak256("ADMIN_ROLE"); + bytes32 public constant MANAGE_ROLE = keccak256("MANAGE_ROLE"); + + // user address => nft ids + mapping(address => uint256[]) public ownerToNFTs; + // nft id => minted + mapping(uint256 => bool) public nftMinted; + + IBEERC721 public nft; + address public source; + + event Minted( + address indexed user, + address indexed nft, + uint256[] nftSIds, + uint256[] nftTIds + ); + + /** + * @dev Contract constructor. + * + * Initializes the contract with the specified addresses and sets the admin and management roles. + * + * Parameters: + * - _nftTarget: The address of NFT that will be minted by this contract. Need MINTER_ROLE + * - _nftSource: The address of the source NFT that will check if user has mint permission. + * - _manageAddress: The address that will have the MANAGE_ROLE assigned. + */ + constructor(address _nftTarget, address _nftSource, address _manageAddress) { + // Set up the ADMIN_ROLE and MANAGE_ROLE + _setRoleAdmin(ADMIN_ROLE, ADMIN_ROLE); + _setRoleAdmin(MANAGE_ROLE, ADMIN_ROLE); + + // Grant the ADMIN_ROLE to the deployer and to the contract itself + _setupRole(ADMIN_ROLE, _msgSender()); + _setupRole(ADMIN_ROLE, address(this)); + + // Grant the MANAGE_ROLE to the specified address + _setupRole(MANAGE_ROLE, _manageAddress); + + // Initialize the nft contract with IBEERC721 interface + nft = IBEERC721(_nftTarget); + + // Set the source contract address + source = _nftSource; + } + + /** + * @dev Modifier that checks if the caller has the MANAGE_ROLE. + * + * The function uses the _checkRole() function from the AccessControl library. + * If the check is successful, the code defined by the function that uses this modifier is executed. + */ + modifier onlyManager() { + // Check if the caller has the MANAGE_ROLE + _checkRole(MANAGE_ROLE, _msgSender()); + // If the check is successful, execute the code in the function that uses this modifier + _; + } + + /** + * @dev The mintToUser function mints NFTs to a given user. + * + * Only functions called by an address with the MANAGE_ROLE permission can access this function. + * The function takes an array of nftIds and checks that there are enough mintable NFTs for the user. + * It then loops through the user's owned NFTs, checking if each is mintable, and if so, adds it to a list to be minted. + * Then it emits the Minted event with details of the operation. + * + * @param _user - The address of the user receiving the NFTs + * @param _nftIds - An array of the IDs for the NFTs being minted + */ + function mintToUser( + address _user, + uint256[] calldata _nftIds + ) external onlyManager { + // Check that there are enough mintable NFTs + require( + _nftIds.length <= getMintableCount(_user), + "Mintable count is not enough" + ); + // Get the array of the user's owned NFTs + uint256[] memory nfts = ownerToNFTs[_user]; + // Initialize variables + uint256 index = 0; + uint256[] memory nftSource = new uint256[](_nftIds.length); + + // Loop through the user's owned NFTs + for (uint256 i = 0; i < nfts.length; i++) { + uint256 nftSId = nfts[i]; + + // Check if the NFT is mintable + if (!nftMinted[nftSId]) { + // If the NFT is mintable, add it to the list to be minted + uint256 nftId = _nftIds[index]; + index++; + nftMinted[nftSId] = true; + // Mint the NFT to the user's address + nft.mint(_user, nftId); + // Add the NFT's source ID to the list of sources + nftSource[index] = (nftSId); + } + } + // Emit event with details of the minting operation + emit Minted(_user, address(nft), nftSource, _nftIds); + } + + /** + * @dev The addNFTData function adds an array of NFT IDs to the list of NFT IDs owned by a user. + * mintToUser method would check if target user had permission to mint NFTs. + * + * Only functions called by an address with the MANAGE_ROLE permission can access this function. + * The function takes in the address of the user and an array of NFT IDs. It then loops through the array + * of NFT IDs, and adds each one to the end of the array of NFTs owned by that user to update their ownership data. + * + * @param _user - The address of the user being updated with new NFT data + * @param _nftIds - An array of NFT IDs being added to the user's NFT data + */ + function addNFTData( + address _user, + uint256[] calldata _nftIds + ) external onlyManager { + // Loop through the array of NFT IDs + for (uint256 i = 0; i < _nftIds.length; i++) { + // Add each NFT ID to the end of the array of NFTs owned by the user + ownerToNFTs[_user].push(_nftIds[i]); + } + } + + /** + * @dev The getMintableCount function gets the number of NFTs owned by a user that have not yet been minted. + * + * This is a read-only function, meaning it doesn't modify the state of the blockchain. + * It takes in the address of the user whose mintable count is being determined, + * and returns the number of NFTs owned by the user that have not yet been minted. + * + * @param _user - The address of the user whose mintable count is being determined + * @return count - The number of NFTs owned by the user that have not yet been minted + */ + function getMintableCount(address _user) public view returns (uint256) { + // Get an array of all NFT IDs owned by the user + uint256[] memory nfts = ownerToNFTs[_user]; + // Initialize count to zero + uint256 count = 0; + // Loop through the array of NFT IDs + for (uint256 i = 0; i < nfts.length; i++) { + // Get the NFT ID at this index of the loop + uint256 nftAId = nfts[i]; + // Check if the NFT has not yet been minted + if (!nftMinted[nftAId]) { + // If the NFT has not yet been minted, increment the mintable count + count++; + } + } + // Return the final mintable count + return count; + } +}