diff --git a/package.json b/package.json index ef99006..1266e8e 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "sendit-app", + "name": "shipit-app", "private": true, "version": "0.0.0", "type": "module", diff --git a/src/App.svelte b/src/App.svelte index 4b24568..f67e3ab 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -9,13 +9,18 @@
-
- -

SendIt!

+
+ +

ShipIt!

- A bulk NFT transfer utility made for transferring ERC-721 and ERC-1155 tokens between accounts easily. + A bulk NFT transfer utility made for transferring ERC-721 and ERC-1155 tokens between wallets very efficiently. +
+ Use it to vault your NFTs en masse or to distribute tokens to a large audience for some major gas savings. +
+ The higher the network gas price, the more savings you will see. +

- Made by lza_menace and the Art101 team. + Made by lza_menace of the Art101 team.

diff --git a/src/Contracts.svelte b/src/Contracts.svelte index 02eb143..5e1f04b 100644 --- a/src/Contracts.svelte +++ b/src/Contracts.svelte @@ -3,9 +3,9 @@ import { defaultEvmStores as evm, selectedAccount, contracts, web3 } from 'svelte-web3'; import IERC721 from '@openzeppelin/contracts/build/contracts/IERC721.json'; import IERC1155 from '@openzeppelin/contracts/build/contracts/IERC1155.json'; - import SendIt from './lib/sendit.json'; + import ShipIt from './lib/shipit.json'; - const sendit = '0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0'; + const shipit = '0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0'; let errorMessage = ''; let successMessage = ''; let contractAddress = ''; @@ -22,7 +22,7 @@ let gasLimit = 0; let si_gasLimit = 0; - evm.attachContract('sendit', sendit, SendIt.abi); + evm.attachContract('shipit', shipit, ShipIt.abi); function clearMessages() { gasCalculation = []; @@ -32,14 +32,14 @@ successMessage = ''; } - const approveSendIt = async () => { - await $contracts.nft.methods.setApprovalForAll(sendit, true).send({from: $selectedAccount}); + const approveShipIt = async () => { + await $contracts.nft.methods.setApprovalForAll(shipit, true).send({from: $selectedAccount}); } const isApproved = async () => { - return await $contracts.nft.methods.isApprovedForAll($selectedAccount, sendit).call({from: $selectedAccount}); + return await $contracts.nft.methods.isApprovedForAll($selectedAccount, shipit).call({from: $selectedAccount}); // if (!i) { - // await $contracts.nft.methods.setApprovalForAll(sendit, true).send({from: $selectedAccount}); + // await $contracts.nft.methods.setApprovalForAll(shipit, true).send({from: $selectedAccount}); // } } @@ -115,9 +115,9 @@ // Check approval on the contract try { - let approved = await $contracts.nft.methods.isApprovedForAll($selectedAccount, sendit).call(); + let approved = await $contracts.nft.methods.isApprovedForAll($selectedAccount, shipit).call(); if (!approved) { - errorMessage = 'SendIt requires approval to bulk transfer tokens; click the "Approve" button below'; + errorMessage = 'ShipIt requires approval to bulk transfer tokens; click the "Approve" button below'; checksPending = false; contractApproved = false; return; @@ -132,20 +132,25 @@ await estimateGas(recipients, tokenIds, isERC1155); checked = true; + window.scrollTo(0, document.body.scrollHeight); } async function estimateCBT(recipients, tokens, isERC1155) { si_gasLimit = 0; - let fee = await $contracts.sendit.methods.usageFee().call(); - console.log(recipients) - console.log(tokens) - await $contracts.sendit.methods.contractBulkTransfer(contractAddress, tokens, recipients, isERC1155).estimateGas({from: $selectedAccount, value: fee * recipients.length}, function(err, gas){ - si_gasLimit += gas; - }); + // TODO - erc1155 batching + let fee = await $contracts.shipit.methods.usageFee().call(); + if (isERC1155) { + // + } else { + await $contracts.shipit.methods.erc721BulkTransfer(contractAddress, recipients, tokens).estimateGas({from: $selectedAccount, value: fee * recipients.length}, function(err, gas){ + si_gasLimit += gas; + }); + } } async function estimateSTF(recipients, tokens, isERC1155) { gasLimit = 0; + // TODO - erc1155 batching for (let i = 0; i < recipients.length; i++) { if (isERC1155) { await $contracts.nft.methods.safeTransferFrom($selectedAccount, recipients[i], tokens[i], 1, "").estimateGas({from: $selectedAccount}, function(err, gas){ @@ -164,11 +169,11 @@ await estimateCBT(recipients, tokens, isERC1155); await estimateSTF(recipients, tokens, isERC1155); let gasPrice = await $web3.eth.getGasPrice(); - // let gasPrice = 50000000000; // override for testing + // gasPrice = 15000000000; // override for testing let gasPriceGwei = await $web3.utils.fromWei(gasPrice.toString(), 'gwei'); let gasCostWei = gasPrice * gasLimit; let gasCostEth = await $web3.utils.fromWei(gasCostWei.toString()); - let feeWei = await $contracts.sendit.methods.usageFee().call(); + let feeWei = await $contracts.shipit.methods.usageFee().call(); let totalFeeWei = feeWei * recipients.length; let totalFeeEth = $web3.utils.fromWei(totalFeeWei.toString()); let si_gasCostWei = gasPrice * si_gasLimit + totalFeeWei; @@ -178,7 +183,7 @@ let diffPerc = 100 - ((si_gasCostWei / gasCostWei) * 100); gasCalculation.push(`Current network gas price is ~${gasPriceGwei} gwei.`); gasCalculation.push(`Transferring ${recipients.length} tokens individually would cost ~${gasCostEth} Ξ (${gasLimit} gas).`); - gasCalculation.push(`SendIt can bulk transfer ${recipients.length} tokens for ${si_gasCostEth} Ξ (${si_gasLimit} gas + a small fee of ${totalFeeEth} Ξ).`); + gasCalculation.push(`ShipIt can bulk transfer ${recipients.length} tokens for ${si_gasCostEth} Ξ (${si_gasLimit} gas + a small fee of ${totalFeeEth} Ξ).`); if (diffPerc < 0) { gasCalculation.push(`That is an additional cost of ${diffEth * -1} Ξ to transfer in one go to save you the time`); } else { @@ -221,7 +226,7 @@ {/if} {#if !contractApproved} - + {/if} {/if} diff --git a/src/lib/sendit.json b/src/lib/shipit.json similarity index 51% rename from src/lib/sendit.json rename to src/lib/shipit.json index 4af29cd..787cd00 100644 --- a/src/lib/sendit.json +++ b/src/lib/shipit.json @@ -19,37 +19,6 @@ "name": "OwnershipTransferred", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "contractAddress", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "tokenIndex", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - } - ], - "name": "TokenTransfer", - "type": "event" - }, { "inputs": [ { @@ -76,23 +45,46 @@ "name": "contractAddress", "type": "address" }, + { + "internalType": "address[]", + "name": "recipients", + "type": "address[]" + }, { "internalType": "uint256[]", "name": "tokenIndexes", "type": "uint256[]" }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "name": "erc1155BulkTransfer", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "contractAddress", + "type": "address" + }, { "internalType": "address[]", "name": "recipients", "type": "address[]" }, { - "internalType": "bool", - "name": "isERC1155", - "type": "bool" + "internalType": "uint256[]", + "name": "tokenIndexes", + "type": "uint256[]" } ], - "name": "contractBulkTransfer", + "name": "erc721BulkTransfer", "outputs": [], "stateMutability": "payable", "type": "function" @@ -178,18 +170,19 @@ } ], "bytecode": { - "object": "0x6080604052655af3107a400060025534801561001a57600080fd5b5061002433610029565b610079565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610b5d806100886000396000f3fe6080604052600436106100865760003560e01c80638da5cb5b116100595780638da5cb5b1461012e5780639012c4a81461014c578063c3c77c631461016c578063e7563f3f1461017f578063f2fde38b146101c957600080fd5b80632ab8c1f41461008b57806334aef4c8146100de5780633ccfd60b14610102578063715018a614610119575b600080fd5b34801561009757600080fd5b506100c16100a636600461081b565b6001602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100ea57600080fd5b506100f460025481565b6040519081526020016100d5565b34801561010e57600080fd5b506101176101e9565b005b34801561012557600080fd5b50610117610224565b34801561013a57600080fd5b506000546001600160a01b03166100c1565b34801561015857600080fd5b5061011761016736600461083f565b610238565b61011761017a3660046108b2565b610245565b34801561018b57600080fd5b5061011761019a36600461081b565b33600090815260016020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b3480156101d557600080fd5b506101176101e436600461081b565b610365565b6101f16103de565b6040514790339082156108fc029083906000818181858888f19350505050158015610220573d6000803e3d6000fd5b5050565b61022c6103de565b6102366000610438565b565b6102406103de565b600255565b8382146102995760405162461bcd60e51b815260206004820152601960248201527f4172726179206c656e67746873206d757374206d617463682e0000000000000060448201526064015b60405180910390fd5b6002546102a6908561095d565b3410156102f55760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964207573616765206665652073656e742e0000000000000000006044820152606401610290565b60005b8481101561035c5761034a878787848181106103165761031661097a565b9050602002013586868581811061032f5761032f61097a565b9050602002016020810190610344919061081b565b85610488565b8061035481610990565b9150506102f8565b50505050505050565b61036d6103de565b6001600160a01b0381166103d25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610290565b6103db81610438565b50565b6000546001600160a01b031633146102365760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610290565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b801561061d57604051627eeac760e11b8152336004820152602481018490526000906001600160a01b0386169062fdd58e90604401602060405180830381865afa1580156104da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fe91906109a9565b1161051b5760405162461bcd60e51b8152600401610290906109c2565b60405163e985e9c560e01b81523360048201523060248201526001600160a01b0385169063e985e9c590604401602060405180830381865afa158015610565573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105899190610a1f565b6105a55760405162461bcd60e51b815260040161029090610a3c565b60408051602081018252600081529051637921219560e11b81526001600160a01b0386169163f242432a916105e69133918791899160019190600401610a92565b600060405180830381600087803b15801561060057600080fd5b505af1158015610614573d6000803e3d6000fd5b505050506107a9565b6040516331a9108f60e11b8152600481018490526001600160a01b03851690636352211e90602401602060405180830381865afa158015610662573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106869190610b0a565b6001600160a01b0316336001600160a01b0316146106b65760405162461bcd60e51b8152600401610290906109c2565b60405163e985e9c560e01b81523360048201523060248201526001600160a01b0385169063e985e9c590604401602060405180830381865afa158015610700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107249190610a1f565b6107405760405162461bcd60e51b815260040161029090610a3c565b604051632142170760e11b81523360048201526001600160a01b038381166024830152604482018590528516906342842e0e90606401600060405180830381600087803b15801561079057600080fd5b505af11580156107a4573d6000803e3d6000fd5b505050505b816001600160a01b0316336001600160a01b0316856001600160a01b03167fa8b0736f82b72321cb76a3db6dfd7187786bb37ac0964124f784ec881c56ab75866040516107f891815260200190565b60405180910390a450505050565b6001600160a01b03811681146103db57600080fd5b60006020828403121561082d57600080fd5b813561083881610806565b9392505050565b60006020828403121561085157600080fd5b5035919050565b60008083601f84011261086a57600080fd5b50813567ffffffffffffffff81111561088257600080fd5b6020830191508360208260051b850101111561089d57600080fd5b9250929050565b80151581146103db57600080fd5b600080600080600080608087890312156108cb57600080fd5b86356108d681610806565b9550602087013567ffffffffffffffff808211156108f357600080fd5b6108ff8a838b01610858565b9097509550604089013591508082111561091857600080fd5b5061092589828a01610858565b9094509250506060870135610939816108a4565b809150509295509295509295565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761097457610974610947565b92915050565b634e487b7160e01b600052603260045260246000fd5b6000600182016109a2576109a2610947565b5060010190565b6000602082840312156109bb57600080fd5b5051919050565b6020808252603c908201527f53656e646572206973206e6f742074686520746f6b656e206f776e65722c206360408201527f616e6e6f742070726f636565642077697468207472616e736665722e00000000606082015260800190565b600060208284031215610a3157600080fd5b8151610838816108a4565b60208082526036908201527f436f6e7472616374206e6f7420617070726f76656420746f2073656e6420746f60408201527535b2b7399037b71029b2b73232b9103132b430b6331760511b606082015260800190565b600060018060a01b03808816835260208188168185015286604085015285606085015260a06080850152845191508160a085015260005b82811015610ae55785810182015185820160c001528101610ac9565b5050600060c0828501015260c0601f19601f8301168401019150509695505050505050565b600060208284031215610b1c57600080fd5b81516108388161080656fea264697066735822122031683dc6e4f8202cc7e0c85f9457090f1e1227f9b8f42325b5dc2c9f5c9b178764736f6c63430008110033", - "sourceMap": "278:2983:30:-:0;;;448:11;422:37;;278:2983;;;;;;;;;-1:-1:-1;936:32:13;719:10:23;936:18:13;:32::i;:::-;278:2983:30;;2433:187:13;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:13;;;-1:-1:-1;;;;;;2541:17:13;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;278:2983:30:-;;;;;;;", + "object": "0x608060405265886c98b7600060025534801561001a57600080fd5b5061002433610029565b610079565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610d73806100886000396000f3fe6080604052600436106100915760003560e01c80638612166311610059578063861216631461014c5780638da5cb5b1461015f5780639012c4a81461017d578063e7563f3f1461019d578063f2fde38b146101e757600080fd5b806323152273146100965780632ab8c1f4146100ab57806334aef4c8146100fe5780633ccfd60b14610122578063715018a614610137575b600080fd5b6100a96100a4366004610a11565b610207565b005b3480156100b757600080fd5b506100e16100c6366004610abe565b6001602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561010a57600080fd5b5061011460025481565b6040519081526020016100f5565b34801561012e57600080fd5b506100a961053f565b34801561014357600080fd5b506100a961057a565b6100a961015a366004610ae2565b61058e565b34801561016b57600080fd5b506000546001600160a01b03166100e1565b34801561018957600080fd5b506100a9610198366004610b65565b610880565b3480156101a957600080fd5b506100a96101b8366004610abe565b33600090815260016020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b3480156101f357600080fd5b506100a9610202366004610abe565b61088d565b858585858083146102335760405162461bcd60e51b815260040161022a90610b7e565b60405180910390fd5b6002546102409082610bcb565b3410156102895760405162461bcd60e51b815260206004820152601760248201527624b73b30b634b2103ab9b0b3b2903332b29039b2b73a1760491b604482015260640161022a565b8489146102a85760405162461bcd60e51b815260040161022a90610b7e565b60405163e985e9c560e01b81523360048201523060248201526001600160a01b038c169063e985e9c590604401602060405180830381865afa1580156102f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103169190610be8565b6103325760405162461bcd60e51b815260040161022a90610c0a565b60005b878110156105315786868281811061034f5761034f610c60565b905060200201358c6001600160a01b031662fdd58e338c8c8681811061037757610377610c60565b6040516001600160e01b031960e087901b1681526001600160a01b0390941660048501526020029190910135602483015250604401602060405180830381865afa1580156103c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ed9190610c76565b10156104535760405162461bcd60e51b815260206004820152602f60248201527f4e6f7420656e6f7567682062616c616e6365206f776e6564206f66207468652060448201526e33b4bb32b7103a37b5b2b71024a21760891b606482015260840161022a565b8b6001600160a01b031663f242432a338d8d8581811061047557610475610c60565b905060200201602081019061048a9190610abe565b8c8c8681811061049c5761049c610c60565b905060200201358b8b878181106104b5576104b5610c60565b90506020020135604051806020016040528060008152506040518663ffffffff1660e01b81526004016104ec959493929190610c8f565b600060405180830381600087803b15801561050657600080fd5b505af115801561051a573d6000803e3d6000fd5b50505050808061052990610d07565b915050610335565b505050505050505050505050565b610547610906565b6040514790339082156108fc029083906000818181858888f19350505050158015610576573d6000803e3d6000fd5b5050565b610582610906565b61058c6000610960565b565b838383838083146105b15760405162461bcd60e51b815260040161022a90610b7e565b6002546105be9082610bcb565b3410156106075760405162461bcd60e51b815260206004820152601760248201527624b73b30b634b2103ab9b0b3b2903332b29039b2b73a1760491b604482015260640161022a565b60405163e985e9c560e01b81523360048201523060248201526001600160a01b038a169063e985e9c590604401602060405180830381865afa158015610651573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106759190610be8565b6106915760405162461bcd60e51b815260040161022a90610c0a565b60005b8581101561087457896001600160a01b0316636352211e8888848181106106bd576106bd610c60565b905060200201356040518263ffffffff1660e01b81526004016106e291815260200190565b602060405180830381865afa1580156106ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107239190610d20565b6001600160a01b0316336001600160a01b0316146107a95760405162461bcd60e51b815260206004820152603c60248201527f53656e646572206973206e6f742074686520746f6b656e206f776e65722c206360448201527f616e6e6f742070726f636565642077697468207472616e736665722e00000000606482015260840161022a565b896001600160a01b03166342842e0e338b8b858181106107cb576107cb610c60565b90506020020160208101906107e09190610abe565b8a8a868181106107f2576107f2610c60565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b15801561084957600080fd5b505af115801561085d573d6000803e3d6000fd5b50505050808061086c90610d07565b915050610694565b50505050505050505050565b610888610906565b600255565b610895610906565b6001600160a01b0381166108fa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161022a565b61090381610960565b50565b6000546001600160a01b0316331461058c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161022a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461090357600080fd5b60008083601f8401126109d757600080fd5b50813567ffffffffffffffff8111156109ef57600080fd5b6020830191508360208260051b8501011115610a0a57600080fd5b9250929050565b60008060008060008060006080888a031215610a2c57600080fd5b8735610a37816109b0565b9650602088013567ffffffffffffffff80821115610a5457600080fd5b610a608b838c016109c5565b909850965060408a0135915080821115610a7957600080fd5b610a858b838c016109c5565b909650945060608a0135915080821115610a9e57600080fd5b50610aab8a828b016109c5565b989b979a50959850939692959293505050565b600060208284031215610ad057600080fd5b8135610adb816109b0565b9392505050565b600080600080600060608688031215610afa57600080fd5b8535610b05816109b0565b9450602086013567ffffffffffffffff80821115610b2257600080fd5b610b2e89838a016109c5565b90965094506040880135915080821115610b4757600080fd5b50610b54888289016109c5565b969995985093965092949392505050565b600060208284031215610b7757600080fd5b5035919050565b60208082526019908201527f4172726179206c656e67746873206d757374206d617463682e00000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610be257610be2610bb5565b92915050565b600060208284031215610bfa57600080fd5b81518015158114610adb57600080fd5b60208082526036908201527f436f6e7472616374206e6f7420617070726f76656420746f2073656e6420746f60408201527535b2b7399037b71029b2b73232b9103132b430b6331760511b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610c8857600080fd5b5051919050565b600060018060a01b03808816835260208188168185015286604085015285606085015260a06080850152845191508160a085015260005b82811015610ce25785810182015185820160c001528101610cc6565b5050600060c0828501015260c0601f19601f8301168401019150509695505050505050565b600060018201610d1957610d19610bb5565b5060010190565b600060208284031215610d3257600080fd5b8151610adb816109b056fea2646970667358221220f303b70463fc26db609bcd61d5c0a766950ec925aec9ef859f24d3ce05fdd28764736f6c63430008110033", + "sourceMap": "278:2765:30:-:0;;;448:12;422:38;;278:2765;;;;;;;;;-1:-1:-1;936:32:13;719:10:23;936:18:13;:32::i;:::-;278:2765:30;;2433:187:13;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:13;;;-1:-1:-1;;;;;;2541:17:13;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;278:2765:30:-;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x6080604052600436106100865760003560e01c80638da5cb5b116100595780638da5cb5b1461012e5780639012c4a81461014c578063c3c77c631461016c578063e7563f3f1461017f578063f2fde38b146101c957600080fd5b80632ab8c1f41461008b57806334aef4c8146100de5780633ccfd60b14610102578063715018a614610119575b600080fd5b34801561009757600080fd5b506100c16100a636600461081b565b6001602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100ea57600080fd5b506100f460025481565b6040519081526020016100d5565b34801561010e57600080fd5b506101176101e9565b005b34801561012557600080fd5b50610117610224565b34801561013a57600080fd5b506000546001600160a01b03166100c1565b34801561015857600080fd5b5061011761016736600461083f565b610238565b61011761017a3660046108b2565b610245565b34801561018b57600080fd5b5061011761019a36600461081b565b33600090815260016020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b3480156101d557600080fd5b506101176101e436600461081b565b610365565b6101f16103de565b6040514790339082156108fc029083906000818181858888f19350505050158015610220573d6000803e3d6000fd5b5050565b61022c6103de565b6102366000610438565b565b6102406103de565b600255565b8382146102995760405162461bcd60e51b815260206004820152601960248201527f4172726179206c656e67746873206d757374206d617463682e0000000000000060448201526064015b60405180910390fd5b6002546102a6908561095d565b3410156102f55760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964207573616765206665652073656e742e0000000000000000006044820152606401610290565b60005b8481101561035c5761034a878787848181106103165761031661097a565b9050602002013586868581811061032f5761032f61097a565b9050602002016020810190610344919061081b565b85610488565b8061035481610990565b9150506102f8565b50505050505050565b61036d6103de565b6001600160a01b0381166103d25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610290565b6103db81610438565b50565b6000546001600160a01b031633146102365760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610290565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b801561061d57604051627eeac760e11b8152336004820152602481018490526000906001600160a01b0386169062fdd58e90604401602060405180830381865afa1580156104da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fe91906109a9565b1161051b5760405162461bcd60e51b8152600401610290906109c2565b60405163e985e9c560e01b81523360048201523060248201526001600160a01b0385169063e985e9c590604401602060405180830381865afa158015610565573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105899190610a1f565b6105a55760405162461bcd60e51b815260040161029090610a3c565b60408051602081018252600081529051637921219560e11b81526001600160a01b0386169163f242432a916105e69133918791899160019190600401610a92565b600060405180830381600087803b15801561060057600080fd5b505af1158015610614573d6000803e3d6000fd5b505050506107a9565b6040516331a9108f60e11b8152600481018490526001600160a01b03851690636352211e90602401602060405180830381865afa158015610662573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106869190610b0a565b6001600160a01b0316336001600160a01b0316146106b65760405162461bcd60e51b8152600401610290906109c2565b60405163e985e9c560e01b81523360048201523060248201526001600160a01b0385169063e985e9c590604401602060405180830381865afa158015610700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107249190610a1f565b6107405760405162461bcd60e51b815260040161029090610a3c565b604051632142170760e11b81523360048201526001600160a01b038381166024830152604482018590528516906342842e0e90606401600060405180830381600087803b15801561079057600080fd5b505af11580156107a4573d6000803e3d6000fd5b505050505b816001600160a01b0316336001600160a01b0316856001600160a01b03167fa8b0736f82b72321cb76a3db6dfd7187786bb37ac0964124f784ec881c56ab75866040516107f891815260200190565b60405180910390a450505050565b6001600160a01b03811681146103db57600080fd5b60006020828403121561082d57600080fd5b813561083881610806565b9392505050565b60006020828403121561085157600080fd5b5035919050565b60008083601f84011261086a57600080fd5b50813567ffffffffffffffff81111561088257600080fd5b6020830191508360208260051b850101111561089d57600080fd5b9250929050565b80151581146103db57600080fd5b600080600080600080608087890312156108cb57600080fd5b86356108d681610806565b9550602087013567ffffffffffffffff808211156108f357600080fd5b6108ff8a838b01610858565b9097509550604089013591508082111561091857600080fd5b5061092589828a01610858565b9094509250506060870135610939816108a4565b809150509295509295509295565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761097457610974610947565b92915050565b634e487b7160e01b600052603260045260246000fd5b6000600182016109a2576109a2610947565b5060010190565b6000602082840312156109bb57600080fd5b5051919050565b6020808252603c908201527f53656e646572206973206e6f742074686520746f6b656e206f776e65722c206360408201527f616e6e6f742070726f636565642077697468207472616e736665722e00000000606082015260800190565b600060208284031215610a3157600080fd5b8151610838816108a4565b60208082526036908201527f436f6e7472616374206e6f7420617070726f76656420746f2073656e6420746f60408201527535b2b7399037b71029b2b73232b9103132b430b6331760511b606082015260800190565b600060018060a01b03808816835260208188168185015286604085015285606085015260a06080850152845191508160a085015260005b82811015610ae55785810182015185820160c001528101610ac9565b5050600060c0828501015260c0601f19601f8301168401019150509695505050505050565b600060208284031215610b1c57600080fd5b81516108388161080656fea264697066735822122031683dc6e4f8202cc7e0c85f9457090f1e1227f9b8f42325b5dc2c9f5c9b178764736f6c63430008110033", - "sourceMap": "278:2983:30:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;312:47;;;;;;;;;;-1:-1:-1;312:47:30;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;312:47:30;;;;;;-1:-1:-1;;;;;566:32:34;;;548:51;;536:2;521:18;312:47:30;;;;;;;;422:37;;;;;;;;;;;;;;;;;;;756:25:34;;;744:2;729:18;422:37:30;610:177:34;1314:142:30;;;;;;;;;;;;;:::i;:::-;;1831:101:13;;;;;;;;;;;;;:::i;1201:85::-;;;;;;;;;;-1:-1:-1;1247:7:13;1273:6;-1:-1:-1;;;;;1273:6:13;1201:85;;1220:88:30;;;;;;;;;;-1:-1:-1;1220:88:30;;;;;:::i;:::-;;:::i;2729:529::-;;;;;;:::i;:::-;;:::i;1535:108::-;;;;;;;;;;-1:-1:-1;1535:108:30;;;;;:::i;:::-;1610:10;1597:24;;;;:12;:24;;;;;:39;;-1:-1:-1;;;;;;1597:39:30;-1:-1:-1;;;;;1597:39:30;;;;;;;;;;1535:108;2081:198:13;;;;;;;;;;-1:-1:-1;2081:198:13;;;;;:::i;:::-;;:::i;1314:142:30:-;1094:13:13;:11;:13::i;:::-;1412:37:30::1;::::0;1381:21:::1;::::0;1420:10:::1;::::0;1412:37;::::1;;;::::0;1381:21;;1363:15:::1;1412:37:::0;1363:15;1412:37;1381:21;1420:10;1412:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;1353:103;1314:142::o:0;1831:101:13:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;1220:88:30:-;1094:13:13;:11;:13::i;:::-;1284:8:30::1;:17:::0;1220:88::o;2729:529::-;2937:40;;;2929:78;;;;-1:-1:-1;;;2929:78:30;;2723:2:34;2929:78:30;;;2705:21:34;2762:2;2742:18;;;2735:30;2801:27;2781:18;;;2774:55;2846:18;;2929:78:30;;;;;;;;;3060:8;;3038:30;;:12;:30;:::i;:::-;3025:9;:43;;3017:79;;;;-1:-1:-1;;;3017:79:30;;3382:2:34;3017:79:30;;;3364:21:34;3421:2;3401:18;;;3394:30;3460:25;3440:18;;;3433:53;3503:18;;3017:79:30;3180:347:34;3017:79:30;3110:9;3106:146;3121:23;;;3106:146;;;3165:76;3182:15;3199:12;;3212:1;3199:15;;;;;;;:::i;:::-;;;;;;;3216:10;;3227:1;3216:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;3231:9;3165:16;:76::i;:::-;3146:3;;;;:::i;:::-;;;;3106:146;;;;2729:529;;;;;;:::o;2081:198:13:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:13;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:13;;4006:2:34;2161:73:13::1;::::0;::::1;3988:21:34::0;4045:2;4025:18;;;4018:30;4084:34;4064:18;;;4057:62;-1:-1:-1;;;4135:18:34;;;4128:36;4181:19;;2161:73:13::1;3804:402:34::0;2161:73:13::1;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;1359:130::-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:13;719:10:23;1422:23:13;1414:68;;;;-1:-1:-1;;;1414:68:13;;4413:2:34;1414:68:13;;;4395:21:34;;;4432:18;;;4425:30;4491:34;4471:18;;;4464:62;4543:18;;1414:68:13;4211:356:34;2433:187:13;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:13;;;-1:-1:-1;;;;;;2541:17:13;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;1649:1074:30:-;1815:9;1811:826;;;1848:58;;-1:-1:-1;;;1848:58:30;;1883:10;1848:58;;;4746:51:34;4813:18;;;4806:34;;;1909:1:30;;-1:-1:-1;;;;;1848:34:30;;;;;4719:18:34;;1848:58:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:62;1840:135;;;;-1:-1:-1;;;1840:135:30;;;;;;;:::i;:::-;1997:68;;-1:-1:-1;;;1997:68:30;;2039:10;1997:68;;;5681:34:34;2059:4:30;5731:18:34;;;5724:43;-1:-1:-1;;;;;1997:41:30;;;;;5616:18:34;;1997:68:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1989:135;;;;-1:-1:-1;;;1989:135:30;;;;;;;:::i;:::-;2218:9;;;;;;;;-1:-1:-1;2218:9:30;;2138:90;;-1:-1:-1;;;2138:90:30;;-1:-1:-1;;;;;2138:41:30;;;;;:90;;2180:10;;2192:9;;2203:10;;2215:1;;2218:9;2138:90;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1811:826;;;2281:43;;-1:-1:-1;;;2281:43:30;;;;;756:25:34;;;-1:-1:-1;;;;;2281:31:30;;;;;729:18:34;;2281:43:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2267:57:30;:10;-1:-1:-1;;;;;2267:57:30;;2259:130;;;;-1:-1:-1;;;2259:130:30;;;;;;;:::i;:::-;2411:67;;-1:-1:-1;;;2411:67:30;;2452:10;2411:67;;;5681:34:34;2472:4:30;5731:18:34;;;5724:43;-1:-1:-1;;;;;2411:40:30;;;;;5616:18:34;;2411:67:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2403:134;;;;-1:-1:-1;;;2403:134:30;;;;;;;:::i;:::-;2551:75;;-1:-1:-1;;;2551:75:30;;2592:10;2551:75;;;7852:34:34;-1:-1:-1;;;;;7922:15:34;;;7902:18;;;7895:43;7954:18;;;7947:34;;;2551:40:30;;;;;7787:18:34;;2551:75:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1811:826;2706:9;-1:-1:-1;;;;;2651:65:30;2694:10;-1:-1:-1;;;;;2651:65:30;2665:15;-1:-1:-1;;;;;2651:65:30;;2682:10;2651:65;;;;756:25:34;;744:2;729:18;;610:177;2651:65:30;;;;;;;;1649:1074;;;;:::o;14:131:34:-;-1:-1:-1;;;;;89:31:34;;79:42;;69:70;;135:1;132;125:12;150:247;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;:::-;386:5;150:247;-1:-1:-1;;;150:247:34:o;792:180::-;851:6;904:2;892:9;883:7;879:23;875:32;872:52;;;920:1;917;910:12;872:52;-1:-1:-1;943:23:34;;792:180;-1:-1:-1;792:180:34:o;977:367::-;1040:8;1050:6;1104:3;1097:4;1089:6;1085:17;1081:27;1071:55;;1122:1;1119;1112:12;1071:55;-1:-1:-1;1145:20:34;;1188:18;1177:30;;1174:50;;;1220:1;1217;1210:12;1174:50;1257:4;1249:6;1245:17;1233:29;;1317:3;1310:4;1300:6;1297:1;1293:14;1285:6;1281:27;1277:38;1274:47;1271:67;;;1334:1;1331;1324:12;1271:67;977:367;;;;;:::o;1349:118::-;1435:5;1428:13;1421:21;1414:5;1411:32;1401:60;;1457:1;1454;1447:12;1472:1044;1609:6;1617;1625;1633;1641;1649;1702:3;1690:9;1681:7;1677:23;1673:33;1670:53;;;1719:1;1716;1709:12;1670:53;1758:9;1745:23;1777:31;1802:5;1777:31;:::i;:::-;1827:5;-1:-1:-1;1883:2:34;1868:18;;1855:32;1906:18;1936:14;;;1933:34;;;1963:1;1960;1953:12;1933:34;2002:70;2064:7;2055:6;2044:9;2040:22;2002:70;:::i;:::-;2091:8;;-1:-1:-1;1976:96:34;-1:-1:-1;2179:2:34;2164:18;;2151:32;;-1:-1:-1;2195:16:34;;;2192:36;;;2224:1;2221;2214:12;2192:36;;2263:72;2327:7;2316:8;2305:9;2301:24;2263:72;:::i;:::-;2354:8;;-1:-1:-1;2237:98:34;-1:-1:-1;;2441:2:34;2426:18;;2413:32;2454:30;2413:32;2454:30;:::i;:::-;2503:7;2493:17;;;1472:1044;;;;;;;;:::o;2875:127::-;2936:10;2931:3;2927:20;2924:1;2917:31;2967:4;2964:1;2957:15;2991:4;2988:1;2981:15;3007:168;3080:9;;;3111;;3128:15;;;3122:22;;3108:37;3098:71;;3149:18;;:::i;:::-;3007:168;;;;:::o;3532:127::-;3593:10;3588:3;3584:20;3581:1;3574:31;3624:4;3621:1;3614:15;3648:4;3645:1;3638:15;3664:135;3703:3;3724:17;;;3721:43;;3744:18;;:::i;:::-;-1:-1:-1;3791:1:34;3780:13;;3664:135::o;4851:184::-;4921:6;4974:2;4962:9;4953:7;4949:23;4945:32;4942:52;;;4990:1;4987;4980:12;4942:52;-1:-1:-1;5013:16:34;;4851:184;-1:-1:-1;4851:184:34:o;5040:424::-;5242:2;5224:21;;;5281:2;5261:18;;;5254:30;5320:34;5315:2;5300:18;;5293:62;5391:30;5386:2;5371:18;;5364:58;5454:3;5439:19;;5040:424::o;5778:245::-;5845:6;5898:2;5886:9;5877:7;5873:23;5869:32;5866:52;;;5914:1;5911;5904:12;5866:52;5946:9;5940:16;5965:28;5987:5;5965:28;:::i;6028:418::-;6230:2;6212:21;;;6269:2;6249:18;;;6242:30;6308:34;6303:2;6288:18;;6281:62;-1:-1:-1;;;6374:2:34;6359:18;;6352:52;6436:3;6421:19;;6028:418::o;6451:900::-;6681:4;6727:1;6723;6718:3;6714:11;6710:19;6768:2;6760:6;6756:15;6745:9;6738:34;6791:2;6841;6833:6;6829:15;6824:2;6813:9;6809:18;6802:43;6881:6;6876:2;6865:9;6861:18;6854:34;6924:6;6919:2;6908:9;6904:18;6897:34;6968:3;6962;6951:9;6947:19;6940:32;7001:6;6995:13;6981:27;;7045:6;7039:3;7028:9;7024:19;7017:35;7070:1;7080:141;7094:6;7091:1;7088:13;7080:141;;;7190:14;;;7186:23;;7180:30;7155:17;;;7174:3;7151:27;7144:67;7109:10;;7080:141;;;7084:3;;7271:1;7265:3;7256:6;7245:9;7241:22;7237:32;7230:43;7341:3;7334:2;7330:7;7325:2;7317:6;7313:15;7309:29;7298:9;7294:45;7290:55;7282:63;;;6451:900;;;;;;;;:::o;7356:251::-;7426:6;7479:2;7467:9;7458:7;7454:23;7450:32;7447:52;;;7495:1;7492;7485:12;7447:52;7527:9;7521:16;7546:31;7571:5;7546:31;:::i", + "object": "0x6080604052600436106100915760003560e01c80638612166311610059578063861216631461014c5780638da5cb5b1461015f5780639012c4a81461017d578063e7563f3f1461019d578063f2fde38b146101e757600080fd5b806323152273146100965780632ab8c1f4146100ab57806334aef4c8146100fe5780633ccfd60b14610122578063715018a614610137575b600080fd5b6100a96100a4366004610a11565b610207565b005b3480156100b757600080fd5b506100e16100c6366004610abe565b6001602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561010a57600080fd5b5061011460025481565b6040519081526020016100f5565b34801561012e57600080fd5b506100a961053f565b34801561014357600080fd5b506100a961057a565b6100a961015a366004610ae2565b61058e565b34801561016b57600080fd5b506000546001600160a01b03166100e1565b34801561018957600080fd5b506100a9610198366004610b65565b610880565b3480156101a957600080fd5b506100a96101b8366004610abe565b33600090815260016020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b3480156101f357600080fd5b506100a9610202366004610abe565b61088d565b858585858083146102335760405162461bcd60e51b815260040161022a90610b7e565b60405180910390fd5b6002546102409082610bcb565b3410156102895760405162461bcd60e51b815260206004820152601760248201527624b73b30b634b2103ab9b0b3b2903332b29039b2b73a1760491b604482015260640161022a565b8489146102a85760405162461bcd60e51b815260040161022a90610b7e565b60405163e985e9c560e01b81523360048201523060248201526001600160a01b038c169063e985e9c590604401602060405180830381865afa1580156102f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103169190610be8565b6103325760405162461bcd60e51b815260040161022a90610c0a565b60005b878110156105315786868281811061034f5761034f610c60565b905060200201358c6001600160a01b031662fdd58e338c8c8681811061037757610377610c60565b6040516001600160e01b031960e087901b1681526001600160a01b0390941660048501526020029190910135602483015250604401602060405180830381865afa1580156103c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ed9190610c76565b10156104535760405162461bcd60e51b815260206004820152602f60248201527f4e6f7420656e6f7567682062616c616e6365206f776e6564206f66207468652060448201526e33b4bb32b7103a37b5b2b71024a21760891b606482015260840161022a565b8b6001600160a01b031663f242432a338d8d8581811061047557610475610c60565b905060200201602081019061048a9190610abe565b8c8c8681811061049c5761049c610c60565b905060200201358b8b878181106104b5576104b5610c60565b90506020020135604051806020016040528060008152506040518663ffffffff1660e01b81526004016104ec959493929190610c8f565b600060405180830381600087803b15801561050657600080fd5b505af115801561051a573d6000803e3d6000fd5b50505050808061052990610d07565b915050610335565b505050505050505050505050565b610547610906565b6040514790339082156108fc029083906000818181858888f19350505050158015610576573d6000803e3d6000fd5b5050565b610582610906565b61058c6000610960565b565b838383838083146105b15760405162461bcd60e51b815260040161022a90610b7e565b6002546105be9082610bcb565b3410156106075760405162461bcd60e51b815260206004820152601760248201527624b73b30b634b2103ab9b0b3b2903332b29039b2b73a1760491b604482015260640161022a565b60405163e985e9c560e01b81523360048201523060248201526001600160a01b038a169063e985e9c590604401602060405180830381865afa158015610651573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106759190610be8565b6106915760405162461bcd60e51b815260040161022a90610c0a565b60005b8581101561087457896001600160a01b0316636352211e8888848181106106bd576106bd610c60565b905060200201356040518263ffffffff1660e01b81526004016106e291815260200190565b602060405180830381865afa1580156106ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107239190610d20565b6001600160a01b0316336001600160a01b0316146107a95760405162461bcd60e51b815260206004820152603c60248201527f53656e646572206973206e6f742074686520746f6b656e206f776e65722c206360448201527f616e6e6f742070726f636565642077697468207472616e736665722e00000000606482015260840161022a565b896001600160a01b03166342842e0e338b8b858181106107cb576107cb610c60565b90506020020160208101906107e09190610abe565b8a8a868181106107f2576107f2610c60565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b15801561084957600080fd5b505af115801561085d573d6000803e3d6000fd5b50505050808061086c90610d07565b915050610694565b50505050505050505050565b610888610906565b600255565b610895610906565b6001600160a01b0381166108fa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161022a565b61090381610960565b50565b6000546001600160a01b0316331461058c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161022a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461090357600080fd5b60008083601f8401126109d757600080fd5b50813567ffffffffffffffff8111156109ef57600080fd5b6020830191508360208260051b8501011115610a0a57600080fd5b9250929050565b60008060008060008060006080888a031215610a2c57600080fd5b8735610a37816109b0565b9650602088013567ffffffffffffffff80821115610a5457600080fd5b610a608b838c016109c5565b909850965060408a0135915080821115610a7957600080fd5b610a858b838c016109c5565b909650945060608a0135915080821115610a9e57600080fd5b50610aab8a828b016109c5565b989b979a50959850939692959293505050565b600060208284031215610ad057600080fd5b8135610adb816109b0565b9392505050565b600080600080600060608688031215610afa57600080fd5b8535610b05816109b0565b9450602086013567ffffffffffffffff80821115610b2257600080fd5b610b2e89838a016109c5565b90965094506040880135915080821115610b4757600080fd5b50610b54888289016109c5565b969995985093965092949392505050565b600060208284031215610b7757600080fd5b5035919050565b60208082526019908201527f4172726179206c656e67746873206d757374206d617463682e00000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610be257610be2610bb5565b92915050565b600060208284031215610bfa57600080fd5b81518015158114610adb57600080fd5b60208082526036908201527f436f6e7472616374206e6f7420617070726f76656420746f2073656e6420746f60408201527535b2b7399037b71029b2b73232b9103132b430b6331760511b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610c8857600080fd5b5051919050565b600060018060a01b03808816835260208188168185015286604085015285606085015260a06080850152845191508160a085015260005b82811015610ce25785810182015185820160c001528101610cc6565b5050600060c0828501015260c0601f19601f8301168401019150509695505050505050565b600060018201610d1957610d19610bb5565b5060010190565b600060208284031215610d3257600080fd5b8151610adb816109b056fea2646970667358221220f303b70463fc26db609bcd61d5c0a766950ec925aec9ef859f24d3ce05fdd28764736f6c63430008110033", + "sourceMap": "278:2765:30:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2229:811;;;;;;:::i;:::-;;:::i;:::-;;312:47;;;;;;;;;;-1:-1:-1;312:47:30;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;312:47:30;;;;;;-1:-1:-1;;;;;2167:32:34;;;2149:51;;2137:2;2122:18;312:47:30;;;;;;;;422:38;;;;;;;;;;;;;;;;;;;2357:25:34;;;2345:2;2330:18;422:38:30;2211:177:34;1084:142:30;;;;;;;;;;;;;:::i;1831:101:13:-;;;;;;;;;;;;;:::i;1472:664:30:-;;;;;;:::i;:::-;;:::i;1201:85:13:-;;;;;;;;;;-1:-1:-1;1247:7:13;1273:6;-1:-1:-1;;;;;1273:6:13;1201:85;;990:88:30;;;;;;;;;;-1:-1:-1;990:88:30;;;;;:::i;:::-;;:::i;1305:108::-;;;;;;;;;;-1:-1:-1;1305:108:30;;;;;:::i;:::-;1380:10;1367:24;;;;:12;:24;;;;;:39;;-1:-1:-1;;;;;;1367:39:30;-1:-1:-1;;;;;1367:39:30;;;;;;;;;;1305:108;2081:198:13;;;;;;;;;;-1:-1:-1;2081:198:13;;;;;:::i;:::-;;:::i;2229:811:30:-;2441:10;;2453:12;;733:40;;;725:78;;;;-1:-1:-1;;;725:78:30;;;;;;;:::i;:::-;;;;;;;;;856:8;;834:30;;:12;:30;:::i;:::-;821:9;:43;;813:79;;;;-1:-1:-1;;;813:79:30;;4352:2:34;813:79:30;;;4334:21:34;4391:2;4371:18;;;4364:30;-1:-1:-1;;;4410:18:34;;;4403:53;4473:18;;813:79:30;4150:347:34;813:79:30;2485:35;;::::1;2477:73;;;;-1:-1:-1::0;;;2477:73:30::1;;;;;;;:::i;:::-;2568:68;::::0;-1:-1:-1;;;2568:68:30;;2610:10:::1;2568:68;::::0;::::1;4714:34:34::0;2630:4:30::1;4764:18:34::0;;;4757:43;-1:-1:-1;;;;;2568:41:30;::::1;::::0;::::1;::::0;4649:18:34;;2568:68:30::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2560:135;;;;-1:-1:-1::0;;;2560:135:30::1;;;;;;;:::i;:::-;2709:9;2705:329;2720:23:::0;;::::1;2705:329;;;2839:7;;2847:1;2839:10;;;;;;;:::i;:::-;;;;;;;2780:15;-1:-1:-1::0;;;;;2772:34:30::1;;2807:10;2819:12;;2832:1;2819:15;;;;;;;:::i;:::-;2772:63;::::0;-1:-1:-1;;;;;;2772:63:30::1;::::0;;;;;;-1:-1:-1;;;;;5840:32:34;;;2772:63:30::1;::::0;::::1;5822:51:34::0;2819:15:30::1;;::::0;;;::::1;;5889:18:34::0;;;5882:34;-1:-1:-1;5795:18:34;;2772:63:30::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:77;;2764:137;;;::::0;-1:-1:-1;;;2764:137:30;;6318:2:34;2764:137:30::1;::::0;::::1;6300:21:34::0;6357:2;6337:18;;;6330:30;6396:34;6376:18;;;6369:62;-1:-1:-1;;;6447:18:34;;;6440:45;6502:19;;2764:137:30::1;6116:411:34::0;2764:137:30::1;2923:15;-1:-1:-1::0;;;;;2915:41:30::1;;2957:10;2969;;2980:1;2969:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;2984:12;;2997:1;2984:15;;;;;;;:::i;:::-;;;;;;;3001:7;;3009:1;3001:10;;;;;;;:::i;:::-;;;;;;;3013:9;;;;;;;;;;;::::0;2915:108:::1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2745:3;;;;;:::i;:::-;;;;2705:329;;;;2229:811:::0;;;;;;;;;;;:::o;1084:142::-;1094:13:13;:11;:13::i;:::-;1182:37:30::1;::::0;1151:21:::1;::::0;1190:10:::1;::::0;1182:37;::::1;;;::::0;1151:21;;1133:15:::1;1182:37:::0;1133:15;1182:37;1151:21;1190:10;1182:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;1123:103;1084:142::o:0;1831:101:13:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;1472:664:30:-;1647:10;;1659:12;;733:40;;;725:78;;;;-1:-1:-1;;;725:78:30;;;;;;;:::i;:::-;856:8;;834:30;;:12;:30;:::i;:::-;821:9;:43;;813:79;;;;-1:-1:-1;;;813:79:30;;4352:2:34;813:79:30;;;4334:21:34;4391:2;4371:18;;;4364:30;-1:-1:-1;;;4410:18:34;;;4403:53;4473:18;;813:79:30;4150:347:34;813:79:30;1691:67:::1;::::0;-1:-1:-1;;;1691:67:30;;1732:10:::1;1691:67;::::0;::::1;4714:34:34::0;1752:4:30::1;4764:18:34::0;;;4757:43;-1:-1:-1;;;;;1691:40:30;::::1;::::0;::::1;::::0;4649:18:34;;1691:67:30::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1683:134;;;;-1:-1:-1::0;;;1683:134:30::1;;;;;;;:::i;:::-;1831:9;1827:303;1842:23:::0;;::::1;1827:303;;;1915:15;-1:-1:-1::0;;;;;1908:31:30::1;;1940:12;;1953:1;1940:15;;;;;;;:::i;:::-;;;;;;;1908:48;;;;;;;;;;;;;2357:25:34::0;;2345:2;2330:18;;2211:177;1908:48:30::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;1894:62:30::1;:10;-1:-1:-1::0;;;;;1894:62:30::1;;1886:135;;;::::0;-1:-1:-1;;;1886:135:30;;8027:2:34;1886:135:30::1;::::0;::::1;8009:21:34::0;8066:2;8046:18;;;8039:30;8105:34;8085:18;;;8078:62;8176:30;8156:18;;;8149:58;8224:19;;1886:135:30::1;7825:424:34::0;1886:135:30::1;2042:15;-1:-1:-1::0;;;;;2035:40:30::1;;2076:10;2088;;2099:1;2088:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;2103:12;;2116:1;2103:15;;;;;;;:::i;:::-;2035:84;::::0;-1:-1:-1;;;;;;2035:84:30::1;::::0;;;;;;-1:-1:-1;;;;;8512:15:34;;;2035:84:30::1;::::0;::::1;8494:34:34::0;8564:15;;;;8544:18;;;8537:43;-1:-1:-1;2103:15:30::1;::::0;;::::1;;;8596:18:34::0;;;8589:34;8429:18;;2035:84:30::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1867:3;;;;;:::i;:::-;;;;1827:303;;;;1472:664:::0;;;;;;;;;:::o;990:88::-;1094:13:13;:11;:13::i;:::-;1054:8:30::1;:17:::0;990:88::o;2081:198:13:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:13;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:13;;8836:2:34;2161:73:13::1;::::0;::::1;8818:21:34::0;8875:2;8855:18;;;8848:30;8914:34;8894:18;;;8887:62;-1:-1:-1;;;8965:18:34;;;8958:36;9011:19;;2161:73:13::1;8634:402:34::0;2161:73:13::1;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;1359:130::-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:13;719:10:23;1422:23:13;1414:68;;;;-1:-1:-1;;;1414:68:13;;9243:2:34;1414:68:13;;;9225:21:34;;;9262:18;;;9255:30;9321:34;9301:18;;;9294:62;9373:18;;1414:68:13;9041:356:34;2433:187:13;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:13;;;-1:-1:-1;;;;;;2541:17:13;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;14:131:34:-;-1:-1:-1;;;;;89:31:34;;79:42;;69:70;;135:1;132;125:12;150:367;213:8;223:6;277:3;270:4;262:6;258:17;254:27;244:55;;295:1;292;285:12;244:55;-1:-1:-1;318:20:34;;361:18;350:30;;347:50;;;393:1;390;383:12;347:50;430:4;422:6;418:17;406:29;;490:3;483:4;473:6;470:1;466:14;458:6;454:27;450:38;447:47;444:67;;;507:1;504;497:12;444:67;150:367;;;;;:::o;522:1224::-;689:6;697;705;713;721;729;737;790:3;778:9;769:7;765:23;761:33;758:53;;;807:1;804;797:12;758:53;846:9;833:23;865:31;890:5;865:31;:::i;:::-;915:5;-1:-1:-1;971:2:34;956:18;;943:32;994:18;1024:14;;;1021:34;;;1051:1;1048;1041:12;1021:34;1090:70;1152:7;1143:6;1132:9;1128:22;1090:70;:::i;:::-;1179:8;;-1:-1:-1;1064:96:34;-1:-1:-1;1267:2:34;1252:18;;1239:32;;-1:-1:-1;1283:16:34;;;1280:36;;;1312:1;1309;1302:12;1280:36;1351:72;1415:7;1404:8;1393:9;1389:24;1351:72;:::i;:::-;1442:8;;-1:-1:-1;1325:98:34;-1:-1:-1;1530:2:34;1515:18;;1502:32;;-1:-1:-1;1546:16:34;;;1543:36;;;1575:1;1572;1565:12;1543:36;;1614:72;1678:7;1667:8;1656:9;1652:24;1614:72;:::i;:::-;522:1224;;;;-1:-1:-1;522:1224:34;;-1:-1:-1;522:1224:34;;;;1588:98;;-1:-1:-1;;;522:1224:34:o;1751:247::-;1810:6;1863:2;1851:9;1842:7;1838:23;1834:32;1831:52;;;1879:1;1876;1869:12;1831:52;1918:9;1905:23;1937:31;1962:5;1937:31;:::i;:::-;1987:5;1751:247;-1:-1:-1;;;1751:247:34:o;2393:908::-;2524:6;2532;2540;2548;2556;2609:2;2597:9;2588:7;2584:23;2580:32;2577:52;;;2625:1;2622;2615:12;2577:52;2664:9;2651:23;2683:31;2708:5;2683:31;:::i;:::-;2733:5;-1:-1:-1;2789:2:34;2774:18;;2761:32;2812:18;2842:14;;;2839:34;;;2869:1;2866;2859:12;2839:34;2908:70;2970:7;2961:6;2950:9;2946:22;2908:70;:::i;:::-;2997:8;;-1:-1:-1;2882:96:34;-1:-1:-1;3085:2:34;3070:18;;3057:32;;-1:-1:-1;3101:16:34;;;3098:36;;;3130:1;3127;3120:12;3098:36;;3169:72;3233:7;3222:8;3211:9;3207:24;3169:72;:::i;:::-;2393:908;;;;-1:-1:-1;2393:908:34;;-1:-1:-1;3260:8:34;;3143:98;2393:908;-1:-1:-1;;;2393:908:34:o;3306:180::-;3365:6;3418:2;3406:9;3397:7;3393:23;3389:32;3386:52;;;3434:1;3431;3424:12;3386:52;-1:-1:-1;3457:23:34;;3306:180;-1:-1:-1;3306:180:34:o;3491:349::-;3693:2;3675:21;;;3732:2;3712:18;;;3705:30;3771:27;3766:2;3751:18;;3744:55;3831:2;3816:18;;3491:349::o;3845:127::-;3906:10;3901:3;3897:20;3894:1;3887:31;3937:4;3934:1;3927:15;3961:4;3958:1;3951:15;3977:168;4050:9;;;4081;;4098:15;;;4092:22;;4078:37;4068:71;;4119:18;;:::i;:::-;3977:168;;;;:::o;4811:277::-;4878:6;4931:2;4919:9;4910:7;4906:23;4902:32;4899:52;;;4947:1;4944;4937:12;4899:52;4979:9;4973:16;5032:5;5025:13;5018:21;5011:5;5008:32;4998:60;;5054:1;5051;5044:12;5093:418;5295:2;5277:21;;;5334:2;5314:18;;;5307:30;5373:34;5368:2;5353:18;;5346:62;-1:-1:-1;;;5439:2:34;5424:18;;5417:52;5501:3;5486:19;;5093:418::o;5516:127::-;5577:10;5572:3;5568:20;5565:1;5558:31;5608:4;5605:1;5598:15;5632:4;5629:1;5622:15;5927:184;5997:6;6050:2;6038:9;6029:7;6025:23;6021:32;6018:52;;;6066:1;6063;6056:12;6018:52;-1:-1:-1;6089:16:34;;5927:184;-1:-1:-1;5927:184:34:o;6532:892::-;6754:4;6800:1;6796;6791:3;6787:11;6783:19;6841:2;6833:6;6829:15;6818:9;6811:34;6864:2;6914;6906:6;6902:15;6897:2;6886:9;6882:18;6875:43;6954:6;6949:2;6938:9;6934:18;6927:34;6997:6;6992:2;6981:9;6977:18;6970:34;7041:3;7035;7024:9;7020:19;7013:32;7074:6;7068:13;7054:27;;7118:6;7112:3;7101:9;7097:19;7090:35;7143:1;7153:141;7167:6;7164:1;7161:13;7153:141;;;7263:14;;;7259:23;;7253:30;7228:17;;;7247:3;7224:27;7217:67;7182:10;;7153:141;;;7157:3;;7344:1;7338:3;7329:6;7318:9;7314:22;7310:32;7303:43;7414:3;7407:2;7403:7;7398:2;7390:6;7386:15;7382:29;7371:9;7367:45;7363:55;7355:63;;;6532:892;;;;;;;;:::o;7429:135::-;7468:3;7489:17;;;7486:43;;7509:18;;:::i;:::-;-1:-1:-1;7556:1:34;7545:13;;7429:135::o;7569:251::-;7639:6;7692:2;7680:9;7671:7;7667:23;7663:32;7660:52;;;7708:1;7705;7698:12;7660:52;7740:9;7734:16;7759:31;7784:5;7759:31;:::i", "linkReferences": {} }, "methodIdentifiers": { "addressVault(address)": "2ab8c1f4", - "contractBulkTransfer(address,uint256[],address[],bool)": "c3c77c63", + "erc1155BulkTransfer(address,address[],uint256[],uint256[])": "23152273", + "erc721BulkTransfer(address,address[],uint256[])": "86121663", "owner()": "8da5cb5b", "renounceOwnership()": "715018a6", "transferOwnership(address)": "f2fde38b", @@ -198,7 +191,7 @@ "usageFee()": "34aef4c8", "withdraw()": "3ccfd60b" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"TokenTransfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"addressVault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIndexes\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"recipients\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"isERC1155\",\"type\":\"bool\"}],\"name\":\"contractBulkTransfer\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vaultAddress\",\"type\":\"address\"}],\"name\":\"updateVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"usageFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/SendIt.sol\":\"SendIt\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":ds-test/=lib/solmate/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/ERC1155.sol\":{\"keccak256\":\"0xd917747dc87f189c6779b894f367a028f9dca4be930283cccec8f312966af820\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a5e5b99830cf233f77aa3b1bd1f57561faee103beeee88e6a6f86d044817bbb\",\"dweb:/ipfs/QmREYidSDpHPig3AhxzsMHg3w2ZtMeGfRhcokXxEZyj6fC\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x6392f2cfe3a5ee802227fe7a2dfd47096d881aec89bddd214b35c5b46d3cd941\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd9c47a375639888e726a99da718890ba16d17d7ad9eacb0ccc892d46d1b3ee0\",\"dweb:/ipfs/Qmb41W5RUjy2sWg49A2rMnxekSeEk6SvGyJL5tyCCSr7un\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e28648f994abf1d6bc345644a361cc0b7efa544f8bc0c8ec26011fed85a91ec\",\"dweb:/ipfs/QmVVE7AiRjKaQYYji7TkjmTeVzGpNmms5eoxqTCfvvpj6D\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol\":{\"keccak256\":\"0xa66d18b9a85458d28fc3304717964502ae36f7f8a2ff35bc83f6f85d74b03574\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e46c80ea068989111d6103e5521223f9ef337e93de76deed8b03f75c6f7b2797\",\"dweb:/ipfs/QmNoSE6knNfFncdDDLTb3fGR6oSQty1srG96Vsx3E9wQdw\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0xd89f3585b211fc9e3408384a4c4efdc3a93b2f877a3821046fa01c219d35be1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ea15ef7c8980240ccd46df13809d163f749bc0a01d8bced1875660d4872da1c\",\"dweb:/ipfs/QmbDfAT9VeCSG4cnPd6tjDMp8ED85dLHbWyMyv7wbmL4CH\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x68404b57d114b893554b0e54334b32f578f5d1abf61830025c83fb71dc1944ce\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3d0a94b3c8afd92c2a9f03f3325e9ac22cec56e995b94ff212670ff3653f0d3\",\"dweb:/ipfs/QmPqKWUysbo8QqKcqH5Lp7SQiL1LfjeoGCSa7iFWmAP8Mw\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634\",\"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x50d8442df21e003cffe241feead16ae1f817afb016e9caab96235d7017816fd8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d079afcda8d243ca111f3471d5bb351b90d64806eb5e9704c414a2808ff02d44\",\"dweb:/ipfs/QmeUcosk8rKGvV9yghc58fd2Te66D943JFBS5jD4mbUZaC\"]},\"src/SendIt.sol\":{\"keccak256\":\"0x21a46b2fcd66a1ef52f21d739157efbf09047dd5e53eece918c2f8ac5a5b565f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://45aed425c67e37edfa7140733c83ba452c6e8acbfbfe3e78edf378f63d3ef2d9\",\"dweb:/ipfs/QmStU4Ew5yikiwuSyfgSh82MR2iy3JcdiBtJepyB3AE3o1\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"addressVault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"recipients\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIndexes\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"erc1155BulkTransfer\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"recipients\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIndexes\",\"type\":\"uint256[]\"}],\"name\":\"erc721BulkTransfer\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vaultAddress\",\"type\":\"address\"}],\"name\":\"updateVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"usageFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/ShipIt.sol\":\"ShipIt\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":ds-test/=lib/solmate/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/ERC1155.sol\":{\"keccak256\":\"0xd917747dc87f189c6779b894f367a028f9dca4be930283cccec8f312966af820\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a5e5b99830cf233f77aa3b1bd1f57561faee103beeee88e6a6f86d044817bbb\",\"dweb:/ipfs/QmREYidSDpHPig3AhxzsMHg3w2ZtMeGfRhcokXxEZyj6fC\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x6392f2cfe3a5ee802227fe7a2dfd47096d881aec89bddd214b35c5b46d3cd941\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd9c47a375639888e726a99da718890ba16d17d7ad9eacb0ccc892d46d1b3ee0\",\"dweb:/ipfs/Qmb41W5RUjy2sWg49A2rMnxekSeEk6SvGyJL5tyCCSr7un\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e28648f994abf1d6bc345644a361cc0b7efa544f8bc0c8ec26011fed85a91ec\",\"dweb:/ipfs/QmVVE7AiRjKaQYYji7TkjmTeVzGpNmms5eoxqTCfvvpj6D\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol\":{\"keccak256\":\"0xa66d18b9a85458d28fc3304717964502ae36f7f8a2ff35bc83f6f85d74b03574\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e46c80ea068989111d6103e5521223f9ef337e93de76deed8b03f75c6f7b2797\",\"dweb:/ipfs/QmNoSE6knNfFncdDDLTb3fGR6oSQty1srG96Vsx3E9wQdw\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0xd89f3585b211fc9e3408384a4c4efdc3a93b2f877a3821046fa01c219d35be1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ea15ef7c8980240ccd46df13809d163f749bc0a01d8bced1875660d4872da1c\",\"dweb:/ipfs/QmbDfAT9VeCSG4cnPd6tjDMp8ED85dLHbWyMyv7wbmL4CH\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x68404b57d114b893554b0e54334b32f578f5d1abf61830025c83fb71dc1944ce\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3d0a94b3c8afd92c2a9f03f3325e9ac22cec56e995b94ff212670ff3653f0d3\",\"dweb:/ipfs/QmPqKWUysbo8QqKcqH5Lp7SQiL1LfjeoGCSa7iFWmAP8Mw\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634\",\"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x50d8442df21e003cffe241feead16ae1f817afb016e9caab96235d7017816fd8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d079afcda8d243ca111f3471d5bb351b90d64806eb5e9704c414a2808ff02d44\",\"dweb:/ipfs/QmeUcosk8rKGvV9yghc58fd2Te66D943JFBS5jD4mbUZaC\"]},\"src/ShipIt.sol\":{\"keccak256\":\"0x1132ec302552f278c20d48fe62c2e9ffd3b3799b7b76bb0da86d6e5c3bef0a60\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://e200d3ff0aba80ee4b1494e2a3293e6c2bd62c9d1e3737052a430d990ae76de4\",\"dweb:/ipfs/QmVF956Eya5dt2vcLN8q9U3bKvRnR3tVw328CiyByoiyxz\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.17+commit.8df45f5f" @@ -225,37 +218,6 @@ "name": "OwnershipTransferred", "anonymous": false }, - { - "inputs": [ - { - "internalType": "address", - "name": "contractAddress", - "type": "address", - "indexed": true - }, - { - "internalType": "uint256", - "name": "tokenIndex", - "type": "uint256", - "indexed": false - }, - { - "internalType": "address", - "name": "from", - "type": "address", - "indexed": true - }, - { - "internalType": "address", - "name": "to", - "type": "address", - "indexed": true - } - ], - "type": "event", - "name": "TokenTransfer", - "anonymous": false - }, { "inputs": [ { @@ -282,25 +244,47 @@ "name": "contractAddress", "type": "address" }, + { + "internalType": "address[]", + "name": "recipients", + "type": "address[]" + }, { "internalType": "uint256[]", "name": "tokenIndexes", "type": "uint256[]" }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function", + "name": "erc1155BulkTransfer" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "contractAddress", + "type": "address" + }, { "internalType": "address[]", "name": "recipients", "type": "address[]" }, { - "internalType": "bool", - "name": "isERC1155", - "type": "bool" + "internalType": "uint256[]", + "name": "tokenIndexes", + "type": "uint256[]" } ], "stateMutability": "payable", "type": "function", - "name": "contractBulkTransfer" + "name": "erc721BulkTransfer" }, { "inputs": [], @@ -414,7 +398,7 @@ "bytecodeHash": "ipfs" }, "compilationTarget": { - "src/SendIt.sol": "SendIt" + "src/ShipIt.sol": "ShipIt" }, "libraries": {} }, @@ -539,11 +523,11 @@ ], "license": "MIT" }, - "src/SendIt.sol": { - "keccak256": "0x21a46b2fcd66a1ef52f21d739157efbf09047dd5e53eece918c2f8ac5a5b565f", + "src/ShipIt.sol": { + "keccak256": "0x1132ec302552f278c20d48fe62c2e9ffd3b3799b7b76bb0da86d6e5c3bef0a60", "urls": [ - "bzz-raw://45aed425c67e37edfa7140733c83ba452c6e8acbfbfe3e78edf378f63d3ef2d9", - "dweb:/ipfs/QmStU4Ew5yikiwuSyfgSh82MR2iy3JcdiBtJepyB3AE3o1" + "bzz-raw://e200d3ff0aba80ee4b1494e2a3293e6c2bd62c9d1e3737052a430d990ae76de4", + "dweb:/ipfs/QmVF956Eya5dt2vcLN8q9U3bKvRnR3tVw328CiyByoiyxz" ], "license": "UNLICENSED" } @@ -551,8 +535,8 @@ "version": 1 }, "ast": { - "absolutePath": "src/SendIt.sol", - "id": 29049, + "absolutePath": "src/ShipIt.sol", + "id": 29031, "exportedSymbols": { "ERC1155": [ 24195 @@ -563,12 +547,12 @@ "Ownable": [ 22972 ], - "SendIt": [ - 29048 + "ShipIt": [ + 29030 ] }, "nodeType": "SourceUnit", - "src": "39:3223:30", + "src": "39:3005:30", "nodes": [ { "id": 28770, @@ -590,7 +574,7 @@ "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol", "file": "openzeppelin-contracts/token/ERC721/ERC721.sol", "nameLocation": "-1:-1:-1", - "scope": 29049, + "scope": 29031, "sourceUnit": 25319, "symbolAliases": [ { @@ -616,7 +600,7 @@ "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC1155/ERC1155.sol", "file": "openzeppelin-contracts/token/ERC1155/ERC1155.sol", "nameLocation": "-1:-1:-1", - "scope": 29049, + "scope": 29031, "sourceUnit": 24196, "symbolAliases": [ { @@ -642,7 +626,7 @@ "absolutePath": "lib/openzeppelin-contracts/contracts/access/Ownable.sol", "file": "openzeppelin-contracts/access/Ownable.sol", "nameLocation": "-1:-1:-1", - "scope": 29049, + "scope": 29031, "sourceUnit": 22973, "symbolAliases": [ { @@ -661,9 +645,9 @@ "unitAlias": "" }, { - "id": 29048, + "id": 29030, "nodeType": "ContractDefinition", - "src": "278:2983:30", + "src": "278:2765:30", "nodes": [ { "id": 28782, @@ -675,7 +659,7 @@ "mutability": "mutable", "name": "addressVault", "nameLocation": "347:12:30", - "scope": 29048, + "scope": 29030, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -717,14 +701,14 @@ { "id": 28785, "nodeType": "VariableDeclaration", - "src": "422:37:30", + "src": "422:38:30", "nodes": [], "constant": false, "functionSelector": "34aef4c8", "mutability": "mutable", "name": "usageFee", "nameLocation": "437:8:30", - "scope": 29048, + "scope": 29030, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -742,7 +726,7 @@ } }, "value": { - "hexValue": "2e30303031", + "hexValue": "2e3030303135", "id": 28784, "isConstant": false, "isLValue": false, @@ -750,760 +734,448 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "448:11:30", + "src": "448:12:30", "subdenomination": "ether", "typeDescriptions": { - "typeIdentifier": "t_rational_100000000000000_by_1", - "typeString": "int_const 100000000000000" + "typeIdentifier": "t_rational_150000000000000_by_1", + "typeString": "int_const 150000000000000" }, - "value": ".0001" + "value": ".00015" }, "visibility": "public" }, { - "id": 28795, - "nodeType": "EventDefinition", - "src": "531:115:30", - "nodes": [], - "anonymous": false, - "eventSelector": "a8b0736f82b72321cb76a3db6dfd7187786bb37ac0964124f784ec881c56ab75", - "name": "TokenTransfer", - "nameLocation": "537:13:30", - "parameters": { - "id": 28794, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 28787, - "indexed": true, - "mutability": "mutable", - "name": "contractAddress", - "nameLocation": "567:15:30", - "nodeType": "VariableDeclaration", - "scope": 28795, - "src": "551:31:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 28786, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "551:7:30", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 28789, - "indexed": false, - "mutability": "mutable", - "name": "tokenIndex", - "nameLocation": "592:10:30", - "nodeType": "VariableDeclaration", - "scope": 28795, - "src": "584:18:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 28788, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "584:7:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 28791, - "indexed": true, - "mutability": "mutable", - "name": "from", - "nameLocation": "620:4:30", - "nodeType": "VariableDeclaration", - "scope": 28795, - "src": "604:20:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 28790, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "604:7:30", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 28793, - "indexed": true, - "mutability": "mutable", - "name": "to", - "nameLocation": "642:2:30", - "nodeType": "VariableDeclaration", - "scope": 28795, - "src": "626:18:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 28792, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "626:7:30", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "550:95:30" - } - }, - { - "id": 28836, + "id": 28815, "nodeType": "ModifierDefinition", - "src": "734:406:30", + "src": "609:301:30", "nodes": [], "body": { - "id": 28835, + "id": 28814, "nodeType": "Block", - "src": "851:289:30", + "src": "715:195:30", "nodes": [], "statements": [ { - "condition": { - "id": 28803, - "name": "isERC1155", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28801, - "src": "865:9:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 28832, - "nodeType": "Block", - "src": "1005:118:30", - "statements": [ + "expression": { + "arguments": [ { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 28828, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 28820, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "1027:3:30", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 28821, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1031:6:30", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "1027:10:30", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ - { - "id": 28826, - "name": "tokenIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28799, - "src": "1073:10:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "arguments": [ - { - "id": 28823, - "name": "contractAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28797, - "src": "1048:15:30", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 28822, - "name": "ERC721", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 25318, - "src": "1041:6:30", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC721_$25318_$", - "typeString": "type(contract ERC721)" - } - }, - "id": 28824, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1041:23:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC721_$25318", - "typeString": "contract ERC721" - } - }, - "id": 28825, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1065:7:30", - "memberName": "ownerOf", - "nodeType": "MemberAccess", - "referencedDeclaration": 24519, - "src": "1041:31:30", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$", - "typeString": "function (uint256) view external returns (address)" - } - }, - "id": 28827, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1041:43:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1027:57:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "596f75206d757374206f776e2074686520746f6b656e2e", - "id": 28829, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1086:25:30", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_d31599eb0fbd49993937bd1d29a43fee7483feee72489f5acd1739c2fdde9e5b", - "typeString": "literal_string \"You must own the token.\"" - }, - "value": "You must own the token." + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 28798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 28794, + "name": "tokenIndexes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28791, + "src": "733:12:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" } - ], + }, + "id": 28795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "746:6:30", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "733:19:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_d31599eb0fbd49993937bd1d29a43fee7483feee72489f5acd1739c2fdde9e5b", - "typeString": "literal_string \"You must own the token.\"" - } - ], - "id": 28819, - "name": "require", + "id": 28796, + "name": "recipients", "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "1019:7:30", + "overloadedDeclarations": [], + "referencedDeclaration": 28788, + "src": "756:10:30", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" } }, - "id": 28830, + "id": 28797, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1019:93:30", - "tryCall": false, + "memberLocation": "767:6:30", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "756:17:30", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 28831, - "nodeType": "ExpressionStatement", - "src": "1019:93:30" + "src": "733:40:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4172726179206c656e67746873206d757374206d617463682e", + "id": 28799, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "775:27:30", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_81b143823f29469d45d12678174c48d3931683b850446a67e3a08af68e3a1a63", + "typeString": "literal_string \"Array lengths must match.\"" + }, + "value": "Array lengths must match." } - ] + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_81b143823f29469d45d12678174c48d3931683b850446a67e3a08af68e3a1a63", + "typeString": "literal_string \"Array lengths must match.\"" + } + ], + "id": 28793, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "725:7:30", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 28800, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "725:78:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } }, - "id": 28833, - "nodeType": "IfStatement", - "src": "861:262:30", - "trueBody": { - "id": 28818, - "nodeType": "Block", - "src": "876:123:30", - "statements": [ + "id": 28801, + "nodeType": "ExpressionStatement", + "src": "725:78:30" + }, + { + "expression": { + "arguments": [ { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 28814, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "expression": { - "id": 28809, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "933:3:30", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 28810, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "937:6:30", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "933:10:30", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 28811, - "name": "tokenIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28799, - "src": "945:10:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "arguments": [ - { - "id": 28806, - "name": "contractAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28797, - "src": "906:15:30", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 28805, - "name": "ERC1155", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 24195, - "src": "898:7:30", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC1155_$24195_$", - "typeString": "type(contract ERC1155)" - } - }, - "id": 28807, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "898:24:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC1155_$24195", - "typeString": "contract ERC1155" - } - }, - "id": 28808, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "923:9:30", - "memberName": "balanceOf", - "nodeType": "MemberAccess", - "referencedDeclaration": 23088, - "src": "898:34:30", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (address,uint256) view external returns (uint256)" - } - }, - "id": 28812, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "898:58:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 28813, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "959:1:30", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "898:62:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "596f75206d757374206f776e2074686520746f6b656e2e", - "id": 28815, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "962:25:30", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_d31599eb0fbd49993937bd1d29a43fee7483feee72489f5acd1739c2fdde9e5b", - "typeString": "literal_string \"You must own the token.\"" - }, - "value": "You must own the token." - } - ], + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 28809, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_d31599eb0fbd49993937bd1d29a43fee7483feee72489f5acd1739c2fdde9e5b", - "typeString": "literal_string \"You must own the token.\"" - } - ], - "id": 28804, - "name": "require", + "id": 28803, + "name": "msg", "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "890:7:30", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "821:3:30", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + "typeIdentifier": "t_magic_message", + "typeString": "msg" } }, - "id": 28816, + "id": 28804, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "890:98:30", - "tryCall": false, + "memberLocation": "825:5:30", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "821:9:30", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 28817, - "nodeType": "ExpressionStatement", - "src": "890:98:30" + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 28808, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 28805, + "name": "tokenIndexes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28791, + "src": "834:12:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 28806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "847:6:30", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "834:19:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 28807, + "name": "usageFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28785, + "src": "856:8:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "834:30:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "821:43:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "496e76616c6964207573616765206665652073656e742e", + "id": 28810, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "866:25:30", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0a6186ff05b8ad5792be99284ff75365af00226bdc07815a42f4c9f0db166d1a", + "typeString": "literal_string \"Invalid usage fee sent.\"" + }, + "value": "Invalid usage fee sent." } - ] - } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0a6186ff05b8ad5792be99284ff75365af00226bdc07815a42f4c9f0db166d1a", + "typeString": "literal_string \"Invalid usage fee sent.\"" + } + ], + "id": 28802, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "813:7:30", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 28811, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "813:79:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 28812, + "nodeType": "ExpressionStatement", + "src": "813:79:30" }, { - "id": 28834, + "id": 28813, "nodeType": "PlaceholderStatement", - "src": "1132:1:30" + "src": "902:1:30" } ] }, - "name": "onlyIfTokenOwner", - "nameLocation": "743:16:30", + "name": "onlyIfPaid", + "nameLocation": "618:10:30", "parameters": { - "id": 28802, + "id": 28792, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 28797, + "id": 28788, "mutability": "mutable", - "name": "contractAddress", - "nameLocation": "777:15:30", + "name": "recipients", + "nameLocation": "657:10:30", "nodeType": "VariableDeclaration", - "scope": 28836, - "src": "769:23:30", + "scope": 28815, + "src": "638:29:30", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "calldata", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 28796, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "769:7:30", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 28799, - "mutability": "mutable", - "name": "tokenIndex", - "nameLocation": "810:10:30", - "nodeType": "VariableDeclaration", - "scope": 28836, - "src": "802:18:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" }, "typeName": { - "id": 28798, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "802:7:30", + "baseType": { + "id": 28786, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "638:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 28787, + "nodeType": "ArrayTypeName", + "src": "638:9:30", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" } }, "visibility": "internal" }, { "constant": false, - "id": 28801, + "id": 28791, "mutability": "mutable", - "name": "isERC1155", - "nameLocation": "835:9:30", + "name": "tokenIndexes", + "nameLocation": "696:12:30", "nodeType": "VariableDeclaration", - "scope": 28836, - "src": "830:14:30", + "scope": 28815, + "src": "677:31:30", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "calldata", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" }, "typeName": { - "id": 28800, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "830:4:30", + "baseType": { + "id": 28789, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "677:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 28790, + "nodeType": "ArrayTypeName", + "src": "677:9:30", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" } }, "visibility": "internal" } ], - "src": "759:91:30" + "src": "628:86:30" }, "virtual": false, "visibility": "internal" }, { - "id": 28848, + "id": 28827, "nodeType": "FunctionDefinition", - "src": "1220:88:30", + "src": "990:88:30", "nodes": [], "body": { - "id": 28847, + "id": 28826, "nodeType": "Block", - "src": "1274:34:30", + "src": "1044:34:30", "nodes": [], "statements": [ { "expression": { - "id": 28845, + "id": 28824, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 28843, + "id": 28822, "name": "usageFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 28785, - "src": "1284:8:30", + "src": "1054:8:30", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1512,26 +1184,26 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 28844, + "id": 28823, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 28838, - "src": "1295:6:30", + "referencedDeclaration": 28817, + "src": "1065:6:30", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1284:17:30", + "src": "1054:17:30", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 28846, + "id": 28825, "nodeType": "ExpressionStatement", - "src": "1284:17:30" + "src": "1054:17:30" } ] }, @@ -1540,37 +1212,37 @@ "kind": "function", "modifiers": [ { - "id": 28841, + "id": 28820, "kind": "modifierInvocation", "modifierName": { - "id": 28840, + "id": 28819, "name": "onlyOwner", "nameLocations": [ - "1264:9:30" + "1034:9:30" ], "nodeType": "IdentifierPath", "referencedDeclaration": 22891, - "src": "1264:9:30" + "src": "1034:9:30" }, "nodeType": "ModifierInvocation", - "src": "1264:9:30" + "src": "1034:9:30" } ], "name": "updateFee", - "nameLocation": "1229:9:30", + "nameLocation": "999:9:30", "parameters": { - "id": 28839, + "id": 28818, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 28838, + "id": 28817, "mutability": "mutable", "name": "amount", - "nameLocation": "1247:6:30", + "nameLocation": "1017:6:30", "nodeType": "VariableDeclaration", - "scope": 28848, - "src": "1239:14:30", + "scope": 28827, + "src": "1009:14:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1578,10 +1250,10 @@ "typeString": "uint256" }, "typeName": { - "id": 28837, + "id": 28816, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1239:7:30", + "src": "1009:7:30", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1590,44 +1262,44 @@ "visibility": "internal" } ], - "src": "1238:16:30" + "src": "1008:16:30" }, "returnParameters": { - "id": 28842, + "id": 28821, "nodeType": "ParameterList", "parameters": [], - "src": "1274:0:30" + "src": "1044:0:30" }, - "scope": 29048, + "scope": 29030, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 28871, + "id": 28850, "nodeType": "FunctionDefinition", - "src": "1314:142:30", + "src": "1084:142:30", "nodes": [], "body": { - "id": 28870, + "id": 28849, "nodeType": "Block", - "src": "1353:103:30", + "src": "1123:103:30", "nodes": [], "statements": [ { "assignments": [ - 28854 + 28833 ], "declarations": [ { "constant": false, - "id": 28854, + "id": 28833, "mutability": "mutable", "name": "balance", - "nameLocation": "1371:7:30", + "nameLocation": "1141:7:30", "nodeType": "VariableDeclaration", - "scope": 28870, - "src": "1363:15:30", + "scope": 28849, + "src": "1133:15:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1635,10 +1307,10 @@ "typeString": "uint256" }, "typeName": { - "id": 28853, + "id": 28832, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1363:7:30", + "src": "1133:7:30", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1647,50 +1319,50 @@ "visibility": "internal" } ], - "id": 28860, + "id": 28839, "initialValue": { "expression": { "arguments": [ { - "id": 28857, + "id": 28836, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, - "src": "1389:4:30", + "src": "1159:4:30", "typeDescriptions": { - "typeIdentifier": "t_contract$_SendIt_$29048", - "typeString": "contract SendIt" + "typeIdentifier": "t_contract$_ShipIt_$29030", + "typeString": "contract ShipIt" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SendIt_$29048", - "typeString": "contract SendIt" + "typeIdentifier": "t_contract$_ShipIt_$29030", + "typeString": "contract ShipIt" } ], - "id": 28856, + "id": 28835, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1381:7:30", + "src": "1151:7:30", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 28855, + "id": 28834, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1381:7:30", + "src": "1151:7:30", "typeDescriptions": {} } }, - "id": 28858, + "id": 28837, "isConstant": false, "isLValue": false, "isPure": false, @@ -1699,40 +1371,40 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1381:13:30", + "src": "1151:13:30", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 28859, + "id": 28838, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1395:7:30", + "memberLocation": "1165:7:30", "memberName": "balance", "nodeType": "MemberAccess", - "src": "1381:21:30", + "src": "1151:21:30", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1363:39:30" + "src": "1133:39:30" }, { "expression": { "arguments": [ { - "id": 28867, + "id": 28846, "name": "balance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 28854, - "src": "1441:7:30", + "referencedDeclaration": 28833, + "src": "1211:7:30", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1750,26 +1422,26 @@ "arguments": [ { "expression": { - "id": 28863, + "id": 28842, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, - "src": "1420:3:30", + "src": "1190:3:30", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 28864, + "id": 28843, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1424:6:30", + "memberLocation": "1194:6:30", "memberName": "sender", "nodeType": "MemberAccess", - "src": "1420:10:30", + "src": "1190:10:30", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1783,27 +1455,27 @@ "typeString": "address" } ], - "id": 28862, + "id": 28841, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1412:8:30", + "src": "1182:8:30", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_payable_$", "typeString": "type(address payable)" }, "typeName": { - "id": 28861, + "id": 28840, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1412:8:30", + "src": "1182:8:30", "stateMutability": "payable", "typeDescriptions": {} } }, - "id": 28865, + "id": 28844, "isConstant": false, "isLValue": false, "isPure": false, @@ -1812,28 +1484,28 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1412:19:30", + "src": "1182:19:30", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "id": 28866, + "id": 28845, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1432:8:30", + "memberLocation": "1202:8:30", "memberName": "transfer", "nodeType": "MemberAccess", - "src": "1412:28:30", + "src": "1182:28:30", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, - "id": 28868, + "id": 28847, "isConstant": false, "isLValue": false, "isPure": false, @@ -1842,16 +1514,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1412:37:30", + "src": "1182:37:30", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 28869, + "id": 28848, "nodeType": "ExpressionStatement", - "src": "1412:37:30" + "src": "1182:37:30" } ] }, @@ -1860,95 +1532,95 @@ "kind": "function", "modifiers": [ { - "id": 28851, + "id": 28830, "kind": "modifierInvocation", "modifierName": { - "id": 28850, + "id": 28829, "name": "onlyOwner", "nameLocations": [ - "1343:9:30" + "1113:9:30" ], "nodeType": "IdentifierPath", "referencedDeclaration": 22891, - "src": "1343:9:30" + "src": "1113:9:30" }, "nodeType": "ModifierInvocation", - "src": "1343:9:30" + "src": "1113:9:30" } ], "name": "withdraw", - "nameLocation": "1323:8:30", + "nameLocation": "1093:8:30", "parameters": { - "id": 28849, + "id": 28828, "nodeType": "ParameterList", "parameters": [], - "src": "1331:2:30" + "src": "1101:2:30" }, "returnParameters": { - "id": 28852, + "id": 28831, "nodeType": "ParameterList", "parameters": [], - "src": "1353:0:30" + "src": "1123:0:30" }, - "scope": 29048, + "scope": 29030, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 28884, + "id": 28863, "nodeType": "FunctionDefinition", - "src": "1535:108:30", + "src": "1305:108:30", "nodes": [], "body": { - "id": 28883, + "id": 28862, "nodeType": "Block", - "src": "1587:56:30", + "src": "1357:56:30", "nodes": [], "statements": [ { "expression": { - "id": 28881, + "id": 28860, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 28876, + "id": 28855, "name": "addressVault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 28782, - "src": "1597:12:30", + "src": "1367:12:30", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 28879, + "id": 28858, "indexExpression": { "expression": { - "id": 28877, + "id": 28856, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, - "src": "1610:3:30", + "src": "1380:3:30", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 28878, + "id": 28857, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1614:6:30", + "memberLocation": "1384:6:30", "memberName": "sender", "nodeType": "MemberAccess", - "src": "1610:10:30", + "src": "1380:10:30", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1959,7 +1631,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1597:24:30", + "src": "1367:24:30", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1968,26 +1640,26 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 28880, + "id": 28859, "name": "vaultAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 28873, - "src": "1624:12:30", + "referencedDeclaration": 28852, + "src": "1394:12:30", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1597:39:30", + "src": "1367:39:30", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 28882, + "id": 28861, "nodeType": "ExpressionStatement", - "src": "1597:39:30" + "src": "1367:39:30" } ] }, @@ -1996,20 +1668,20 @@ "kind": "function", "modifiers": [], "name": "updateVault", - "nameLocation": "1544:11:30", + "nameLocation": "1314:11:30", "parameters": { - "id": 28874, + "id": 28853, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 28873, + "id": 28852, "mutability": "mutable", "name": "vaultAddress", - "nameLocation": "1564:12:30", + "nameLocation": "1334:12:30", "nodeType": "VariableDeclaration", - "scope": 28884, - "src": "1556:20:30", + "scope": 28863, + "src": "1326:20:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2017,10 +1689,10 @@ "typeString": "address" }, "typeName": { - "id": 28872, + "id": 28851, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1556:7:30", + "src": "1326:7:30", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2030,716 +1702,355 @@ "visibility": "internal" } ], - "src": "1555:22:30" + "src": "1325:22:30" }, - "returnParameters": { - "id": 28875, - "nodeType": "ParameterList", - "parameters": [], - "src": "1587:0:30" - }, - "scope": 29048, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 28990, - "nodeType": "FunctionDefinition", - "src": "1649:1074:30", - "nodes": [], - "body": { - "id": 28989, - "nodeType": "Block", - "src": "1801:922:30", - "nodes": [], - "statements": [ - { - "condition": { - "id": 28895, - "name": "isERC1155", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28892, - "src": "1815:9:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 28979, - "nodeType": "Block", - "src": "2245:392:30", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 28950, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 28942, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "2267:3:30", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 28943, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2271:6:30", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "2267:10:30", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ - { - "id": 28948, - "name": "tokenIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28888, - "src": "2313:10:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "arguments": [ - { - "id": 28945, - "name": "contractAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28886, - "src": "2288:15:30", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 28944, - "name": "ERC721", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 25318, - "src": "2281:6:30", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC721_$25318_$", - "typeString": "type(contract ERC721)" - } - }, - "id": 28946, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2281:23:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC721_$25318", - "typeString": "contract ERC721" - } - }, - "id": 28947, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2305:7:30", - "memberName": "ownerOf", - "nodeType": "MemberAccess", - "referencedDeclaration": 24519, - "src": "2281:31:30", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$", - "typeString": "function (uint256) view external returns (address)" - } - }, - "id": 28949, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2281:43:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "2267:57:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "53656e646572206973206e6f742074686520746f6b656e206f776e65722c2063616e6e6f742070726f636565642077697468207472616e736665722e", - "id": 28951, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2326:62:30", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_bb763f88f946c87a05ef8693394dbce4ea486c888648953a642721b2425f79bc", - "typeString": "literal_string \"Sender is not the token owner, cannot proceed with transfer.\"" - }, - "value": "Sender is not the token owner, cannot proceed with transfer." - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_bb763f88f946c87a05ef8693394dbce4ea486c888648953a642721b2425f79bc", - "typeString": "literal_string \"Sender is not the token owner, cannot proceed with transfer.\"" - } - ], - "id": 28941, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "2259:7:30", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 28952, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2259:130:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 28953, - "nodeType": "ExpressionStatement", - "src": "2259:130:30" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "expression": { - "id": 28959, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "2452:3:30", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 28960, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2456:6:30", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "2452:10:30", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "arguments": [ - { - "id": 28963, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "2472:4:30", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SendIt_$29048", - "typeString": "contract SendIt" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_SendIt_$29048", - "typeString": "contract SendIt" - } - ], - "id": 28962, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2464:7:30", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 28961, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2464:7:30", - "typeDescriptions": {} - } - }, - "id": 28964, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2464:13:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "arguments": [ - { - "id": 28956, - "name": "contractAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28886, - "src": "2418:15:30", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 28955, - "name": "ERC721", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 25318, - "src": "2411:6:30", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC721_$25318_$", - "typeString": "type(contract ERC721)" - } - }, - "id": 28957, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2411:23:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC721_$25318", - "typeString": "contract ERC721" - } - }, - "id": 28958, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2435:16:30", - "memberName": "isApprovedForAll", - "nodeType": "MemberAccess", - "referencedDeclaration": 24683, - "src": "2411:40:30", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_bool_$", - "typeString": "function (address,address) view external returns (bool)" - } - }, - "id": 28965, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2411:67:30", - "tryCall": false, + "returnParameters": { + "id": 28854, + "nodeType": "ParameterList", + "parameters": [], + "src": "1357:0:30" + }, + "scope": 29030, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 28935, + "nodeType": "FunctionDefinition", + "src": "1472:664:30", + "nodes": [], + "body": { + "id": 28934, + "nodeType": "Block", + "src": "1673:463:30", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 28883, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1732:3:30", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_magic_message", + "typeString": "msg" } }, - { - "hexValue": "436f6e7472616374206e6f7420617070726f76656420746f2073656e6420746f6b656e73206f6e2053656e64657220626568616c662e", - "id": 28966, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2480:56:30", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_74c615216bd7cedc5a8f0a4ad8a963eeb060b1d9879a472090fd7ba5247f7c69", - "typeString": "literal_string \"Contract not approved to send tokens on Sender behalf.\"" - }, - "value": "Contract not approved to send tokens on Sender behalf." - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_74c615216bd7cedc5a8f0a4ad8a963eeb060b1d9879a472090fd7ba5247f7c69", - "typeString": "literal_string \"Contract not approved to send tokens on Sender behalf.\"" - } - ], - "id": 28954, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "2403:7:30", + "id": 28884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1736:6:30", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "1732:10:30", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 28967, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2403:134:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 28968, - "nodeType": "ExpressionStatement", - "src": "2403:134:30" - }, - { - "expression": { - "arguments": [ - { - "expression": { - "id": 28973, - "name": "msg", + { + "arguments": [ + { + "id": 28887, + "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "2592:3:30", + "referencedDeclaration": -28, + "src": "1752:4:30", "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" + "typeIdentifier": "t_contract$_ShipIt_$29030", + "typeString": "contract ShipIt" } - }, - "id": 28974, + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ShipIt_$29030", + "typeString": "contract ShipIt" + } + ], + "id": 28886, "isConstant": false, "isLValue": false, - "isPure": false, + "isPure": true, "lValueRequested": false, - "memberLocation": "2596:6:30", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "2592:10:30", + "nodeType": "ElementaryTypeNameExpression", + "src": "1744:7:30", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 28885, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1744:7:30", + "typeDescriptions": {} } }, + "id": 28888, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1744:13:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ { - "id": 28975, - "name": "recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28890, - "src": "2604:9:30", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "typeIdentifier": "t_address", + "typeString": "address" }, { - "id": 28976, - "name": "tokenIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28888, - "src": "2615:10:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "typeIdentifier": "t_address", + "typeString": "address" } ], "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, + "arguments": [ { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "id": 28880, + "name": "contractAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28865, + "src": "1698:15:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } } ], "expression": { - "arguments": [ + "argumentTypes": [ { - "id": 28970, - "name": "contractAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28886, - "src": "2558:15:30", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "typeIdentifier": "t_address", + "typeString": "address" } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 28969, - "name": "ERC721", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 25318, - "src": "2551:6:30", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC721_$25318_$", - "typeString": "type(contract ERC721)" - } - }, - "id": 28971, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2551:23:30", - "tryCall": false, + "id": 28879, + "name": "ERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 25318, + "src": "1691:6:30", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC721_$25318", - "typeString": "contract ERC721" + "typeIdentifier": "t_type$_t_contract$_ERC721_$25318_$", + "typeString": "type(contract ERC721)" } }, - "id": 28972, + "id": 28881, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "typeConversion", "lValueRequested": false, - "memberLocation": "2575:16:30", - "memberName": "safeTransferFrom", - "nodeType": "MemberAccess", - "referencedDeclaration": 24729, - "src": "2551:40:30", + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1691:23:30", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256) external" + "typeIdentifier": "t_contract$_ERC721_$25318", + "typeString": "contract ERC721" } }, - "id": 28977, + "id": 28882, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2551:75:30", - "tryCall": false, + "memberLocation": "1715:16:30", + "memberName": "isApprovedForAll", + "nodeType": "MemberAccess", + "referencedDeclaration": 24683, + "src": "1691:40:30", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view external returns (bool)" } }, - "id": 28978, - "nodeType": "ExpressionStatement", - "src": "2551:75:30" + "id": 28889, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1691:67:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "436f6e7472616374206e6f7420617070726f76656420746f2073656e6420746f6b656e73206f6e2053656e64657220626568616c662e", + "id": 28890, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1760:56:30", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_74c615216bd7cedc5a8f0a4ad8a963eeb060b1d9879a472090fd7ba5247f7c69", + "typeString": "literal_string \"Contract not approved to send tokens on Sender behalf.\"" + }, + "value": "Contract not approved to send tokens on Sender behalf." } - ] + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_74c615216bd7cedc5a8f0a4ad8a963eeb060b1d9879a472090fd7ba5247f7c69", + "typeString": "literal_string \"Contract not approved to send tokens on Sender behalf.\"" + } + ], + "id": 28878, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1683:7:30", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 28891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1683:134:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } }, - "id": 28980, - "nodeType": "IfStatement", - "src": "1811:826:30", - "trueBody": { - "id": 28940, + "id": 28892, + "nodeType": "ExpressionStatement", + "src": "1683:134:30" + }, + { + "body": { + "id": 28932, "nodeType": "Block", - "src": "1826:413:30", + "src": "1872:258:30", "statements": [ { "expression": { "arguments": [ { "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 28906, + "id": 28914, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { + "expression": { + "id": 28904, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1894:3:30", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 28905, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1898:6:30", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "1894:10:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { "arguments": [ { - "expression": { - "id": 28901, - "name": "msg", + "baseExpression": { + "id": 28910, + "name": "tokenIndexes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "1883:3:30", + "referencedDeclaration": 28871, + "src": "1940:12:30", "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 28912, + "indexExpression": { + "id": 28911, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28894, + "src": "1953:1:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 28902, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1887:6:30", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "1883:10:30", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 28903, - "name": "tokenIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28888, - "src": "1895:10:30", + "nodeType": "IndexAccess", + "src": "1940:15:30", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2748,10 +2059,6 @@ ], "expression": { "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2760,12 +2067,12 @@ "expression": { "arguments": [ { - "id": 28898, + "id": 28907, "name": "contractAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 28886, - "src": "1856:15:30", + "referencedDeclaration": 28865, + "src": "1915:15:30", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2779,346 +2086,85 @@ "typeString": "address" } ], - "id": 28897, - "name": "ERC1155", + "id": 28906, + "name": "ERC721", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 24195, - "src": "1848:7:30", + "referencedDeclaration": 25318, + "src": "1908:6:30", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC1155_$24195_$", - "typeString": "type(contract ERC1155)" + "typeIdentifier": "t_type$_t_contract$_ERC721_$25318_$", + "typeString": "type(contract ERC721)" } }, - "id": 28899, + "id": 28908, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1848:24:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC1155_$24195", - "typeString": "contract ERC1155" - } - }, - "id": 28900, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1873:9:30", - "memberName": "balanceOf", - "nodeType": "MemberAccess", - "referencedDeclaration": 23088, - "src": "1848:34:30", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (address,uint256) view external returns (uint256)" - } - }, - "id": 28904, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1848:58:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 28905, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1909:1:30", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1848:62:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "53656e646572206973206e6f742074686520746f6b656e206f776e65722c2063616e6e6f742070726f636565642077697468207472616e736665722e", - "id": 28907, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1912:62:30", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_bb763f88f946c87a05ef8693394dbce4ea486c888648953a642721b2425f79bc", - "typeString": "literal_string \"Sender is not the token owner, cannot proceed with transfer.\"" - }, - "value": "Sender is not the token owner, cannot proceed with transfer." - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_bb763f88f946c87a05ef8693394dbce4ea486c888648953a642721b2425f79bc", - "typeString": "literal_string \"Sender is not the token owner, cannot proceed with transfer.\"" - } - ], - "id": 28896, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "1840:7:30", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 28908, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1840:135:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 28909, - "nodeType": "ExpressionStatement", - "src": "1840:135:30" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "expression": { - "id": 28915, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "2039:3:30", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 28916, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2043:6:30", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "2039:10:30", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "arguments": [ - { - "id": 28919, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "2059:4:30", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SendIt_$29048", - "typeString": "contract SendIt" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_SendIt_$29048", - "typeString": "contract SendIt" - } - ], - "id": 28918, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2051:7:30", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 28917, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2051:7:30", - "typeDescriptions": {} - } - }, - "id": 28920, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2051:13:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "arguments": [ - { - "id": 28912, - "name": "contractAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28886, - "src": "2005:15:30", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 28911, - "name": "ERC1155", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 24195, - "src": "1997:7:30", + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1908:23:30", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC1155_$24195_$", - "typeString": "type(contract ERC1155)" + "typeIdentifier": "t_contract$_ERC721_$25318", + "typeString": "contract ERC721" } }, - "id": 28913, + "id": 28909, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "typeConversion", "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1997:24:30", - "tryCall": false, + "memberLocation": "1932:7:30", + "memberName": "ownerOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 24519, + "src": "1908:31:30", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC1155_$24195", - "typeString": "contract ERC1155" + "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view external returns (address)" } }, - "id": 28914, + "id": 28913, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "memberLocation": "2022:16:30", - "memberName": "isApprovedForAll", - "nodeType": "MemberAccess", - "referencedDeclaration": 23187, - "src": "1997:41:30", + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1908:48:30", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_bool_$", - "typeString": "function (address,address) view external returns (bool)" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 28921, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1997:68:30", - "tryCall": false, + "src": "1894:62:30", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { - "hexValue": "436f6e7472616374206e6f7420617070726f76656420746f2073656e6420746f6b656e73206f6e2053656e64657220626568616c662e", - "id": 28922, + "hexValue": "53656e646572206973206e6f742074686520746f6b656e206f776e65722c2063616e6e6f742070726f636565642077697468207472616e736665722e", + "id": 28915, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2067:56:30", + "src": "1958:62:30", "typeDescriptions": { - "typeIdentifier": "t_stringliteral_74c615216bd7cedc5a8f0a4ad8a963eeb060b1d9879a472090fd7ba5247f7c69", - "typeString": "literal_string \"Contract not approved to send tokens on Sender behalf.\"" + "typeIdentifier": "t_stringliteral_bb763f88f946c87a05ef8693394dbce4ea486c888648953a642721b2425f79bc", + "typeString": "literal_string \"Sender is not the token owner, cannot proceed with transfer.\"" }, - "value": "Contract not approved to send tokens on Sender behalf." + "value": "Sender is not the token owner, cannot proceed with transfer." } ], "expression": { @@ -3128,11 +2174,11 @@ "typeString": "bool" }, { - "typeIdentifier": "t_stringliteral_74c615216bd7cedc5a8f0a4ad8a963eeb060b1d9879a472090fd7ba5247f7c69", - "typeString": "literal_string \"Contract not approved to send tokens on Sender behalf.\"" + "typeIdentifier": "t_stringliteral_bb763f88f946c87a05ef8693394dbce4ea486c888648953a642721b2425f79bc", + "typeString": "literal_string \"Sender is not the token owner, cannot proceed with transfer.\"" } ], - "id": 28910, + "id": 28903, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -3140,13 +2186,13 @@ -18 ], "referencedDeclaration": -18, - "src": "1989:7:30", + "src": "1886:7:30", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 28923, + "id": 28916, "isConstant": false, "isLValue": false, "isPure": false, @@ -3155,146 +2201,119 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1989:135:30", + "src": "1886:135:30", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 28924, + "id": 28917, "nodeType": "ExpressionStatement", - "src": "1989:135:30" + "src": "1886:135:30" }, { "expression": { "arguments": [ { "expression": { - "id": 28929, + "id": 28922, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, - "src": "2180:3:30", + "src": "2076:3:30", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 28930, + "id": 28923, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2184:6:30", + "memberLocation": "2080:6:30", "memberName": "sender", "nodeType": "MemberAccess", - "src": "2180:10:30", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 28931, - "name": "recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28890, - "src": "2192:9:30", + "src": "2076:10:30", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 28932, - "name": "tokenIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28888, - "src": "2203:10:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "hexValue": "31", - "id": 28933, + "baseExpression": { + "id": 28924, + "name": "recipients", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28868, + "src": "2088:10:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 28926, + "indexExpression": { + "id": 28925, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28894, + "src": "2099:1:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "number", + "isPure": false, "lValueRequested": false, - "nodeType": "Literal", - "src": "2215:1:30", + "nodeType": "IndexAccess", + "src": "2088:13:30", "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "arguments": [ - { - "hexValue": "", - "id": 28936, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2224:2:30", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "typeString": "literal_string \"\"" - }, - "value": "" + "baseExpression": { + "id": 28927, + "name": "tokenIndexes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28871, + "src": "2103:12:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "typeString": "literal_string \"\"" - } - ], - "id": 28935, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2218:5:30", + }, + "id": 28929, + "indexExpression": { + "id": 28928, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28894, + "src": "2116:1:30", "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", - "typeString": "type(bytes storage pointer)" - }, - "typeName": { - "id": 28934, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2218:5:30", - "typeDescriptions": {} + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 28937, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "typeConversion", + "isPure": false, "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2218:9:30", - "tryCall": false, + "nodeType": "IndexAccess", + "src": "2103:15:30", "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], @@ -3311,25 +2330,17 @@ { "typeIdentifier": "t_uint256", "typeString": "uint256" - }, - { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" } ], "expression": { "arguments": [ { - "id": 28926, + "id": 28919, "name": "contractAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 28886, - "src": "2146:15:30", + "referencedDeclaration": 28865, + "src": "2042:15:30", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3343,18 +2354,18 @@ "typeString": "address" } ], - "id": 28925, - "name": "ERC1155", + "id": 28918, + "name": "ERC721", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 24195, - "src": "2138:7:30", + "referencedDeclaration": 25318, + "src": "2035:6:30", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC1155_$24195_$", - "typeString": "type(contract ERC1155)" + "typeIdentifier": "t_type$_t_contract$_ERC721_$25318_$", + "typeString": "type(contract ERC721)" } }, - "id": 28927, + "id": 28920, "isConstant": false, "isLValue": false, "isPure": false, @@ -3363,29 +2374,29 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2138:24:30", + "src": "2035:23:30", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC1155_$24195", - "typeString": "contract ERC1155" + "typeIdentifier": "t_contract$_ERC721_$25318", + "typeString": "contract ERC721" } }, - "id": 28928, + "id": 28921, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2163:16:30", + "memberLocation": "2059:16:30", "memberName": "safeTransferFrom", "nodeType": "MemberAccess", - "referencedDeclaration": 23225, - "src": "2138:41:30", + "referencedDeclaration": 24729, + "src": "2035:40:30", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (address,address,uint256,uint256,bytes memory) external" + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256) external" } }, - "id": 28938, + "id": 28930, "isConstant": false, "isLValue": false, "isPure": false, @@ -3394,157 +2405,213 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2138:90:30", + "src": "2035:84:30", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 28939, + "id": 28931, "nodeType": "ExpressionStatement", - "src": "2138:90:30" + "src": "2035:84:30" } ] - } - }, - { - "eventCall": { - "arguments": [ - { - "id": 28982, - "name": "contractAddress", + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 28899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 28896, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28894, + "src": "1842:1:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 28897, + "name": "tokenIndexes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 28886, - "src": "2665:15:30", + "referencedDeclaration": 28871, + "src": "1846:12:30", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" } }, + "id": 28898, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1859:6:30", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "1846:19:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1842:23:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 28933, + "initializationExpression": { + "assignments": [ + 28894 + ], + "declarations": [ { - "id": 28983, - "name": "tokenIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28888, - "src": "2682:10:30", + "constant": false, + "id": 28894, + "mutability": "mutable", + "name": "i", + "nameLocation": "1839:1:30", + "nodeType": "VariableDeclaration", + "scope": 28933, + "src": "1831:9:30", + "stateVariable": false, + "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" - } - }, - { - "expression": { - "id": 28984, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "2694:3:30", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } }, - "id": 28985, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2698:6:30", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "2694:10:30", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 28986, - "name": "recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28890, - "src": "2706:9:30", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "typeName": { + "id": 28893, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1831:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" } ], + "id": 28895, + "nodeType": "VariableDeclarationStatement", + "src": "1831:9:30" + }, + "loopExpression": { "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { + "id": 28901, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "1867:3:30", + "subExpression": { + "id": 28900, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28894, + "src": "1867:1:30", + "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" } - ], - "id": 28981, - "name": "TokenTransfer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28795, - "src": "2651:13:30", + }, "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$__$", - "typeString": "function (address,uint256,address,address)" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 28987, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2651:65:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } + "id": 28902, + "nodeType": "ExpressionStatement", + "src": "1867:3:30" }, - "id": 28988, - "nodeType": "EmitStatement", - "src": "2646:70:30" + "nodeType": "ForStatement", + "src": "1827:303:30" } ] }, + "functionSelector": "86121663", "implemented": true, "kind": "function", - "modifiers": [], - "name": "contractTransfer", - "nameLocation": "1658:16:30", + "modifiers": [ + { + "arguments": [ + { + "id": 28874, + "name": "recipients", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28868, + "src": "1647:10:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + { + "id": 28875, + "name": "tokenIndexes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28871, + "src": "1659:12:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + } + ], + "id": 28876, + "kind": "modifierInvocation", + "modifierName": { + "id": 28873, + "name": "onlyIfPaid", + "nameLocations": [ + "1636:10:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 28815, + "src": "1636:10:30" + }, + "nodeType": "ModifierInvocation", + "src": "1636:36:30" + } + ], + "name": "erc721BulkTransfer", + "nameLocation": "1481:18:30", "parameters": { - "id": 28893, + "id": 28872, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 28886, + "id": 28865, "mutability": "mutable", "name": "contractAddress", - "nameLocation": "1692:15:30", + "nameLocation": "1517:15:30", "nodeType": "VariableDeclaration", - "scope": 28990, - "src": "1684:23:30", + "scope": 28935, + "src": "1509:23:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3552,10 +2619,10 @@ "typeString": "address" }, "typeName": { - "id": 28885, + "id": 28864, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1684:7:30", + "src": "1509:7:30", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3566,109 +2633,100 @@ }, { "constant": false, - "id": 28888, - "mutability": "mutable", - "name": "tokenIndex", - "nameLocation": "1725:10:30", - "nodeType": "VariableDeclaration", - "scope": 28990, - "src": "1717:18:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 28887, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1717:7:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 28890, + "id": 28868, "mutability": "mutable", - "name": "recipient", - "nameLocation": "1753:9:30", + "name": "recipients", + "nameLocation": "1561:10:30", "nodeType": "VariableDeclaration", - "scope": 28990, - "src": "1745:17:30", + "scope": 28935, + "src": "1542:29:30", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "calldata", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" }, "typeName": { - "id": 28889, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1745:7:30", - "stateMutability": "nonpayable", + "baseType": { + "id": 28866, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1542:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 28867, + "nodeType": "ArrayTypeName", + "src": "1542:9:30", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" } }, "visibility": "internal" }, { "constant": false, - "id": 28892, + "id": 28871, "mutability": "mutable", - "name": "isERC1155", - "nameLocation": "1777:9:30", + "name": "tokenIndexes", + "nameLocation": "1600:12:30", "nodeType": "VariableDeclaration", - "scope": 28990, - "src": "1772:14:30", + "scope": 28935, + "src": "1581:31:30", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "calldata", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" }, "typeName": { - "id": 28891, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1772:4:30", + "baseType": { + "id": 28869, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1581:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 28870, + "nodeType": "ArrayTypeName", + "src": "1581:9:30", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" } }, "visibility": "internal" } ], - "src": "1674:118:30" + "src": "1499:119:30" }, "returnParameters": { - "id": 28894, + "id": 28877, "nodeType": "ParameterList", "parameters": [], - "src": "1801:0:30" + "src": "1673:0:30" }, - "scope": 29048, - "stateMutability": "nonpayable", + "scope": 29030, + "stateMutability": "payable", "virtual": false, - "visibility": "private" + "visibility": "external" }, { - "id": 29047, + "id": 29029, "nodeType": "FunctionDefinition", - "src": "2729:529:30", + "src": "2229:811:30", "nodes": [], "body": { - "id": 29046, + "id": 29028, "nodeType": "Block", - "src": "2919:339:30", + "src": "2467:573:30", "nodes": [], "statements": [ { @@ -3679,33 +2737,33 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 29008, + "id": 28958, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 29004, - "name": "tokenIndexes", + "id": 28954, + "name": "amounts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 28995, - "src": "2937:12:30", + "referencedDeclaration": 28946, + "src": "2485:7:30", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", "typeString": "uint256[] calldata" } }, - "id": 29005, + "id": 28955, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2950:6:30", + "memberLocation": "2493:6:30", "memberName": "length", "nodeType": "MemberAccess", - "src": "2937:19:30", + "src": "2485:14:30", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3715,32 +2773,32 @@ "operator": "==", "rightExpression": { "expression": { - "id": 29006, + "id": 28956, "name": "recipients", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 28998, - "src": "2960:10:30", + "referencedDeclaration": 28940, + "src": "2503:10:30", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", "typeString": "address[] calldata" } }, - "id": 29007, + "id": 28957, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2971:6:30", + "memberLocation": "2514:6:30", "memberName": "length", "nodeType": "MemberAccess", - "src": "2960:17:30", + "src": "2503:17:30", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2937:40:30", + "src": "2485:35:30", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3748,14 +2806,14 @@ }, { "hexValue": "4172726179206c656e67746873206d757374206d617463682e", - "id": 29009, + "id": 28959, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2979:27:30", + "src": "2522:27:30", "typeDescriptions": { "typeIdentifier": "t_stringliteral_81b143823f29469d45d12678174c48d3931683b850446a67e3a08af68e3a1a63", "typeString": "literal_string \"Array lengths must match.\"" @@ -3774,7 +2832,7 @@ "typeString": "literal_string \"Array lengths must match.\"" } ], - "id": 29003, + "id": 28953, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -3782,13 +2840,13 @@ -18 ], "referencedDeclaration": -18, - "src": "2929:7:30", + "src": "2477:7:30", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 29010, + "id": 28960, "isConstant": false, "isLValue": false, "isPure": false, @@ -3797,137 +2855,213 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2929:78:30", + "src": "2477:73:30", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 29011, + "id": 28961, "nodeType": "ExpressionStatement", - "src": "2929:78:30" + "src": "2477:73:30" }, { "expression": { "arguments": [ { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 29019, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 29013, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "3025:3:30", + "arguments": [ + { + "expression": { + "id": 28967, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2610:3:30", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 28968, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2614:6:30", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2610:10:30", "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 29014, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3029:5:30", - "memberName": "value", - "nodeType": "MemberAccess", - "src": "3025:9:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + { + "arguments": [ + { + "id": 28971, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "2630:4:30", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ShipIt_$29030", + "typeString": "contract ShipIt" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ShipIt_$29030", + "typeString": "contract ShipIt" + } + ], + "id": 28970, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2622:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 28969, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2622:7:30", + "typeDescriptions": {} + } + }, + "id": 28972, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2622:13:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 29018, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "id": 28964, + "name": "contractAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28937, + "src": "2576:15:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], "expression": { - "id": 29015, - "name": "tokenIndexes", + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 28963, + "name": "ERC1155", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 28995, - "src": "3038:12:30", + "referencedDeclaration": 24195, + "src": "2568:7:30", "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" + "typeIdentifier": "t_type$_t_contract$_ERC1155_$24195_$", + "typeString": "type(contract ERC1155)" } }, - "id": 29016, + "id": 28965, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "typeConversion", "lValueRequested": false, - "memberLocation": "3051:6:30", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "3038:19:30", + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2568:24:30", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 29017, - "name": "usageFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28785, - "src": "3060:8:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_contract$_ERC1155_$24195", + "typeString": "contract ERC1155" } }, - "src": "3038:30:30", + "id": 28966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2593:16:30", + "memberName": "isApprovedForAll", + "nodeType": "MemberAccess", + "referencedDeclaration": 23187, + "src": "2568:41:30", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view external returns (bool)" } }, - "src": "3025:43:30", + "id": 28973, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2568:68:30", + "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { - "hexValue": "496e76616c6964207573616765206665652073656e742e", - "id": 29020, + "hexValue": "436f6e7472616374206e6f7420617070726f76656420746f2073656e6420746f6b656e73206f6e2053656e64657220626568616c662e", + "id": 28974, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3070:25:30", + "src": "2638:56:30", "typeDescriptions": { - "typeIdentifier": "t_stringliteral_0a6186ff05b8ad5792be99284ff75365af00226bdc07815a42f4c9f0db166d1a", - "typeString": "literal_string \"Invalid usage fee sent.\"" + "typeIdentifier": "t_stringliteral_74c615216bd7cedc5a8f0a4ad8a963eeb060b1d9879a472090fd7ba5247f7c69", + "typeString": "literal_string \"Contract not approved to send tokens on Sender behalf.\"" }, - "value": "Invalid usage fee sent." + "value": "Contract not approved to send tokens on Sender behalf." } ], "expression": { @@ -3937,11 +3071,11 @@ "typeString": "bool" }, { - "typeIdentifier": "t_stringliteral_0a6186ff05b8ad5792be99284ff75365af00226bdc07815a42f4c9f0db166d1a", - "typeString": "literal_string \"Invalid usage fee sent.\"" + "typeIdentifier": "t_stringliteral_74c615216bd7cedc5a8f0a4ad8a963eeb060b1d9879a472090fd7ba5247f7c69", + "typeString": "literal_string \"Contract not approved to send tokens on Sender behalf.\"" } ], - "id": 29012, + "id": 28962, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -3949,13 +3083,13 @@ -18 ], "referencedDeclaration": -18, - "src": "3017:7:30", + "src": "2560:7:30", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 29021, + "id": 28975, "isConstant": false, "isLValue": false, "isPure": false, @@ -3964,33 +3098,363 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3017:79:30", + "src": "2560:135:30", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 29022, + "id": 28976, "nodeType": "ExpressionStatement", - "src": "3017:79:30" + "src": "2560:135:30" }, { "body": { - "id": 29044, + "id": 29026, "nodeType": "Block", - "src": "3151:101:30", + "src": "2750:284:30", "statements": [ { "expression": { "arguments": [ { - "id": 29034, - "name": "contractAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28992, - "src": "3182:15:30", + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 29001, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "id": 28992, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2807:3:30", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 28993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2811:6:30", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2807:10:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "baseExpression": { + "id": 28994, + "name": "tokenIndexes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28943, + "src": "2819:12:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 28996, + "indexExpression": { + "id": 28995, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28978, + "src": "2832:1:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2819:15:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 28989, + "name": "contractAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28937, + "src": "2780:15:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 28988, + "name": "ERC1155", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 24195, + "src": "2772:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1155_$24195_$", + "typeString": "type(contract ERC1155)" + } + }, + "id": 28990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2772:24:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1155_$24195", + "typeString": "contract ERC1155" + } + }, + "id": 28991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2797:9:30", + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 23088, + "src": "2772:34:30", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (address,uint256) view external returns (uint256)" + } + }, + "id": 28997, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2772:63:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "baseExpression": { + "id": 28998, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28946, + "src": "2839:7:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 29000, + "indexExpression": { + "id": 28999, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28978, + "src": "2847:1:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2839:10:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2772:77:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4e6f7420656e6f7567682062616c616e6365206f776e6564206f662074686520676976656e20746f6b656e2049442e", + "id": 29002, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2851:49:30", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8a098253dba5eccabebee50a55ccf890bf28e041279b1478b4e4782130158066", + "typeString": "literal_string \"Not enough balance owned of the given token ID.\"" + }, + "value": "Not enough balance owned of the given token ID." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8a098253dba5eccabebee50a55ccf890bf28e041279b1478b4e4782130158066", + "typeString": "literal_string \"Not enough balance owned of the given token ID.\"" + } + ], + "id": 28987, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2764:7:30", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 29003, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2764:137:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 29004, + "nodeType": "ExpressionStatement", + "src": "2764:137:30" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 29009, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2957:3:30", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 29010, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2961:6:30", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2957:10:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "baseExpression": { + "id": 29011, + "name": "recipients", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28940, + "src": "2969:10:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + "id": 29013, + "indexExpression": { + "id": 29012, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28978, + "src": "2980:1:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2969:13:30", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3998,25 +3462,25 @@ }, { "baseExpression": { - "id": 29035, + "id": 29014, "name": "tokenIndexes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 28995, - "src": "3199:12:30", + "referencedDeclaration": 28943, + "src": "2984:12:30", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", "typeString": "uint256[] calldata" } }, - "id": 29037, + "id": 29016, "indexExpression": { - "id": 29036, + "id": 29015, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 29024, - "src": "3212:1:30", + "referencedDeclaration": 28978, + "src": "2997:1:30", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4027,7 +3491,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3199:15:30", + "src": "2984:15:30", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4035,25 +3499,25 @@ }, { "baseExpression": { - "id": 29038, - "name": "recipients", + "id": 29017, + "name": "amounts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 28998, - "src": "3216:10:30", + "referencedDeclaration": 28946, + "src": "3001:7:30", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[] calldata" + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" } }, - "id": 29040, + "id": 29019, "indexExpression": { - "id": 29039, + "id": 29018, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 29024, - "src": "3227:1:30", + "referencedDeclaration": 28978, + "src": "3009:1:30", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4064,27 +3528,80 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3216:13:30", + "src": "3001:10:30", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - "id": 29041, - "name": "isERC1155", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 29000, - "src": "3231:9:30", + "arguments": [ + { + "hexValue": "", + "id": 29022, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3019:2:30", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 29021, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3013:5:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 29020, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3013:5:30", + "typeDescriptions": {} + } + }, + "id": 29023, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3013:9:30", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, { "typeIdentifier": "t_address", "typeString": "address" @@ -4094,26 +3611,79 @@ "typeString": "uint256" }, { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } ], - "id": 29033, - "name": "contractTransfer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28990, - "src": "3165:16:30", + "expression": { + "arguments": [ + { + "id": 29006, + "name": "contractAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28937, + "src": "2923:15:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 29005, + "name": "ERC1155", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 24195, + "src": "2915:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1155_$24195_$", + "typeString": "type(contract ERC1155)" + } + }, + "id": 29007, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2915:24:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1155_$24195", + "typeString": "contract ERC1155" + } + }, + "id": 29008, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2940:16:30", + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 23225, + "src": "2915:41:30", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$", - "typeString": "function (address,uint256,address,bool)" + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,uint256,uint256,bytes memory) external" } }, - "id": 29042, + "id": 29024, "isConstant": false, "isLValue": false, "isPure": false, @@ -4122,16 +3692,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3165:76:30", + "src": "2915:108:30", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 29043, + "id": 29025, "nodeType": "ExpressionStatement", - "src": "3165:76:30" + "src": "2915:108:30" } ] }, @@ -4140,18 +3710,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 29029, + "id": 28983, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 29026, + "id": 28980, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 29024, - "src": "3121:1:30", + "referencedDeclaration": 28978, + "src": "2720:1:30", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4161,52 +3731,52 @@ "operator": "<", "rightExpression": { "expression": { - "id": 29027, + "id": 28981, "name": "tokenIndexes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 28995, - "src": "3125:12:30", + "referencedDeclaration": 28943, + "src": "2724:12:30", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", "typeString": "uint256[] calldata" } }, - "id": 29028, + "id": 28982, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3138:6:30", + "memberLocation": "2737:6:30", "memberName": "length", "nodeType": "MemberAccess", - "src": "3125:19:30", + "src": "2724:19:30", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3121:23:30", + "src": "2720:23:30", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 29045, + "id": 29027, "initializationExpression": { "assignments": [ - 29024 + 28978 ], "declarations": [ { "constant": false, - "id": 29024, + "id": 28978, "mutability": "mutable", "name": "i", - "nameLocation": "3118:1:30", + "nameLocation": "2717:1:30", "nodeType": "VariableDeclaration", - "scope": 29045, - "src": "3110:9:30", + "scope": 29027, + "src": "2709:9:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4214,10 +3784,10 @@ "typeString": "uint256" }, "typeName": { - "id": 29023, + "id": 28977, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3110:7:30", + "src": "2709:7:30", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4226,13 +3796,13 @@ "visibility": "internal" } ], - "id": 29025, + "id": 28979, "nodeType": "VariableDeclarationStatement", - "src": "3110:9:30" + "src": "2709:9:30" }, "loopExpression": { "expression": { - "id": 29031, + "id": 28985, "isConstant": false, "isLValue": false, "isPure": false, @@ -4240,14 +3810,14 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3146:3:30", + "src": "2745:3:30", "subExpression": { - "id": 29030, + "id": 28984, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 29024, - "src": "3146:1:30", + "referencedDeclaration": 28978, + "src": "2745:1:30", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4258,34 +3828,77 @@ "typeString": "uint256" } }, - "id": 29032, + "id": 28986, "nodeType": "ExpressionStatement", - "src": "3146:3:30" + "src": "2745:3:30" }, "nodeType": "ForStatement", - "src": "3106:146:30" + "src": "2705:329:30" } ] }, - "functionSelector": "c3c77c63", + "functionSelector": "23152273", "implemented": true, "kind": "function", - "modifiers": [], - "name": "contractBulkTransfer", - "nameLocation": "2738:20:30", + "modifiers": [ + { + "arguments": [ + { + "id": 28949, + "name": "recipients", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28940, + "src": "2441:10:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[] calldata" + } + }, + { + "id": 28950, + "name": "tokenIndexes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28943, + "src": "2453:12:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + } + ], + "id": 28951, + "kind": "modifierInvocation", + "modifierName": { + "id": 28948, + "name": "onlyIfPaid", + "nameLocations": [ + "2430:10:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 28815, + "src": "2430:10:30" + }, + "nodeType": "ModifierInvocation", + "src": "2430:36:30" + } + ], + "name": "erc1155BulkTransfer", + "nameLocation": "2238:19:30", "parameters": { - "id": 29001, + "id": 28947, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 28992, + "id": 28937, "mutability": "mutable", "name": "contractAddress", - "nameLocation": "2776:15:30", + "nameLocation": "2275:15:30", "nodeType": "VariableDeclaration", - "scope": 29047, - "src": "2768:23:30", + "scope": 29029, + "src": "2267:23:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4293,10 +3906,10 @@ "typeString": "address" }, "typeName": { - "id": 28991, + "id": 28936, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2768:7:30", + "src": "2267:7:30", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4307,114 +3920,123 @@ }, { "constant": false, - "id": 28995, + "id": 28940, "mutability": "mutable", - "name": "tokenIndexes", - "nameLocation": "2820:12:30", + "name": "recipients", + "nameLocation": "2319:10:30", "nodeType": "VariableDeclaration", - "scope": 29047, - "src": "2801:31:30", + "scope": 29029, + "src": "2300:29:30", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[]" + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" }, "typeName": { "baseType": { - "id": 28993, - "name": "uint256", + "id": 28938, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "2801:7:30", + "src": "2300:7:30", + "stateMutability": "nonpayable", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 28994, + "id": 28939, "nodeType": "ArrayTypeName", - "src": "2801:9:30", + "src": "2300:9:30", "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" } }, "visibility": "internal" }, { "constant": false, - "id": 28998, + "id": 28943, "mutability": "mutable", - "name": "recipients", - "nameLocation": "2861:10:30", + "name": "tokenIndexes", + "nameLocation": "2358:12:30", "nodeType": "VariableDeclaration", - "scope": 29047, - "src": "2842:29:30", + "scope": 29029, + "src": "2339:31:30", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[]" + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" }, "typeName": { "baseType": { - "id": 28996, - "name": "address", + "id": 28941, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2842:7:30", - "stateMutability": "nonpayable", + "src": "2339:7:30", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 28997, + "id": 28942, "nodeType": "ArrayTypeName", - "src": "2842:9:30", + "src": "2339:9:30", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" } }, "visibility": "internal" }, { "constant": false, - "id": 29000, + "id": 28946, "mutability": "mutable", - "name": "isERC1155", - "nameLocation": "2886:9:30", + "name": "amounts", + "nameLocation": "2399:7:30", "nodeType": "VariableDeclaration", - "scope": 29047, - "src": "2881:14:30", + "scope": 29029, + "src": "2380:26:30", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "calldata", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" }, "typeName": { - "id": 28999, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "2881:4:30", + "baseType": { + "id": 28944, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2380:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 28945, + "nodeType": "ArrayTypeName", + "src": "2380:9:30", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" } }, "visibility": "internal" } ], - "src": "2758:143:30" + "src": "2257:155:30" }, "returnParameters": { - "id": 29002, + "id": 28952, "nodeType": "ParameterList", "parameters": [], - "src": "2919:0:30" + "src": "2467:0:30" }, - "scope": 29048, + "scope": 29030, "stateMutability": "payable", "virtual": false, "visibility": "external" @@ -4438,18 +4060,18 @@ "src": "297:7:30" } ], - "canonicalName": "SendIt", + "canonicalName": "ShipIt", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "linearizedBaseContracts": [ - 29048, + 29030, 22972, 25831 ], - "name": "SendIt", + "name": "ShipIt", "nameLocation": "287:6:30", - "scope": 29049, + "scope": 29031, "usedErrors": [] } ],