diff --git a/files/besu/smart_contracts/scripts/keys.js b/files/besu/smart_contracts/scripts/keys.js index b6d6e4ea..46616366 100644 --- a/files/besu/smart_contracts/scripts/keys.js +++ b/files/besu/smart_contracts/scripts/keys.js @@ -58,17 +58,17 @@ module.exports = { }, }, accounts: { - "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73": { - privateKey: - "0x8f2a55949038a9610f50fb23b5883af3b4ecb3c3bb792cbcefbd1542c692be63", + a: { + address: "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + privateKey: "0x8f2a55949038a9610f50fb23b5883af3b4ecb3c3bb792cbcefbd1542c692be63", }, - "0x627306090abaB3A6e1400e9345bC60c78a8BEf57": { - privateKey: - "0xc87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3", + b: { + address: "0x627306090abaB3A6e1400e9345bC60c78a8BEf57", + privateKey: "0xc87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3", }, - "0xf17f52151EbEF6C7334FAD080c5704D77216b732": { - privateKey: - "0xae6ae8e5ccbfb04590405997ee2d52d2b330726137b875053c36d94e974d162f", + c: { + address: "0xf17f52151EbEF6C7334FAD080c5704D77216b732", + privateKey: "0xae6ae8e5ccbfb04590405997ee2d52d2b330726137b875053c36d94e974d162f", }, }, }; diff --git a/files/besu/smart_contracts/scripts/public/hre_1559_public_tx.js b/files/besu/smart_contracts/scripts/public/hre_1559_public_tx.js new file mode 100644 index 00000000..b45609f3 --- /dev/null +++ b/files/besu/smart_contracts/scripts/public/hre_1559_public_tx.js @@ -0,0 +1,88 @@ +const path = require('path'); +const fs = require('fs-extra'); +var ethers = require('ethers'); + +// RPCNODE details +const { tessera, besu } = require("../keys.js"); +const host = besu.rpcnode.url; +const accountPrivateKey = besu.rpcnode.accountPrivateKey; + +// abi and bytecode generated from simplestorage.sol: +// > solcjs --bin --abi simplestorage.sol +const contractJsonPath = path.resolve(__dirname, '../../','contracts','Counter.json'); +const contractJson = JSON.parse(fs.readFileSync(contractJsonPath)); +const contractAbi = contractJson.abi; +const contractBytecode = contractJson.evm.bytecode.object + +async function getValueAtAddress(provider, deployedContractAbi, deployedContractAddress){ + const contract = new ethers.Contract(deployedContractAddress, deployedContractAbi, provider); + const res = await contract.getCount(); + console.log("Obtained value at deployed contract is: "+ res); + return res +} + +// You need to use the accountAddress details provided to Quorum to send/interact with contracts +async function incrementValueAtAddress(provider, wallet, deployedContractAbi, deployedContractAddress){ + const contract = new ethers.Contract(deployedContractAddress, deployedContractAbi, provider); + const contractWithSigner = contract.connect(wallet); + const tx = await contractWithSigner.incrementCounter(); + // verify the updated value + await tx.wait(); + // const res = await contract.get(); + // console.log("Obtained value at deployed contract is: "+ res); + return tx; +} + +async function decrementValueAtAddress(provider, wallet, deployedContractAbi, deployedContractAddress){ + const contract = new ethers.Contract(deployedContractAddress, deployedContractAbi, provider); + const contractWithSigner = contract.connect(wallet); + const tx = await contractWithSigner.decrementCounter(); + // verify the updated value + await tx.wait(); + // const res = await contract.get(); + // console.log("Obtained value at deployed contract is: "+ res); + return tx; +} + +async function createContract(provider, wallet, contractAbi, contractByteCode) { + const feeData = await provider.getFeeData(); + const factory = new ethers.ContractFactory(contractAbi, contractByteCode, wallet); + const contract = await factory.deploy({ + chainId: 1337, + type: 2, + maxPriorityFeePerGas: feeData["maxPriorityFeePerGas"], + maxFeePerGas: feeData["maxFeePerGas"], + }); + // The contract is NOT deployed yet; we must wait until it is mined + const deployed = await contract.waitForDeployment(); + //The contract is deployed now + return contract +}; + +async function main(){ + const provider = new ethers.JsonRpcProvider(host); + const wallet = new ethers.Wallet(accountPrivateKey, provider); + + createContract(provider, wallet, contractAbi, contractBytecode) + .then(async function(contract){ + console.log(contract); + contractAddress = await contract.getAddress(); + console.log("Use the smart contracts 'get' function to read the contract's initialized value .. " ) + await getValueAtAddress(provider, contractAbi, contractAddress); + console.log("Use the smart contracts 'increment' function to update that value .. " ); + await incrementValueAtAddress(provider, wallet, contractAbi, contractAddress ); + console.log("Verify the updated value that was set .. " ) + await getValueAtAddress(provider, contractAbi, contractAddress); + console.log("Use the smart contracts 'decrement' function to update that value .. " ); + await decrementValueAtAddress(provider, wallet, contractAbi, contractAddress ); + console.log("Verify the updated value that was set .. " ) + await getValueAtAddress(provider, contractAbi, contractAddress); + }) + .catch(console.error); +} + +if (require.main === module) { + main(); +} + +module.exports = exports = main diff --git a/files/besu/smart_contracts/scripts/public/hre_eth_tx.js b/files/besu/smart_contracts/scripts/public/hre_eth_tx.js new file mode 100644 index 00000000..ac3b856e --- /dev/null +++ b/files/besu/smart_contracts/scripts/public/hre_eth_tx.js @@ -0,0 +1,55 @@ +const path = require('path'); +const fs = require('fs-extra'); +var ethers = require('ethers'); + +// member1 details +const { accounts, besu } = require("../keys.js"); +const host = besu.rpcnode.url; +// one of the seeded accounts +const accountAPrivateKey = accounts.a.privateKey; + +async function main(){ + const provider = new ethers.JsonRpcProvider(host); + + const walletA = new ethers.Wallet(accountAPrivateKey, provider); + var accountABalance = await provider.getBalance(walletA.address); + console.log("Account A has balance of: " + accountABalance); + + // create a new account to use to transfer eth to + const walletB = ethers.Wallet.createRandom() + var accountBBalance = await provider.getBalance(walletB.address); + console.log("Account B has balance of: " + accountBBalance); + + const nonce = await provider.getTransactionCount(walletA.address); + const feeData = await provider.getFeeData(); + const gasLimit = await provider.estimateGas({from: walletA.address, value: ethers.parseEther("0.01")}); + + // send some eth from A to B + const txn = { + nonce: nonce, + from: walletA.address, + to: walletB.address, + value: 0x10, //amount of eth to transfer + gasPrice: feeData.gasPrice, //ETH per unit of gas + gasLimit: gasLimit //max number of gas units the tx is allowed to use + }; + + console.log("create and sign the txn") + const signedTx = await walletA.sendTransaction(txn); + await signedTx.wait(); + console.log("tx transactionHash: " + signedTx.hash); + + //After the transaction there should be some ETH transferred + accountABalance = await provider.getBalance(walletA.address); + console.log("Account A has balance of: " + accountABalance); + accountBBalance = await provider.getBalance(walletB.address); + console.log("Account B has balance of: " + accountBBalance); + +} + +if (require.main === module) { + main(); +} + +module.exports = exports = main + diff --git a/files/besu/smart_contracts/scripts/public/public_tx_ethers.js b/files/besu/smart_contracts/scripts/public/hre_public_tx.js similarity index 86% rename from files/besu/smart_contracts/scripts/public/public_tx_ethers.js rename to files/besu/smart_contracts/scripts/public/hre_public_tx.js index ef3f6f65..0fd8a1db 100644 --- a/files/besu/smart_contracts/scripts/public/public_tx_ethers.js +++ b/files/besu/smart_contracts/scripts/public/hre_public_tx.js @@ -37,24 +37,25 @@ async function createContract(provider, wallet, contractAbi, contractByteCode, c const factory = new ethers.ContractFactory(contractAbi, contractByteCode, wallet); const contract = await factory.deploy(contractInit); // The contract is NOT deployed yet; we must wait until it is mined - const deployed = await contract.deployTransaction.wait() + const deployed = await contract.waitForDeployment(); //The contract is deployed now return contract }; async function main(){ - const provider = new ethers.providers.JsonRpcProvider(host); + const provider = new ethers.JsonRpcProvider(host); const wallet = new ethers.Wallet(accountPrivateKey, provider); createContract(provider, wallet, contractAbi, contractBytecode, 47) .then(async function(contract){ - console.log("Contract deployed at address: " + contract.address); + contractAddress = await contract.getAddress(); + console.log("Contract deployed at address: " + contractAddress); console.log("Use the smart contracts 'get' function to read the contract's constructor initialized value .. " ) - await getValueAtAddress(provider, contractAbi, contract.address); + await getValueAtAddress(provider, contractAbi, contractAddress); console.log("Use the smart contracts 'set' function to update that value to 123 .. " ); - await setValueAtAddress(provider, wallet, contractAbi, contract.address, 123 ); + await setValueAtAddress(provider, wallet, contractAbi, contractAddress, 123 ); console.log("Verify the updated value that was set .. " ) - await getValueAtAddress(provider, contractAbi, contract.address); + await getValueAtAddress(provider, contractAbi, contractAddress); // await getAllPastEvents(host, contractAbi, tx.contractAddress); }) .catch(console.error); diff --git a/files/besu/smart_contracts/scripts/public/public_tx.js b/files/besu/smart_contracts/scripts/public/public_tx.js deleted file mode 100644 index 66f15295..00000000 --- a/files/besu/smart_contracts/scripts/public/public_tx.js +++ /dev/null @@ -1,114 +0,0 @@ -const path = require('path'); -const fs = require('fs-extra'); -const Web3 = require('web3'); - -// rpcnode details -const { tessera, besu } = require("../keys.js"); -const host = besu.rpcnode.url; -const accountAddress = besu.rpcnode.accountAddress; - -// abi and bytecode generated from simplestorage.sol: -// > solcjs --bin --abi simplestorage.sol -const contractJsonPath = path.resolve(__dirname, '../../','contracts','SimpleStorage.json'); -const contractJson = JSON.parse(fs.readFileSync(contractJsonPath)); -const contractAbi = contractJson.abi; -const contractBytecode = contractJson.evm.bytecode.object -// initialize the default constructor with a value `47 = 0x2F`; this value is appended to the bytecode -const contractConstructorInit = "000000000000000000000000000000000000000000000000000000000000002F"; -const contractConstructorUpdate = "000000000000000000000000000000000000000000000000000000000000001F"; - - -async function getValueAtAddress(host, deployedContractAbi, deployedContractAddress){ - const web3 = new Web3(host); - const contractInstance = new web3.eth.Contract(deployedContractAbi, deployedContractAddress); - const res = await contractInstance.methods.get().call(); - console.log("Obtained value at deployed contract is: "+ res); - return res -} - -async function getAllPastEvents(host, deployedContractAbi, deployedContractAddress){ - const web3 = new Web3(host); - const contractInstance = new web3.eth.Contract(deployedContractAbi, deployedContractAddress); - const res = await contractInstance.getPastEvents("allEvents", { - fromBlock: 0, - toBlock: 'latest' - }) - const amounts = res.map(x => { - return x.returnValues._amount - }); - console.log("Obtained all value events from deployed contract : [" + amounts + "]"); - return res -} - -// You need to use the accountAddress details provided to Quorum to send/interact with contracts -async function setValueAtAddress(host, accountAddress, value, deployedContractAbi, deployedContractAddress){ - const web3 = new Web3(host); - const account = web3.eth.accounts.create(); - // console.log(account); - const contract = new web3.eth.Contract(deployedContractAbi); - // eslint-disable-next-line no-underscore-dangle - const functionAbi = contract._jsonInterface.find(e => { - return e.name === "set"; - }); - const functionArgs = web3.eth.abi - .encodeParameters(functionAbi.inputs, [value]) - .slice(2); - const functionParams = { - to: deployedContractAddress, - data: functionAbi.signature + functionArgs, - gas: "0x2CA51" //max number of gas units the tx is allowed to use - }; - const signedTx = await web3.eth.accounts.signTransaction(functionParams, account.privateKey); - console.log("sending the txn") - const txReceipt = await web3.eth.sendSignedTransaction(signedTx.rawTransaction); - console.log("tx transactionHash: " + txReceipt.transactionHash); - console.log("tx contractAddress: " + txReceipt.contractAddress); - return txReceipt -} - -async function createContract(host) { - const web3 = new Web3(host); - // make an account and sign the transaction with the account's private key; you can alternatively use an exsiting account - const account = web3.eth.accounts.create(); - console.log(account); - - const txn = { - chainId: 1337, - nonce: await web3.eth.getTransactionCount(account.address), // 0x00 because this is a new account - from: account.address, - to: null, //public tx - value: "0x00", - data: '0x'+contractBytecode+contractConstructorInit, - gasPrice: "0x0", //ETH per unit of gas - gas: "0x2CA51" //max number of gas units the tx is allowed to use - }; - - console.log("create and sign the txn") - const signedTx = await web3.eth.accounts.signTransaction(txn, account.privateKey); - console.log("sending the txn") - const txReceipt = await web3.eth.sendSignedTransaction(signedTx.rawTransaction); - console.log("tx transactionHash: " + txReceipt.transactionHash); - console.log("tx contractAddress: " + txReceipt.contractAddress); - return txReceipt; -}; - -async function main(){ - createContract(host) - .then(async function(tx){ - console.log("Contract deployed at address: " + tx.contractAddress); - console.log("Use the smart contracts 'get' function to read the contract's constructor initialized value .. " ) - await getValueAtAddress(host, contractAbi, tx.contractAddress); - console.log("Use the smart contracts 'set' function to update that value to 123 .. " ); - await setValueAtAddress(host, accountAddress, 123, contractAbi, tx.contractAddress ); - console.log("Verify the updated value that was set .. " ) - await getValueAtAddress(host, contractAbi, tx.contractAddress); - await getAllPastEvents(host, contractAbi, tx.contractAddress); - }) - .catch(console.error); -} - -if (require.main === module) { - main(); -} - -module.exports = exports = main \ No newline at end of file diff --git a/files/besu/smart_contracts/scripts/public/eth_tx.js b/files/besu/smart_contracts/scripts/public/web3_eth_tx.js similarity index 95% rename from files/besu/smart_contracts/scripts/public/eth_tx.js rename to files/besu/smart_contracts/scripts/public/web3_eth_tx.js index a1fd40ba..e94115b7 100644 --- a/files/besu/smart_contracts/scripts/public/eth_tx.js +++ b/files/besu/smart_contracts/scripts/public/web3_eth_tx.js @@ -9,7 +9,8 @@ const host = besu.rpcnode.url; async function main(){ const web3 = new Web3(host); //pre seeded account - test account only - const privateKeyA = accounts['0x627306090abaB3A6e1400e9345bC60c78a8BEf57'].privateKey; + + const privateKeyA = accounts.a.privateKey; const accountA = web3.eth.accounts.privateKeyToAccount(privateKeyA); var accountABalance = web3.utils.fromWei(await web3.eth.getBalance(accountA.address)); console.log("Account A has balance of: " + accountABalance); diff --git a/files/common/smart_contracts/contracts/Counter.json b/files/common/smart_contracts/contracts/Counter.json new file mode 100644 index 00000000..b62f58e3 --- /dev/null +++ b/files/common/smart_contracts/contracts/Counter.json @@ -0,0 +1,3404 @@ +{ + "abi": [ + { + "inputs": [], + "name": "decrementCounter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getCount", + "outputs": [ + { + "internalType": "int256", + "name": "", + "type": "int256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "incrementCounter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "assembly": " /* \"Counter.sol\":57:318 contract Counter {... */\n mstore(0x40, 0x80)\n /* \"Counter.sol\":100:101 0 */\n 0x00\n /* \"Counter.sol\":80:101 int private count = 0 */\n dup1\n sstore\n /* \"Counter.sol\":57:318 contract Counter {... */\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\ntag_1:\n pop\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"Counter.sol\":57:318 contract Counter {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\n tag_1:\n pop\n jumpi(tag_2, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0x5b34b966\n eq\n tag_3\n jumpi\n dup1\n 0xa87d942c\n eq\n tag_4\n jumpi\n dup1\n 0xf5c5ad83\n eq\n tag_5\n jumpi\n tag_2:\n 0x00\n dup1\n revert\n /* \"Counter.sol\":107:169 function incrementCounter() public {... */\n tag_3:\n tag_6\n tag_7\n jump\t// in\n tag_6:\n stop\n /* \"Counter.sol\":241:316 function getCount() public view returns (int) {... */\n tag_4:\n tag_8\n tag_9\n jump\t// in\n tag_8:\n mload(0x40)\n tag_10\n swap2\n swap1\n tag_11\n jump\t// in\n tag_10:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"Counter.sol\":174:236 function decrementCounter() public {... */\n tag_5:\n tag_12\n tag_13\n jump\t// in\n tag_12:\n stop\n /* \"Counter.sol\":107:169 function incrementCounter() public {... */\n tag_7:\n /* \"Counter.sol\":161:162 1 */\n 0x01\n /* \"Counter.sol\":152:157 count */\n 0x00\n dup1\n /* \"Counter.sol\":152:162 count += 1 */\n dup3\n dup3\n sload\n tag_15\n swap2\n swap1\n tag_16\n jump\t// in\n tag_15:\n swap3\n pop\n pop\n dup2\n swap1\n sstore\n pop\n /* \"Counter.sol\":107:169 function incrementCounter() public {... */\n jump\t// out\n /* \"Counter.sol\":241:316 function getCount() public view returns (int) {... */\n tag_9:\n /* \"Counter.sol\":282:285 int */\n 0x00\n /* \"Counter.sol\":304:309 count */\n dup1\n sload\n /* \"Counter.sol\":297:309 return count */\n swap1\n pop\n /* \"Counter.sol\":241:316 function getCount() public view returns (int) {... */\n swap1\n jump\t// out\n /* \"Counter.sol\":174:236 function decrementCounter() public {... */\n tag_13:\n /* \"Counter.sol\":228:229 1 */\n 0x01\n /* \"Counter.sol\":219:224 count */\n 0x00\n dup1\n /* \"Counter.sol\":219:229 count -= 1 */\n dup3\n dup3\n sload\n tag_19\n swap2\n swap1\n tag_20\n jump\t// in\n tag_19:\n swap3\n pop\n pop\n dup2\n swap1\n sstore\n pop\n /* \"Counter.sol\":174:236 function decrementCounter() public {... */\n jump\t// out\n /* \"#utility.yul\":7:83 */\n tag_21:\n /* \"#utility.yul\":43:50 */\n 0x00\n /* \"#utility.yul\":72:77 */\n dup2\n /* \"#utility.yul\":61:77 */\n swap1\n pop\n /* \"#utility.yul\":7:83 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":89:204 */\n tag_22:\n /* \"#utility.yul\":174:197 */\n tag_27\n /* \"#utility.yul\":191:196 */\n dup2\n /* \"#utility.yul\":174:197 */\n tag_21\n jump\t// in\n tag_27:\n /* \"#utility.yul\":169:172 */\n dup3\n /* \"#utility.yul\":162:198 */\n mstore\n /* \"#utility.yul\":89:204 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":210:428 */\n tag_11:\n /* \"#utility.yul\":301:305 */\n 0x00\n /* \"#utility.yul\":339:341 */\n 0x20\n /* \"#utility.yul\":328:337 */\n dup3\n /* \"#utility.yul\":324:342 */\n add\n /* \"#utility.yul\":316:342 */\n swap1\n pop\n /* \"#utility.yul\":352:421 */\n tag_29\n /* \"#utility.yul\":418:419 */\n 0x00\n /* \"#utility.yul\":407:416 */\n dup4\n /* \"#utility.yul\":403:420 */\n add\n /* \"#utility.yul\":394:400 */\n dup5\n /* \"#utility.yul\":352:421 */\n tag_22\n jump\t// in\n tag_29:\n /* \"#utility.yul\":210:428 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":434:614 */\n tag_23:\n /* \"#utility.yul\":482:559 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":479:480 */\n 0x00\n /* \"#utility.yul\":472:560 */\n mstore\n /* \"#utility.yul\":579:583 */\n 0x11\n /* \"#utility.yul\":576:577 */\n 0x04\n /* \"#utility.yul\":569:584 */\n mstore\n /* \"#utility.yul\":603:607 */\n 0x24\n /* \"#utility.yul\":600:601 */\n 0x00\n /* \"#utility.yul\":593:608 */\n revert\n /* \"#utility.yul\":620:1145 */\n tag_16:\n /* \"#utility.yul\":659:662 */\n 0x00\n /* \"#utility.yul\":678:697 */\n tag_32\n /* \"#utility.yul\":695:696 */\n dup3\n /* \"#utility.yul\":678:697 */\n tag_21\n jump\t// in\n tag_32:\n /* \"#utility.yul\":673:697 */\n swap2\n pop\n /* \"#utility.yul\":711:730 */\n tag_33\n /* \"#utility.yul\":728:729 */\n dup4\n /* \"#utility.yul\":711:730 */\n tag_21\n jump\t// in\n tag_33:\n /* \"#utility.yul\":706:730 */\n swap3\n pop\n /* \"#utility.yul\":899:900 */\n dup2\n /* \"#utility.yul\":831:897 */\n 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":827:901 */\n sub\n /* \"#utility.yul\":824:825 */\n dup4\n /* \"#utility.yul\":820:902 */\n sgt\n /* \"#utility.yul\":815:816 */\n 0x00\n /* \"#utility.yul\":812:813 */\n dup4\n /* \"#utility.yul\":808:817 */\n slt\n /* \"#utility.yul\":801:818 */\n iszero\n /* \"#utility.yul\":797:903 */\n and\n /* \"#utility.yul\":794:926 */\n iszero\n tag_34\n jumpi\n /* \"#utility.yul\":906:924 */\n tag_35\n tag_23\n jump\t// in\n tag_35:\n /* \"#utility.yul\":794:926 */\n tag_34:\n /* \"#utility.yul\":1086:1087 */\n dup2\n /* \"#utility.yul\":1018:1084 */\n 0x8000000000000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":1014:1088 */\n sub\n /* \"#utility.yul\":1011:1012 */\n dup4\n /* \"#utility.yul\":1007:1089 */\n slt\n /* \"#utility.yul\":1003:1004 */\n 0x00\n /* \"#utility.yul\":1000:1001 */\n dup4\n /* \"#utility.yul\":996:1005 */\n slt\n /* \"#utility.yul\":992:1090 */\n and\n /* \"#utility.yul\":989:1113 */\n iszero\n tag_36\n jumpi\n /* \"#utility.yul\":1093:1111 */\n tag_37\n tag_23\n jump\t// in\n tag_37:\n /* \"#utility.yul\":989:1113 */\n tag_36:\n /* \"#utility.yul\":1137:1138 */\n dup3\n /* \"#utility.yul\":1134:1135 */\n dup3\n /* \"#utility.yul\":1130:1139 */\n add\n /* \"#utility.yul\":1123:1139 */\n swap1\n pop\n /* \"#utility.yul\":620:1145 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1151:1678 */\n tag_20:\n /* \"#utility.yul\":1190:1194 */\n 0x00\n /* \"#utility.yul\":1210:1229 */\n tag_39\n /* \"#utility.yul\":1227:1228 */\n dup3\n /* \"#utility.yul\":1210:1229 */\n tag_21\n jump\t// in\n tag_39:\n /* \"#utility.yul\":1205:1229 */\n swap2\n pop\n /* \"#utility.yul\":1243:1262 */\n tag_40\n /* \"#utility.yul\":1260:1261 */\n dup4\n /* \"#utility.yul\":1243:1262 */\n tag_21\n jump\t// in\n tag_40:\n /* \"#utility.yul\":1238:1262 */\n swap3\n pop\n /* \"#utility.yul\":1432:1433 */\n dup3\n /* \"#utility.yul\":1364:1430 */\n 0x8000000000000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":1360:1434 */\n add\n /* \"#utility.yul\":1357:1358 */\n dup3\n /* \"#utility.yul\":1353:1435 */\n slt\n /* \"#utility.yul\":1348:1349 */\n 0x00\n /* \"#utility.yul\":1345:1346 */\n dup5\n /* \"#utility.yul\":1341:1350 */\n slt\n /* \"#utility.yul\":1334:1351 */\n iszero\n /* \"#utility.yul\":1330:1436 */\n and\n /* \"#utility.yul\":1327:1459 */\n iszero\n tag_41\n jumpi\n /* \"#utility.yul\":1439:1457 */\n tag_42\n tag_23\n jump\t// in\n tag_42:\n /* \"#utility.yul\":1327:1459 */\n tag_41:\n /* \"#utility.yul\":1618:1619 */\n dup3\n /* \"#utility.yul\":1550:1616 */\n 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":1546:1620 */\n add\n /* \"#utility.yul\":1543:1544 */\n dup3\n /* \"#utility.yul\":1539:1621 */\n sgt\n /* \"#utility.yul\":1535:1536 */\n 0x00\n /* \"#utility.yul\":1532:1533 */\n dup5\n /* \"#utility.yul\":1528:1537 */\n slt\n /* \"#utility.yul\":1524:1622 */\n and\n /* \"#utility.yul\":1521:1645 */\n iszero\n tag_43\n jumpi\n /* \"#utility.yul\":1625:1643 */\n tag_44\n tag_23\n jump\t// in\n tag_44:\n /* \"#utility.yul\":1521:1645 */\n tag_43:\n /* \"#utility.yul\":1670:1671 */\n dup3\n /* \"#utility.yul\":1667:1668 */\n dup3\n /* \"#utility.yul\":1663:1672 */\n sub\n /* \"#utility.yul\":1655:1672 */\n swap1\n pop\n /* \"#utility.yul\":1151:1678 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n\n auxdata: 0xa2646970667358221220925a4145f151297d7a70a5ccdc4eacfea52853a79b3c66663f7c35ba4d1575d964736f6c634300080a0033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60806040526000805534801561001457600080fd5b50610278806100246000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80635b34b96614610046578063a87d942c14610050578063f5c5ad831461006e575b600080fd5b61004e610078565b005b610058610093565b60405161006591906100d0565b60405180910390f35b61007661009c565b005b600160008082825461008a919061011a565b92505081905550565b60008054905090565b60016000808282546100ae91906101ae565b92505081905550565b6000819050919050565b6100ca816100b7565b82525050565b60006020820190506100e560008301846100c1565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610125826100b7565b9150610130836100b7565b9250817f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0383136000831215161561016b5761016a6100eb565b5b817f80000000000000000000000000000000000000000000000000000000000000000383126000831216156101a3576101a26100eb565b5b828201905092915050565b60006101b9826100b7565b91506101c4836100b7565b9250827f8000000000000000000000000000000000000000000000000000000000000000018212600084121516156101ff576101fe6100eb565b5b827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018213600084121615610237576102366100eb565b5b82820390509291505056fea2646970667358221220925a4145f151297d7a70a5ccdc4eacfea52853a79b3c66663f7c35ba4d1575d964736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x278 DUP1 PUSH2 0x24 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5B34B966 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0xA87D942C EQ PUSH2 0x50 JUMPI DUP1 PUSH4 0xF5C5AD83 EQ PUSH2 0x6E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x78 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x58 PUSH2 0x93 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x65 SWAP2 SWAP1 PUSH2 0xD0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x76 PUSH2 0x9C JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP1 DUP3 DUP3 SLOAD PUSH2 0x8A SWAP2 SWAP1 PUSH2 0x11A JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP1 DUP3 DUP3 SLOAD PUSH2 0xAE SWAP2 SWAP1 PUSH2 0x1AE JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xCA DUP2 PUSH2 0xB7 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xE5 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xC1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x125 DUP3 PUSH2 0xB7 JUMP JUMPDEST SWAP2 POP PUSH2 0x130 DUP4 PUSH2 0xB7 JUMP JUMPDEST SWAP3 POP DUP2 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP4 SGT PUSH1 0x0 DUP4 SLT ISZERO AND ISZERO PUSH2 0x16B JUMPI PUSH2 0x16A PUSH2 0xEB JUMP JUMPDEST JUMPDEST DUP2 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 SUB DUP4 SLT PUSH1 0x0 DUP4 SLT AND ISZERO PUSH2 0x1A3 JUMPI PUSH2 0x1A2 PUSH2 0xEB JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B9 DUP3 PUSH2 0xB7 JUMP JUMPDEST SWAP2 POP PUSH2 0x1C4 DUP4 PUSH2 0xB7 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 ADD DUP3 SLT PUSH1 0x0 DUP5 SLT ISZERO AND ISZERO PUSH2 0x1FF JUMPI PUSH2 0x1FE PUSH2 0xEB JUMP JUMPDEST JUMPDEST DUP3 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP3 SGT PUSH1 0x0 DUP5 SLT AND ISZERO PUSH2 0x237 JUMPI PUSH2 0x236 PUSH2 0xEB JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP3 GAS COINBASE GASLIMIT CALL MLOAD 0x29 PUSH30 0x7A70A5CCDC4EACFEA52853A79B3C66663F7C35BA4D1575D964736F6C6343 STOP ADDMOD EXP STOP CALLER ", + "sourceMap": "57:261:0:-:0;;;100:1;80:21;;57:261;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@decrementCounter_20": { + "entryPoint": 156, + "id": 20, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@getCount_28": { + "entryPoint": 147, + "id": 28, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@incrementCounter_12": { + "entryPoint": 120, + "id": 12, + "parameterSlots": 0, + "returnSlots": 0 + }, + "abi_encode_t_int256_to_t_int256_fromStack": { + "entryPoint": 193, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed": { + "entryPoint": 208, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_add_t_int256": { + "entryPoint": 282, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_sub_t_int256": { + "entryPoint": 430, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "cleanup_t_int256": { + "entryPoint": 183, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "panic_error_0x11": { + "entryPoint": 235, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:1681:2", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "51:32:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "61:16:2", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "72:5:2" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "61:7:2" + } + ] + } + ] + }, + "name": "cleanup_t_int256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "33:5:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "43:7:2", + "type": "" + } + ], + "src": "7:76:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "152:52:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "169:3:2" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "191:5:2" + } + ], + "functionName": { + "name": "cleanup_t_int256", + "nodeType": "YulIdentifier", + "src": "174:16:2" + }, + "nodeType": "YulFunctionCall", + "src": "174:23:2" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "162:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "162:36:2" + }, + "nodeType": "YulExpressionStatement", + "src": "162:36:2" + } + ] + }, + "name": "abi_encode_t_int256_to_t_int256_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "140:5:2", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "147:3:2", + "type": "" + } + ], + "src": "89:115:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "306:122:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "316:26:2", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "328:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "339:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "324:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "324:18:2" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "316:4:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "394:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "407:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "418:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "403:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "403:17:2" + } + ], + "functionName": { + "name": "abi_encode_t_int256_to_t_int256_fromStack", + "nodeType": "YulIdentifier", + "src": "352:41:2" + }, + "nodeType": "YulFunctionCall", + "src": "352:69:2" + }, + "nodeType": "YulExpressionStatement", + "src": "352:69:2" + } + ] + }, + "name": "abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "278:9:2", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "290:6:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "301:4:2", + "type": "" + } + ], + "src": "210:218:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "462:152:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "479:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "482:77:2", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "472:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "472:88:2" + }, + "nodeType": "YulExpressionStatement", + "src": "472:88:2" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "576:1:2", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "579:4:2", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "569:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "569:15:2" + }, + "nodeType": "YulExpressionStatement", + "src": "569:15:2" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "600:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "603:4:2", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "593:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "593:15:2" + }, + "nodeType": "YulExpressionStatement", + "src": "593:15:2" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "434:180:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "663:482:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "673:24:2", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "695:1:2" + } + ], + "functionName": { + "name": "cleanup_t_int256", + "nodeType": "YulIdentifier", + "src": "678:16:2" + }, + "nodeType": "YulFunctionCall", + "src": "678:19:2" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "673:1:2" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "706:24:2", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "728:1:2" + } + ], + "functionName": { + "name": "cleanup_t_int256", + "nodeType": "YulIdentifier", + "src": "711:16:2" + }, + "nodeType": "YulFunctionCall", + "src": "711:19:2" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "706:1:2" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "904:22:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "906:16:2" + }, + "nodeType": "YulFunctionCall", + "src": "906:18:2" + }, + "nodeType": "YulExpressionStatement", + "src": "906:18:2" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "812:1:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "815:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "808:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "808:9:2" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "801:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "801:17:2" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "824:1:2" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "831:66:2", + "type": "", + "value": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "899:1:2" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "827:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "827:74:2" + } + ], + "functionName": { + "name": "sgt", + "nodeType": "YulIdentifier", + "src": "820:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "820:82:2" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "797:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "797:106:2" + }, + "nodeType": "YulIf", + "src": "794:132:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1091:22:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "1093:16:2" + }, + "nodeType": "YulFunctionCall", + "src": "1093:18:2" + }, + "nodeType": "YulExpressionStatement", + "src": "1093:18:2" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1000:1:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1003:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "996:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "996:9:2" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "1011:1:2" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1018:66:2", + "type": "", + "value": "0x8000000000000000000000000000000000000000000000000000000000000000" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1086:1:2" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1014:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1014:74:2" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1007:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1007:82:2" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "992:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "992:98:2" + }, + "nodeType": "YulIf", + "src": "989:124:2" + }, + { + "nodeType": "YulAssignment", + "src": "1123:16:2", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1134:1:2" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "1137:1:2" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1130:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1130:9:2" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "1123:3:2" + } + ] + } + ] + }, + "name": "checked_add_t_int256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "650:1:2", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "653:1:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "659:3:2", + "type": "" + } + ], + "src": "620:525:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1195:483:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1205:24:2", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1227:1:2" + } + ], + "functionName": { + "name": "cleanup_t_int256", + "nodeType": "YulIdentifier", + "src": "1210:16:2" + }, + "nodeType": "YulFunctionCall", + "src": "1210:19:2" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1205:1:2" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1238:24:2", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "1260:1:2" + } + ], + "functionName": { + "name": "cleanup_t_int256", + "nodeType": "YulIdentifier", + "src": "1243:16:2" + }, + "nodeType": "YulFunctionCall", + "src": "1243:19:2" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "1238:1:2" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1437:22:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "1439:16:2" + }, + "nodeType": "YulFunctionCall", + "src": "1439:18:2" + }, + "nodeType": "YulExpressionStatement", + "src": "1439:18:2" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "1345:1:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1348:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1341:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1341:9:2" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1334:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "1334:17:2" + }, + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1357:1:2" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1364:66:2", + "type": "", + "value": "0x8000000000000000000000000000000000000000000000000000000000000000" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "1432:1:2" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1360:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1360:74:2" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1353:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1353:82:2" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1330:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1330:106:2" + }, + "nodeType": "YulIf", + "src": "1327:132:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1623:22:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "1625:16:2" + }, + "nodeType": "YulFunctionCall", + "src": "1625:18:2" + }, + "nodeType": "YulExpressionStatement", + "src": "1625:18:2" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "1532:1:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1535:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1528:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1528:9:2" + }, + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1543:1:2" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1550:66:2", + "type": "", + "value": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "1618:1:2" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1546:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1546:74:2" + } + ], + "functionName": { + "name": "sgt", + "nodeType": "YulIdentifier", + "src": "1539:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1539:82:2" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1524:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1524:98:2" + }, + "nodeType": "YulIf", + "src": "1521:124:2" + }, + { + "nodeType": "YulAssignment", + "src": "1655:17:2", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1667:1:2" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "1670:1:2" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1663:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1663:9:2" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "1655:4:2" + } + ] + } + ] + }, + "name": "checked_sub_t_int256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "1181:1:2", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "1184:1:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "1190:4:2", + "type": "" + } + ], + "src": "1151:527:2" + } + ] + }, + "contents": "{\n\n function cleanup_t_int256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_int256_to_t_int256_fromStack(value, pos) {\n mstore(pos, cleanup_t_int256(value))\n }\n\n function abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_int256_to_t_int256_fromStack(value0, add(headStart, 0))\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_add_t_int256(x, y) -> sum {\n x := cleanup_t_int256(x)\n y := cleanup_t_int256(y)\n\n // overflow, if x >= 0 and y > (maxValue - x)\n if and(iszero(slt(x, 0)), sgt(y, sub(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n // underflow, if x < 0 and y < (minValue - x)\n if and(slt(x, 0), slt(y, sub(0x8000000000000000000000000000000000000000000000000000000000000000, x))) { panic_error_0x11() }\n\n sum := add(x, y)\n }\n\n function checked_sub_t_int256(x, y) -> diff {\n x := cleanup_t_int256(x)\n y := cleanup_t_int256(y)\n\n // underflow, if y >= 0 and x < (minValue + y)\n if and(iszero(slt(y, 0)), slt(x, add(0x8000000000000000000000000000000000000000000000000000000000000000, y))) { panic_error_0x11() }\n // overflow, if y < 0 and x > (maxValue + y)\n if and(slt(y, 0), sgt(x, add(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, y))) { panic_error_0x11() }\n\n diff := sub(x, y)\n }\n\n}\n", + "id": 2, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106100415760003560e01c80635b34b96614610046578063a87d942c14610050578063f5c5ad831461006e575b600080fd5b61004e610078565b005b610058610093565b60405161006591906100d0565b60405180910390f35b61007661009c565b005b600160008082825461008a919061011a565b92505081905550565b60008054905090565b60016000808282546100ae91906101ae565b92505081905550565b6000819050919050565b6100ca816100b7565b82525050565b60006020820190506100e560008301846100c1565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610125826100b7565b9150610130836100b7565b9250817f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0383136000831215161561016b5761016a6100eb565b5b817f80000000000000000000000000000000000000000000000000000000000000000383126000831216156101a3576101a26100eb565b5b828201905092915050565b60006101b9826100b7565b91506101c4836100b7565b9250827f8000000000000000000000000000000000000000000000000000000000000000018212600084121516156101ff576101fe6100eb565b5b827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018213600084121615610237576102366100eb565b5b82820390509291505056fea2646970667358221220925a4145f151297d7a70a5ccdc4eacfea52853a79b3c66663f7c35ba4d1575d964736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5B34B966 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0xA87D942C EQ PUSH2 0x50 JUMPI DUP1 PUSH4 0xF5C5AD83 EQ PUSH2 0x6E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x78 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x58 PUSH2 0x93 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x65 SWAP2 SWAP1 PUSH2 0xD0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x76 PUSH2 0x9C JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP1 DUP3 DUP3 SLOAD PUSH2 0x8A SWAP2 SWAP1 PUSH2 0x11A JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP1 DUP3 DUP3 SLOAD PUSH2 0xAE SWAP2 SWAP1 PUSH2 0x1AE JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xCA DUP2 PUSH2 0xB7 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xE5 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xC1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x125 DUP3 PUSH2 0xB7 JUMP JUMPDEST SWAP2 POP PUSH2 0x130 DUP4 PUSH2 0xB7 JUMP JUMPDEST SWAP3 POP DUP2 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP4 SGT PUSH1 0x0 DUP4 SLT ISZERO AND ISZERO PUSH2 0x16B JUMPI PUSH2 0x16A PUSH2 0xEB JUMP JUMPDEST JUMPDEST DUP2 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 SUB DUP4 SLT PUSH1 0x0 DUP4 SLT AND ISZERO PUSH2 0x1A3 JUMPI PUSH2 0x1A2 PUSH2 0xEB JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B9 DUP3 PUSH2 0xB7 JUMP JUMPDEST SWAP2 POP PUSH2 0x1C4 DUP4 PUSH2 0xB7 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 ADD DUP3 SLT PUSH1 0x0 DUP5 SLT ISZERO AND ISZERO PUSH2 0x1FF JUMPI PUSH2 0x1FE PUSH2 0xEB JUMP JUMPDEST JUMPDEST DUP3 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP3 SGT PUSH1 0x0 DUP5 SLT AND ISZERO PUSH2 0x237 JUMPI PUSH2 0x236 PUSH2 0xEB JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP3 GAS COINBASE GASLIMIT CALL MLOAD 0x29 PUSH30 0x7A70A5CCDC4EACFEA52853A79B3C66663F7C35BA4D1575D964736F6C6343 STOP ADDMOD EXP STOP CALLER ", + "sourceMap": "57:261:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;107:62;;;:::i;:::-;;241:75;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;174:62;;;:::i;:::-;;107;161:1;152:5;;:10;;;;;;;:::i;:::-;;;;;;;;107:62::o;241:75::-;282:3;304:5;;297:12;;241:75;:::o;174:62::-;228:1;219:5;;:10;;;;;;;:::i;:::-;;;;;;;;174:62::o;7:76:2:-;43:7;72:5;61:16;;7:76;;;:::o;89:115::-;174:23;191:5;174:23;:::i;:::-;169:3;162:36;89:115;;:::o;210:218::-;301:4;339:2;328:9;324:18;316:26;;352:69;418:1;407:9;403:17;394:6;352:69;:::i;:::-;210:218;;;;:::o;434:180::-;482:77;479:1;472:88;579:4;576:1;569:15;603:4;600:1;593:15;620:525;659:3;678:19;695:1;678:19;:::i;:::-;673:24;;711:19;728:1;711:19;:::i;:::-;706:24;;899:1;831:66;827:74;824:1;820:82;815:1;812;808:9;801:17;797:106;794:132;;;906:18;;:::i;:::-;794:132;1086:1;1018:66;1014:74;1011:1;1007:82;1003:1;1000;996:9;992:98;989:124;;;1093:18;;:::i;:::-;989:124;1137:1;1134;1130:9;1123:16;;620:525;;;;:::o;1151:527::-;1190:4;1210:19;1227:1;1210:19;:::i;:::-;1205:24;;1243:19;1260:1;1243:19;:::i;:::-;1238:24;;1432:1;1364:66;1360:74;1357:1;1353:82;1348:1;1345;1341:9;1334:17;1330:106;1327:132;;;1439:18;;:::i;:::-;1327:132;1618:1;1550:66;1546:74;1543:1;1539:82;1535:1;1532;1528:9;1524:98;1521:124;;;1625:18;;:::i;:::-;1521:124;1670:1;1667;1663:9;1655:17;;1151:527;;;;:::o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "126400", + "executionCost": "5177", + "totalCost": "131577" + }, + "external": { + "decrementCounter()": "infinite", + "getCount()": "2437", + "incrementCounter()": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 57, + "end": 318, + "name": "PUSH", + "source": 0, + "value": "80" + }, + { + "begin": 57, + "end": 318, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 57, + "end": 318, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 100, + "end": 101, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 80, + "end": 101, + "name": "DUP1", + "source": 0 + }, + { + "begin": 80, + "end": 101, + "name": "SSTORE", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "CALLVALUE", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "DUP1", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "ISZERO", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "PUSH [tag]", + "source": 0, + "value": "1" + }, + { + "begin": 57, + "end": 318, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 57, + "end": 318, + "name": "DUP1", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "REVERT", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "tag", + "source": 0, + "value": "1" + }, + { + "begin": 57, + "end": 318, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "POP", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "PUSH #[$]", + "source": 0, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 57, + "end": 318, + "name": "DUP1", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "PUSH [$]", + "source": 0, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 57, + "end": 318, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 57, + "end": 318, + "name": "CODECOPY", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 57, + "end": 318, + "name": "RETURN", + "source": 0 + } + ], + ".data": { + "0": { + ".auxdata": "a2646970667358221220925a4145f151297d7a70a5ccdc4eacfea52853a79b3c66663f7c35ba4d1575d964736f6c634300080a0033", + ".code": [ + { + "begin": 57, + "end": 318, + "name": "PUSH", + "source": 0, + "value": "80" + }, + { + "begin": 57, + "end": 318, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 57, + "end": 318, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "CALLVALUE", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "DUP1", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "ISZERO", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "PUSH [tag]", + "source": 0, + "value": "1" + }, + { + "begin": 57, + "end": 318, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 57, + "end": 318, + "name": "DUP1", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "REVERT", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "tag", + "source": 0, + "value": "1" + }, + { + "begin": 57, + "end": 318, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "POP", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "PUSH", + "source": 0, + "value": "4" + }, + { + "begin": 57, + "end": 318, + "name": "CALLDATASIZE", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "LT", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "PUSH [tag]", + "source": 0, + "value": "2" + }, + { + "begin": 57, + "end": 318, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 57, + "end": 318, + "name": "CALLDATALOAD", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "PUSH", + "source": 0, + "value": "E0" + }, + { + "begin": 57, + "end": 318, + "name": "SHR", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "DUP1", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "PUSH", + "source": 0, + "value": "5B34B966" + }, + { + "begin": 57, + "end": 318, + "name": "EQ", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "PUSH [tag]", + "source": 0, + "value": "3" + }, + { + "begin": 57, + "end": 318, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "DUP1", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "PUSH", + "source": 0, + "value": "A87D942C" + }, + { + "begin": 57, + "end": 318, + "name": "EQ", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "PUSH [tag]", + "source": 0, + "value": "4" + }, + { + "begin": 57, + "end": 318, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "DUP1", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "PUSH", + "source": 0, + "value": "F5C5AD83" + }, + { + "begin": 57, + "end": 318, + "name": "EQ", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "PUSH [tag]", + "source": 0, + "value": "5" + }, + { + "begin": 57, + "end": 318, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "tag", + "source": 0, + "value": "2" + }, + { + "begin": 57, + "end": 318, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 57, + "end": 318, + "name": "DUP1", + "source": 0 + }, + { + "begin": 57, + "end": 318, + "name": "REVERT", + "source": 0 + }, + { + "begin": 107, + "end": 169, + "name": "tag", + "source": 0, + "value": "3" + }, + { + "begin": 107, + "end": 169, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 107, + "end": 169, + "name": "PUSH [tag]", + "source": 0, + "value": "6" + }, + { + "begin": 107, + "end": 169, + "name": "PUSH [tag]", + "source": 0, + "value": "7" + }, + { + "begin": 107, + "end": 169, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 107, + "end": 169, + "name": "tag", + "source": 0, + "value": "6" + }, + { + "begin": 107, + "end": 169, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 107, + "end": 169, + "name": "STOP", + "source": 0 + }, + { + "begin": 241, + "end": 316, + "name": "tag", + "source": 0, + "value": "4" + }, + { + "begin": 241, + "end": 316, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 241, + "end": 316, + "name": "PUSH [tag]", + "source": 0, + "value": "8" + }, + { + "begin": 241, + "end": 316, + "name": "PUSH [tag]", + "source": 0, + "value": "9" + }, + { + "begin": 241, + "end": 316, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 241, + "end": 316, + "name": "tag", + "source": 0, + "value": "8" + }, + { + "begin": 241, + "end": 316, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 241, + "end": 316, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 241, + "end": 316, + "name": "MLOAD", + "source": 0 + }, + { + "begin": 241, + "end": 316, + "name": "PUSH [tag]", + "source": 0, + "value": "10" + }, + { + "begin": 241, + "end": 316, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 241, + "end": 316, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 241, + "end": 316, + "name": "PUSH [tag]", + "source": 0, + "value": "11" + }, + { + "begin": 241, + "end": 316, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 241, + "end": 316, + "name": "tag", + "source": 0, + "value": "10" + }, + { + "begin": 241, + "end": 316, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 241, + "end": 316, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 241, + "end": 316, + "name": "MLOAD", + "source": 0 + }, + { + "begin": 241, + "end": 316, + "name": "DUP1", + "source": 0 + }, + { + "begin": 241, + "end": 316, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 241, + "end": 316, + "name": "SUB", + "source": 0 + }, + { + "begin": 241, + "end": 316, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 241, + "end": 316, + "name": "RETURN", + "source": 0 + }, + { + "begin": 174, + "end": 236, + "name": "tag", + "source": 0, + "value": "5" + }, + { + "begin": 174, + "end": 236, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 174, + "end": 236, + "name": "PUSH [tag]", + "source": 0, + "value": "12" + }, + { + "begin": 174, + "end": 236, + "name": "PUSH [tag]", + "source": 0, + "value": "13" + }, + { + "begin": 174, + "end": 236, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 174, + "end": 236, + "name": "tag", + "source": 0, + "value": "12" + }, + { + "begin": 174, + "end": 236, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 174, + "end": 236, + "name": "STOP", + "source": 0 + }, + { + "begin": 107, + "end": 169, + "name": "tag", + "source": 0, + "value": "7" + }, + { + "begin": 107, + "end": 169, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 161, + "end": 162, + "name": "PUSH", + "source": 0, + "value": "1" + }, + { + "begin": 152, + "end": 157, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 152, + "end": 157, + "name": "DUP1", + "source": 0 + }, + { + "begin": 152, + "end": 162, + "name": "DUP3", + "source": 0 + }, + { + "begin": 152, + "end": 162, + "name": "DUP3", + "source": 0 + }, + { + "begin": 152, + "end": 162, + "name": "SLOAD", + "source": 0 + }, + { + "begin": 152, + "end": 162, + "name": "PUSH [tag]", + "source": 0, + "value": "15" + }, + { + "begin": 152, + "end": 162, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 152, + "end": 162, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 152, + "end": 162, + "name": "PUSH [tag]", + "source": 0, + "value": "16" + }, + { + "begin": 152, + "end": 162, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 152, + "end": 162, + "name": "tag", + "source": 0, + "value": "15" + }, + { + "begin": 152, + "end": 162, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 152, + "end": 162, + "name": "SWAP3", + "source": 0 + }, + { + "begin": 152, + "end": 162, + "name": "POP", + "source": 0 + }, + { + "begin": 152, + "end": 162, + "name": "POP", + "source": 0 + }, + { + "begin": 152, + "end": 162, + "name": "DUP2", + "source": 0 + }, + { + "begin": 152, + "end": 162, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 152, + "end": 162, + "name": "SSTORE", + "source": 0 + }, + { + "begin": 152, + "end": 162, + "name": "POP", + "source": 0 + }, + { + "begin": 107, + "end": 169, + "name": "JUMP", + "source": 0, + "value": "[out]" + }, + { + "begin": 241, + "end": 316, + "name": "tag", + "source": 0, + "value": "9" + }, + { + "begin": 241, + "end": 316, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 282, + "end": 285, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 304, + "end": 309, + "name": "DUP1", + "source": 0 + }, + { + "begin": 304, + "end": 309, + "name": "SLOAD", + "source": 0 + }, + { + "begin": 297, + "end": 309, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 297, + "end": 309, + "name": "POP", + "source": 0 + }, + { + "begin": 241, + "end": 316, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 241, + "end": 316, + "name": "JUMP", + "source": 0, + "value": "[out]" + }, + { + "begin": 174, + "end": 236, + "name": "tag", + "source": 0, + "value": "13" + }, + { + "begin": 174, + "end": 236, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 228, + "end": 229, + "name": "PUSH", + "source": 0, + "value": "1" + }, + { + "begin": 219, + "end": 224, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 219, + "end": 224, + "name": "DUP1", + "source": 0 + }, + { + "begin": 219, + "end": 229, + "name": "DUP3", + "source": 0 + }, + { + "begin": 219, + "end": 229, + "name": "DUP3", + "source": 0 + }, + { + "begin": 219, + "end": 229, + "name": "SLOAD", + "source": 0 + }, + { + "begin": 219, + "end": 229, + "name": "PUSH [tag]", + "source": 0, + "value": "19" + }, + { + "begin": 219, + "end": 229, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 219, + "end": 229, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 219, + "end": 229, + "name": "PUSH [tag]", + "source": 0, + "value": "20" + }, + { + "begin": 219, + "end": 229, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 219, + "end": 229, + "name": "tag", + "source": 0, + "value": "19" + }, + { + "begin": 219, + "end": 229, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 219, + "end": 229, + "name": "SWAP3", + "source": 0 + }, + { + "begin": 219, + "end": 229, + "name": "POP", + "source": 0 + }, + { + "begin": 219, + "end": 229, + "name": "POP", + "source": 0 + }, + { + "begin": 219, + "end": 229, + "name": "DUP2", + "source": 0 + }, + { + "begin": 219, + "end": 229, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 219, + "end": 229, + "name": "SSTORE", + "source": 0 + }, + { + "begin": 219, + "end": 229, + "name": "POP", + "source": 0 + }, + { + "begin": 174, + "end": 236, + "name": "JUMP", + "source": 0, + "value": "[out]" + }, + { + "begin": 7, + "end": 83, + "name": "tag", + "source": 2, + "value": "21" + }, + { + "begin": 7, + "end": 83, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 43, + "end": 50, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 72, + "end": 77, + "name": "DUP2", + "source": 2 + }, + { + "begin": 61, + "end": 77, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 61, + "end": 77, + "name": "POP", + "source": 2 + }, + { + "begin": 7, + "end": 83, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 7, + "end": 83, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 7, + "end": 83, + "name": "POP", + "source": 2 + }, + { + "begin": 7, + "end": 83, + "name": "JUMP", + "source": 2, + "value": "[out]" + }, + { + "begin": 89, + "end": 204, + "name": "tag", + "source": 2, + "value": "22" + }, + { + "begin": 89, + "end": 204, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 174, + "end": 197, + "name": "PUSH [tag]", + "source": 2, + "value": "27" + }, + { + "begin": 191, + "end": 196, + "name": "DUP2", + "source": 2 + }, + { + "begin": 174, + "end": 197, + "name": "PUSH [tag]", + "source": 2, + "value": "21" + }, + { + "begin": 174, + "end": 197, + "name": "JUMP", + "source": 2, + "value": "[in]" + }, + { + "begin": 174, + "end": 197, + "name": "tag", + "source": 2, + "value": "27" + }, + { + "begin": 174, + "end": 197, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 169, + "end": 172, + "name": "DUP3", + "source": 2 + }, + { + "begin": 162, + "end": 198, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 89, + "end": 204, + "name": "POP", + "source": 2 + }, + { + "begin": 89, + "end": 204, + "name": "POP", + "source": 2 + }, + { + "begin": 89, + "end": 204, + "name": "JUMP", + "source": 2, + "value": "[out]" + }, + { + "begin": 210, + "end": 428, + "name": "tag", + "source": 2, + "value": "11" + }, + { + "begin": 210, + "end": 428, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 301, + "end": 305, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 339, + "end": 341, + "name": "PUSH", + "source": 2, + "value": "20" + }, + { + "begin": 328, + "end": 337, + "name": "DUP3", + "source": 2 + }, + { + "begin": 324, + "end": 342, + "name": "ADD", + "source": 2 + }, + { + "begin": 316, + "end": 342, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 316, + "end": 342, + "name": "POP", + "source": 2 + }, + { + "begin": 352, + "end": 421, + "name": "PUSH [tag]", + "source": 2, + "value": "29" + }, + { + "begin": 418, + "end": 419, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 407, + "end": 416, + "name": "DUP4", + "source": 2 + }, + { + "begin": 403, + "end": 420, + "name": "ADD", + "source": 2 + }, + { + "begin": 394, + "end": 400, + "name": "DUP5", + "source": 2 + }, + { + "begin": 352, + "end": 421, + "name": "PUSH [tag]", + "source": 2, + "value": "22" + }, + { + "begin": 352, + "end": 421, + "name": "JUMP", + "source": 2, + "value": "[in]" + }, + { + "begin": 352, + "end": 421, + "name": "tag", + "source": 2, + "value": "29" + }, + { + "begin": 352, + "end": 421, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 210, + "end": 428, + "name": "SWAP3", + "source": 2 + }, + { + "begin": 210, + "end": 428, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 210, + "end": 428, + "name": "POP", + "source": 2 + }, + { + "begin": 210, + "end": 428, + "name": "POP", + "source": 2 + }, + { + "begin": 210, + "end": 428, + "name": "JUMP", + "source": 2, + "value": "[out]" + }, + { + "begin": 434, + "end": 614, + "name": "tag", + "source": 2, + "value": "23" + }, + { + "begin": 434, + "end": 614, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 482, + "end": 559, + "name": "PUSH", + "source": 2, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 479, + "end": 480, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 472, + "end": 560, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 579, + "end": 583, + "name": "PUSH", + "source": 2, + "value": "11" + }, + { + "begin": 576, + "end": 577, + "name": "PUSH", + "source": 2, + "value": "4" + }, + { + "begin": 569, + "end": 584, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 603, + "end": 607, + "name": "PUSH", + "source": 2, + "value": "24" + }, + { + "begin": 600, + "end": 601, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 593, + "end": 608, + "name": "REVERT", + "source": 2 + }, + { + "begin": 620, + "end": 1145, + "name": "tag", + "source": 2, + "value": "16" + }, + { + "begin": 620, + "end": 1145, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 659, + "end": 662, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 678, + "end": 697, + "name": "PUSH [tag]", + "source": 2, + "value": "32" + }, + { + "begin": 695, + "end": 696, + "name": "DUP3", + "source": 2 + }, + { + "begin": 678, + "end": 697, + "name": "PUSH [tag]", + "source": 2, + "value": "21" + }, + { + "begin": 678, + "end": 697, + "name": "JUMP", + "source": 2, + "value": "[in]" + }, + { + "begin": 678, + "end": 697, + "name": "tag", + "source": 2, + "value": "32" + }, + { + "begin": 678, + "end": 697, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 673, + "end": 697, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 673, + "end": 697, + "name": "POP", + "source": 2 + }, + { + "begin": 711, + "end": 730, + "name": "PUSH [tag]", + "source": 2, + "value": "33" + }, + { + "begin": 728, + "end": 729, + "name": "DUP4", + "source": 2 + }, + { + "begin": 711, + "end": 730, + "name": "PUSH [tag]", + "source": 2, + "value": "21" + }, + { + "begin": 711, + "end": 730, + "name": "JUMP", + "source": 2, + "value": "[in]" + }, + { + "begin": 711, + "end": 730, + "name": "tag", + "source": 2, + "value": "33" + }, + { + "begin": 711, + "end": 730, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 706, + "end": 730, + "name": "SWAP3", + "source": 2 + }, + { + "begin": 706, + "end": 730, + "name": "POP", + "source": 2 + }, + { + "begin": 899, + "end": 900, + "name": "DUP2", + "source": 2 + }, + { + "begin": 831, + "end": 897, + "name": "PUSH", + "source": 2, + "value": "7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 827, + "end": 901, + "name": "SUB", + "source": 2 + }, + { + "begin": 824, + "end": 825, + "name": "DUP4", + "source": 2 + }, + { + "begin": 820, + "end": 902, + "name": "SGT", + "source": 2 + }, + { + "begin": 815, + "end": 816, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 812, + "end": 813, + "name": "DUP4", + "source": 2 + }, + { + "begin": 808, + "end": 817, + "name": "SLT", + "source": 2 + }, + { + "begin": 801, + "end": 818, + "name": "ISZERO", + "source": 2 + }, + { + "begin": 797, + "end": 903, + "name": "AND", + "source": 2 + }, + { + "begin": 794, + "end": 926, + "name": "ISZERO", + "source": 2 + }, + { + "begin": 794, + "end": 926, + "name": "PUSH [tag]", + "source": 2, + "value": "34" + }, + { + "begin": 794, + "end": 926, + "name": "JUMPI", + "source": 2 + }, + { + "begin": 906, + "end": 924, + "name": "PUSH [tag]", + "source": 2, + "value": "35" + }, + { + "begin": 906, + "end": 924, + "name": "PUSH [tag]", + "source": 2, + "value": "23" + }, + { + "begin": 906, + "end": 924, + "name": "JUMP", + "source": 2, + "value": "[in]" + }, + { + "begin": 906, + "end": 924, + "name": "tag", + "source": 2, + "value": "35" + }, + { + "begin": 906, + "end": 924, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 794, + "end": 926, + "name": "tag", + "source": 2, + "value": "34" + }, + { + "begin": 794, + "end": 926, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1086, + "end": 1087, + "name": "DUP2", + "source": 2 + }, + { + "begin": 1018, + "end": 1084, + "name": "PUSH", + "source": 2, + "value": "8000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1014, + "end": 1088, + "name": "SUB", + "source": 2 + }, + { + "begin": 1011, + "end": 1012, + "name": "DUP4", + "source": 2 + }, + { + "begin": 1007, + "end": 1089, + "name": "SLT", + "source": 2 + }, + { + "begin": 1003, + "end": 1004, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 1000, + "end": 1001, + "name": "DUP4", + "source": 2 + }, + { + "begin": 996, + "end": 1005, + "name": "SLT", + "source": 2 + }, + { + "begin": 992, + "end": 1090, + "name": "AND", + "source": 2 + }, + { + "begin": 989, + "end": 1113, + "name": "ISZERO", + "source": 2 + }, + { + "begin": 989, + "end": 1113, + "name": "PUSH [tag]", + "source": 2, + "value": "36" + }, + { + "begin": 989, + "end": 1113, + "name": "JUMPI", + "source": 2 + }, + { + "begin": 1093, + "end": 1111, + "name": "PUSH [tag]", + "source": 2, + "value": "37" + }, + { + "begin": 1093, + "end": 1111, + "name": "PUSH [tag]", + "source": 2, + "value": "23" + }, + { + "begin": 1093, + "end": 1111, + "name": "JUMP", + "source": 2, + "value": "[in]" + }, + { + "begin": 1093, + "end": 1111, + "name": "tag", + "source": 2, + "value": "37" + }, + { + "begin": 1093, + "end": 1111, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 989, + "end": 1113, + "name": "tag", + "source": 2, + "value": "36" + }, + { + "begin": 989, + "end": 1113, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1137, + "end": 1138, + "name": "DUP3", + "source": 2 + }, + { + "begin": 1134, + "end": 1135, + "name": "DUP3", + "source": 2 + }, + { + "begin": 1130, + "end": 1139, + "name": "ADD", + "source": 2 + }, + { + "begin": 1123, + "end": 1139, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 1123, + "end": 1139, + "name": "POP", + "source": 2 + }, + { + "begin": 620, + "end": 1145, + "name": "SWAP3", + "source": 2 + }, + { + "begin": 620, + "end": 1145, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 620, + "end": 1145, + "name": "POP", + "source": 2 + }, + { + "begin": 620, + "end": 1145, + "name": "POP", + "source": 2 + }, + { + "begin": 620, + "end": 1145, + "name": "JUMP", + "source": 2, + "value": "[out]" + }, + { + "begin": 1151, + "end": 1678, + "name": "tag", + "source": 2, + "value": "20" + }, + { + "begin": 1151, + "end": 1678, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1190, + "end": 1194, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 1210, + "end": 1229, + "name": "PUSH [tag]", + "source": 2, + "value": "39" + }, + { + "begin": 1227, + "end": 1228, + "name": "DUP3", + "source": 2 + }, + { + "begin": 1210, + "end": 1229, + "name": "PUSH [tag]", + "source": 2, + "value": "21" + }, + { + "begin": 1210, + "end": 1229, + "name": "JUMP", + "source": 2, + "value": "[in]" + }, + { + "begin": 1210, + "end": 1229, + "name": "tag", + "source": 2, + "value": "39" + }, + { + "begin": 1210, + "end": 1229, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1205, + "end": 1229, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 1205, + "end": 1229, + "name": "POP", + "source": 2 + }, + { + "begin": 1243, + "end": 1262, + "name": "PUSH [tag]", + "source": 2, + "value": "40" + }, + { + "begin": 1260, + "end": 1261, + "name": "DUP4", + "source": 2 + }, + { + "begin": 1243, + "end": 1262, + "name": "PUSH [tag]", + "source": 2, + "value": "21" + }, + { + "begin": 1243, + "end": 1262, + "name": "JUMP", + "source": 2, + "value": "[in]" + }, + { + "begin": 1243, + "end": 1262, + "name": "tag", + "source": 2, + "value": "40" + }, + { + "begin": 1243, + "end": 1262, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1238, + "end": 1262, + "name": "SWAP3", + "source": 2 + }, + { + "begin": 1238, + "end": 1262, + "name": "POP", + "source": 2 + }, + { + "begin": 1432, + "end": 1433, + "name": "DUP3", + "source": 2 + }, + { + "begin": 1364, + "end": 1430, + "name": "PUSH", + "source": 2, + "value": "8000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1360, + "end": 1434, + "name": "ADD", + "source": 2 + }, + { + "begin": 1357, + "end": 1358, + "name": "DUP3", + "source": 2 + }, + { + "begin": 1353, + "end": 1435, + "name": "SLT", + "source": 2 + }, + { + "begin": 1348, + "end": 1349, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 1345, + "end": 1346, + "name": "DUP5", + "source": 2 + }, + { + "begin": 1341, + "end": 1350, + "name": "SLT", + "source": 2 + }, + { + "begin": 1334, + "end": 1351, + "name": "ISZERO", + "source": 2 + }, + { + "begin": 1330, + "end": 1436, + "name": "AND", + "source": 2 + }, + { + "begin": 1327, + "end": 1459, + "name": "ISZERO", + "source": 2 + }, + { + "begin": 1327, + "end": 1459, + "name": "PUSH [tag]", + "source": 2, + "value": "41" + }, + { + "begin": 1327, + "end": 1459, + "name": "JUMPI", + "source": 2 + }, + { + "begin": 1439, + "end": 1457, + "name": "PUSH [tag]", + "source": 2, + "value": "42" + }, + { + "begin": 1439, + "end": 1457, + "name": "PUSH [tag]", + "source": 2, + "value": "23" + }, + { + "begin": 1439, + "end": 1457, + "name": "JUMP", + "source": 2, + "value": "[in]" + }, + { + "begin": 1439, + "end": 1457, + "name": "tag", + "source": 2, + "value": "42" + }, + { + "begin": 1439, + "end": 1457, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1327, + "end": 1459, + "name": "tag", + "source": 2, + "value": "41" + }, + { + "begin": 1327, + "end": 1459, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1618, + "end": 1619, + "name": "DUP3", + "source": 2 + }, + { + "begin": 1550, + "end": 1616, + "name": "PUSH", + "source": 2, + "value": "7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1546, + "end": 1620, + "name": "ADD", + "source": 2 + }, + { + "begin": 1543, + "end": 1544, + "name": "DUP3", + "source": 2 + }, + { + "begin": 1539, + "end": 1621, + "name": "SGT", + "source": 2 + }, + { + "begin": 1535, + "end": 1536, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 1532, + "end": 1533, + "name": "DUP5", + "source": 2 + }, + { + "begin": 1528, + "end": 1537, + "name": "SLT", + "source": 2 + }, + { + "begin": 1524, + "end": 1622, + "name": "AND", + "source": 2 + }, + { + "begin": 1521, + "end": 1645, + "name": "ISZERO", + "source": 2 + }, + { + "begin": 1521, + "end": 1645, + "name": "PUSH [tag]", + "source": 2, + "value": "43" + }, + { + "begin": 1521, + "end": 1645, + "name": "JUMPI", + "source": 2 + }, + { + "begin": 1625, + "end": 1643, + "name": "PUSH [tag]", + "source": 2, + "value": "44" + }, + { + "begin": 1625, + "end": 1643, + "name": "PUSH [tag]", + "source": 2, + "value": "23" + }, + { + "begin": 1625, + "end": 1643, + "name": "JUMP", + "source": 2, + "value": "[in]" + }, + { + "begin": 1625, + "end": 1643, + "name": "tag", + "source": 2, + "value": "44" + }, + { + "begin": 1625, + "end": 1643, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1521, + "end": 1645, + "name": "tag", + "source": 2, + "value": "43" + }, + { + "begin": 1521, + "end": 1645, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1670, + "end": 1671, + "name": "DUP3", + "source": 2 + }, + { + "begin": 1667, + "end": 1668, + "name": "DUP3", + "source": 2 + }, + { + "begin": 1663, + "end": 1672, + "name": "SUB", + "source": 2 + }, + { + "begin": 1655, + "end": 1672, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 1655, + "end": 1672, + "name": "POP", + "source": 2 + }, + { + "begin": 1151, + "end": 1678, + "name": "SWAP3", + "source": 2 + }, + { + "begin": 1151, + "end": 1678, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 1151, + "end": 1678, + "name": "POP", + "source": 2 + }, + { + "begin": 1151, + "end": 1678, + "name": "POP", + "source": 2 + }, + { + "begin": 1151, + "end": 1678, + "name": "JUMP", + "source": 2, + "value": "[out]" + } + ] + } + } + }, + "methodIdentifiers": { + "decrementCounter()": "f5c5ad83", + "getCount()": "a87d942c", + "incrementCounter()": "5b34b966" + } + }, + "ewasm": { + "wasm": "" + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"decrementCounter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCount\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"incrementCounter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"Counter.sol\":\"Counter\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"Counter.sol\":{\"keccak256\":\"0x78956c9a63d9d9c889e933e60a46e59dd067c65f0fde1dceb9ddf92aa2ce964a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4093cf3c1f5e64e772ff2a355daacd6a4ca090a7ee8d115c8e9344baeb29dac9\",\"dweb:/ipfs/QmU2DKfTGiFWak3ztG2ABFfNtp5rf5Mc6ibjQnn2GLijFv\"]}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 4, + "contract": "Counter.sol:Counter", + "label": "count", + "offset": 0, + "slot": "0", + "type": "t_int256" + } + ], + "types": { + "t_int256": { + "encoding": "inplace", + "label": "int256", + "numberOfBytes": "32" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } +} diff --git a/files/common/smart_contracts/contracts/Counter.sol b/files/common/smart_contracts/contracts/Counter.sol new file mode 100644 index 00000000..2759f06f --- /dev/null +++ b/files/common/smart_contracts/contracts/Counter.sol @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.10; +contract Counter { + int private count = 0; + function incrementCounter() public { + count += 1; + } + function decrementCounter() public { + count -= 1; + } + function getCount() public view returns (int) { + return count; + } +} \ No newline at end of file diff --git a/files/common/smart_contracts/contracts/SimpleStorage.json b/files/common/smart_contracts/contracts/SimpleStorage.json index 69a6669d..36f28b83 100644 --- a/files/common/smart_contracts/contracts/SimpleStorage.json +++ b/files/common/smart_contracts/contracts/SimpleStorage.json @@ -76,1825 +76,6032 @@ "version": 1 }, "evm": { - "assembly": " /* \"SimpleStorage.sol\":25:396 contract SimpleStorage {... */\n mstore(0x40, 0x80)\n /* \"SimpleStorage.sol\":122:224 constructor(uint initVal) public {... */\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\ntag_1:\n pop\n mload(0x40)\n sub(codesize, bytecodeSize)\n dup1\n bytecodeSize\n dup4\n codecopy\n dup2\n dup2\n add\n 0x40\n mstore\n 0x20\n dup2\n lt\n iszero\n tag_2\n jumpi\n 0x00\n dup1\n revert\ntag_2:\n dup2\n add\n swap1\n dup1\n dup1\n mload\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n pop\n pop\n pop\n /* \"SimpleStorage.sol\":166:193 stored(msg.sender, initVal) */\n 0xc9db20adedc6cf2b5d25252b101ab03e124902a73fcb12b753f3d1aaa2d8f9f5\n /* \"SimpleStorage.sol\":173:183 msg.sender */\n caller\n /* \"SimpleStorage.sol\":185:192 initVal */\n dup3\n /* \"SimpleStorage.sol\":166:193 stored(msg.sender, initVal) */\n mload(0x40)\n dup1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n dup3\n dup2\n mstore\n 0x20\n add\n swap3\n pop\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log1\n /* \"SimpleStorage.sol\":212:219 initVal */\n dup1\n /* \"SimpleStorage.sol\":199:209 storedData */\n 0x00\n /* \"SimpleStorage.sol\":199:219 storedData = initVal */\n dup2\n swap1\n sstore\n pop\n /* \"SimpleStorage.sol\":122:224 constructor(uint initVal) public {... */\n pop\n /* \"SimpleStorage.sol\":25:396 contract SimpleStorage {... */\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"SimpleStorage.sol\":25:396 contract SimpleStorage {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\n tag_1:\n pop\n jumpi(tag_2, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0x2a1afcd9\n eq\n tag_3\n jumpi\n dup1\n 0x60fe47b1\n eq\n tag_4\n jumpi\n dup1\n 0x6d4ce63c\n eq\n tag_5\n jumpi\n tag_2:\n 0x00\n dup1\n revert\n /* \"SimpleStorage.sol\":52:74 uint public storedData */\n tag_3:\n tag_6\n tag_7\n jump\t// in\n tag_6:\n mload(0x40)\n dup1\n dup3\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"SimpleStorage.sol\":228:313 function set(uint x) public {... */\n tag_4:\n tag_8\n 0x04\n dup1\n calldatasize\n sub\n 0x20\n dup2\n lt\n iszero\n tag_9\n jumpi\n 0x00\n dup1\n revert\n tag_9:\n dup2\n add\n swap1\n dup1\n dup1\n calldataload\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n pop\n pop\n pop\n tag_10\n jump\t// in\n tag_8:\n stop\n /* \"SimpleStorage.sol\":317:394 function get() view public returns (uint retVal) {... */\n tag_5:\n tag_11\n tag_12\n jump\t// in\n tag_11:\n mload(0x40)\n dup1\n dup3\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"SimpleStorage.sol\":52:74 uint public storedData */\n tag_7:\n sload(0x00)\n dup2\n jump\t// out\n /* \"SimpleStorage.sol\":228:313 function set(uint x) public {... */\n tag_10:\n /* \"SimpleStorage.sol\":267:288 stored(msg.sender, x) */\n 0xc9db20adedc6cf2b5d25252b101ab03e124902a73fcb12b753f3d1aaa2d8f9f5\n /* \"SimpleStorage.sol\":274:284 msg.sender */\n caller\n /* \"SimpleStorage.sol\":286:287 x */\n dup3\n /* \"SimpleStorage.sol\":267:288 stored(msg.sender, x) */\n mload(0x40)\n dup1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n dup3\n dup2\n mstore\n 0x20\n add\n swap3\n pop\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log1\n /* \"SimpleStorage.sol\":307:308 x */\n dup1\n /* \"SimpleStorage.sol\":294:304 storedData */\n 0x00\n /* \"SimpleStorage.sol\":294:308 storedData = x */\n dup2\n swap1\n sstore\n pop\n /* \"SimpleStorage.sol\":228:313 function set(uint x) public {... */\n pop\n jump\t// out\n /* \"SimpleStorage.sol\":317:394 function get() view public returns (uint retVal) {... */\n tag_12:\n /* \"SimpleStorage.sol\":353:364 uint retVal */\n 0x00\n /* \"SimpleStorage.sol\":379:389 storedData */\n dup1\n sload\n /* \"SimpleStorage.sol\":372:389 return storedData */\n swap1\n pop\n /* \"SimpleStorage.sol\":317:394 function get() view public returns (uint retVal) {... */\n swap1\n jump\t// out\n\n auxdata: 0xa264697066735822122027c2c4639230624c056430fb1d781389b791d56f4d6fe2ca494a46a171f5433164736f6c63430007060033\n}\n", + "assembly": " /* \"SimpleStorage.sol\":58:419 contract SimpleStorage {... */\n mstore(0x40, 0x80)\n /* \"SimpleStorage.sol\":154:249 constructor(uint initVal) {... */\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\ntag_1:\n pop\n mload(0x40)\n sub(codesize, bytecodeSize)\n dup1\n bytecodeSize\n dup4\n codecopy\n dup2\n dup2\n add\n 0x40\n mstore\n dup2\n add\n swap1\n tag_2\n swap2\n swap1\n tag_3\n jump\t// in\ntag_2:\n /* \"SimpleStorage.sol\":191:218 stored(msg.sender, initVal) */\n 0xc9db20adedc6cf2b5d25252b101ab03e124902a73fcb12b753f3d1aaa2d8f9f5\n /* \"SimpleStorage.sol\":198:208 msg.sender */\n caller\n /* \"SimpleStorage.sol\":210:217 initVal */\n dup3\n /* \"SimpleStorage.sol\":191:218 stored(msg.sender, initVal) */\n mload(0x40)\n tag_6\n swap3\n swap2\n swap1\n tag_7\n jump\t// in\ntag_6:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log1\n /* \"SimpleStorage.sol\":237:244 initVal */\n dup1\n /* \"SimpleStorage.sol\":224:234 storedData */\n 0x00\n /* \"SimpleStorage.sol\":224:244 storedData = initVal */\n dup2\n swap1\n sstore\n pop\n /* \"SimpleStorage.sol\":154:249 constructor(uint initVal) {... */\n pop\n /* \"SimpleStorage.sol\":58:419 contract SimpleStorage {... */\n jump(tag_8)\n /* \"#utility.yul\":88:205 */\ntag_10:\n /* \"#utility.yul\":197:198 */\n 0x00\n /* \"#utility.yul\":194:195 */\n dup1\n /* \"#utility.yul\":187:199 */\n revert\n /* \"#utility.yul\":334:411 */\ntag_12:\n /* \"#utility.yul\":371:378 */\n 0x00\n /* \"#utility.yul\":400:405 */\n dup2\n /* \"#utility.yul\":389:405 */\n swap1\n pop\n /* \"#utility.yul\":334:411 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":417:539 */\ntag_13:\n /* \"#utility.yul\":490:514 */\n tag_25\n /* \"#utility.yul\":508:513 */\n dup2\n /* \"#utility.yul\":490:514 */\n tag_12\n jump\t// in\ntag_25:\n /* \"#utility.yul\":483:488 */\n dup2\n /* \"#utility.yul\":480:515 */\n eq\n /* \"#utility.yul\":470:533 */\n tag_26\n jumpi\n /* \"#utility.yul\":529:530 */\n 0x00\n /* \"#utility.yul\":526:527 */\n dup1\n /* \"#utility.yul\":519:531 */\n revert\n /* \"#utility.yul\":470:533 */\ntag_26:\n /* \"#utility.yul\":417:539 */\n pop\n jump\t// out\n /* \"#utility.yul\":545:688 */\ntag_14:\n /* \"#utility.yul\":602:607 */\n 0x00\n /* \"#utility.yul\":633:639 */\n dup2\n /* \"#utility.yul\":627:640 */\n mload\n /* \"#utility.yul\":618:640 */\n swap1\n pop\n /* \"#utility.yul\":649:682 */\n tag_28\n /* \"#utility.yul\":676:681 */\n dup2\n /* \"#utility.yul\":649:682 */\n tag_13\n jump\t// in\ntag_28:\n /* \"#utility.yul\":545:688 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":694:1045 */\ntag_3:\n /* \"#utility.yul\":764:770 */\n 0x00\n /* \"#utility.yul\":813:815 */\n 0x20\n /* \"#utility.yul\":801:810 */\n dup3\n /* \"#utility.yul\":792:799 */\n dup5\n /* \"#utility.yul\":788:811 */\n sub\n /* \"#utility.yul\":784:816 */\n slt\n /* \"#utility.yul\":781:900 */\n iszero\n tag_30\n jumpi\n /* \"#utility.yul\":819:898 */\n tag_31\n tag_10\n jump\t// in\ntag_31:\n /* \"#utility.yul\":781:900 */\ntag_30:\n /* \"#utility.yul\":939:940 */\n 0x00\n /* \"#utility.yul\":964:1028 */\n tag_32\n /* \"#utility.yul\":1020:1027 */\n dup5\n /* \"#utility.yul\":1011:1017 */\n dup3\n /* \"#utility.yul\":1000:1009 */\n dup6\n /* \"#utility.yul\":996:1018 */\n add\n /* \"#utility.yul\":964:1028 */\n tag_14\n jump\t// in\ntag_32:\n /* \"#utility.yul\":954:1028 */\n swap2\n pop\n /* \"#utility.yul\":910:1038 */\n pop\n /* \"#utility.yul\":694:1045 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1051:1177 */\ntag_15:\n /* \"#utility.yul\":1088:1095 */\n 0x00\n /* \"#utility.yul\":1128:1170 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":1121:1126 */\n dup3\n /* \"#utility.yul\":1117:1171 */\n and\n /* \"#utility.yul\":1106:1171 */\n swap1\n pop\n /* \"#utility.yul\":1051:1177 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1183:1279 */\ntag_16:\n /* \"#utility.yul\":1220:1227 */\n 0x00\n /* \"#utility.yul\":1249:1273 */\n tag_35\n /* \"#utility.yul\":1267:1272 */\n dup3\n /* \"#utility.yul\":1249:1273 */\n tag_15\n jump\t// in\ntag_35:\n /* \"#utility.yul\":1238:1273 */\n swap1\n pop\n /* \"#utility.yul\":1183:1279 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1285:1403 */\ntag_17:\n /* \"#utility.yul\":1372:1396 */\n tag_37\n /* \"#utility.yul\":1390:1395 */\n dup2\n /* \"#utility.yul\":1372:1396 */\n tag_16\n jump\t// in\ntag_37:\n /* \"#utility.yul\":1367:1370 */\n dup3\n /* \"#utility.yul\":1360:1397 */\n mstore\n /* \"#utility.yul\":1285:1403 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1409:1527 */\ntag_18:\n /* \"#utility.yul\":1496:1520 */\n tag_39\n /* \"#utility.yul\":1514:1519 */\n dup2\n /* \"#utility.yul\":1496:1520 */\n tag_12\n jump\t// in\ntag_39:\n /* \"#utility.yul\":1491:1494 */\n dup3\n /* \"#utility.yul\":1484:1521 */\n mstore\n /* \"#utility.yul\":1409:1527 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1533:1865 */\ntag_7:\n /* \"#utility.yul\":1654:1658 */\n 0x00\n /* \"#utility.yul\":1692:1694 */\n 0x40\n /* \"#utility.yul\":1681:1690 */\n dup3\n /* \"#utility.yul\":1677:1695 */\n add\n /* \"#utility.yul\":1669:1695 */\n swap1\n pop\n /* \"#utility.yul\":1705:1776 */\n tag_41\n /* \"#utility.yul\":1773:1774 */\n 0x00\n /* \"#utility.yul\":1762:1771 */\n dup4\n /* \"#utility.yul\":1758:1775 */\n add\n /* \"#utility.yul\":1749:1755 */\n dup6\n /* \"#utility.yul\":1705:1776 */\n tag_17\n jump\t// in\ntag_41:\n /* \"#utility.yul\":1786:1858 */\n tag_42\n /* \"#utility.yul\":1854:1856 */\n 0x20\n /* \"#utility.yul\":1843:1852 */\n dup4\n /* \"#utility.yul\":1839:1857 */\n add\n /* \"#utility.yul\":1830:1836 */\n dup5\n /* \"#utility.yul\":1786:1858 */\n tag_18\n jump\t// in\ntag_42:\n /* \"#utility.yul\":1533:1865 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"SimpleStorage.sol\":58:419 contract SimpleStorage {... */\ntag_8:\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"SimpleStorage.sol\":58:419 contract SimpleStorage {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\n tag_1:\n pop\n jumpi(tag_2, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0x2a1afcd9\n eq\n tag_3\n jumpi\n dup1\n 0x60fe47b1\n eq\n tag_4\n jumpi\n dup1\n 0x6d4ce63c\n eq\n tag_5\n jumpi\n tag_2:\n 0x00\n dup1\n revert\n /* \"SimpleStorage.sol\":85:107 uint public storedData */\n tag_3:\n tag_6\n tag_7\n jump\t// in\n tag_6:\n mload(0x40)\n tag_8\n swap2\n swap1\n tag_9\n jump\t// in\n tag_8:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"SimpleStorage.sol\":252:337 function set(uint x) public {... */\n tag_4:\n tag_10\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_11\n swap2\n swap1\n tag_12\n jump\t// in\n tag_11:\n tag_13\n jump\t// in\n tag_10:\n stop\n /* \"SimpleStorage.sol\":340:417 function get() view public returns (uint retVal) {... */\n tag_5:\n tag_14\n tag_15\n jump\t// in\n tag_14:\n mload(0x40)\n tag_16\n swap2\n swap1\n tag_9\n jump\t// in\n tag_16:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"SimpleStorage.sol\":85:107 uint public storedData */\n tag_7:\n sload(0x00)\n dup2\n jump\t// out\n /* \"SimpleStorage.sol\":252:337 function set(uint x) public {... */\n tag_13:\n /* \"SimpleStorage.sol\":291:312 stored(msg.sender, x) */\n 0xc9db20adedc6cf2b5d25252b101ab03e124902a73fcb12b753f3d1aaa2d8f9f5\n /* \"SimpleStorage.sol\":298:308 msg.sender */\n caller\n /* \"SimpleStorage.sol\":310:311 x */\n dup3\n /* \"SimpleStorage.sol\":291:312 stored(msg.sender, x) */\n mload(0x40)\n tag_18\n swap3\n swap2\n swap1\n tag_19\n jump\t// in\n tag_18:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log1\n /* \"SimpleStorage.sol\":331:332 x */\n dup1\n /* \"SimpleStorage.sol\":318:328 storedData */\n 0x00\n /* \"SimpleStorage.sol\":318:332 storedData = x */\n dup2\n swap1\n sstore\n pop\n /* \"SimpleStorage.sol\":252:337 function set(uint x) public {... */\n pop\n jump\t// out\n /* \"SimpleStorage.sol\":340:417 function get() view public returns (uint retVal) {... */\n tag_15:\n /* \"SimpleStorage.sol\":376:387 uint retVal */\n 0x00\n /* \"SimpleStorage.sol\":402:412 storedData */\n dup1\n sload\n /* \"SimpleStorage.sol\":395:412 return storedData */\n swap1\n pop\n /* \"SimpleStorage.sol\":340:417 function get() view public returns (uint retVal) {... */\n swap1\n jump\t// out\n /* \"#utility.yul\":7:84 */\n tag_21:\n /* \"#utility.yul\":44:51 */\n 0x00\n /* \"#utility.yul\":73:78 */\n dup2\n /* \"#utility.yul\":62:78 */\n swap1\n pop\n /* \"#utility.yul\":7:84 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":90:208 */\n tag_22:\n /* \"#utility.yul\":177:201 */\n tag_34\n /* \"#utility.yul\":195:200 */\n dup2\n /* \"#utility.yul\":177:201 */\n tag_21\n jump\t// in\n tag_34:\n /* \"#utility.yul\":172:175 */\n dup3\n /* \"#utility.yul\":165:202 */\n mstore\n /* \"#utility.yul\":90:208 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":214:436 */\n tag_9:\n /* \"#utility.yul\":307:311 */\n 0x00\n /* \"#utility.yul\":345:347 */\n 0x20\n /* \"#utility.yul\":334:343 */\n dup3\n /* \"#utility.yul\":330:348 */\n add\n /* \"#utility.yul\":322:348 */\n swap1\n pop\n /* \"#utility.yul\":358:429 */\n tag_36\n /* \"#utility.yul\":426:427 */\n 0x00\n /* \"#utility.yul\":415:424 */\n dup4\n /* \"#utility.yul\":411:428 */\n add\n /* \"#utility.yul\":402:408 */\n dup5\n /* \"#utility.yul\":358:429 */\n tag_22\n jump\t// in\n tag_36:\n /* \"#utility.yul\":214:436 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":523:640 */\n tag_24:\n /* \"#utility.yul\":632:633 */\n 0x00\n /* \"#utility.yul\":629:630 */\n dup1\n /* \"#utility.yul\":622:634 */\n revert\n /* \"#utility.yul\":769:891 */\n tag_26:\n /* \"#utility.yul\":842:866 */\n tag_41\n /* \"#utility.yul\":860:865 */\n dup2\n /* \"#utility.yul\":842:866 */\n tag_21\n jump\t// in\n tag_41:\n /* \"#utility.yul\":835:840 */\n dup2\n /* \"#utility.yul\":832:867 */\n eq\n /* \"#utility.yul\":822:885 */\n tag_42\n jumpi\n /* \"#utility.yul\":881:882 */\n 0x00\n /* \"#utility.yul\":878:879 */\n dup1\n /* \"#utility.yul\":871:883 */\n revert\n /* \"#utility.yul\":822:885 */\n tag_42:\n /* \"#utility.yul\":769:891 */\n pop\n jump\t// out\n /* \"#utility.yul\":897:1036 */\n tag_27:\n /* \"#utility.yul\":943:948 */\n 0x00\n /* \"#utility.yul\":981:987 */\n dup2\n /* \"#utility.yul\":968:988 */\n calldataload\n /* \"#utility.yul\":959:988 */\n swap1\n pop\n /* \"#utility.yul\":997:1030 */\n tag_44\n /* \"#utility.yul\":1024:1029 */\n dup2\n /* \"#utility.yul\":997:1030 */\n tag_26\n jump\t// in\n tag_44:\n /* \"#utility.yul\":897:1036 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1042:1371 */\n tag_12:\n /* \"#utility.yul\":1101:1107 */\n 0x00\n /* \"#utility.yul\":1150:1152 */\n 0x20\n /* \"#utility.yul\":1138:1147 */\n dup3\n /* \"#utility.yul\":1129:1136 */\n dup5\n /* \"#utility.yul\":1125:1148 */\n sub\n /* \"#utility.yul\":1121:1153 */\n slt\n /* \"#utility.yul\":1118:1237 */\n iszero\n tag_46\n jumpi\n /* \"#utility.yul\":1156:1235 */\n tag_47\n tag_24\n jump\t// in\n tag_47:\n /* \"#utility.yul\":1118:1237 */\n tag_46:\n /* \"#utility.yul\":1276:1277 */\n 0x00\n /* \"#utility.yul\":1301:1354 */\n tag_48\n /* \"#utility.yul\":1346:1353 */\n dup5\n /* \"#utility.yul\":1337:1343 */\n dup3\n /* \"#utility.yul\":1326:1335 */\n dup6\n /* \"#utility.yul\":1322:1344 */\n add\n /* \"#utility.yul\":1301:1354 */\n tag_27\n jump\t// in\n tag_48:\n /* \"#utility.yul\":1291:1354 */\n swap2\n pop\n /* \"#utility.yul\":1247:1364 */\n pop\n /* \"#utility.yul\":1042:1371 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1377:1503 */\n tag_28:\n /* \"#utility.yul\":1414:1421 */\n 0x00\n /* \"#utility.yul\":1454:1496 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":1447:1452 */\n dup3\n /* \"#utility.yul\":1443:1497 */\n and\n /* \"#utility.yul\":1432:1497 */\n swap1\n pop\n /* \"#utility.yul\":1377:1503 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1509:1605 */\n tag_29:\n /* \"#utility.yul\":1546:1553 */\n 0x00\n /* \"#utility.yul\":1575:1599 */\n tag_51\n /* \"#utility.yul\":1593:1598 */\n dup3\n /* \"#utility.yul\":1575:1599 */\n tag_28\n jump\t// in\n tag_51:\n /* \"#utility.yul\":1564:1599 */\n swap1\n pop\n /* \"#utility.yul\":1509:1605 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1611:1729 */\n tag_30:\n /* \"#utility.yul\":1698:1722 */\n tag_53\n /* \"#utility.yul\":1716:1721 */\n dup2\n /* \"#utility.yul\":1698:1722 */\n tag_29\n jump\t// in\n tag_53:\n /* \"#utility.yul\":1693:1696 */\n dup3\n /* \"#utility.yul\":1686:1723 */\n mstore\n /* \"#utility.yul\":1611:1729 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1735:2067 */\n tag_19:\n /* \"#utility.yul\":1856:1860 */\n 0x00\n /* \"#utility.yul\":1894:1896 */\n 0x40\n /* \"#utility.yul\":1883:1892 */\n dup3\n /* \"#utility.yul\":1879:1897 */\n add\n /* \"#utility.yul\":1871:1897 */\n swap1\n pop\n /* \"#utility.yul\":1907:1978 */\n tag_55\n /* \"#utility.yul\":1975:1976 */\n 0x00\n /* \"#utility.yul\":1964:1973 */\n dup4\n /* \"#utility.yul\":1960:1977 */\n add\n /* \"#utility.yul\":1951:1957 */\n dup6\n /* \"#utility.yul\":1907:1978 */\n tag_30\n jump\t// in\n tag_55:\n /* \"#utility.yul\":1988:2060 */\n tag_56\n /* \"#utility.yul\":2056:2058 */\n 0x20\n /* \"#utility.yul\":2045:2054 */\n dup4\n /* \"#utility.yul\":2041:2059 */\n add\n /* \"#utility.yul\":2032:2038 */\n dup5\n /* \"#utility.yul\":1988:2060 */\n tag_22\n jump\t// in\n tag_56:\n /* \"#utility.yul\":1735:2067 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n\n auxdata: 0xa2646970667358221220881b45c1cf7b5f362b3ed96b4caba8e72b8999be66620494dacdefbf7555593a64736f6c634300080a0033\n}\n", "bytecode": { - "generatedSources": [], + "functionDebugData": { + "@_55": { + "entryPoint": null, + "id": 55, + "parameterSlots": 1, + "returnSlots": 0 + }, + "abi_decode_t_uint256_fromMemory": { + "entryPoint": 158, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256_fromMemory": { + "entryPoint": 179, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_t_address_to_t_address_fromStack": { + "entryPoint": 274, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_uint256_to_t_uint256_fromStack": { + "entryPoint": 289, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": { + "entryPoint": 304, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "allocate_unbounded": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "cleanup_t_address": { + "entryPoint": 256, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint160": { + "entryPoint": 224, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint256": { + "entryPoint": 125, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": { + "entryPoint": 120, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "validator_revert_t_uint256": { + "entryPoint": 135, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:1868:2", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "47:35:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "57:19:2", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "73:2:2", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "67:5:2" + }, + "nodeType": "YulFunctionCall", + "src": "67:9:2" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "57:6:2" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "40:6:2", + "type": "" + } + ], + "src": "7:75:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "177:28:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "194:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "197:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "187:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "187:12:2" + }, + "nodeType": "YulExpressionStatement", + "src": "187:12:2" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "88:117:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "300:28:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "317:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "320:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "310:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "310:12:2" + }, + "nodeType": "YulExpressionStatement", + "src": "310:12:2" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "211:117:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "379:32:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "389:16:2", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "400:5:2" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "389:7:2" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "361:5:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "371:7:2", + "type": "" + } + ], + "src": "334:77:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "460:79:2", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "517:16:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "526:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "529:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "519:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "519:12:2" + }, + "nodeType": "YulExpressionStatement", + "src": "519:12:2" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "483:5:2" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "508:5:2" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "490:17:2" + }, + "nodeType": "YulFunctionCall", + "src": "490:24:2" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "480:2:2" + }, + "nodeType": "YulFunctionCall", + "src": "480:35:2" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "473:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "473:43:2" + }, + "nodeType": "YulIf", + "src": "470:63:2" + } + ] + }, + "name": "validator_revert_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "453:5:2", + "type": "" + } + ], + "src": "417:122:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "608:80:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "618:22:2", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "633:6:2" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "627:5:2" + }, + "nodeType": "YulFunctionCall", + "src": "627:13:2" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "618:5:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "676:5:2" + } + ], + "functionName": { + "name": "validator_revert_t_uint256", + "nodeType": "YulIdentifier", + "src": "649:26:2" + }, + "nodeType": "YulFunctionCall", + "src": "649:33:2" + }, + "nodeType": "YulExpressionStatement", + "src": "649:33:2" + } + ] + }, + "name": "abi_decode_t_uint256_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "586:6:2", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "594:3:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "602:5:2", + "type": "" + } + ], + "src": "545:143:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "771:274:2", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "817:83:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "819:77:2" + }, + "nodeType": "YulFunctionCall", + "src": "819:79:2" + }, + "nodeType": "YulExpressionStatement", + "src": "819:79:2" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "792:7:2" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "801:9:2" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "788:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "788:23:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "813:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "784:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "784:32:2" + }, + "nodeType": "YulIf", + "src": "781:119:2" + }, + { + "nodeType": "YulBlock", + "src": "910:128:2", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "925:15:2", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "939:1:2", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "929:6:2", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "954:74:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1000:9:2" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1011:6:2" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "996:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "996:22:2" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1020:7:2" + } + ], + "functionName": { + "name": "abi_decode_t_uint256_fromMemory", + "nodeType": "YulIdentifier", + "src": "964:31:2" + }, + "nodeType": "YulFunctionCall", + "src": "964:64:2" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "954:6:2" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "741:9:2", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "752:7:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "764:6:2", + "type": "" + } + ], + "src": "694:351:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1096:81:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1106:65:2", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1121:5:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1128:42:2", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1117:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1117:54:2" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "1106:7:2" + } + ] + } + ] + }, + "name": "cleanup_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1078:5:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "1088:7:2", + "type": "" + } + ], + "src": "1051:126:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1228:51:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1238:35:2", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1267:5:2" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "1249:17:2" + }, + "nodeType": "YulFunctionCall", + "src": "1249:24:2" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "1238:7:2" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1210:5:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "1220:7:2", + "type": "" + } + ], + "src": "1183:96:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1350:53:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "1367:3:2" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1390:5:2" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "1372:17:2" + }, + "nodeType": "YulFunctionCall", + "src": "1372:24:2" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1360:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "1360:37:2" + }, + "nodeType": "YulExpressionStatement", + "src": "1360:37:2" + } + ] + }, + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1338:5:2", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "1345:3:2", + "type": "" + } + ], + "src": "1285:118:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1474:53:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "1491:3:2" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1514:5:2" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "1496:17:2" + }, + "nodeType": "YulFunctionCall", + "src": "1496:24:2" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1484:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "1484:37:2" + }, + "nodeType": "YulExpressionStatement", + "src": "1484:37:2" + } + ] + }, + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1462:5:2", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "1469:3:2", + "type": "" + } + ], + "src": "1409:118:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1659:206:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1669:26:2", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1681:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1692:2:2", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1677:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1677:18:2" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1669:4:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1749:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1762:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1773:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1758:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1758:17:2" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "1705:43:2" + }, + "nodeType": "YulFunctionCall", + "src": "1705:71:2" + }, + "nodeType": "YulExpressionStatement", + "src": "1705:71:2" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1830:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1843:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1854:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1839:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1839:18:2" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "1786:43:2" + }, + "nodeType": "YulFunctionCall", + "src": "1786:72:2" + }, + "nodeType": "YulExpressionStatement", + "src": "1786:72:2" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1623:9:2", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1635:6:2", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1643:6:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1654:4:2", + "type": "" + } + ], + "src": "1533:332:2" + } + ] + }, + "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n}\n", + "id": 2, + "language": "Yul", + "name": "#utility.yul" + } + ], "linkReferences": {}, - "object": "608060405234801561001057600080fd5b506040516102043803806102048339818101604052602081101561003357600080fd5b81019080805190602001909291905050507fc9db20adedc6cf2b5d25252b101ab03e124902a73fcb12b753f3d1aaa2d8f9f53382604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a18060008190555050610154806100b06000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632a1afcd91461004657806360fe47b1146100645780636d4ce63c14610092575b600080fd5b61004e6100b0565b6040518082815260200191505060405180910390f35b6100906004803603602081101561007a57600080fd5b81019080803590602001909291905050506100b6565b005b61009a610115565b6040518082815260200191505060405180910390f35b60005481565b7fc9db20adedc6cf2b5d25252b101ab03e124902a73fcb12b753f3d1aaa2d8f9f53382604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a18060008190555050565b6000805490509056fea264697066735822122027c2c4639230624c056430fb1d781389b791d56f4d6fe2ca494a46a171f5433164736f6c63430007060033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x204 CODESIZE SUB DUP1 PUSH2 0x204 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH32 0xC9DB20ADEDC6CF2B5D25252B101AB03E124902A73FCB12B753F3D1AAA2D8F9F5 CALLER DUP3 PUSH1 0x40 MLOAD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP POP PUSH2 0x154 DUP1 PUSH2 0xB0 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2A1AFCD9 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x60FE47B1 EQ PUSH2 0x64 JUMPI DUP1 PUSH4 0x6D4CE63C EQ PUSH2 0x92 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0xB0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x90 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xB6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x9A PUSH2 0x115 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH32 0xC9DB20ADEDC6CF2B5D25252B101AB03E124902A73FCB12B753F3D1AAA2D8F9F5 CALLER DUP3 PUSH1 0x40 MLOAD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x27 0xC2 0xC4 PUSH4 0x9230624C SDIV PUSH5 0x30FB1D7813 DUP10 0xB7 SWAP2 0xD5 PUSH16 0x4D6FE2CA494A46A171F5433164736F6C PUSH4 0x43000706 STOP CALLER ", - "sourceMap": "25:371:0:-:0;;;122:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;166:27;173:10;185:7;166:27;;;;;;;;;;;;;;;;;;;;;;;;;;212:7;199:10;:20;;;;122:102;25:371;;;;;;" + "object": "608060405234801561001057600080fd5b5060405161038a38038061038a833981810160405281019061003291906100b3565b7fc9db20adedc6cf2b5d25252b101ab03e124902a73fcb12b753f3d1aaa2d8f9f53382604051610063929190610130565b60405180910390a18060008190555050610159565b600080fd5b6000819050919050565b6100908161007d565b811461009b57600080fd5b50565b6000815190506100ad81610087565b92915050565b6000602082840312156100c9576100c8610078565b5b60006100d78482850161009e565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061010b826100e0565b9050919050565b61011b81610100565b82525050565b61012a8161007d565b82525050565b60006040820190506101456000830185610112565b6101526020830184610121565b9392505050565b610222806101686000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632a1afcd91461004657806360fe47b1146100645780636d4ce63c14610080575b600080fd5b61004e61009e565b60405161005b9190610109565b60405180910390f35b61007e60048036038101906100799190610155565b6100a4565b005b6100886100e7565b6040516100959190610109565b60405180910390f35b60005481565b7fc9db20adedc6cf2b5d25252b101ab03e124902a73fcb12b753f3d1aaa2d8f9f533826040516100d59291906101c3565b60405180910390a18060008190555050565b60008054905090565b6000819050919050565b610103816100f0565b82525050565b600060208201905061011e60008301846100fa565b92915050565b600080fd5b610132816100f0565b811461013d57600080fd5b50565b60008135905061014f81610129565b92915050565b60006020828403121561016b5761016a610124565b5b600061017984828501610140565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006101ad82610182565b9050919050565b6101bd816101a2565b82525050565b60006040820190506101d860008301856101b4565b6101e560208301846100fa565b939250505056fea2646970667358221220881b45c1cf7b5f362b3ed96b4caba8e72b8999be66620494dacdefbf7555593a64736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x38A CODESIZE SUB DUP1 PUSH2 0x38A DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH2 0x32 SWAP2 SWAP1 PUSH2 0xB3 JUMP JUMPDEST PUSH32 0xC9DB20ADEDC6CF2B5D25252B101AB03E124902A73FCB12B753F3D1AAA2D8F9F5 CALLER DUP3 PUSH1 0x40 MLOAD PUSH2 0x63 SWAP3 SWAP2 SWAP1 PUSH2 0x130 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP POP PUSH2 0x159 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x90 DUP2 PUSH2 0x7D JUMP JUMPDEST DUP2 EQ PUSH2 0x9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xAD DUP2 PUSH2 0x87 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC9 JUMPI PUSH2 0xC8 PUSH2 0x78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xD7 DUP5 DUP3 DUP6 ADD PUSH2 0x9E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10B DUP3 PUSH2 0xE0 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x11B DUP2 PUSH2 0x100 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x12A DUP2 PUSH2 0x7D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x145 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x112 JUMP JUMPDEST PUSH2 0x152 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x121 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x222 DUP1 PUSH2 0x168 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2A1AFCD9 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x60FE47B1 EQ PUSH2 0x64 JUMPI DUP1 PUSH4 0x6D4CE63C EQ PUSH2 0x80 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x9E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5B SWAP2 SWAP1 PUSH2 0x109 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x79 SWAP2 SWAP1 PUSH2 0x155 JUMP JUMPDEST PUSH2 0xA4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x88 PUSH2 0xE7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x95 SWAP2 SWAP1 PUSH2 0x109 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH32 0xC9DB20ADEDC6CF2B5D25252B101AB03E124902A73FCB12B753F3D1AAA2D8F9F5 CALLER DUP3 PUSH1 0x40 MLOAD PUSH2 0xD5 SWAP3 SWAP2 SWAP1 PUSH2 0x1C3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x103 DUP2 PUSH2 0xF0 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x11E PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xFA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x132 DUP2 PUSH2 0xF0 JUMP JUMPDEST DUP2 EQ PUSH2 0x13D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x14F DUP2 PUSH2 0x129 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16B JUMPI PUSH2 0x16A PUSH2 0x124 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x179 DUP5 DUP3 DUP6 ADD PUSH2 0x140 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AD DUP3 PUSH2 0x182 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1BD DUP2 PUSH2 0x1A2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x1D8 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x1B4 JUMP JUMPDEST PUSH2 0x1E5 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xFA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP9 SHL GASLIMIT 0xC1 0xCF PUSH28 0x5F362B3ED96B4CABA8E72B8999BE66620494DACDEFBF7555593A6473 PUSH16 0x6C634300080A00330000000000000000 ", + "sourceMap": "58:361:1:-:0;;;154:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;191:27;198:10;210:7;191:27;;;;;;;:::i;:::-;;;;;;;;237:7;224:10;:20;;;;154:95;58:361;;88:117:2;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:143::-;602:5;633:6;627:13;618:22;;649:33;676:5;649:33;:::i;:::-;545:143;;;;:::o;694:351::-;764:6;813:2;801:9;792:7;788:23;784:32;781:119;;;819:79;;:::i;:::-;781:119;939:1;964:64;1020:7;1011:6;1000:9;996:22;964:64;:::i;:::-;954:74;;910:128;694:351;;;;:::o;1051:126::-;1088:7;1128:42;1121:5;1117:54;1106:65;;1051:126;;;:::o;1183:96::-;1220:7;1249:24;1267:5;1249:24;:::i;:::-;1238:35;;1183:96;;;:::o;1285:118::-;1372:24;1390:5;1372:24;:::i;:::-;1367:3;1360:37;1285:118;;:::o;1409:::-;1496:24;1514:5;1496:24;:::i;:::-;1491:3;1484:37;1409:118;;:::o;1533:332::-;1654:4;1692:2;1681:9;1677:18;1669:26;;1705:71;1773:1;1762:9;1758:17;1749:6;1705:71;:::i;:::-;1786:72;1854:2;1843:9;1839:18;1830:6;1786:72;:::i;:::-;1533:332;;;;;:::o;58:361:1:-;;;;;;;" }, "deployedBytecode": { - "generatedSources": [], + "functionDebugData": { + "@get_79": { + "entryPoint": 231, + "id": 79, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@set_71": { + "entryPoint": 164, + "id": 71, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@storedData_33": { + "entryPoint": 158, + "id": 33, + "parameterSlots": 0, + "returnSlots": 0 + }, + "abi_decode_t_uint256": { + "entryPoint": 320, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256": { + "entryPoint": 341, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_t_address_to_t_address_fromStack": { + "entryPoint": 436, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_uint256_to_t_uint256_fromStack": { + "entryPoint": 250, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": { + "entryPoint": 451, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": 265, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "allocate_unbounded": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "cleanup_t_address": { + "entryPoint": 418, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint160": { + "entryPoint": 386, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint256": { + "entryPoint": 240, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": { + "entryPoint": 292, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "validator_revert_t_uint256": { + "entryPoint": 297, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:2070:2", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "52:32:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "62:16:2", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "73:5:2" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "62:7:2" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "34:5:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "44:7:2", + "type": "" + } + ], + "src": "7:77:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "155:53:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "172:3:2" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "195:5:2" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "177:17:2" + }, + "nodeType": "YulFunctionCall", + "src": "177:24:2" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "165:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "165:37:2" + }, + "nodeType": "YulExpressionStatement", + "src": "165:37:2" + } + ] + }, + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "143:5:2", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "150:3:2", + "type": "" + } + ], + "src": "90:118:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "312:124:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "322:26:2", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "334:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "345:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "330:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "330:18:2" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "322:4:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "402:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "415:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "426:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "411:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "411:17:2" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "358:43:2" + }, + "nodeType": "YulFunctionCall", + "src": "358:71:2" + }, + "nodeType": "YulExpressionStatement", + "src": "358:71:2" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "284:9:2", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "296:6:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "307:4:2", + "type": "" + } + ], + "src": "214:222:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "482:35:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "492:19:2", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "508:2:2", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "502:5:2" + }, + "nodeType": "YulFunctionCall", + "src": "502:9:2" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "492:6:2" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "475:6:2", + "type": "" + } + ], + "src": "442:75:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "612:28:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "629:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "632:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "622:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "622:12:2" + }, + "nodeType": "YulExpressionStatement", + "src": "622:12:2" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "523:117:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "735:28:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "752:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "755:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "745:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "745:12:2" + }, + "nodeType": "YulExpressionStatement", + "src": "745:12:2" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "646:117:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "812:79:2", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "869:16:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "878:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "881:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "871:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "871:12:2" + }, + "nodeType": "YulExpressionStatement", + "src": "871:12:2" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "835:5:2" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "860:5:2" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "842:17:2" + }, + "nodeType": "YulFunctionCall", + "src": "842:24:2" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "832:2:2" + }, + "nodeType": "YulFunctionCall", + "src": "832:35:2" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "825:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "825:43:2" + }, + "nodeType": "YulIf", + "src": "822:63:2" + } + ] + }, + "name": "validator_revert_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "805:5:2", + "type": "" + } + ], + "src": "769:122:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "949:87:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "959:29:2", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "981:6:2" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "968:12:2" + }, + "nodeType": "YulFunctionCall", + "src": "968:20:2" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "959:5:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1024:5:2" + } + ], + "functionName": { + "name": "validator_revert_t_uint256", + "nodeType": "YulIdentifier", + "src": "997:26:2" + }, + "nodeType": "YulFunctionCall", + "src": "997:33:2" + }, + "nodeType": "YulExpressionStatement", + "src": "997:33:2" + } + ] + }, + "name": "abi_decode_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "927:6:2", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "935:3:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "943:5:2", + "type": "" + } + ], + "src": "897:139:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1108:263:2", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1154:83:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "1156:77:2" + }, + "nodeType": "YulFunctionCall", + "src": "1156:79:2" + }, + "nodeType": "YulExpressionStatement", + "src": "1156:79:2" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1129:7:2" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1138:9:2" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1125:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1125:23:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1150:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1121:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1121:32:2" + }, + "nodeType": "YulIf", + "src": "1118:119:2" + }, + { + "nodeType": "YulBlock", + "src": "1247:117:2", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1262:15:2", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1276:1:2", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1266:6:2", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1291:63:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1326:9:2" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1337:6:2" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1322:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1322:22:2" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1346:7:2" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "1301:20:2" + }, + "nodeType": "YulFunctionCall", + "src": "1301:53:2" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1291:6:2" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1078:9:2", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1089:7:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1101:6:2", + "type": "" + } + ], + "src": "1042:329:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1422:81:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1432:65:2", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1447:5:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1454:42:2", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1443:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1443:54:2" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "1432:7:2" + } + ] + } + ] + }, + "name": "cleanup_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1404:5:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "1414:7:2", + "type": "" + } + ], + "src": "1377:126:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1554:51:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1564:35:2", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1593:5:2" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "1575:17:2" + }, + "nodeType": "YulFunctionCall", + "src": "1575:24:2" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "1564:7:2" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1536:5:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "1546:7:2", + "type": "" + } + ], + "src": "1509:96:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1676:53:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "1693:3:2" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1716:5:2" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "1698:17:2" + }, + "nodeType": "YulFunctionCall", + "src": "1698:24:2" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1686:6:2" + }, + "nodeType": "YulFunctionCall", + "src": "1686:37:2" + }, + "nodeType": "YulExpressionStatement", + "src": "1686:37:2" + } + ] + }, + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1664:5:2", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "1671:3:2", + "type": "" + } + ], + "src": "1611:118:2" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1861:206:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1871:26:2", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1883:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1894:2:2", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1879:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1879:18:2" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1871:4:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1951:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1964:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1975:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1960:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "1960:17:2" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "1907:43:2" + }, + "nodeType": "YulFunctionCall", + "src": "1907:71:2" + }, + "nodeType": "YulExpressionStatement", + "src": "1907:71:2" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "2032:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2045:9:2" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2056:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2041:3:2" + }, + "nodeType": "YulFunctionCall", + "src": "2041:18:2" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "1988:43:2" + }, + "nodeType": "YulFunctionCall", + "src": "1988:72:2" + }, + "nodeType": "YulExpressionStatement", + "src": "1988:72:2" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1825:9:2", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1837:6:2", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1845:6:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1856:4:2", + "type": "" + } + ], + "src": "1735:332:2" + } + ] + }, + "contents": "{\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n}\n", + "id": 2, + "language": "Yul", + "name": "#utility.yul" + } + ], "immutableReferences": {}, "linkReferences": {}, - "object": "608060405234801561001057600080fd5b50600436106100415760003560e01c80632a1afcd91461004657806360fe47b1146100645780636d4ce63c14610092575b600080fd5b61004e6100b0565b6040518082815260200191505060405180910390f35b6100906004803603602081101561007a57600080fd5b81019080803590602001909291905050506100b6565b005b61009a610115565b6040518082815260200191505060405180910390f35b60005481565b7fc9db20adedc6cf2b5d25252b101ab03e124902a73fcb12b753f3d1aaa2d8f9f53382604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a18060008190555050565b6000805490509056fea264697066735822122027c2c4639230624c056430fb1d781389b791d56f4d6fe2ca494a46a171f5433164736f6c63430007060033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2A1AFCD9 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x60FE47B1 EQ PUSH2 0x64 JUMPI DUP1 PUSH4 0x6D4CE63C EQ PUSH2 0x92 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0xB0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x90 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xB6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x9A PUSH2 0x115 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH32 0xC9DB20ADEDC6CF2B5D25252B101AB03E124902A73FCB12B753F3D1AAA2D8F9F5 CALLER DUP3 PUSH1 0x40 MLOAD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x27 0xC2 0xC4 PUSH4 0x9230624C SDIV PUSH5 0x30FB1D7813 DUP10 0xB7 SWAP2 0xD5 PUSH16 0x4D6FE2CA494A46A171F5433164736F6C PUSH4 0x43000706 STOP CALLER ", - "sourceMap": "25:371:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;52:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;228:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;317:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;52:22;;;;:::o;228:85::-;267:21;274:10;286:1;267:21;;;;;;;;;;;;;;;;;;;;;;;;;;307:1;294:10;:14;;;;228:85;:::o;317:77::-;353:11;379:10;;372:17;;317:77;:::o" + "object": "608060405234801561001057600080fd5b50600436106100415760003560e01c80632a1afcd91461004657806360fe47b1146100645780636d4ce63c14610080575b600080fd5b61004e61009e565b60405161005b9190610109565b60405180910390f35b61007e60048036038101906100799190610155565b6100a4565b005b6100886100e7565b6040516100959190610109565b60405180910390f35b60005481565b7fc9db20adedc6cf2b5d25252b101ab03e124902a73fcb12b753f3d1aaa2d8f9f533826040516100d59291906101c3565b60405180910390a18060008190555050565b60008054905090565b6000819050919050565b610103816100f0565b82525050565b600060208201905061011e60008301846100fa565b92915050565b600080fd5b610132816100f0565b811461013d57600080fd5b50565b60008135905061014f81610129565b92915050565b60006020828403121561016b5761016a610124565b5b600061017984828501610140565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006101ad82610182565b9050919050565b6101bd816101a2565b82525050565b60006040820190506101d860008301856101b4565b6101e560208301846100fa565b939250505056fea2646970667358221220881b45c1cf7b5f362b3ed96b4caba8e72b8999be66620494dacdefbf7555593a64736f6c634300080a0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2A1AFCD9 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x60FE47B1 EQ PUSH2 0x64 JUMPI DUP1 PUSH4 0x6D4CE63C EQ PUSH2 0x80 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x9E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5B SWAP2 SWAP1 PUSH2 0x109 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x79 SWAP2 SWAP1 PUSH2 0x155 JUMP JUMPDEST PUSH2 0xA4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x88 PUSH2 0xE7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x95 SWAP2 SWAP1 PUSH2 0x109 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH32 0xC9DB20ADEDC6CF2B5D25252B101AB03E124902A73FCB12B753F3D1AAA2D8F9F5 CALLER DUP3 PUSH1 0x40 MLOAD PUSH2 0xD5 SWAP3 SWAP2 SWAP1 PUSH2 0x1C3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x103 DUP2 PUSH2 0xF0 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x11E PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xFA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x132 DUP2 PUSH2 0xF0 JUMP JUMPDEST DUP2 EQ PUSH2 0x13D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x14F DUP2 PUSH2 0x129 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16B JUMPI PUSH2 0x16A PUSH2 0x124 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x179 DUP5 DUP3 DUP6 ADD PUSH2 0x140 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AD DUP3 PUSH2 0x182 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1BD DUP2 PUSH2 0x1A2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x1D8 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x1B4 JUMP JUMPDEST PUSH2 0x1E5 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xFA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP9 SHL GASLIMIT 0xC1 0xCF PUSH28 0x5F362B3ED96B4CABA8E72B8999BE66620494DACDEFBF7555593A6473 PUSH16 0x6C634300080A00330000000000000000 ", + "sourceMap": "58:361:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;85:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;252:85;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;340:77;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;85:22;;;;:::o;252:85::-;291:21;298:10;310:1;291:21;;;;;;;:::i;:::-;;;;;;;;331:1;318:10;:14;;;;252:85;:::o;340:77::-;376:11;402:10;;395:17;;340:77;:::o;7::2:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;523:117::-;632:1;629;622:12;769:122;842:24;860:5;842:24;:::i;:::-;835:5;832:35;822:63;;881:1;878;871:12;822:63;769:122;:::o;897:139::-;943:5;981:6;968:20;959:29;;997:33;1024:5;997:33;:::i;:::-;897:139;;;;:::o;1042:329::-;1101:6;1150:2;1138:9;1129:7;1125:23;1121:32;1118:119;;;1156:79;;:::i;:::-;1118:119;1276:1;1301:53;1346:7;1337:6;1326:9;1322:22;1301:53;:::i;:::-;1291:63;;1247:117;1042:329;;;;:::o;1377:126::-;1414:7;1454:42;1447:5;1443:54;1432:65;;1377:126;;;:::o;1509:96::-;1546:7;1575:24;1593:5;1575:24;:::i;:::-;1564:35;;1509:96;;;:::o;1611:118::-;1698:24;1716:5;1698:24;:::i;:::-;1693:3;1686:37;1611:118;;:::o;1735:332::-;1856:4;1894:2;1883:9;1879:18;1871:26;;1907:71;1975:1;1964:9;1960:17;1951:6;1907:71;:::i;:::-;1988:72;2056:2;2045:9;2041:18;2032:6;1988:72;:::i;:::-;1735:332;;;;;:::o" }, "gasEstimates": { "creation": { - "codeDepositCost": "68000", + "codeDepositCost": "109200", "executionCost": "infinite", "totalCost": "infinite" }, "external": { - "get()": "1035", - "set(uint256)": "21593", - "storedData()": "983" + "get()": "2459", + "set(uint256)": "infinite", + "storedData()": "2407" } }, "legacyAssembly": { ".code": [ { - "begin": 25, - "end": 396, + "begin": 58, + "end": 419, "name": "PUSH", - "source": 0, + "source": 1, "value": "80" }, { - "begin": 25, - "end": 396, + "begin": 58, + "end": 419, "name": "PUSH", - "source": 0, + "source": 1, "value": "40" }, { - "begin": 25, - "end": 396, + "begin": 58, + "end": 419, "name": "MSTORE", - "source": 0 + "source": 1 }, { - "begin": 122, - "end": 224, + "begin": 154, + "end": 249, "name": "CALLVALUE", - "source": 0 + "source": 1 }, { - "begin": 122, - "end": 224, + "begin": 154, + "end": 249, "name": "DUP1", - "source": 0 + "source": 1 }, { - "begin": 122, - "end": 224, + "begin": 154, + "end": 249, "name": "ISZERO", - "source": 0 + "source": 1 }, { - "begin": 122, - "end": 224, + "begin": 154, + "end": 249, "name": "PUSH [tag]", - "source": 0, + "source": 1, "value": "1" }, { - "begin": 122, - "end": 224, + "begin": 154, + "end": 249, "name": "JUMPI", - "source": 0 + "source": 1 }, { - "begin": 122, - "end": 224, + "begin": 154, + "end": 249, "name": "PUSH", - "source": 0, + "source": 1, "value": "0" }, { - "begin": 122, - "end": 224, + "begin": 154, + "end": 249, "name": "DUP1", - "source": 0 + "source": 1 }, { - "begin": 122, - "end": 224, + "begin": 154, + "end": 249, "name": "REVERT", - "source": 0 + "source": 1 }, { - "begin": 122, - "end": 224, + "begin": 154, + "end": 249, "name": "tag", - "source": 0, + "source": 1, "value": "1" }, { - "begin": 122, - "end": 224, + "begin": 154, + "end": 249, "name": "JUMPDEST", - "source": 0 + "source": 1 }, { - "begin": 122, - "end": 224, + "begin": 154, + "end": 249, "name": "POP", - "source": 0 + "source": 1 }, { - "begin": 122, - "end": 224, + "begin": 154, + "end": 249, "name": "PUSH", - "source": 0, + "source": 1, "value": "40" }, { - "begin": 122, - "end": 224, + "begin": 154, + "end": 249, "name": "MLOAD", - "source": 0 + "source": 1 }, { - "begin": 122, - "end": 224, + "begin": 154, + "end": 249, "name": "PUSHSIZE", - "source": 0 + "source": 1 }, { - "begin": 122, - "end": 224, + "begin": 154, + "end": 249, "name": "CODESIZE", - "source": 0 + "source": 1 }, { - "begin": 122, - "end": 224, + "begin": 154, + "end": 249, "name": "SUB", - "source": 0 + "source": 1 }, { - "begin": 122, - "end": 224, + "begin": 154, + "end": 249, "name": "DUP1", - "source": 0 + "source": 1 }, { - "begin": 122, - "end": 224, + "begin": 154, + "end": 249, "name": "PUSHSIZE", - "source": 0 + "source": 1 }, { - "begin": 122, - "end": 224, + "begin": 154, + "end": 249, "name": "DUP4", - "source": 0 + "source": 1 }, { - "begin": 122, - "end": 224, + "begin": 154, + "end": 249, "name": "CODECOPY", - "source": 0 + "source": 1 }, { - "begin": 122, - "end": 224, + "begin": 154, + "end": 249, "name": "DUP2", - "source": 0 + "source": 1 }, { - "begin": 122, - "end": 224, + "begin": 154, + "end": 249, "name": "DUP2", - "source": 0 + "source": 1 }, { - "begin": 122, - "end": 224, + "begin": 154, + "end": 249, "name": "ADD", - "source": 0 + "source": 1 }, { - "begin": 122, - "end": 224, + "begin": 154, + "end": 249, "name": "PUSH", - "source": 0, + "source": 1, "value": "40" }, { - "begin": 122, - "end": 224, + "begin": 154, + "end": 249, "name": "MSTORE", - "source": 0 - }, - { - "begin": 122, - "end": 224, - "name": "PUSH", - "source": 0, - "value": "20" + "source": 1 }, { - "begin": 122, - "end": 224, + "begin": 154, + "end": 249, "name": "DUP2", - "source": 0 + "source": 1 }, { - "begin": 122, - "end": 224, - "name": "LT", - "source": 0 + "begin": 154, + "end": 249, + "name": "ADD", + "source": 1 }, { - "begin": 122, - "end": 224, - "name": "ISZERO", - "source": 0 + "begin": 154, + "end": 249, + "name": "SWAP1", + "source": 1 }, { - "begin": 122, - "end": 224, + "begin": 154, + "end": 249, "name": "PUSH [tag]", - "source": 0, + "source": 1, "value": "2" }, { - "begin": 122, - "end": 224, - "name": "JUMPI", - "source": 0 + "begin": 154, + "end": 249, + "name": "SWAP2", + "source": 1 }, { - "begin": 122, - "end": 224, - "name": "PUSH", - "source": 0, - "value": "0" + "begin": 154, + "end": 249, + "name": "SWAP1", + "source": 1 }, { - "begin": 122, - "end": 224, - "name": "DUP1", - "source": 0 + "begin": 154, + "end": 249, + "name": "PUSH [tag]", + "source": 1, + "value": "3" }, { - "begin": 122, - "end": 224, - "name": "REVERT", - "source": 0 + "begin": 154, + "end": 249, + "name": "JUMP", + "source": 1, + "value": "[in]" }, { - "begin": 122, - "end": 224, + "begin": 154, + "end": 249, "name": "tag", - "source": 0, + "source": 1, "value": "2" }, { - "begin": 122, - "end": 224, + "begin": 154, + "end": 249, "name": "JUMPDEST", - "source": 0 + "source": 1 }, { - "begin": 122, - "end": 224, - "name": "DUP2", - "source": 0 + "begin": 191, + "end": 218, + "name": "PUSH", + "source": 1, + "value": "C9DB20ADEDC6CF2B5D25252B101AB03E124902A73FCB12B753F3D1AAA2D8F9F5" }, { - "begin": 122, - "end": 224, - "name": "ADD", - "source": 0 + "begin": 198, + "end": 208, + "name": "CALLER", + "source": 1 }, { - "begin": 122, - "end": 224, - "name": "SWAP1", - "source": 0 + "begin": 210, + "end": 217, + "name": "DUP3", + "source": 1 }, { - "begin": 122, - "end": 224, - "name": "DUP1", - "source": 0 + "begin": 191, + "end": 218, + "name": "PUSH", + "source": 1, + "value": "40" }, { - "begin": 122, - "end": 224, - "name": "DUP1", - "source": 0 + "begin": 191, + "end": 218, + "name": "MLOAD", + "source": 1 }, { - "begin": 122, - "end": 224, - "name": "MLOAD", - "source": 0 + "begin": 191, + "end": 218, + "name": "PUSH [tag]", + "source": 1, + "value": "6" + }, + { + "begin": 191, + "end": 218, + "name": "SWAP3", + "source": 1 + }, + { + "begin": 191, + "end": 218, + "name": "SWAP2", + "source": 1 }, { - "begin": 122, - "end": 224, + "begin": 191, + "end": 218, "name": "SWAP1", - "source": 0 + "source": 1 + }, + { + "begin": 191, + "end": 218, + "name": "PUSH [tag]", + "source": 1, + "value": "7" + }, + { + "begin": 191, + "end": 218, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 191, + "end": 218, + "name": "tag", + "source": 1, + "value": "6" }, { - "begin": 122, - "end": 224, + "begin": 191, + "end": 218, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 191, + "end": 218, "name": "PUSH", - "source": 0, - "value": "20" + "source": 1, + "value": "40" }, { - "begin": 122, - "end": 224, - "name": "ADD", - "source": 0 + "begin": 191, + "end": 218, + "name": "MLOAD", + "source": 1 + }, + { + "begin": 191, + "end": 218, + "name": "DUP1", + "source": 1 + }, + { + "begin": 191, + "end": 218, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 191, + "end": 218, + "name": "SUB", + "source": 1 }, { - "begin": 122, - "end": 224, + "begin": 191, + "end": 218, "name": "SWAP1", - "source": 0 + "source": 1 }, { - "begin": 122, - "end": 224, - "name": "SWAP3", - "source": 0 + "begin": 191, + "end": 218, + "name": "LOG1", + "source": 1 }, { - "begin": 122, - "end": 224, - "name": "SWAP2", - "source": 0 + "begin": 237, + "end": 244, + "name": "DUP1", + "source": 1 + }, + { + "begin": 224, + "end": 234, + "name": "PUSH", + "source": 1, + "value": "0" }, { - "begin": 122, - "end": 224, + "begin": 224, + "end": 244, + "name": "DUP2", + "source": 1 + }, + { + "begin": 224, + "end": 244, "name": "SWAP1", - "source": 0 + "source": 1 }, { - "begin": 122, - "end": 224, - "name": "POP", - "source": 0 + "begin": 224, + "end": 244, + "name": "SSTORE", + "source": 1 }, { - "begin": 122, - "end": 224, + "begin": 224, + "end": 244, "name": "POP", - "source": 0 + "source": 1 }, { - "begin": 122, - "end": 224, + "begin": 154, + "end": 249, "name": "POP", - "source": 0 + "source": 1 }, { - "begin": 166, - "end": 193, - "name": "PUSH", - "source": 0, - "value": "C9DB20ADEDC6CF2B5D25252B101AB03E124902A73FCB12B753F3D1AAA2D8F9F5" + "begin": 58, + "end": 419, + "name": "PUSH [tag]", + "source": 1, + "value": "8" }, { - "begin": 173, - "end": 183, - "name": "CALLER", - "source": 0 + "begin": 58, + "end": 419, + "name": "JUMP", + "source": 1 }, { - "begin": 185, - "end": 192, - "name": "DUP3", - "source": 0 + "begin": 88, + "end": 205, + "name": "tag", + "source": 2, + "value": "10" }, { - "begin": 166, - "end": 193, - "name": "PUSH", - "source": 0, - "value": "40" + "begin": 88, + "end": 205, + "name": "JUMPDEST", + "source": 2 }, { - "begin": 166, - "end": 193, - "name": "MLOAD", - "source": 0 + "begin": 197, + "end": 198, + "name": "PUSH", + "source": 2, + "value": "0" }, { - "begin": 166, - "end": 193, + "begin": 194, + "end": 195, "name": "DUP1", - "source": 0 + "source": 2 }, { - "begin": 166, - "end": 193, - "name": "DUP4", - "source": 0 + "begin": 187, + "end": 199, + "name": "REVERT", + "source": 2 }, { - "begin": 166, - "end": 193, - "name": "PUSH", - "source": 0, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + "begin": 334, + "end": 411, + "name": "tag", + "source": 2, + "value": "12" }, { - "begin": 166, - "end": 193, - "name": "AND", - "source": 0 + "begin": 334, + "end": 411, + "name": "JUMPDEST", + "source": 2 }, { - "begin": 166, - "end": 193, + "begin": 371, + "end": 378, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 400, + "end": 405, "name": "DUP2", - "source": 0 + "source": 2 }, { - "begin": 166, - "end": 193, - "name": "MSTORE", - "source": 0 + "begin": 389, + "end": 405, + "name": "SWAP1", + "source": 2 }, { - "begin": 166, - "end": 193, - "name": "PUSH", - "source": 0, - "value": "20" + "begin": 389, + "end": 405, + "name": "POP", + "source": 2 }, { - "begin": 166, - "end": 193, - "name": "ADD", - "source": 0 + "begin": 334, + "end": 411, + "name": "SWAP2", + "source": 2 }, { - "begin": 166, - "end": 193, - "name": "DUP3", - "source": 0 + "begin": 334, + "end": 411, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 334, + "end": 411, + "name": "POP", + "source": 2 }, { - "begin": 166, - "end": 193, + "begin": 334, + "end": 411, + "name": "JUMP", + "source": 2, + "value": "[out]" + }, + { + "begin": 417, + "end": 539, + "name": "tag", + "source": 2, + "value": "13" + }, + { + "begin": 417, + "end": 539, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 490, + "end": 514, + "name": "PUSH [tag]", + "source": 2, + "value": "25" + }, + { + "begin": 508, + "end": 513, "name": "DUP2", - "source": 0 + "source": 2 }, { - "begin": 166, - "end": 193, - "name": "MSTORE", - "source": 0 + "begin": 490, + "end": 514, + "name": "PUSH [tag]", + "source": 2, + "value": "12" }, { - "begin": 166, - "end": 193, - "name": "PUSH", - "source": 0, - "value": "20" + "begin": 490, + "end": 514, + "name": "JUMP", + "source": 2, + "value": "[in]" }, { - "begin": 166, - "end": 193, - "name": "ADD", - "source": 0 + "begin": 490, + "end": 514, + "name": "tag", + "source": 2, + "value": "25" }, { - "begin": 166, - "end": 193, - "name": "SWAP3", - "source": 0 + "begin": 490, + "end": 514, + "name": "JUMPDEST", + "source": 2 }, { - "begin": 166, - "end": 193, - "name": "POP", - "source": 0 + "begin": 483, + "end": 488, + "name": "DUP2", + "source": 2 }, { - "begin": 166, - "end": 193, - "name": "POP", - "source": 0 + "begin": 480, + "end": 515, + "name": "EQ", + "source": 2 }, { - "begin": 166, - "end": 193, - "name": "POP", - "source": 0 + "begin": 470, + "end": 533, + "name": "PUSH [tag]", + "source": 2, + "value": "26" }, { - "begin": 166, - "end": 193, - "name": "PUSH", - "source": 0, - "value": "40" + "begin": 470, + "end": 533, + "name": "JUMPI", + "source": 2 }, { - "begin": 166, - "end": 193, - "name": "MLOAD", - "source": 0 + "begin": 529, + "end": 530, + "name": "PUSH", + "source": 2, + "value": "0" }, { - "begin": 166, - "end": 193, + "begin": 526, + "end": 527, "name": "DUP1", - "source": 0 + "source": 2 }, { - "begin": 166, - "end": 193, - "name": "SWAP2", - "source": 0 + "begin": 519, + "end": 531, + "name": "REVERT", + "source": 2 }, { - "begin": 166, - "end": 193, - "name": "SUB", - "source": 0 + "begin": 470, + "end": 533, + "name": "tag", + "source": 2, + "value": "26" }, { - "begin": 166, - "end": 193, - "name": "SWAP1", - "source": 0 + "begin": 470, + "end": 533, + "name": "JUMPDEST", + "source": 2 }, { - "begin": 166, - "end": 193, - "name": "LOG1", - "source": 0 + "begin": 417, + "end": 539, + "name": "POP", + "source": 2 }, { - "begin": 212, - "end": 219, - "name": "DUP1", - "source": 0 + "begin": 417, + "end": 539, + "name": "JUMP", + "source": 2, + "value": "[out]" + }, + { + "begin": 545, + "end": 688, + "name": "tag", + "source": 2, + "value": "14" + }, + { + "begin": 545, + "end": 688, + "name": "JUMPDEST", + "source": 2 }, { - "begin": 199, - "end": 209, + "begin": 602, + "end": 607, "name": "PUSH", - "source": 0, + "source": 2, "value": "0" }, { - "begin": 199, - "end": 219, + "begin": 633, + "end": 639, "name": "DUP2", - "source": 0 + "source": 2 + }, + { + "begin": 627, + "end": 640, + "name": "MLOAD", + "source": 2 }, { - "begin": 199, - "end": 219, + "begin": 618, + "end": 640, "name": "SWAP1", - "source": 0 + "source": 2 }, { - "begin": 199, - "end": 219, - "name": "SSTORE", - "source": 0 + "begin": 618, + "end": 640, + "name": "POP", + "source": 2 + }, + { + "begin": 649, + "end": 682, + "name": "PUSH [tag]", + "source": 2, + "value": "28" + }, + { + "begin": 676, + "end": 681, + "name": "DUP2", + "source": 2 + }, + { + "begin": 649, + "end": 682, + "name": "PUSH [tag]", + "source": 2, + "value": "13" + }, + { + "begin": 649, + "end": 682, + "name": "JUMP", + "source": 2, + "value": "[in]" + }, + { + "begin": 649, + "end": 682, + "name": "tag", + "source": 2, + "value": "28" }, { - "begin": 199, - "end": 219, + "begin": 649, + "end": 682, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 545, + "end": 688, + "name": "SWAP3", + "source": 2 + }, + { + "begin": 545, + "end": 688, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 545, + "end": 688, "name": "POP", - "source": 0 + "source": 2 }, { - "begin": 122, - "end": 224, + "begin": 545, + "end": 688, "name": "POP", - "source": 0 + "source": 2 }, { - "begin": 25, - "end": 396, - "name": "PUSH #[$]", - "source": 0, - "value": "0000000000000000000000000000000000000000000000000000000000000000" + "begin": 545, + "end": 688, + "name": "JUMP", + "source": 2, + "value": "[out]" }, { - "begin": 25, - "end": 396, - "name": "DUP1", - "source": 0 + "begin": 694, + "end": 1045, + "name": "tag", + "source": 2, + "value": "3" }, { - "begin": 25, - "end": 396, - "name": "PUSH [$]", - "source": 0, - "value": "0000000000000000000000000000000000000000000000000000000000000000" + "begin": 694, + "end": 1045, + "name": "JUMPDEST", + "source": 2 }, { - "begin": 25, - "end": 396, + "begin": 764, + "end": 770, "name": "PUSH", - "source": 0, + "source": 2, "value": "0" }, { - "begin": 25, - "end": 396, - "name": "CODECOPY", - "source": 0 + "begin": 813, + "end": 815, + "name": "PUSH", + "source": 2, + "value": "20" }, { - "begin": 25, - "end": 396, - "name": "PUSH", - "source": 0, - "value": "0" + "begin": 801, + "end": 810, + "name": "DUP3", + "source": 2 }, { - "begin": 25, - "end": 396, - "name": "RETURN", - "source": 0 - } - ], - ".data": { - "0": { - ".auxdata": "a264697066735822122027c2c4639230624c056430fb1d781389b791d56f4d6fe2ca494a46a171f5433164736f6c63430007060033", - ".code": [ - { - "begin": 25, - "end": 396, - "name": "PUSH", - "source": 0, - "value": "80" - }, - { - "begin": 25, - "end": 396, - "name": "PUSH", - "source": 0, - "value": "40" - }, - { - "begin": 25, - "end": 396, - "name": "MSTORE", - "source": 0 - }, - { - "begin": 25, - "end": 396, - "name": "CALLVALUE", - "source": 0 - }, - { - "begin": 25, - "end": 396, - "name": "DUP1", - "source": 0 - }, - { - "begin": 25, - "end": 396, - "name": "ISZERO", - "source": 0 - }, + "begin": 792, + "end": 799, + "name": "DUP5", + "source": 2 + }, + { + "begin": 788, + "end": 811, + "name": "SUB", + "source": 2 + }, + { + "begin": 784, + "end": 816, + "name": "SLT", + "source": 2 + }, + { + "begin": 781, + "end": 900, + "name": "ISZERO", + "source": 2 + }, + { + "begin": 781, + "end": 900, + "name": "PUSH [tag]", + "source": 2, + "value": "30" + }, + { + "begin": 781, + "end": 900, + "name": "JUMPI", + "source": 2 + }, + { + "begin": 819, + "end": 898, + "name": "PUSH [tag]", + "source": 2, + "value": "31" + }, + { + "begin": 819, + "end": 898, + "name": "PUSH [tag]", + "source": 2, + "value": "10" + }, + { + "begin": 819, + "end": 898, + "name": "JUMP", + "source": 2, + "value": "[in]" + }, + { + "begin": 819, + "end": 898, + "name": "tag", + "source": 2, + "value": "31" + }, + { + "begin": 819, + "end": 898, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 781, + "end": 900, + "name": "tag", + "source": 2, + "value": "30" + }, + { + "begin": 781, + "end": 900, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 939, + "end": 940, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 964, + "end": 1028, + "name": "PUSH [tag]", + "source": 2, + "value": "32" + }, + { + "begin": 1020, + "end": 1027, + "name": "DUP5", + "source": 2 + }, + { + "begin": 1011, + "end": 1017, + "name": "DUP3", + "source": 2 + }, + { + "begin": 1000, + "end": 1009, + "name": "DUP6", + "source": 2 + }, + { + "begin": 996, + "end": 1018, + "name": "ADD", + "source": 2 + }, + { + "begin": 964, + "end": 1028, + "name": "PUSH [tag]", + "source": 2, + "value": "14" + }, + { + "begin": 964, + "end": 1028, + "name": "JUMP", + "source": 2, + "value": "[in]" + }, + { + "begin": 964, + "end": 1028, + "name": "tag", + "source": 2, + "value": "32" + }, + { + "begin": 964, + "end": 1028, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 954, + "end": 1028, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 954, + "end": 1028, + "name": "POP", + "source": 2 + }, + { + "begin": 910, + "end": 1038, + "name": "POP", + "source": 2 + }, + { + "begin": 694, + "end": 1045, + "name": "SWAP3", + "source": 2 + }, + { + "begin": 694, + "end": 1045, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 694, + "end": 1045, + "name": "POP", + "source": 2 + }, + { + "begin": 694, + "end": 1045, + "name": "POP", + "source": 2 + }, + { + "begin": 694, + "end": 1045, + "name": "JUMP", + "source": 2, + "value": "[out]" + }, + { + "begin": 1051, + "end": 1177, + "name": "tag", + "source": 2, + "value": "15" + }, + { + "begin": 1051, + "end": 1177, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1088, + "end": 1095, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 1128, + "end": 1170, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1121, + "end": 1126, + "name": "DUP3", + "source": 2 + }, + { + "begin": 1117, + "end": 1171, + "name": "AND", + "source": 2 + }, + { + "begin": 1106, + "end": 1171, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 1106, + "end": 1171, + "name": "POP", + "source": 2 + }, + { + "begin": 1051, + "end": 1177, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 1051, + "end": 1177, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 1051, + "end": 1177, + "name": "POP", + "source": 2 + }, + { + "begin": 1051, + "end": 1177, + "name": "JUMP", + "source": 2, + "value": "[out]" + }, + { + "begin": 1183, + "end": 1279, + "name": "tag", + "source": 2, + "value": "16" + }, + { + "begin": 1183, + "end": 1279, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1220, + "end": 1227, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 1249, + "end": 1273, + "name": "PUSH [tag]", + "source": 2, + "value": "35" + }, + { + "begin": 1267, + "end": 1272, + "name": "DUP3", + "source": 2 + }, + { + "begin": 1249, + "end": 1273, + "name": "PUSH [tag]", + "source": 2, + "value": "15" + }, + { + "begin": 1249, + "end": 1273, + "name": "JUMP", + "source": 2, + "value": "[in]" + }, + { + "begin": 1249, + "end": 1273, + "name": "tag", + "source": 2, + "value": "35" + }, + { + "begin": 1249, + "end": 1273, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1238, + "end": 1273, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 1238, + "end": 1273, + "name": "POP", + "source": 2 + }, + { + "begin": 1183, + "end": 1279, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 1183, + "end": 1279, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 1183, + "end": 1279, + "name": "POP", + "source": 2 + }, + { + "begin": 1183, + "end": 1279, + "name": "JUMP", + "source": 2, + "value": "[out]" + }, + { + "begin": 1285, + "end": 1403, + "name": "tag", + "source": 2, + "value": "17" + }, + { + "begin": 1285, + "end": 1403, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1372, + "end": 1396, + "name": "PUSH [tag]", + "source": 2, + "value": "37" + }, + { + "begin": 1390, + "end": 1395, + "name": "DUP2", + "source": 2 + }, + { + "begin": 1372, + "end": 1396, + "name": "PUSH [tag]", + "source": 2, + "value": "16" + }, + { + "begin": 1372, + "end": 1396, + "name": "JUMP", + "source": 2, + "value": "[in]" + }, + { + "begin": 1372, + "end": 1396, + "name": "tag", + "source": 2, + "value": "37" + }, + { + "begin": 1372, + "end": 1396, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1367, + "end": 1370, + "name": "DUP3", + "source": 2 + }, + { + "begin": 1360, + "end": 1397, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 1285, + "end": 1403, + "name": "POP", + "source": 2 + }, + { + "begin": 1285, + "end": 1403, + "name": "POP", + "source": 2 + }, + { + "begin": 1285, + "end": 1403, + "name": "JUMP", + "source": 2, + "value": "[out]" + }, + { + "begin": 1409, + "end": 1527, + "name": "tag", + "source": 2, + "value": "18" + }, + { + "begin": 1409, + "end": 1527, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1496, + "end": 1520, + "name": "PUSH [tag]", + "source": 2, + "value": "39" + }, + { + "begin": 1514, + "end": 1519, + "name": "DUP2", + "source": 2 + }, + { + "begin": 1496, + "end": 1520, + "name": "PUSH [tag]", + "source": 2, + "value": "12" + }, + { + "begin": 1496, + "end": 1520, + "name": "JUMP", + "source": 2, + "value": "[in]" + }, + { + "begin": 1496, + "end": 1520, + "name": "tag", + "source": 2, + "value": "39" + }, + { + "begin": 1496, + "end": 1520, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1491, + "end": 1494, + "name": "DUP3", + "source": 2 + }, + { + "begin": 1484, + "end": 1521, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 1409, + "end": 1527, + "name": "POP", + "source": 2 + }, + { + "begin": 1409, + "end": 1527, + "name": "POP", + "source": 2 + }, + { + "begin": 1409, + "end": 1527, + "name": "JUMP", + "source": 2, + "value": "[out]" + }, + { + "begin": 1533, + "end": 1865, + "name": "tag", + "source": 2, + "value": "7" + }, + { + "begin": 1533, + "end": 1865, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1654, + "end": 1658, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 1692, + "end": 1694, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 1681, + "end": 1690, + "name": "DUP3", + "source": 2 + }, + { + "begin": 1677, + "end": 1695, + "name": "ADD", + "source": 2 + }, + { + "begin": 1669, + "end": 1695, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 1669, + "end": 1695, + "name": "POP", + "source": 2 + }, + { + "begin": 1705, + "end": 1776, + "name": "PUSH [tag]", + "source": 2, + "value": "41" + }, + { + "begin": 1773, + "end": 1774, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 1762, + "end": 1771, + "name": "DUP4", + "source": 2 + }, + { + "begin": 1758, + "end": 1775, + "name": "ADD", + "source": 2 + }, + { + "begin": 1749, + "end": 1755, + "name": "DUP6", + "source": 2 + }, + { + "begin": 1705, + "end": 1776, + "name": "PUSH [tag]", + "source": 2, + "value": "17" + }, + { + "begin": 1705, + "end": 1776, + "name": "JUMP", + "source": 2, + "value": "[in]" + }, + { + "begin": 1705, + "end": 1776, + "name": "tag", + "source": 2, + "value": "41" + }, + { + "begin": 1705, + "end": 1776, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1786, + "end": 1858, + "name": "PUSH [tag]", + "source": 2, + "value": "42" + }, + { + "begin": 1854, + "end": 1856, + "name": "PUSH", + "source": 2, + "value": "20" + }, + { + "begin": 1843, + "end": 1852, + "name": "DUP4", + "source": 2 + }, + { + "begin": 1839, + "end": 1857, + "name": "ADD", + "source": 2 + }, + { + "begin": 1830, + "end": 1836, + "name": "DUP5", + "source": 2 + }, + { + "begin": 1786, + "end": 1858, + "name": "PUSH [tag]", + "source": 2, + "value": "18" + }, + { + "begin": 1786, + "end": 1858, + "name": "JUMP", + "source": 2, + "value": "[in]" + }, + { + "begin": 1786, + "end": 1858, + "name": "tag", + "source": 2, + "value": "42" + }, + { + "begin": 1786, + "end": 1858, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1533, + "end": 1865, + "name": "SWAP4", + "source": 2 + }, + { + "begin": 1533, + "end": 1865, + "name": "SWAP3", + "source": 2 + }, + { + "begin": 1533, + "end": 1865, + "name": "POP", + "source": 2 + }, + { + "begin": 1533, + "end": 1865, + "name": "POP", + "source": 2 + }, + { + "begin": 1533, + "end": 1865, + "name": "POP", + "source": 2 + }, + { + "begin": 1533, + "end": 1865, + "name": "JUMP", + "source": 2, + "value": "[out]" + }, + { + "begin": 58, + "end": 419, + "name": "tag", + "source": 1, + "value": "8" + }, + { + "begin": 58, + "end": 419, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 58, + "end": 419, + "name": "PUSH #[$]", + "source": 1, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 58, + "end": 419, + "name": "DUP1", + "source": 1 + }, + { + "begin": 58, + "end": 419, + "name": "PUSH [$]", + "source": 1, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 58, + "end": 419, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 58, + "end": 419, + "name": "CODECOPY", + "source": 1 + }, + { + "begin": 58, + "end": 419, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 58, + "end": 419, + "name": "RETURN", + "source": 1 + } + ], + ".data": { + "0": { + ".auxdata": "a2646970667358221220881b45c1cf7b5f362b3ed96b4caba8e72b8999be66620494dacdefbf7555593a64736f6c634300080a0033", + ".code": [ + { + "begin": 58, + "end": 419, + "name": "PUSH", + "source": 1, + "value": "80" + }, + { + "begin": 58, + "end": 419, + "name": "PUSH", + "source": 1, + "value": "40" + }, + { + "begin": 58, + "end": 419, + "name": "MSTORE", + "source": 1 + }, + { + "begin": 58, + "end": 419, + "name": "CALLVALUE", + "source": 1 + }, + { + "begin": 58, + "end": 419, + "name": "DUP1", + "source": 1 + }, + { + "begin": 58, + "end": 419, + "name": "ISZERO", + "source": 1 + }, + { + "begin": 58, + "end": 419, + "name": "PUSH [tag]", + "source": 1, + "value": "1" + }, + { + "begin": 58, + "end": 419, + "name": "JUMPI", + "source": 1 + }, + { + "begin": 58, + "end": 419, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 58, + "end": 419, + "name": "DUP1", + "source": 1 + }, + { + "begin": 58, + "end": 419, + "name": "REVERT", + "source": 1 + }, + { + "begin": 58, + "end": 419, + "name": "tag", + "source": 1, + "value": "1" + }, + { + "begin": 58, + "end": 419, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 58, + "end": 419, + "name": "POP", + "source": 1 + }, + { + "begin": 58, + "end": 419, + "name": "PUSH", + "source": 1, + "value": "4" + }, + { + "begin": 58, + "end": 419, + "name": "CALLDATASIZE", + "source": 1 + }, + { + "begin": 58, + "end": 419, + "name": "LT", + "source": 1 + }, + { + "begin": 58, + "end": 419, + "name": "PUSH [tag]", + "source": 1, + "value": "2" + }, + { + "begin": 58, + "end": 419, + "name": "JUMPI", + "source": 1 + }, + { + "begin": 58, + "end": 419, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 58, + "end": 419, + "name": "CALLDATALOAD", + "source": 1 + }, + { + "begin": 58, + "end": 419, + "name": "PUSH", + "source": 1, + "value": "E0" + }, + { + "begin": 58, + "end": 419, + "name": "SHR", + "source": 1 + }, + { + "begin": 58, + "end": 419, + "name": "DUP1", + "source": 1 + }, + { + "begin": 58, + "end": 419, + "name": "PUSH", + "source": 1, + "value": "2A1AFCD9" + }, + { + "begin": 58, + "end": 419, + "name": "EQ", + "source": 1 + }, + { + "begin": 58, + "end": 419, + "name": "PUSH [tag]", + "source": 1, + "value": "3" + }, + { + "begin": 58, + "end": 419, + "name": "JUMPI", + "source": 1 + }, + { + "begin": 58, + "end": 419, + "name": "DUP1", + "source": 1 + }, + { + "begin": 58, + "end": 419, + "name": "PUSH", + "source": 1, + "value": "60FE47B1" + }, + { + "begin": 58, + "end": 419, + "name": "EQ", + "source": 1 + }, + { + "begin": 58, + "end": 419, + "name": "PUSH [tag]", + "source": 1, + "value": "4" + }, + { + "begin": 58, + "end": 419, + "name": "JUMPI", + "source": 1 + }, + { + "begin": 58, + "end": 419, + "name": "DUP1", + "source": 1 + }, + { + "begin": 58, + "end": 419, + "name": "PUSH", + "source": 1, + "value": "6D4CE63C" + }, + { + "begin": 58, + "end": 419, + "name": "EQ", + "source": 1 + }, + { + "begin": 58, + "end": 419, + "name": "PUSH [tag]", + "source": 1, + "value": "5" + }, + { + "begin": 58, + "end": 419, + "name": "JUMPI", + "source": 1 + }, + { + "begin": 58, + "end": 419, + "name": "tag", + "source": 1, + "value": "2" + }, + { + "begin": 58, + "end": 419, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 58, + "end": 419, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 58, + "end": 419, + "name": "DUP1", + "source": 1 + }, + { + "begin": 58, + "end": 419, + "name": "REVERT", + "source": 1 + }, + { + "begin": 85, + "end": 107, + "name": "tag", + "source": 1, + "value": "3" + }, + { + "begin": 85, + "end": 107, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 85, + "end": 107, + "name": "PUSH [tag]", + "source": 1, + "value": "6" + }, + { + "begin": 85, + "end": 107, + "name": "PUSH [tag]", + "source": 1, + "value": "7" + }, + { + "begin": 85, + "end": 107, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 85, + "end": 107, + "name": "tag", + "source": 1, + "value": "6" + }, + { + "begin": 85, + "end": 107, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 85, + "end": 107, + "name": "PUSH", + "source": 1, + "value": "40" + }, + { + "begin": 85, + "end": 107, + "name": "MLOAD", + "source": 1 + }, + { + "begin": 85, + "end": 107, + "name": "PUSH [tag]", + "source": 1, + "value": "8" + }, + { + "begin": 85, + "end": 107, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 85, + "end": 107, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 85, + "end": 107, + "name": "PUSH [tag]", + "source": 1, + "value": "9" + }, + { + "begin": 85, + "end": 107, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 85, + "end": 107, + "name": "tag", + "source": 1, + "value": "8" + }, + { + "begin": 85, + "end": 107, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 85, + "end": 107, + "name": "PUSH", + "source": 1, + "value": "40" + }, + { + "begin": 85, + "end": 107, + "name": "MLOAD", + "source": 1 + }, + { + "begin": 85, + "end": 107, + "name": "DUP1", + "source": 1 + }, + { + "begin": 85, + "end": 107, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 85, + "end": 107, + "name": "SUB", + "source": 1 + }, + { + "begin": 85, + "end": 107, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 85, + "end": 107, + "name": "RETURN", + "source": 1 + }, + { + "begin": 252, + "end": 337, + "name": "tag", + "source": 1, + "value": "4" + }, + { + "begin": 252, + "end": 337, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 252, + "end": 337, + "name": "PUSH [tag]", + "source": 1, + "value": "10" + }, + { + "begin": 252, + "end": 337, + "name": "PUSH", + "source": 1, + "value": "4" + }, + { + "begin": 252, + "end": 337, + "name": "DUP1", + "source": 1 + }, + { + "begin": 252, + "end": 337, + "name": "CALLDATASIZE", + "source": 1 + }, + { + "begin": 252, + "end": 337, + "name": "SUB", + "source": 1 + }, + { + "begin": 252, + "end": 337, + "name": "DUP2", + "source": 1 + }, + { + "begin": 252, + "end": 337, + "name": "ADD", + "source": 1 + }, + { + "begin": 252, + "end": 337, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 252, + "end": 337, + "name": "PUSH [tag]", + "source": 1, + "value": "11" + }, + { + "begin": 252, + "end": 337, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 252, + "end": 337, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 252, + "end": 337, + "name": "PUSH [tag]", + "source": 1, + "value": "12" + }, + { + "begin": 252, + "end": 337, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 252, + "end": 337, + "name": "tag", + "source": 1, + "value": "11" + }, + { + "begin": 252, + "end": 337, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 252, + "end": 337, + "name": "PUSH [tag]", + "source": 1, + "value": "13" + }, + { + "begin": 252, + "end": 337, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 252, + "end": 337, + "name": "tag", + "source": 1, + "value": "10" + }, + { + "begin": 252, + "end": 337, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 252, + "end": 337, + "name": "STOP", + "source": 1 + }, + { + "begin": 340, + "end": 417, + "name": "tag", + "source": 1, + "value": "5" + }, + { + "begin": 340, + "end": 417, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 340, + "end": 417, + "name": "PUSH [tag]", + "source": 1, + "value": "14" + }, + { + "begin": 340, + "end": 417, + "name": "PUSH [tag]", + "source": 1, + "value": "15" + }, + { + "begin": 340, + "end": 417, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 340, + "end": 417, + "name": "tag", + "source": 1, + "value": "14" + }, + { + "begin": 340, + "end": 417, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 340, + "end": 417, + "name": "PUSH", + "source": 1, + "value": "40" + }, + { + "begin": 340, + "end": 417, + "name": "MLOAD", + "source": 1 + }, + { + "begin": 340, + "end": 417, + "name": "PUSH [tag]", + "source": 1, + "value": "16" + }, + { + "begin": 340, + "end": 417, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 340, + "end": 417, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 340, + "end": 417, + "name": "PUSH [tag]", + "source": 1, + "value": "9" + }, + { + "begin": 340, + "end": 417, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 340, + "end": 417, + "name": "tag", + "source": 1, + "value": "16" + }, + { + "begin": 340, + "end": 417, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 340, + "end": 417, + "name": "PUSH", + "source": 1, + "value": "40" + }, + { + "begin": 340, + "end": 417, + "name": "MLOAD", + "source": 1 + }, + { + "begin": 340, + "end": 417, + "name": "DUP1", + "source": 1 + }, + { + "begin": 340, + "end": 417, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 340, + "end": 417, + "name": "SUB", + "source": 1 + }, + { + "begin": 340, + "end": 417, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 340, + "end": 417, + "name": "RETURN", + "source": 1 + }, { - "begin": 25, - "end": 396, - "name": "PUSH [tag]", - "source": 0, - "value": "1" + "begin": 85, + "end": 107, + "name": "tag", + "source": 1, + "value": "7" }, { - "begin": 25, - "end": 396, - "name": "JUMPI", - "source": 0 + "begin": 85, + "end": 107, + "name": "JUMPDEST", + "source": 1 }, { - "begin": 25, - "end": 396, + "begin": 85, + "end": 107, "name": "PUSH", - "source": 0, + "source": 1, "value": "0" }, { - "begin": 25, - "end": 396, - "name": "DUP1", - "source": 0 + "begin": 85, + "end": 107, + "name": "SLOAD", + "source": 1 }, { - "begin": 25, - "end": 396, - "name": "REVERT", - "source": 0 + "begin": 85, + "end": 107, + "name": "DUP2", + "source": 1 + }, + { + "begin": 85, + "end": 107, + "name": "JUMP", + "source": 1, + "value": "[out]" }, { - "begin": 25, - "end": 396, + "begin": 252, + "end": 337, "name": "tag", - "source": 0, - "value": "1" + "source": 1, + "value": "13" }, { - "begin": 25, - "end": 396, + "begin": 252, + "end": 337, "name": "JUMPDEST", - "source": 0 + "source": 1 }, { - "begin": 25, - "end": 396, - "name": "POP", - "source": 0 + "begin": 291, + "end": 312, + "name": "PUSH", + "source": 1, + "value": "C9DB20ADEDC6CF2B5D25252B101AB03E124902A73FCB12B753F3D1AAA2D8F9F5" + }, + { + "begin": 298, + "end": 308, + "name": "CALLER", + "source": 1 + }, + { + "begin": 310, + "end": 311, + "name": "DUP3", + "source": 1 }, { - "begin": 25, - "end": 396, + "begin": 291, + "end": 312, "name": "PUSH", - "source": 0, - "value": "4" + "source": 1, + "value": "40" }, { - "begin": 25, - "end": 396, - "name": "CALLDATASIZE", - "source": 0 + "begin": 291, + "end": 312, + "name": "MLOAD", + "source": 1 }, { - "begin": 25, - "end": 396, - "name": "LT", - "source": 0 + "begin": 291, + "end": 312, + "name": "PUSH [tag]", + "source": 1, + "value": "18" }, { - "begin": 25, - "end": 396, + "begin": 291, + "end": 312, + "name": "SWAP3", + "source": 1 + }, + { + "begin": 291, + "end": 312, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 291, + "end": 312, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 291, + "end": 312, "name": "PUSH [tag]", - "source": 0, - "value": "2" + "source": 1, + "value": "19" }, { - "begin": 25, - "end": 396, - "name": "JUMPI", - "source": 0 + "begin": 291, + "end": 312, + "name": "JUMP", + "source": 1, + "value": "[in]" }, { - "begin": 25, - "end": 396, - "name": "PUSH", - "source": 0, - "value": "0" + "begin": 291, + "end": 312, + "name": "tag", + "source": 1, + "value": "18" }, { - "begin": 25, - "end": 396, - "name": "CALLDATALOAD", - "source": 0 + "begin": 291, + "end": 312, + "name": "JUMPDEST", + "source": 1 }, { - "begin": 25, - "end": 396, + "begin": 291, + "end": 312, "name": "PUSH", - "source": 0, - "value": "E0" + "source": 1, + "value": "40" }, { - "begin": 25, - "end": 396, - "name": "SHR", - "source": 0 + "begin": 291, + "end": 312, + "name": "MLOAD", + "source": 1 }, { - "begin": 25, - "end": 396, + "begin": 291, + "end": 312, "name": "DUP1", - "source": 0 + "source": 1 }, { - "begin": 25, - "end": 396, - "name": "PUSH", - "source": 0, - "value": "2A1AFCD9" + "begin": 291, + "end": 312, + "name": "SWAP2", + "source": 1 }, { - "begin": 25, - "end": 396, - "name": "EQ", - "source": 0 + "begin": 291, + "end": 312, + "name": "SUB", + "source": 1 }, { - "begin": 25, - "end": 396, - "name": "PUSH [tag]", - "source": 0, - "value": "3" + "begin": 291, + "end": 312, + "name": "SWAP1", + "source": 1 }, { - "begin": 25, - "end": 396, - "name": "JUMPI", - "source": 0 + "begin": 291, + "end": 312, + "name": "LOG1", + "source": 1 }, { - "begin": 25, - "end": 396, + "begin": 331, + "end": 332, "name": "DUP1", - "source": 0 + "source": 1 }, { - "begin": 25, - "end": 396, + "begin": 318, + "end": 328, "name": "PUSH", - "source": 0, - "value": "60FE47B1" + "source": 1, + "value": "0" }, { - "begin": 25, - "end": 396, - "name": "EQ", - "source": 0 + "begin": 318, + "end": 332, + "name": "DUP2", + "source": 1 }, { - "begin": 25, - "end": 396, - "name": "PUSH [tag]", - "source": 0, - "value": "4" + "begin": 318, + "end": 332, + "name": "SWAP1", + "source": 1 }, { - "begin": 25, - "end": 396, - "name": "JUMPI", - "source": 0 + "begin": 318, + "end": 332, + "name": "SSTORE", + "source": 1 }, { - "begin": 25, - "end": 396, - "name": "DUP1", - "source": 0 + "begin": 318, + "end": 332, + "name": "POP", + "source": 1 + }, + { + "begin": 252, + "end": 337, + "name": "POP", + "source": 1 + }, + { + "begin": 252, + "end": 337, + "name": "JUMP", + "source": 1, + "value": "[out]" + }, + { + "begin": 340, + "end": 417, + "name": "tag", + "source": 1, + "value": "15" + }, + { + "begin": 340, + "end": 417, + "name": "JUMPDEST", + "source": 1 }, { - "begin": 25, - "end": 396, + "begin": 376, + "end": 387, "name": "PUSH", - "source": 0, - "value": "6D4CE63C" + "source": 1, + "value": "0" }, { - "begin": 25, - "end": 396, - "name": "EQ", - "source": 0 + "begin": 402, + "end": 412, + "name": "DUP1", + "source": 1 }, { - "begin": 25, - "end": 396, - "name": "PUSH [tag]", - "source": 0, - "value": "5" + "begin": 402, + "end": 412, + "name": "SLOAD", + "source": 1 }, { - "begin": 25, - "end": 396, - "name": "JUMPI", - "source": 0 + "begin": 395, + "end": 412, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 395, + "end": 412, + "name": "POP", + "source": 1 + }, + { + "begin": 340, + "end": 417, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 340, + "end": 417, + "name": "JUMP", + "source": 1, + "value": "[out]" }, { - "begin": 25, - "end": 396, + "begin": 7, + "end": 84, "name": "tag", - "source": 0, - "value": "2" + "source": 2, + "value": "21" }, { - "begin": 25, - "end": 396, + "begin": 7, + "end": 84, "name": "JUMPDEST", - "source": 0 + "source": 2 }, { - "begin": 25, - "end": 396, + "begin": 44, + "end": 51, "name": "PUSH", - "source": 0, + "source": 2, "value": "0" }, { - "begin": 25, - "end": 396, - "name": "DUP1", - "source": 0 + "begin": 73, + "end": 78, + "name": "DUP2", + "source": 2 }, { - "begin": 25, - "end": 396, - "name": "REVERT", - "source": 0 + "begin": 62, + "end": 78, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 62, + "end": 78, + "name": "POP", + "source": 2 + }, + { + "begin": 7, + "end": 84, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 7, + "end": 84, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 7, + "end": 84, + "name": "POP", + "source": 2 + }, + { + "begin": 7, + "end": 84, + "name": "JUMP", + "source": 2, + "value": "[out]" }, { - "begin": 52, - "end": 74, + "begin": 90, + "end": 208, "name": "tag", - "source": 0, - "value": "3" + "source": 2, + "value": "22" }, { - "begin": 52, - "end": 74, + "begin": 90, + "end": 208, "name": "JUMPDEST", - "source": 0 + "source": 2 }, { - "begin": 52, - "end": 74, + "begin": 177, + "end": 201, "name": "PUSH [tag]", - "source": 0, - "value": "6" + "source": 2, + "value": "34" + }, + { + "begin": 195, + "end": 200, + "name": "DUP2", + "source": 2 }, { - "begin": 52, - "end": 74, + "begin": 177, + "end": 201, "name": "PUSH [tag]", - "source": 0, - "value": "7" + "source": 2, + "value": "21" }, { - "begin": 52, - "end": 74, + "begin": 177, + "end": 201, "name": "JUMP", - "source": 0, + "source": 2, "value": "[in]" }, { - "begin": 52, - "end": 74, + "begin": 177, + "end": 201, "name": "tag", - "source": 0, - "value": "6" + "source": 2, + "value": "34" }, { - "begin": 52, - "end": 74, + "begin": 177, + "end": 201, "name": "JUMPDEST", - "source": 0 + "source": 2 }, { - "begin": 52, - "end": 74, - "name": "PUSH", - "source": 0, - "value": "40" + "begin": 172, + "end": 175, + "name": "DUP3", + "source": 2 }, { - "begin": 52, - "end": 74, - "name": "MLOAD", - "source": 0 + "begin": 165, + "end": 202, + "name": "MSTORE", + "source": 2 }, { - "begin": 52, - "end": 74, - "name": "DUP1", - "source": 0 + "begin": 90, + "end": 208, + "name": "POP", + "source": 2 }, { - "begin": 52, - "end": 74, - "name": "DUP3", - "source": 0 + "begin": 90, + "end": 208, + "name": "POP", + "source": 2 }, { - "begin": 52, - "end": 74, - "name": "DUP2", - "source": 0 + "begin": 90, + "end": 208, + "name": "JUMP", + "source": 2, + "value": "[out]" }, { - "begin": 52, - "end": 74, - "name": "MSTORE", - "source": 0 + "begin": 214, + "end": 436, + "name": "tag", + "source": 2, + "value": "9" + }, + { + "begin": 214, + "end": 436, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 307, + "end": 311, + "name": "PUSH", + "source": 2, + "value": "0" }, { - "begin": 52, - "end": 74, + "begin": 345, + "end": 347, "name": "PUSH", - "source": 0, + "source": 2, "value": "20" }, { - "begin": 52, - "end": 74, + "begin": 334, + "end": 343, + "name": "DUP3", + "source": 2 + }, + { + "begin": 330, + "end": 348, + "name": "ADD", + "source": 2 + }, + { + "begin": 322, + "end": 348, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 322, + "end": 348, + "name": "POP", + "source": 2 + }, + { + "begin": 358, + "end": 429, + "name": "PUSH [tag]", + "source": 2, + "value": "36" + }, + { + "begin": 426, + "end": 427, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 415, + "end": 424, + "name": "DUP4", + "source": 2 + }, + { + "begin": 411, + "end": 428, "name": "ADD", - "source": 0 + "source": 2 + }, + { + "begin": 402, + "end": 408, + "name": "DUP5", + "source": 2 + }, + { + "begin": 358, + "end": 429, + "name": "PUSH [tag]", + "source": 2, + "value": "22" + }, + { + "begin": 358, + "end": 429, + "name": "JUMP", + "source": 2, + "value": "[in]" + }, + { + "begin": 358, + "end": 429, + "name": "tag", + "source": 2, + "value": "36" }, { - "begin": 52, - "end": 74, + "begin": 358, + "end": 429, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 214, + "end": 436, + "name": "SWAP3", + "source": 2 + }, + { + "begin": 214, + "end": 436, "name": "SWAP2", - "source": 0 + "source": 2 }, { - "begin": 52, - "end": 74, + "begin": 214, + "end": 436, "name": "POP", - "source": 0 + "source": 2 }, { - "begin": 52, - "end": 74, + "begin": 214, + "end": 436, "name": "POP", - "source": 0 + "source": 2 }, { - "begin": 52, - "end": 74, - "name": "PUSH", - "source": 0, - "value": "40" + "begin": 214, + "end": 436, + "name": "JUMP", + "source": 2, + "value": "[out]" }, { - "begin": 52, - "end": 74, - "name": "MLOAD", - "source": 0 + "begin": 523, + "end": 640, + "name": "tag", + "source": 2, + "value": "24" + }, + { + "begin": 523, + "end": 640, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 632, + "end": 633, + "name": "PUSH", + "source": 2, + "value": "0" }, { - "begin": 52, - "end": 74, + "begin": 629, + "end": 630, "name": "DUP1", - "source": 0 + "source": 2 }, { - "begin": 52, - "end": 74, - "name": "SWAP2", - "source": 0 + "begin": 622, + "end": 634, + "name": "REVERT", + "source": 2 }, { - "begin": 52, - "end": 74, - "name": "SUB", - "source": 0 + "begin": 769, + "end": 891, + "name": "tag", + "source": 2, + "value": "26" }, { - "begin": 52, - "end": 74, - "name": "SWAP1", - "source": 0 + "begin": 769, + "end": 891, + "name": "JUMPDEST", + "source": 2 }, { - "begin": 52, - "end": 74, - "name": "RETURN", - "source": 0 + "begin": 842, + "end": 866, + "name": "PUSH [tag]", + "source": 2, + "value": "41" + }, + { + "begin": 860, + "end": 865, + "name": "DUP2", + "source": 2 + }, + { + "begin": 842, + "end": 866, + "name": "PUSH [tag]", + "source": 2, + "value": "21" + }, + { + "begin": 842, + "end": 866, + "name": "JUMP", + "source": 2, + "value": "[in]" }, { - "begin": 228, - "end": 313, + "begin": 842, + "end": 866, "name": "tag", - "source": 0, - "value": "4" + "source": 2, + "value": "41" }, { - "begin": 228, - "end": 313, + "begin": 842, + "end": 866, "name": "JUMPDEST", - "source": 0 + "source": 2 + }, + { + "begin": 835, + "end": 840, + "name": "DUP2", + "source": 2 + }, + { + "begin": 832, + "end": 867, + "name": "EQ", + "source": 2 }, { - "begin": 228, - "end": 313, + "begin": 822, + "end": 885, "name": "PUSH [tag]", - "source": 0, - "value": "8" + "source": 2, + "value": "42" + }, + { + "begin": 822, + "end": 885, + "name": "JUMPI", + "source": 2 + }, + { + "begin": 881, + "end": 882, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 878, + "end": 879, + "name": "DUP1", + "source": 2 + }, + { + "begin": 871, + "end": 883, + "name": "REVERT", + "source": 2 + }, + { + "begin": 822, + "end": 885, + "name": "tag", + "source": 2, + "value": "42" + }, + { + "begin": 822, + "end": 885, + "name": "JUMPDEST", + "source": 2 }, { - "begin": 228, - "end": 313, - "name": "PUSH", - "source": 0, - "value": "4" + "begin": 769, + "end": 891, + "name": "POP", + "source": 2 }, { - "begin": 228, - "end": 313, - "name": "DUP1", - "source": 0 + "begin": 769, + "end": 891, + "name": "JUMP", + "source": 2, + "value": "[out]" }, { - "begin": 228, - "end": 313, - "name": "CALLDATASIZE", - "source": 0 + "begin": 897, + "end": 1036, + "name": "tag", + "source": 2, + "value": "27" }, { - "begin": 228, - "end": 313, - "name": "SUB", - "source": 0 + "begin": 897, + "end": 1036, + "name": "JUMPDEST", + "source": 2 }, { - "begin": 228, - "end": 313, + "begin": 943, + "end": 948, "name": "PUSH", - "source": 0, - "value": "20" + "source": 2, + "value": "0" }, { - "begin": 228, - "end": 313, + "begin": 981, + "end": 987, "name": "DUP2", - "source": 0 + "source": 2 }, { - "begin": 228, - "end": 313, - "name": "LT", - "source": 0 + "begin": 968, + "end": 988, + "name": "CALLDATALOAD", + "source": 2 }, { - "begin": 228, - "end": 313, - "name": "ISZERO", - "source": 0 + "begin": 959, + "end": 988, + "name": "SWAP1", + "source": 2 }, { - "begin": 228, - "end": 313, - "name": "PUSH [tag]", - "source": 0, - "value": "9" + "begin": 959, + "end": 988, + "name": "POP", + "source": 2 }, { - "begin": 228, - "end": 313, - "name": "JUMPI", - "source": 0 + "begin": 997, + "end": 1030, + "name": "PUSH [tag]", + "source": 2, + "value": "44" }, { - "begin": 228, - "end": 313, - "name": "PUSH", - "source": 0, - "value": "0" + "begin": 1024, + "end": 1029, + "name": "DUP2", + "source": 2 }, { - "begin": 228, - "end": 313, - "name": "DUP1", - "source": 0 + "begin": 997, + "end": 1030, + "name": "PUSH [tag]", + "source": 2, + "value": "26" }, { - "begin": 228, - "end": 313, - "name": "REVERT", - "source": 0 + "begin": 997, + "end": 1030, + "name": "JUMP", + "source": 2, + "value": "[in]" }, { - "begin": 228, - "end": 313, + "begin": 997, + "end": 1030, "name": "tag", - "source": 0, - "value": "9" + "source": 2, + "value": "44" }, { - "begin": 228, - "end": 313, + "begin": 997, + "end": 1030, "name": "JUMPDEST", - "source": 0 + "source": 2 }, { - "begin": 228, - "end": 313, - "name": "DUP2", - "source": 0 + "begin": 897, + "end": 1036, + "name": "SWAP3", + "source": 2 }, { - "begin": 228, - "end": 313, - "name": "ADD", - "source": 0 + "begin": 897, + "end": 1036, + "name": "SWAP2", + "source": 2 }, { - "begin": 228, - "end": 313, - "name": "SWAP1", - "source": 0 + "begin": 897, + "end": 1036, + "name": "POP", + "source": 2 }, { - "begin": 228, - "end": 313, - "name": "DUP1", - "source": 0 + "begin": 897, + "end": 1036, + "name": "POP", + "source": 2 }, { - "begin": 228, - "end": 313, - "name": "DUP1", - "source": 0 + "begin": 897, + "end": 1036, + "name": "JUMP", + "source": 2, + "value": "[out]" }, { - "begin": 228, - "end": 313, - "name": "CALLDATALOAD", - "source": 0 + "begin": 1042, + "end": 1371, + "name": "tag", + "source": 2, + "value": "12" }, { - "begin": 228, - "end": 313, - "name": "SWAP1", - "source": 0 + "begin": 1042, + "end": 1371, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1101, + "end": 1107, + "name": "PUSH", + "source": 2, + "value": "0" }, { - "begin": 228, - "end": 313, + "begin": 1150, + "end": 1152, "name": "PUSH", - "source": 0, + "source": 2, "value": "20" }, { - "begin": 228, - "end": 313, - "name": "ADD", - "source": 0 + "begin": 1138, + "end": 1147, + "name": "DUP3", + "source": 2 }, { - "begin": 228, - "end": 313, - "name": "SWAP1", - "source": 0 + "begin": 1129, + "end": 1136, + "name": "DUP5", + "source": 2 }, { - "begin": 228, - "end": 313, - "name": "SWAP3", - "source": 0 + "begin": 1125, + "end": 1148, + "name": "SUB", + "source": 2 }, { - "begin": 228, - "end": 313, - "name": "SWAP2", - "source": 0 + "begin": 1121, + "end": 1153, + "name": "SLT", + "source": 2 }, { - "begin": 228, - "end": 313, - "name": "SWAP1", - "source": 0 + "begin": 1118, + "end": 1237, + "name": "ISZERO", + "source": 2 }, { - "begin": 228, - "end": 313, - "name": "POP", - "source": 0 + "begin": 1118, + "end": 1237, + "name": "PUSH [tag]", + "source": 2, + "value": "46" }, { - "begin": 228, - "end": 313, - "name": "POP", - "source": 0 + "begin": 1118, + "end": 1237, + "name": "JUMPI", + "source": 2 }, { - "begin": 228, - "end": 313, - "name": "POP", - "source": 0 + "begin": 1156, + "end": 1235, + "name": "PUSH [tag]", + "source": 2, + "value": "47" }, { - "begin": 228, - "end": 313, + "begin": 1156, + "end": 1235, "name": "PUSH [tag]", - "source": 0, - "value": "10" + "source": 2, + "value": "24" }, { - "begin": 228, - "end": 313, + "begin": 1156, + "end": 1235, "name": "JUMP", - "source": 0, + "source": 2, "value": "[in]" }, { - "begin": 228, - "end": 313, + "begin": 1156, + "end": 1235, "name": "tag", - "source": 0, - "value": "8" + "source": 2, + "value": "47" }, { - "begin": 228, - "end": 313, + "begin": 1156, + "end": 1235, "name": "JUMPDEST", - "source": 0 - }, - { - "begin": 228, - "end": 313, - "name": "STOP", - "source": 0 + "source": 2 }, { - "begin": 317, - "end": 394, + "begin": 1118, + "end": 1237, "name": "tag", - "source": 0, - "value": "5" + "source": 2, + "value": "46" }, { - "begin": 317, - "end": 394, + "begin": 1118, + "end": 1237, "name": "JUMPDEST", - "source": 0 + "source": 2 + }, + { + "begin": 1276, + "end": 1277, + "name": "PUSH", + "source": 2, + "value": "0" }, { - "begin": 317, - "end": 394, + "begin": 1301, + "end": 1354, "name": "PUSH [tag]", - "source": 0, - "value": "11" + "source": 2, + "value": "48" + }, + { + "begin": 1346, + "end": 1353, + "name": "DUP5", + "source": 2 + }, + { + "begin": 1337, + "end": 1343, + "name": "DUP3", + "source": 2 }, { - "begin": 317, - "end": 394, + "begin": 1326, + "end": 1335, + "name": "DUP6", + "source": 2 + }, + { + "begin": 1322, + "end": 1344, + "name": "ADD", + "source": 2 + }, + { + "begin": 1301, + "end": 1354, "name": "PUSH [tag]", - "source": 0, - "value": "12" + "source": 2, + "value": "27" }, { - "begin": 317, - "end": 394, + "begin": 1301, + "end": 1354, "name": "JUMP", - "source": 0, + "source": 2, "value": "[in]" }, { - "begin": 317, - "end": 394, + "begin": 1301, + "end": 1354, "name": "tag", - "source": 0, - "value": "11" + "source": 2, + "value": "48" }, { - "begin": 317, - "end": 394, + "begin": 1301, + "end": 1354, "name": "JUMPDEST", - "source": 0 + "source": 2 }, { - "begin": 317, - "end": 394, - "name": "PUSH", - "source": 0, - "value": "40" + "begin": 1291, + "end": 1354, + "name": "SWAP2", + "source": 2 }, { - "begin": 317, - "end": 394, - "name": "MLOAD", - "source": 0 + "begin": 1291, + "end": 1354, + "name": "POP", + "source": 2 }, { - "begin": 317, - "end": 394, - "name": "DUP1", - "source": 0 + "begin": 1247, + "end": 1364, + "name": "POP", + "source": 2 }, { - "begin": 317, - "end": 394, - "name": "DUP3", - "source": 0 + "begin": 1042, + "end": 1371, + "name": "SWAP3", + "source": 2 }, { - "begin": 317, - "end": 394, - "name": "DUP2", - "source": 0 + "begin": 1042, + "end": 1371, + "name": "SWAP2", + "source": 2 }, { - "begin": 317, - "end": 394, - "name": "MSTORE", - "source": 0 + "begin": 1042, + "end": 1371, + "name": "POP", + "source": 2 }, { - "begin": 317, - "end": 394, - "name": "PUSH", - "source": 0, - "value": "20" + "begin": 1042, + "end": 1371, + "name": "POP", + "source": 2 }, { - "begin": 317, - "end": 394, - "name": "ADD", - "source": 0 + "begin": 1042, + "end": 1371, + "name": "JUMP", + "source": 2, + "value": "[out]" }, { - "begin": 317, - "end": 394, - "name": "SWAP2", - "source": 0 + "begin": 1377, + "end": 1503, + "name": "tag", + "source": 2, + "value": "28" }, { - "begin": 317, - "end": 394, - "name": "POP", - "source": 0 + "begin": 1377, + "end": 1503, + "name": "JUMPDEST", + "source": 2 }, { - "begin": 317, - "end": 394, - "name": "POP", - "source": 0 + "begin": 1414, + "end": 1421, + "name": "PUSH", + "source": 2, + "value": "0" }, { - "begin": 317, - "end": 394, + "begin": 1454, + "end": 1496, "name": "PUSH", - "source": 0, - "value": "40" + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }, { - "begin": 317, - "end": 394, - "name": "MLOAD", - "source": 0 + "begin": 1447, + "end": 1452, + "name": "DUP3", + "source": 2 }, { - "begin": 317, - "end": 394, - "name": "DUP1", - "source": 0 + "begin": 1443, + "end": 1497, + "name": "AND", + "source": 2 }, { - "begin": 317, - "end": 394, - "name": "SWAP2", - "source": 0 + "begin": 1432, + "end": 1497, + "name": "SWAP1", + "source": 2 }, { - "begin": 317, - "end": 394, - "name": "SUB", - "source": 0 + "begin": 1432, + "end": 1497, + "name": "POP", + "source": 2 + }, + { + "begin": 1377, + "end": 1503, + "name": "SWAP2", + "source": 2 }, { - "begin": 317, - "end": 394, + "begin": 1377, + "end": 1503, "name": "SWAP1", - "source": 0 + "source": 2 }, { - "begin": 317, - "end": 394, - "name": "RETURN", - "source": 0 + "begin": 1377, + "end": 1503, + "name": "POP", + "source": 2 }, { - "begin": 52, - "end": 74, + "begin": 1377, + "end": 1503, + "name": "JUMP", + "source": 2, + "value": "[out]" + }, + { + "begin": 1509, + "end": 1605, "name": "tag", - "source": 0, - "value": "7" + "source": 2, + "value": "29" }, { - "begin": 52, - "end": 74, + "begin": 1509, + "end": 1605, "name": "JUMPDEST", - "source": 0 + "source": 2 }, { - "begin": 52, - "end": 74, + "begin": 1546, + "end": 1553, "name": "PUSH", - "source": 0, + "source": 2, "value": "0" }, { - "begin": 52, - "end": 74, - "name": "SLOAD", - "source": 0 + "begin": 1575, + "end": 1599, + "name": "PUSH [tag]", + "source": 2, + "value": "51" }, { - "begin": 52, - "end": 74, - "name": "DUP2", - "source": 0 + "begin": 1593, + "end": 1598, + "name": "DUP3", + "source": 2 + }, + { + "begin": 1575, + "end": 1599, + "name": "PUSH [tag]", + "source": 2, + "value": "28" }, { - "begin": 52, - "end": 74, + "begin": 1575, + "end": 1599, "name": "JUMP", - "source": 0, - "value": "[out]" + "source": 2, + "value": "[in]" }, { - "begin": 228, - "end": 313, + "begin": 1575, + "end": 1599, "name": "tag", - "source": 0, - "value": "10" + "source": 2, + "value": "51" }, { - "begin": 228, - "end": 313, + "begin": 1575, + "end": 1599, "name": "JUMPDEST", - "source": 0 + "source": 2 }, { - "begin": 267, - "end": 288, - "name": "PUSH", - "source": 0, - "value": "C9DB20ADEDC6CF2B5D25252B101AB03E124902A73FCB12B753F3D1AAA2D8F9F5" + "begin": 1564, + "end": 1599, + "name": "SWAP1", + "source": 2 }, { - "begin": 274, - "end": 284, - "name": "CALLER", - "source": 0 + "begin": 1564, + "end": 1599, + "name": "POP", + "source": 2 }, { - "begin": 286, - "end": 287, - "name": "DUP3", - "source": 0 + "begin": 1509, + "end": 1605, + "name": "SWAP2", + "source": 2 }, { - "begin": 267, - "end": 288, - "name": "PUSH", - "source": 0, - "value": "40" + "begin": 1509, + "end": 1605, + "name": "SWAP1", + "source": 2 }, { - "begin": 267, - "end": 288, - "name": "MLOAD", - "source": 0 + "begin": 1509, + "end": 1605, + "name": "POP", + "source": 2 }, { - "begin": 267, - "end": 288, - "name": "DUP1", - "source": 0 + "begin": 1509, + "end": 1605, + "name": "JUMP", + "source": 2, + "value": "[out]" }, { - "begin": 267, - "end": 288, - "name": "DUP4", - "source": 0 + "begin": 1611, + "end": 1729, + "name": "tag", + "source": 2, + "value": "30" }, { - "begin": 267, - "end": 288, - "name": "PUSH", - "source": 0, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + "begin": 1611, + "end": 1729, + "name": "JUMPDEST", + "source": 2 }, { - "begin": 267, - "end": 288, - "name": "AND", - "source": 0 + "begin": 1698, + "end": 1722, + "name": "PUSH [tag]", + "source": 2, + "value": "53" }, { - "begin": 267, - "end": 288, + "begin": 1716, + "end": 1721, "name": "DUP2", - "source": 0 + "source": 2 }, { - "begin": 267, - "end": 288, - "name": "MSTORE", - "source": 0 + "begin": 1698, + "end": 1722, + "name": "PUSH [tag]", + "source": 2, + "value": "29" }, { - "begin": 267, - "end": 288, - "name": "PUSH", - "source": 0, - "value": "20" + "begin": 1698, + "end": 1722, + "name": "JUMP", + "source": 2, + "value": "[in]" }, { - "begin": 267, - "end": 288, - "name": "ADD", - "source": 0 + "begin": 1698, + "end": 1722, + "name": "tag", + "source": 2, + "value": "53" }, { - "begin": 267, - "end": 288, - "name": "DUP3", - "source": 0 + "begin": 1698, + "end": 1722, + "name": "JUMPDEST", + "source": 2 }, { - "begin": 267, - "end": 288, - "name": "DUP2", - "source": 0 + "begin": 1693, + "end": 1696, + "name": "DUP3", + "source": 2 }, { - "begin": 267, - "end": 288, + "begin": 1686, + "end": 1723, "name": "MSTORE", - "source": 0 + "source": 2 + }, + { + "begin": 1611, + "end": 1729, + "name": "POP", + "source": 2 + }, + { + "begin": 1611, + "end": 1729, + "name": "POP", + "source": 2 + }, + { + "begin": 1611, + "end": 1729, + "name": "JUMP", + "source": 2, + "value": "[out]" + }, + { + "begin": 1735, + "end": 2067, + "name": "tag", + "source": 2, + "value": "19" + }, + { + "begin": 1735, + "end": 2067, + "name": "JUMPDEST", + "source": 2 }, { - "begin": 267, - "end": 288, + "begin": 1856, + "end": 1860, "name": "PUSH", - "source": 0, - "value": "20" + "source": 2, + "value": "0" }, { - "begin": 267, - "end": 288, - "name": "ADD", - "source": 0 + "begin": 1894, + "end": 1896, + "name": "PUSH", + "source": 2, + "value": "40" }, { - "begin": 267, - "end": 288, - "name": "SWAP3", - "source": 0 + "begin": 1883, + "end": 1892, + "name": "DUP3", + "source": 2 }, { - "begin": 267, - "end": 288, - "name": "POP", - "source": 0 + "begin": 1879, + "end": 1897, + "name": "ADD", + "source": 2 }, { - "begin": 267, - "end": 288, - "name": "POP", - "source": 0 + "begin": 1871, + "end": 1897, + "name": "SWAP1", + "source": 2 }, { - "begin": 267, - "end": 288, + "begin": 1871, + "end": 1897, "name": "POP", - "source": 0 + "source": 2 }, { - "begin": 267, - "end": 288, + "begin": 1907, + "end": 1978, + "name": "PUSH [tag]", + "source": 2, + "value": "55" + }, + { + "begin": 1975, + "end": 1976, "name": "PUSH", - "source": 0, - "value": "40" + "source": 2, + "value": "0" }, { - "begin": 267, - "end": 288, - "name": "MLOAD", - "source": 0 + "begin": 1964, + "end": 1973, + "name": "DUP4", + "source": 2 }, { - "begin": 267, - "end": 288, - "name": "DUP1", - "source": 0 + "begin": 1960, + "end": 1977, + "name": "ADD", + "source": 2 }, { - "begin": 267, - "end": 288, - "name": "SWAP2", - "source": 0 + "begin": 1951, + "end": 1957, + "name": "DUP6", + "source": 2 }, { - "begin": 267, - "end": 288, - "name": "SUB", - "source": 0 + "begin": 1907, + "end": 1978, + "name": "PUSH [tag]", + "source": 2, + "value": "30" }, { - "begin": 267, - "end": 288, - "name": "SWAP1", - "source": 0 + "begin": 1907, + "end": 1978, + "name": "JUMP", + "source": 2, + "value": "[in]" }, { - "begin": 267, - "end": 288, - "name": "LOG1", - "source": 0 + "begin": 1907, + "end": 1978, + "name": "tag", + "source": 2, + "value": "55" }, { - "begin": 307, - "end": 308, - "name": "DUP1", - "source": 0 + "begin": 1907, + "end": 1978, + "name": "JUMPDEST", + "source": 2 }, { - "begin": 294, - "end": 304, - "name": "PUSH", - "source": 0, - "value": "0" + "begin": 1988, + "end": 2060, + "name": "PUSH [tag]", + "source": 2, + "value": "56" }, { - "begin": 294, - "end": 308, - "name": "DUP2", - "source": 0 + "begin": 2056, + "end": 2058, + "name": "PUSH", + "source": 2, + "value": "20" }, { - "begin": 294, - "end": 308, - "name": "SWAP1", - "source": 0 + "begin": 2045, + "end": 2054, + "name": "DUP4", + "source": 2 }, { - "begin": 294, - "end": 308, - "name": "SSTORE", - "source": 0 + "begin": 2041, + "end": 2059, + "name": "ADD", + "source": 2 }, { - "begin": 294, - "end": 308, - "name": "POP", - "source": 0 + "begin": 2032, + "end": 2038, + "name": "DUP5", + "source": 2 }, { - "begin": 228, - "end": 313, - "name": "POP", - "source": 0 + "begin": 1988, + "end": 2060, + "name": "PUSH [tag]", + "source": 2, + "value": "22" }, { - "begin": 228, - "end": 313, + "begin": 1988, + "end": 2060, "name": "JUMP", - "source": 0, - "value": "[out]" + "source": 2, + "value": "[in]" }, { - "begin": 317, - "end": 394, + "begin": 1988, + "end": 2060, "name": "tag", - "source": 0, - "value": "12" + "source": 2, + "value": "56" }, { - "begin": 317, - "end": 394, + "begin": 1988, + "end": 2060, "name": "JUMPDEST", - "source": 0 - }, - { - "begin": 353, - "end": 364, - "name": "PUSH", - "source": 0, - "value": "0" + "source": 2 }, { - "begin": 379, - "end": 389, - "name": "DUP1", - "source": 0 + "begin": 1735, + "end": 2067, + "name": "SWAP4", + "source": 2 }, { - "begin": 379, - "end": 389, - "name": "SLOAD", - "source": 0 + "begin": 1735, + "end": 2067, + "name": "SWAP3", + "source": 2 }, { - "begin": 372, - "end": 389, - "name": "SWAP1", - "source": 0 + "begin": 1735, + "end": 2067, + "name": "POP", + "source": 2 }, { - "begin": 372, - "end": 389, + "begin": 1735, + "end": 2067, "name": "POP", - "source": 0 + "source": 2 }, { - "begin": 317, - "end": 394, - "name": "SWAP1", - "source": 0 + "begin": 1735, + "end": 2067, + "name": "POP", + "source": 2 }, { - "begin": 317, - "end": 394, + "begin": 1735, + "end": 2067, "name": "JUMP", - "source": 0, + "source": 2, "value": "[out]" } ] @@ -1910,11 +6117,11 @@ "ewasm": { "wasm": "" }, - "metadata": "{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"initVal\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"stored\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"get\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"retVal\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storedData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"SimpleStorage.sol\":\"SimpleStorage\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"SimpleStorage.sol\":{\"keccak256\":\"0xa4e65dd7da8fbdc9056385661b1cd86e09b7097d6b530367545f35470f554eb3\",\"urls\":[\"bzz-raw://cc133158c639018d64ff1c494ee1484199b97fc2a6be28558fa606bf63098858\",\"dweb:/ipfs/QmdDLex3941Wzfs5gidsKczHrfc6Q9yaQYwQoUMAQgq5oE\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"initVal\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"stored\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"get\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"retVal\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storedData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"SimpleStorage.sol\":\"SimpleStorage\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"SimpleStorage.sol\":{\"keccak256\":\"0x9654322cff2317684b96778a9a48f094b9009d7787c01578bbf037933085f1c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b29a2357eefdf4b77808fd71a85fea9edc08367ee3381945725d8794280a10\",\"dweb:/ipfs/QmUW1VFao5YYkpFt8GX2HGmAvCKQnQyCziGZPSfC8XB1dK\"]}},\"version\":1}", "storageLayout": { "storage": [ { - "astId": 3, + "astId": 33, "contract": "SimpleStorage.sol:SimpleStorage", "label": "storedData", "offset": 0, diff --git a/files/common/smart_contracts/contracts/SimpleStorage.sol b/files/common/smart_contracts/contracts/SimpleStorage.sol index 4b99874b..88acd97c 100644 --- a/files/common/smart_contracts/contracts/SimpleStorage.sol +++ b/files/common/smart_contracts/contracts/SimpleStorage.sol @@ -1,19 +1,17 @@ -pragma solidity ^0.7.0; +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.10; contract SimpleStorage { uint public storedData; event stored(address _to, uint _amount); - - constructor(uint initVal) public { + constructor(uint initVal) { emit stored(msg.sender, initVal); storedData = initVal; } - function set(uint x) public { emit stored(msg.sender, x); storedData = x; } - function get() view public returns (uint retVal) { return storedData; } diff --git a/files/common/smart_contracts/package.json b/files/common/smart_contracts/package.json index 21ba6406..500b9155 100644 --- a/files/common/smart_contracts/package.json +++ b/files/common/smart_contracts/package.json @@ -10,11 +10,18 @@ }, "license": "Apache-2.0", "dependencies": { - "async-promise-pool": "^1.0.3", + "async-promise-pool": "^1.0.6", "fs-extra": "^10.0.0", - "solc": "0.7.6", - "web3": "1.5.2", - "ethers": "^5.6.1", - "web3js-quorum": "21.7.0-rc1" + "solc": "0.8.10", + "@nomicfoundation/hardhat-ethers": "^3.0.0", + "@nomicfoundation/hardhat-network-helpers": "^1.0.0", + "@nomicfoundation/hardhat-toolbox": "^3.0.0", + "@nomicfoundation/hardhat-verify": "^1.0.0", + "ethers": "6.7.1", + "hardhat-gas-reporter": "^1.0.8", + "@ethereumjs/common": "^4.0.0", + "@ethereumjs/tx": "^5.0.0", + "web3js-quorum": "22.4.0", + "web3": "1.10.2" } } diff --git a/files/common/smart_contracts/scripts/compile.js b/files/common/smart_contracts/scripts/compile.js index c7040d59..8a9b5e16 100644 --- a/files/common/smart_contracts/scripts/compile.js +++ b/files/common/smart_contracts/scripts/compile.js @@ -32,11 +32,15 @@ const input = { function compileContracts() { const stringifiedJson = JSON.stringify(input); + console.log(stringifiedJson) const compilationResult = solc.compile(stringifiedJson); + console.log(compilationResult) const output = JSON.parse(compilationResult); + console.log(output) const compiledContracts = output.contracts; for (let contract in compiledContracts) { for(let contractName in compiledContracts[contract]) { + console.log(contract) fs.outputJsonSync( path.resolve(contractsPath, `${contractName}.json`), compiledContracts[contract][contractName], { spaces: 2 } diff --git a/files/goquorum/smart_contracts/scripts/keys.js b/files/goquorum/smart_contracts/scripts/keys.js index 68707b30..9a9e3499 100644 --- a/files/goquorum/smart_contracts/scripts/keys.js +++ b/files/goquorum/smart_contracts/scripts/keys.js @@ -58,17 +58,17 @@ module.exports = { }, }, accounts: { - "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73": { - privateKey: - "0x8f2a55949038a9610f50fb23b5883af3b4ecb3c3bb792cbcefbd1542c692be63", + a: { + address: "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + privateKey: "0x8f2a55949038a9610f50fb23b5883af3b4ecb3c3bb792cbcefbd1542c692be63", }, - "0x627306090abaB3A6e1400e9345bC60c78a8BEf57": { - privateKey: - "0xc87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3", + b: { + address: "0x627306090abaB3A6e1400e9345bC60c78a8BEf57", + privateKey: "0xc87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3", }, - "0xf17f52151EbEF6C7334FAD080c5704D77216b732": { - privateKey: - "0xae6ae8e5ccbfb04590405997ee2d52d2b330726137b875053c36d94e974d162f", + c: { + address: "0xf17f52151EbEF6C7334FAD080c5704D77216b732", + privateKey: "0xae6ae8e5ccbfb04590405997ee2d52d2b330726137b875053c36d94e974d162f", }, - }, + } }; diff --git a/files/goquorum/smart_contracts/scripts/public/eth_tx.js b/files/goquorum/smart_contracts/scripts/public/eth_tx.js deleted file mode 100644 index 8fdbe402..00000000 --- a/files/goquorum/smart_contracts/scripts/public/eth_tx.js +++ /dev/null @@ -1,51 +0,0 @@ -const path = require('path'); -const fs = require('fs-extra'); -const Web3 = require('web3'); - -// member1 details -const { tessera, quorum, accounts } = require("../keys.js"); -const host = quorum.member1.url; - -async function main(){ - const web3 = new Web3(host); - //pre seeded account - test account only - const privateKeyA = accounts['0x627306090abaB3A6e1400e9345bC60c78a8BEf57'].privateKey; - const accountA = web3.eth.accounts.privateKeyToAccount(privateKeyA); - var accountABalance = web3.utils.fromWei(await web3.eth.getBalance(accountA.address)); - console.log("Account A has balance of: " + accountABalance); - - // create a new account to use to transfer eth to - var accountB = web3.eth.accounts.create(); - var accountBBalance = web3.utils.fromWei(await web3.eth.getBalance(accountB.address)); - console.log("Account B has balance of: " + accountBBalance); - - // send some eth from A to B - const txn = { - nonce: web3.utils.numberToHex(await web3.eth.getTransactionCount(accountA.address)), - from: accountA.address, - to: accountB.address, - value: "0x100", //amount of eth to transfer - gasPrice: "0x0", //ETH per unit of gas - gasLimit: "0x24A22" //max number of gas units the tx is allowed to use - }; - - console.log("create and sign the txn") - const signedTx = await web3.eth.accounts.signTransaction(txn, accountA.privateKey); - console.log("sending the txn") - const txReceipt = await web3.eth.sendSignedTransaction(signedTx.rawTransaction); - console.log("tx transactionHash: " + txReceipt.transactionHash); - - //After the transaction there should be some ETH transferred - accountABalance = web3.utils.fromWei(await web3.eth.getBalance(accountA.address)); - console.log("Account A has an updated balance of: " + accountABalance); - accountBBalance = web3.utils.fromWei(await web3.eth.getBalance(accountB.address)); - console.log("Account B has an updated balance of: " + accountBBalance); - -} - -if (require.main === module) { - main(); -} - -module.exports = exports = main - diff --git a/files/goquorum/smart_contracts/scripts/public/hre_eth_tx.js b/files/goquorum/smart_contracts/scripts/public/hre_eth_tx.js new file mode 100644 index 00000000..b1464339 --- /dev/null +++ b/files/goquorum/smart_contracts/scripts/public/hre_eth_tx.js @@ -0,0 +1,55 @@ +const path = require('path'); +const fs = require('fs-extra'); +var ethers = require('ethers'); + +// member1 details +const { accounts, quorum } = require("../keys.js"); +const host = quorum.rpcnode.url; +// one of the seeded accounts +const accountAPrivateKey = accounts.a.privateKey; + +async function main(){ + const provider = new ethers.JsonRpcProvider(host); + + const walletA = new ethers.Wallet(accountAPrivateKey, provider); + var accountABalance = await provider.getBalance(walletA.address); + console.log("Account A has balance of: " + accountABalance); + + // create a new account to use to transfer eth to + const walletB = ethers.Wallet.createRandom() + var accountBBalance = await provider.getBalance(walletB.address); + console.log("Account B has balance of: " + accountBBalance); + + const nonce = await provider.getTransactionCount(walletA.address); + const feeData = await provider.getFeeData(); + const gasLimit = await provider.estimateGas({from: walletA.address, value: ethers.parseEther("0.01")}); + + // send some eth from A to B + const txn = { + nonce: nonce, + from: walletA.address, + to: walletB.address, + value: 0x10, //amount of eth to transfer + gasPrice: feeData.gasPrice, //ETH per unit of gas + gasLimit: gasLimit //max number of gas units the tx is allowed to use + }; + + console.log("create and sign the txn") + const signedTx = await walletA.sendTransaction(txn); + await signedTx.wait(); + console.log("tx transactionHash: " + signedTx.hash); + + //After the transaction there should be some ETH transferred + accountABalance = await provider.getBalance(walletA.address); + console.log("Account A has balance of: " + accountABalance); + accountBBalance = await provider.getBalance(walletB.address); + console.log("Account B has balance of: " + accountBBalance); + +} + +if (require.main === module) { + main(); +} + +module.exports = exports = main + diff --git a/files/goquorum/smart_contracts/scripts/public/hre_public_tx.js b/files/goquorum/smart_contracts/scripts/public/hre_public_tx.js new file mode 100644 index 00000000..9c5d75af --- /dev/null +++ b/files/goquorum/smart_contracts/scripts/public/hre_public_tx.js @@ -0,0 +1,68 @@ +const path = require('path'); +const fs = require('fs-extra'); +var ethers = require('ethers'); + +// RPCNODE details +const { tessera, quorum } = require("../keys.js"); +const host = quorum.rpcnode.url; +const accountPrivateKey = quorum.rpcnode.accountPrivateKey; + +// abi and bytecode generated from simplestorage.sol: +// > solcjs --bin --abi simplestorage.sol +const contractJsonPath = path.resolve(__dirname, '../../','contracts','SimpleStorage.json'); +const contractJson = JSON.parse(fs.readFileSync(contractJsonPath)); +const contractAbi = contractJson.abi; +const contractBytecode = contractJson.evm.bytecode.object + +async function getValueAtAddress(provider, deployedContractAbi, deployedContractAddress){ + const contract = new ethers.Contract(deployedContractAddress, deployedContractAbi, provider); + const res = await contract.get(); + console.log("Obtained value at deployed contract is: "+ res); + return res +} + +// You need to use the accountAddress details provided to Quorum to send/interact with contracts +async function setValueAtAddress(provider, wallet, deployedContractAbi, deployedContractAddress, value){ + const contract = new ethers.Contract(deployedContractAddress, deployedContractAbi, provider); + const contractWithSigner = contract.connect(wallet); + const tx = await contractWithSigner.set(value); + // verify the updated value + await tx.wait(); + // const res = await contract.get(); + // console.log("Obtained value at deployed contract is: "+ res); + return tx; +} + +async function createContract(provider, wallet, contractAbi, contractByteCode, contractInit) { + const factory = new ethers.ContractFactory(contractAbi, contractByteCode, wallet); + const contract = await factory.deploy(contractInit); + // The contract is NOT deployed yet; we must wait until it is mined + const deployed = await contract.waitForDeployment(); + //The contract is deployed now + return contract +}; + +async function main(){ + const provider = new ethers.JsonRpcProvider(host); + const wallet = new ethers.Wallet(accountPrivateKey, provider); + + createContract(provider, wallet, contractAbi, contractBytecode, 47) + .then(async function(contract){ + contractAddress = await contract.getAddress(); + console.log("Contract deployed at address: " + contractAddress); + console.log("Use the smart contracts 'get' function to read the contract's constructor initialized value .. " ) + await getValueAtAddress(provider, contractAbi, contractAddress); + console.log("Use the smart contracts 'set' function to update that value to 123 .. " ); + await setValueAtAddress(provider, wallet, contractAbi, contractAddress, 123 ); + console.log("Verify the updated value that was set .. " ) + await getValueAtAddress(provider, contractAbi, contractAddress); + // await getAllPastEvents(host, contractAbi, tx.contractAddress); + }) + .catch(console.error); +} + +if (require.main === module) { + main(); +} + +module.exports = exports = main \ No newline at end of file diff --git a/files/goquorum/smart_contracts/scripts/public/public_tx.js b/files/goquorum/smart_contracts/scripts/public/public_tx.js deleted file mode 100644 index de89203e..00000000 --- a/files/goquorum/smart_contracts/scripts/public/public_tx.js +++ /dev/null @@ -1,150 +0,0 @@ -const path = require("path"); -const fs = require("fs-extra"); -const Web3 = require("web3"); - -// rpcnode details -const { tessera, quorum } = require("../keys.js"); -const host = quorum.rpcnode.url; -const accountAddress = quorum.rpcnode.accountAddress; - -// abi and bytecode generated from simplestorage.sol: -// > solcjs --bin --abi simplestorage.sol -const contractJsonPath = path.resolve( - __dirname, - "../", - "../", - "contracts", - "SimpleStorage.json" -); -const contractJson = JSON.parse(fs.readFileSync(contractJsonPath)); -const contractAbi = contractJson.abi; -const contractBytecode = contractJson.evm.bytecode.object; - -async function getValueAtAddress( - host, - deployedContractAbi, - deployedContractAddress -) { - const web3 = new Web3(host); - const contractInstance = new web3.eth.Contract( - deployedContractAbi, - deployedContractAddress - ); - const res = await contractInstance.methods.get().call(); - console.log("Obtained value at deployed contract is: " + res); - return res; -} - -async function getAllPastEvents( - host, - deployedContractAbi, - deployedContractAddress -) { - const web3 = new Web3(host); - const contractInstance = new web3.eth.Contract( - deployedContractAbi, - deployedContractAddress - ); - const res = await contractInstance.getPastEvents("allEvents", { - fromBlock: 0, - toBlock: "latest", - }); - - const amounts = res.map((x) => { - return x.returnValues._amount; - }); - - console.log( - "Obtained all value events from deployed contract : [" + amounts + "]" - ); - return res; -} - -// You need to use the accountAddress details provided to Quorum to send/interact with contracts -async function setValueAtAddress( - host, - accountAddress, - value, - deployedContractAbi, - deployedContractAddress -) { - const web3 = new Web3(host); - const contractInstance = new web3.eth.Contract( - deployedContractAbi, - deployedContractAddress - ); - const res = await contractInstance.methods - .set(value) - .send({ from: accountAddress, gasPrice: "0x0", gasLimit: "0x24A22" }); - console.log("Set value on contract at : " + res.transactionHash); - // verify the updated value - // const readRes = await contractInstance.methods.get().call(); - // console.log("Obtained value at deployed contract is: "+ readRes); - return res; -} - -async function createContract(host) { - const web3 = new Web3(host); - // make an account and sign the transaction with the account's private key; you can alternatively use an exsiting account - const account = web3.eth.accounts.create(); - console.log(account); - // initialize the default constructor with a value `47 = 0x2F`; this value is appended to the bytecode - const contractConstructorInit = web3.eth.abi - .encodeParameter("uint256", "47") - .slice(2); - - const txn = { - chainId: 1337, - nonce: await web3.eth.getTransactionCount(account.address), // 0x00 because this is a new account - from: account.address, - to: null, //public tx - value: "0x00", - data: "0x" + contractBytecode + contractConstructorInit, - gasPrice: "0x0", //ETH per unit of gas - gas: "0x2CA51", //max number of gas units the tx is allowed to use - }; - - console.log("create and sign the txn"); - const signedTx = await web3.eth.accounts.signTransaction( - txn, - account.privateKey - ); - console.log("sending the txn"); - const txReceipt = await web3.eth.sendSignedTransaction( - signedTx.rawTransaction - ); - console.log("tx transactionHash: " + txReceipt.transactionHash); - console.log("tx contractAddress: " + txReceipt.contractAddress); - return txReceipt; -} - -async function main() { - createContract(host) - .then(async function (tx) { - console.log("Contract deployed at address: " + tx.contractAddress); - console.log( - "Use the smart contracts 'get' function to read the contract's constructor initialized value .. " - ); - await getValueAtAddress(host, contractAbi, tx.contractAddress); - console.log( - "Use the smart contracts 'set' function to update that value to 123 .. " - ); - await setValueAtAddress( - host, - accountAddress, - 123, - contractAbi, - tx.contractAddress - ); - console.log("Verify the updated value that was set .. "); - await getValueAtAddress(host, contractAbi, tx.contractAddress); - await getAllPastEvents(host, contractAbi, tx.contractAddress); - }) - .catch(console.error); -} - -if (require.main === module) { - main(); -} - -module.exports = exports = main; diff --git a/files/goquorum/smart_contracts/scripts/public/public_tx_ethers.js b/files/goquorum/smart_contracts/scripts/public/public_tx_ethers.js deleted file mode 100644 index 75582e57..00000000 --- a/files/goquorum/smart_contracts/scripts/public/public_tx_ethers.js +++ /dev/null @@ -1,112 +0,0 @@ -const path = require("path"); -const fs = require("fs-extra"); -var ethers = require("ethers"); - -// rpcnode details -const { tessera, quorum } = require("../keys.js"); -const host = quorum.rpcnode.url; -const accountAddress = quorum.rpcnode.accountAddress; - -// abi and bytecode generated from simplestorage.sol: -// > solcjs --bin --abi simplestorage.sol -const contractJsonPath = path.resolve( - __dirname, - "../", - "../", - "contracts", - "SimpleStorage.json" -); -const contractJson = JSON.parse(fs.readFileSync(contractJsonPath)); -const contractAbi = contractJson.abi; -const contractBytecode = contractJson.evm.bytecode.object; - -async function getValueAtAddress( - provider, - deployedContractAbi, - deployedContractAddress -) { - const contract = new ethers.Contract( - deployedContractAddress, - deployedContractAbi, - provider - ); - const res = await contract.get(); - console.log("Obtained value at deployed contract is: " + res); - return res; -} - -// You need to use the accountAddress details provided to Quorum to send/interact with contracts -async function setValueAtAddress( - provider, - wallet, - deployedContractAbi, - deployedContractAddress, - value -) { - const contract = new ethers.Contract( - deployedContractAddress, - deployedContractAbi, - provider - ); - const contractWithSigner = contract.connect(wallet); - const tx = await contractWithSigner.set(value); - // verify the updated value - await tx.wait(); - // const res = await contract.get(); - // console.log("Obtained value at deployed contract is: "+ res); - return tx; -} - -async function createContract( - provider, - wallet, - contractAbi, - contractByteCode, - contractInit -) { - const factory = new ethers.ContractFactory( - contractAbi, - contractByteCode, - wallet - ); - const contract = await factory.deploy(contractInit); - // The contract is NOT deployed yet; we must wait until it is mined - const deployed = await contract.deployTransaction.wait(); - //The contract is deployed now - return contract; -} - -async function main() { - const provider = new ethers.providers.JsonRpcProvider(host); - const randomPrivateKey = await ethers.Wallet.createRandom(); - const wallet = new ethers.Wallet(randomPrivateKey, provider); - - createContract(provider, wallet, contractAbi, contractBytecode, 47) - .then(async function (contract) { - console.log("Contract deployed at address: " + contract.address); - console.log( - "Use the smart contracts 'get' function to read the contract's constructor initialized value .. " - ); - await getValueAtAddress(provider, contractAbi, contract.address); - console.log( - "Use the smart contracts 'set' function to update that value to 123 .. " - ); - await setValueAtAddress( - provider, - wallet, - contractAbi, - contract.address, - 123 - ); - console.log("Verify the updated value that was set .. "); - await getValueAtAddress(provider, contractAbi, contract.address); - // await getAllPastEvents(host, contractAbi, tx.contractAddress); - }) - .catch(console.error); -} - -if (require.main === module) { - main(); -} - -module.exports = exports = main; diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index c24807a5..e38cc7f4 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -1,12 +1,12 @@ { "name": "quorum-dev-quickstart", - "version": "0.2.3", + "version": "0.2.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "quorum-dev-quickstart", - "version": "0.2.3", + "version": "0.2.4", "license": "Apache-2.0", "dependencies": { "chalk": "^4.1.0", diff --git a/package.json b/package.json index d15a7f70..bd60d194 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "quorum-dev-quickstart", - "version": "0.2.3", + "version": "0.2.4", "description": "A utility that lets developers try out the new suite of Quorum tools from ConsenSys!", "main": "build/index.js", "repository": "git@github.com:ConsenSys/quorum-dev-quickstart.git",