UNPKG

@zjbtest/contracts

Version:
623 lines (622 loc) 656 kB
{ "contractName": "Token", "abi": [ { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/runner/work/predeploy-contracts/predeploy-contracts/contracts/token/Token.sol\":\"Token\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/runner/work/predeploy-contracts/predeploy-contracts/contracts/token/MultiCurrency.sol\":{\"keccak256\":\"0x7c72d006b384a4d9ea46fdb44487830344b279cfaa21089e38072fae434016ae\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d9d3c819db7d8890cfe4a898ef02516d80d77416f987d0bb80eadbd7bac37ab7\",\"dweb:/ipfs/QmZNxxC9MYu4n3YDywsZ77SUKp4isQS8zfhk17u86wTYvi\"]},\"/home/runner/work/predeploy-contracts/predeploy-contracts/contracts/token/Token.sol\":{\"keccak256\":\"0xd9b8c9f10a2172d3ecf33d677a0f091f2ce082c2946d4d76a636639320d15ed8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7ec920f02e58004552ef7d6de41c56ebc8246e810cb3f81b34c3a4e6fbbdd411\",\"dweb:/ipfs/QmXPUJLrsTykLFXykSe8rBNFXpVmRX3n1dG3TYw8iAX7Xj\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x027b891937d20ccf213fdb9c31531574256de774bda99d3a70ecef6e1913ed2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://087318b21c528119f649899f5b5580566dd8d7b0303d4904bd0e8580c3545f14\",\"dweb:/ipfs/Qmbn5Mj7aUn8hJuQ8VrQjjEXRsXyJKykgnjR9p4C3nfLtL\"]},\"@openzeppelin/contracts/utils/math/SafeMath.sol\":{\"keccak256\":\"0x8666f020bd8fc9dc14f07e2ebc52b5f236ab4cdde7c77679b08cb2f94730043b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://163776cbf565c722232393aa2d62cbe8a2ffb5805986abf4906c00e1e07450a6\",\"dweb:/ipfs/QmPZoN9T3cb6o8bGhjBPZcz7im8T8DWhpr3tjLwhJJHx9N\"]}},\"version\":1}", "bytecode": "0x608060405234801561001057600080fd5b5061186b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c391906114eb565b60405180910390f35b6100e660048036038101906100e1919061115a565b610285565b6040516100f391906114d0565b60405180910390f35b61010461029c565b604051610111919061158d565b60405180910390f35b610134600480360381019061012f919061110b565b6102ab565b60405161014191906114d0565b60405180910390f35b610152610375565b60405161015f91906115a8565b60405180910390f35b610182600480360381019061017d919061115a565b610384565b60405161018f91906114d0565b60405180910390f35b6101b260048036038101906101ad91906110a6565b610428565b6040516101bf919061158d565b60405180910390f35b6101d061043a565b6040516101dd91906114eb565b60405180910390f35b61020060048036038101906101fb919061115a565b610449565b60405161020d91906114d0565b60405180910390f35b610230600480360381019061022b919061115a565b610507565b60405161023d91906114d0565b60405180910390f35b610260600480360381019061025b91906110cf565b61051e565b60405161026d919061158d565b60405180910390f35b60606102806105a4565b905090565b60006102923384846106c2565b6001905092915050565b60006102a661088c565b905090565b60006102b88484846109aa565b61036a8433610365856040518060600160405280602881526020016117e9602891396000808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610aff9092919063ffffffff16565b6106c2565b600190509392505050565b600061037f610b54565b905090565b600061041e3384610419856000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c7290919063ffffffff16565b6106c2565b6001905092915050565b600061043382610c88565b9050919050565b6060610444610db3565b905090565b60006104fd33846104f885604051806060016040528060258152602001611811602591396000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610aff9092919063ffffffff16565b6106c2565b6001905092915050565b60006105143384846109aa565b6001905092915050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b606060008061040073ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f06fdde03000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516106529190611467565b600060405180830381855afa9150503d806000811461068d576040519150601f19603f3d011682016040523d82523d6000602084013e610692565b606091505b509150915060008214156106a7573d60208201fd5b808060200190518101906106bb9190611196565b9250505090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610732576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107299061156d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156107a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107999061152d565b60405180910390fd5b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161087f919061158d565b60405180910390a3505050565b600080600061040073ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f18160ddd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161093a9190611467565b600060405180830381855afa9150503d8060008114610975576040519150601f19603f3d011682016040523d82523d6000602084013e61097a565b606091505b5091509150600082141561098f573d60208201fd5b808060200190518101906109a391906111d7565b9250505090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a119061154d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a819061150d565b60405180910390fd5b610a95838383610ed1565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610af2919061158d565b60405180910390a3505050565b6000838311158290610b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3e91906114eb565b60405180910390fd5b5082840390509392505050565b600080600061040073ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f313ce567000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610c029190611467565b600060405180830381855afa9150503d8060008114610c3d576040519150601f19603f3d011682016040523d82523d6000602084013e610c42565b606091505b50915091506000821415610c57573d60208201fd5b80806020019051810190610c6b9190611200565b9250505090565b60008183610c809190611656565b905092915050565b600080600061040073ffffffffffffffffffffffffffffffffffffffff1684604051602401610cb7919061147e565b6040516020818303038152906040527f70a08231000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610d419190611467565b600060405180830381855afa9150503d8060008114610d7c576040519150601f19603f3d011682016040523d82523d6000602084013e610d81565b606091505b50915091506000821415610d96573d60208201fd5b80806020019051810190610daa91906111d7565b92505050919050565b606060008061040073ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f95d89b41000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610e619190611467565b600060405180830381855afa9150503d8060008114610e9c576040519150601f19603f3d011682016040523d82523d6000602084013e610ea1565b606091505b50915091506000821415610eb6573d60208201fd5b80806020019051810190610eca9190611196565b9250505090565b60008061040073ffffffffffffffffffffffffffffffffffffffff16858585604051602401610f0293929190611499565b6040516020818303038152906040527fbeabacc8000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610f8c9190611467565b6000604051808303816000865af19150503d8060008114610fc9576040519150601f19603f3d011682016040523d82523d6000602084013e610fce565b606091505b50915091506000821415610fe3573d60208201fd5b5050505050565b6000610ffd610ff8846115f4565b6115c3565b90508281526020810184848401111561101557600080fd5b611020848285611701565b509392505050565b600081359050611037816117a3565b92915050565b600082601f83011261104e57600080fd5b815161105e848260208601610fea565b91505092915050565b600081359050611076816117ba565b92915050565b60008151905061108b816117ba565b92915050565b6000815190506110a0816117d1565b92915050565b6000602082840312156110b857600080fd5b60006110c684828501611028565b91505092915050565b600080604083850312156110e257600080fd5b60006110f085828601611028565b925050602061110185828601611028565b9150509250929050565b60008060006060848603121561112057600080fd5b600061112e86828701611028565b935050602061113f86828701611028565b925050604061115086828701611067565b9150509250925092565b6000806040838503121561116d57600080fd5b600061117b85828601611028565b925050602061118c85828601611067565b9150509250929050565b6000602082840312156111a857600080fd5b600082015167ffffffffffffffff8111156111c257600080fd5b6111ce8482850161103d565b91505092915050565b6000602082840312156111e957600080fd5b60006111f78482850161107c565b91505092915050565b60006020828403121561121257600080fd5b600061122084828501611091565b91505092915050565b611232816116ac565b82525050565b611241816116be565b82525050565b600061125282611624565b61125c818561163a565b935061126c818560208601611701565b80840191505092915050565b60006112838261162f565b61128d8185611645565b935061129d818560208601611701565b6112a681611792565b840191505092915050565b60006112be602383611645565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611324602283611645565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061138a602583611645565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006113f0602483611645565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b611452816116ea565b82525050565b611461816116f4565b82525050565b60006114738284611247565b915081905092915050565b60006020820190506114936000830184611229565b92915050565b60006060820190506114ae6000830186611229565b6114bb6020830185611229565b6114c86040830184611449565b949350505050565b60006020820190506114e56000830184611238565b92915050565b600060208201905081810360008301526115058184611278565b905092915050565b60006020820190508181036000830152611526816112b1565b9050919050565b6000602082019050818103600083015261154681611317565b9050919050565b600060208201905081810360008301526115668161137d565b9050919050565b60006020820190508181036000830152611586816113e3565b9050919050565b60006020820190506115a26000830184611449565b92915050565b60006020820190506115bd6000830184611458565b92915050565b6000604051905081810181811067ffffffffffffffff821117156115ea576115e9611763565b5b8060405250919050565b600067ffffffffffffffff82111561160f5761160e611763565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b6000611661826116ea565b915061166c836116ea565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156116a1576116a0611734565b5b828201905092915050565b60006116b7826116ca565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561171f578082015181840152602081019050611704565b8381111561172e576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6117ac816116ac565b81146117b757600080fd5b50565b6117c3816116ea565b81146117ce57600080fd5b50565b6117da816116f4565b81146117e557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122002bda142f6d3b8cd80da14830da11aeaef5b7f9e5738411f4128ee899daeab3d64736f6c63430008000033", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c391906114eb565b60405180910390f35b6100e660048036038101906100e1919061115a565b610285565b6040516100f391906114d0565b60405180910390f35b61010461029c565b604051610111919061158d565b60405180910390f35b610134600480360381019061012f919061110b565b6102ab565b60405161014191906114d0565b60405180910390f35b610152610375565b60405161015f91906115a8565b60405180910390f35b610182600480360381019061017d919061115a565b610384565b60405161018f91906114d0565b60405180910390f35b6101b260048036038101906101ad91906110a6565b610428565b6040516101bf919061158d565b60405180910390f35b6101d061043a565b6040516101dd91906114eb565b60405180910390f35b61020060048036038101906101fb919061115a565b610449565b60405161020d91906114d0565b60405180910390f35b610230600480360381019061022b919061115a565b610507565b60405161023d91906114d0565b60405180910390f35b610260600480360381019061025b91906110cf565b61051e565b60405161026d919061158d565b60405180910390f35b60606102806105a4565b905090565b60006102923384846106c2565b6001905092915050565b60006102a661088c565b905090565b60006102b88484846109aa565b61036a8433610365856040518060600160405280602881526020016117e9602891396000808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610aff9092919063ffffffff16565b6106c2565b600190509392505050565b600061037f610b54565b905090565b600061041e3384610419856000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c7290919063ffffffff16565b6106c2565b6001905092915050565b600061043382610c88565b9050919050565b6060610444610db3565b905090565b60006104fd33846104f885604051806060016040528060258152602001611811602591396000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610aff9092919063ffffffff16565b6106c2565b6001905092915050565b60006105143384846109aa565b6001905092915050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b606060008061040073ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f06fdde03000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516106529190611467565b600060405180830381855afa9150503d806000811461068d576040519150601f19603f3d011682016040523d82523d6000602084013e610692565b606091505b509150915060008214156106a7573d60208201fd5b808060200190518101906106bb9190611196565b9250505090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610732576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107299061156d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156107a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107999061152d565b60405180910390fd5b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161087f919061158d565b60405180910390a3505050565b600080600061040073ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f18160ddd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161093a9190611467565b600060405180830381855afa9150503d8060008114610975576040519150601f19603f3d011682016040523d82523d6000602084013e61097a565b606091505b5091509150600082141561098f573d60208201fd5b808060200190518101906109a391906111d7565b9250505090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a119061154d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a819061150d565b60405180910390fd5b610a95838383610ed1565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610af2919061158d565b60405180910390a3505050565b6000838311158290610b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3e91906114eb565b60405180910390fd5b5082840390509392505050565b600080600061040073ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f313ce567000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610c029190611467565b600060405180830381855afa9150503d8060008114610c3d576040519150601f19603f3d011682016040523d82523d6000602084013e610c42565b606091505b50915091506000821415610c57573d60208201fd5b80806020019051810190610c6b9190611200565b9250505090565b60008183610c809190611656565b905092915050565b600080600061040073ffffffffffffffffffffffffffffffffffffffff1684604051602401610cb7919061147e565b6040516020818303038152906040527f70a08231000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610d419190611467565b600060405180830381855afa9150503d8060008114610d7c576040519150601f19603f3d011682016040523d82523d6000602084013e610d81565b606091505b50915091506000821415610d96573d60208201fd5b80806020019051810190610daa91906111d7565b92505050919050565b606060008061040073ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f95d89b41000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610e619190611467565b600060405180830381855afa9150503d8060008114610e9c576040519150601f19603f3d011682016040523d82523d6000602084013e610ea1565b606091505b50915091506000821415610eb6573d60208201fd5b80806020019051810190610eca9190611196565b9250505090565b60008061040073ffffffffffffffffffffffffffffffffffffffff16858585604051602401610f0293929190611499565b6040516020818303038152906040527fbeabacc8000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610f8c9190611467565b6000604051808303816000865af19150503d8060008114610fc9576040519150601f19603f3d011682016040523d82523d6000602084013e610fce565b606091505b50915091506000821415610fe3573d60208201fd5b5050505050565b6000610ffd610ff8846115f4565b6115c3565b90508281526020810184848401111561101557600080fd5b611020848285611701565b509392505050565b600081359050611037816117a3565b92915050565b600082601f83011261104e57600080fd5b815161105e848260208601610fea565b91505092915050565b600081359050611076816117ba565b92915050565b60008151905061108b816117ba565b92915050565b6000815190506110a0816117d1565b92915050565b6000602082840312156110b857600080fd5b60006110c684828501611028565b91505092915050565b600080604083850312156110e257600080fd5b60006110f085828601611028565b925050602061110185828601611028565b9150509250929050565b60008060006060848603121561112057600080fd5b600061112e86828701611028565b935050602061113f86828701611028565b925050604061115086828701611067565b9150509250925092565b6000806040838503121561116d57600080fd5b600061117b85828601611028565b925050602061118c85828601611067565b9150509250929050565b6000602082840312156111a857600080fd5b600082015167ffffffffffffffff8111156111c257600080fd5b6111ce8482850161103d565b91505092915050565b6000602082840312156111e957600080fd5b60006111f78482850161107c565b91505092915050565b60006020828403121561121257600080fd5b600061122084828501611091565b91505092915050565b611232816116ac565b82525050565b611241816116be565b82525050565b600061125282611624565b61125c818561163a565b935061126c818560208601611701565b80840191505092915050565b60006112838261162f565b61128d8185611645565b935061129d818560208601611701565b6112a681611792565b840191505092915050565b60006112be602383611645565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611324602283611645565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061138a602583611645565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006113f0602483611645565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b611452816116ea565b82525050565b611461816116f4565b82525050565b60006114738284611247565b915081905092915050565b60006020820190506114936000830184611229565b92915050565b60006060820190506114ae6000830186611229565b6114bb6020830185611229565b6114c86040830184611449565b949350505050565b60006020820190506114e56000830184611238565b92915050565b600060208201905081810360008301526115058184611278565b905092915050565b60006020820190508181036000830152611526816112b1565b9050919050565b6000602082019050818103600083015261154681611317565b9050919050565b600060208201905081810360008301526115668161137d565b9050919050565b60006020820190508181036000830152611586816113e3565b9050919050565b60006020820190506115a26000830184611449565b92915050565b60006020820190506115bd6000830184611458565b92915050565b6000604051905081810181811067ffffffffffffffff821117156115ea576115e9611763565b5b8060405250919050565b600067ffffffffffffffff82111561160f5761160e611763565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b6000611661826116ea565b915061166c836116ea565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156116a1576116a0611734565b5b828201905092915050565b60006116b7826116ca565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561171f578082015181840152602081019050611704565b8381111561172e576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6117ac816116ac565b81146117b757600080fd5b50565b6117c3816116ea565b81146117ce57600080fd5b50565b6117da816116f4565b81146117e557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122002bda142f6d3b8cd80da14830da11aeaef5b7f9e5738411f4128ee899daeab3d64736f6c63430008000033", "immutableReferences": {}, "generatedSources": [], "deployedGeneratedSources": [ { "ast": { "nodeType": "YulBlock", "src": "0:13392:20", "statements": [ { "body": { "nodeType": "YulBlock", "src": "102:258:20", "statements": [ { "nodeType": "YulAssignment", "src": "112:74:20", "value": { "arguments": [ { "arguments": [ { "name": "length", "nodeType": "YulIdentifier", "src": "178:6:20" } ], "functionName": { "name": "array_allocation_size_t_string_memory_ptr", "nodeType": "YulIdentifier", "src": "136:41:20" }, "nodeType": "YulFunctionCall", "src": "136:49:20" } ], "functionName": { "name": "allocateMemory", "nodeType": "YulIdentifier", "src": "121:14:20" }, "nodeType": "YulFunctionCall", "src": "121:65:20" }, "variableNames": [ { "name": "array", "nodeType": "YulIdentifier", "src": "112:5:20" } ] }, { "expression": { "arguments": [ { "name": "array", "nodeType": "YulIdentifier", "src": "202:5:20" }, { "name": "length", "nodeType": "YulIdentifier", "src": "209:6:20" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "195:6:20" }, "nodeType": "YulFunctionCall", "src": "195:21:20" }, "nodeType": "YulExpressionStatement", "src": "195:21:20" }, { "nodeType": "YulVariableDeclaration", "src": "225:27:20", "value": { "arguments": [ { "name": "array", "nodeType": "YulIdentifier", "src": "240:5:20" }, { "kind": "number", "nodeType": "YulLiteral", "src": "247:4:20", "type": "", "value": "0x20" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "236:3:20" }, "nodeType": "YulFunctionCall", "src": "236:16:20" }, "variables": [ { "name": "dst", "nodeType": "YulTypedName", "src": "229:3:20", "type": "" } ] }, { "body": { "nodeType": "YulBlock", "src": "290:16:20", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "299:1:20", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "302:1:20", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "292:6:20" }, "nodeType": "YulFunctionCall", "src": "292:12:20" }, "nodeType": "YulExpressionStatement", "src": "292:12:20" } ] }, "condition": { "arguments": [ { "arguments": [ { "name": "src", "nodeType": "YulIdentifier", "src": "271:3:20" }, { "name": "length", "nodeType": "YulIdentifier", "src": "276:6:20" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "267:3:20" }, "nodeType": "YulFunctionCall", "src": "267:16:20" }, { "name": "end", "nodeType": "YulIdentifier", "src": "285:3:20" } ], "functionName": { "name": "gt", "nodeType": "YulIdentifier", "src": "264:2:20" }, "nodeType": "YulFunctionCall", "src": "264:25:20" }, "nodeType": "YulIf", "src": "261:2:20" }, { "expression": { "arguments": [ { "name": "src", "nodeType": "YulIdentifier", "src": "337:3:20" }, { "name": "dst", "nodeType": "YulIdentifier", "src": "342:3:20" }, { "name": "length", "nodeType": "YulIdentifier", "src": "347:6:20" } ], "functionName": { "name": "copy_memory_to_memory", "nodeType": "YulIdentifier", "src": "315:21:20" }, "nodeType": "YulFunctionCall", "src": "315:39:20" }, "nodeType": "YulExpressionStatement", "src": "315:39:20" } ] }, "name": "abi_decode_available_length_t_string_memory_ptr_fromMemory", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "src", "nodeType": "YulTypedName", "src": "75:3:20", "type": "" }, { "name": "length", "nodeType": "YulTypedName", "src": "80:6:20", "type": "" }, { "name": "end", "nodeType": "YulTypedName", "src": "88:3:20", "type": "" } ], "returnVariables": [ { "name": "array", "nodeType": "YulTypedName", "src": "96:5:20", "type": "" } ], "src": "7:353:20" }, { "body": { "nodeType": "YulBlock", "src": "418:87:20", "statements": [ { "nodeType": "YulAssignment", "src": "428:29:20", "value": { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", "src": "450:6:20" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", "src": "437:12:20" }, "nodeType": "YulFunctionCall", "src": "437:20:20" }, "variableNames": [ { "name": "value", "nodeType": "YulIdentifier", "src": "428:5:20" } ] }, { "expression": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", "src": "493:5:20" } ], "functionName": { "name": "validator_revert_t_address", "nodeType": "YulIdentifier", "src": "466:26:20" }, "nodeType": "YulFunctionCall", "src": "466:33:20" }, "nodeType": "YulExpressionStatement", "src": "466:33:20" } ] }, "name": "abi_decode_t_address", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "offset", "nodeType": "YulTypedName", "src": "396:6:20", "type": "" }, { "name": "end", "nodeType": "YulTypedName", "src": "404:3:20", "type": "" } ], "returnVariables": [ { "name": "value", "nodeType": "YulTypedName", "src": "412:5:20", "type": "" } ], "src": "366:139:20" }, { "body": { "nodeType": "YulBlock", "src": "598:215:20", "statements": [ { "body": { "nodeType": "YulBlock", "src": "647:16:20", "statements": [ { "expression": { "arguments": [ {