From 9f34fe31670fc37719c0873f4ad31eba189e7ed7 Mon Sep 17 00:00:00 2001 From: Logan Nguyen Date: Mon, 4 Mar 2024 13:45:35 -0500 Subject: [PATCH] fix: updated .gitignore to include the necessary artifacts for System Contract DApp Signed-off-by: Logan Nguyen --- .gitignore | 25 +- .../ExchangeRateMock.json | 75 + .../hts-precompile/IHRC.sol/IHRC.json | 37 + .../ERC20Contract.sol/ERC20Contract.json | 306 ++ .../ERC721Contract.sol/ERC721Contract.json | 455 +++ .../hrc/HRCContract.sol/HRCContract.json | 49 + .../TokenCreateContract.json | 660 +++++ .../TokenCreateCustomContract.json | 739 +++++ .../TokenManagementContract.json | 753 +++++ .../TokenQueryContract.json | 2566 +++++++++++++++++ .../TokenTransferContract.json | 530 ++++ .../ERC-20/ERC20Mock.sol/ERC20Mock.json | 353 +++ .../ERC-721/ERC721Mock.sol/ERC721Mock.json | 478 +++ .../IPrngSystemContract.json | 24 + .../PrngSystemContract.json | 37 + .../contracts-info/index.ts | 12 +- .../prerequisite-check/scripts/index.ts | 2 +- 17 files changed, 7092 insertions(+), 9 deletions(-) create mode 100644 artifacts/contracts/exchange-rate-precompile/ExchangeRateMock.sol/ExchangeRateMock.json create mode 100644 artifacts/contracts/hts-precompile/IHRC.sol/IHRC.json create mode 100644 artifacts/contracts/hts-precompile/examples/erc-20/ERC20Contract.sol/ERC20Contract.json create mode 100644 artifacts/contracts/hts-precompile/examples/erc-721/ERC721Contract.sol/ERC721Contract.json create mode 100644 artifacts/contracts/hts-precompile/examples/hrc/HRCContract.sol/HRCContract.json create mode 100644 artifacts/contracts/hts-precompile/examples/token-create/TokenCreateContract.sol/TokenCreateContract.json create mode 100644 artifacts/contracts/hts-precompile/examples/token-create/TokenCreateCustom.sol/TokenCreateCustomContract.json create mode 100644 artifacts/contracts/hts-precompile/examples/token-manage/TokenManagementContract.sol/TokenManagementContract.json create mode 100644 artifacts/contracts/hts-precompile/examples/token-query/TokenQueryContract.sol/TokenQueryContract.json create mode 100644 artifacts/contracts/hts-precompile/examples/token-transfer/TokenTransferContract.sol/TokenTransferContract.json create mode 100644 artifacts/contracts/openzeppelin/ERC-20/ERC20Mock.sol/ERC20Mock.json create mode 100644 artifacts/contracts/openzeppelin/ERC-721/ERC721Mock.sol/ERC721Mock.json create mode 100644 artifacts/contracts/util-precompile/IPrngSystemContract.sol/IPrngSystemContract.json create mode 100644 artifacts/contracts/util-precompile/PrngSystemContract.sol/PrngSystemContract.json diff --git a/.gitignore b/.gitignore index 90ea633c2..947a54f3f 100644 --- a/.gitignore +++ b/.gitignore @@ -3,15 +3,36 @@ cache .idea # ignore non repo contract related aritifacts -artifacts/ .openzeppelin/unknown-298.json .env test-results.* contracts-abi/* !contracts-abi/contracts -## --- Foundry Gitignore --- +# Ignore all default artifacts except for TokenCreateCustomContract, TokenManagementContract, TokenQueryContract, TokenTransferContract, IHRC729Contract, PrngSystemContract, ERC20Mock, ERC721Mock +# because the System Contract DApp requires the bytecode of these contracts +artifacts/contracts/* +artifacts/build-info +artifacts/@openzeppelin +artifacts/contracts/**/**/*.dbg.json + +!artifacts/contracts/hts-precompile +artifacts/contracts/hts-precompile/* +!artifacts/contracts/hts-precompile/examples +!artifacts/contracts/hts-precompile/IHRC.sol + +!artifacts/contracts/exchange-rate-precompile +artifacts/contracts/exchange-rate-precompile/* +!artifacts/contracts/exchange-rate-precompile/ExchangeRateMock.sol +!artifacts/contracts/util-precompile + +!artifacts/contracts/openzeppelin +artifacts/contracts/openzeppelin/* +!artifacts/contracts/openzeppelin/ERC-20 +!artifacts/contracts/openzeppelin/ERC-721 + +## --- Foundry Gitignore --- # Compiler files forge-cache/ out/ diff --git a/artifacts/contracts/exchange-rate-precompile/ExchangeRateMock.sol/ExchangeRateMock.json b/artifacts/contracts/exchange-rate-precompile/ExchangeRateMock.sol/ExchangeRateMock.json new file mode 100644 index 000000000..646c00d85 --- /dev/null +++ b/artifacts/contracts/exchange-rate-precompile/ExchangeRateMock.sol/ExchangeRateMock.json @@ -0,0 +1,75 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ExchangeRateMock", + "sourceName": "contracts/exchange-rate-precompile/ExchangeRateMock.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "tinybars", + "type": "uint256" + } + ], + "name": "TinyBars", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "tinycents", + "type": "uint256" + } + ], + "name": "TinyCents", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tinybars", + "type": "uint256" + } + ], + "name": "convertTinybarsToTinycents", + "outputs": [ + { + "internalType": "uint256", + "name": "tineycents", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tineycents", + "type": "uint256" + } + ], + "name": "convertTinycentsToTinybars", + "outputs": [ + { + "internalType": "uint256", + "name": "tinybars", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506102dd806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634abd27a31461003b578063677feb6714610060575b600080fd5b61004e610049366004610246565b610073565b60405190815260200160405180910390f35b61004e61006e366004610246565b6100be565b600061007e826100fc565b90507f1e2eedf37f019c356cd1ab2a7445bef30fa8b9e32be6636e6efae70244c7b3e0816040516100b191815260200190565b60405180910390a1919050565b60006100c98261020d565b90507fc399bb30ec076dee6179663a550714898c27a4a8cf23a336b2e49ec777779459816040516100b191815260200190565b600080600061016873ffffffffffffffffffffffffffffffffffffffff16632e3cff6a60e01b8560405160240161013591815260200190565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290516101a0919061025f565b6000604051808303816000865af19150503d80600081146101dd576040519150601f19603f3d011682016040523d82523d6000602084013e6101e2565b606091505b5091509150816101f157600080fd5b80806020019051810190610205919061028e565b949350505050565b600080600061016873ffffffffffffffffffffffffffffffffffffffff166343a8822960e01b8560405160240161013591815260200190565b60006020828403121561025857600080fd5b5035919050565b6000825160005b818110156102805760208186018101518583015201610266565b506000920191825250919050565b6000602082840312156102a057600080fd5b505191905056fea2646970667358221220e82f7a7c1f21512f8ddf0ea800dfb9d0175d653405adeed9a4222d4c7de9f8fe64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c80634abd27a31461003b578063677feb6714610060575b600080fd5b61004e610049366004610246565b610073565b60405190815260200160405180910390f35b61004e61006e366004610246565b6100be565b600061007e826100fc565b90507f1e2eedf37f019c356cd1ab2a7445bef30fa8b9e32be6636e6efae70244c7b3e0816040516100b191815260200190565b60405180910390a1919050565b60006100c98261020d565b90507fc399bb30ec076dee6179663a550714898c27a4a8cf23a336b2e49ec777779459816040516100b191815260200190565b600080600061016873ffffffffffffffffffffffffffffffffffffffff16632e3cff6a60e01b8560405160240161013591815260200190565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290516101a0919061025f565b6000604051808303816000865af19150503d80600081146101dd576040519150601f19603f3d011682016040523d82523d6000602084013e6101e2565b606091505b5091509150816101f157600080fd5b80806020019051810190610205919061028e565b949350505050565b600080600061016873ffffffffffffffffffffffffffffffffffffffff166343a8822960e01b8560405160240161013591815260200190565b60006020828403121561025857600080fd5b5035919050565b6000825160005b818110156102805760208186018101518583015201610266565b506000920191825250919050565b6000602082840312156102a057600080fd5b505191905056fea2646970667358221220e82f7a7c1f21512f8ddf0ea800dfb9d0175d653405adeed9a4222d4c7de9f8fe64736f6c63430008170033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/hts-precompile/IHRC.sol/IHRC.json b/artifacts/contracts/hts-precompile/IHRC.sol/IHRC.json new file mode 100644 index 000000000..4b61039a2 --- /dev/null +++ b/artifacts/contracts/hts-precompile/IHRC.sol/IHRC.json @@ -0,0 +1,37 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IHRC", + "sourceName": "contracts/hts-precompile/IHRC.sol", + "abi": [ + { + "inputs": [], + "name": "associate", + "outputs": [ + { + "internalType": "uint256", + "name": "responseCode", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "dissociate", + "outputs": [ + { + "internalType": "uint256", + "name": "responseCode", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/hts-precompile/examples/erc-20/ERC20Contract.sol/ERC20Contract.json b/artifacts/contracts/hts-precompile/examples/erc-20/ERC20Contract.sol/ERC20Contract.json new file mode 100644 index 000000000..faa7a4246 --- /dev/null +++ b/artifacts/contracts/hts-precompile/examples/erc-20/ERC20Contract.sol/ERC20Contract.json @@ -0,0 +1,306 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC20Contract", + "sourceName": "contracts/hts-precompile/examples/erc-20/ERC20Contract.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "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": "token", + "type": "address" + }, + { + "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": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "delegateApprove", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "delegateTransfer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "delegateTransferFrom", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "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": "token", + "type": "address" + }, + { + "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" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610b5c806100206000396000f3fe6080604052600436106100c75760003560e01c8063d449a83211610074578063eac6f3fe1161004e578063eac6f3fe14610234578063f4b79da514610247578063f7888aec1461026757600080fd5b8063d449a832146101c2578063e1f21c67146101f4578063e4dc2aa41461021457600080fd5b8063927da105116100a5578063927da10514610154578063a86e357614610182578063beabacc8146101a257600080fd5b806301984892146100cc57806315dacbea14610102578063734194a714610132575b600080fd5b3480156100d857600080fd5b506100ec6100e736600461087a565b610287565b6040516100f991906108b9565b60405180910390f35b34801561010e57600080fd5b5061012261011d3660046108ec565b6102f5565b60405190151581526020016100f9565b34801561013e57600080fd5b5061015261014d366004610937565b61037d565b005b34801561016057600080fd5b5061017461016f366004610973565b610469565b6040519081526020016100f9565b34801561018e57600080fd5b506100ec61019d36600461087a565b6104e7565b3480156101ae57600080fd5b506101226101bd366004610937565b610527565b3480156101ce57600080fd5b506101e26101dd36600461087a565b61059f565b60405160ff90911681526020016100f9565b34801561020057600080fd5b5061012261020f366004610937565b610603565b34801561022057600080fd5b5061017461022f36600461087a565b61063c565b6101526102423660046108ec565b6106a0565b34801561025357600080fd5b50610152610262366004610937565b610790565b34801561027357600080fd5b506101746102823660046109b6565b6107e9565b6060816001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa1580156102c7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102ef91908101906109ff565b92915050565b6040516323b872dd60e01b81526001600160a01b038481166004830152838116602483015260448201839052600091908616906323b872dd906064016020604051808303816000875af1158015610350573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103749190610aac565b95945050505050565b6040516001600160a01b038381166024830152604482018390526000919085169060640160408051601f198184030181529181526020820180516001600160e01b031663095ea7b360e01b179052516103d69190610ace565b600060405180830381855af49150503d8060008114610411576040519150601f19603f3d011682016040523d82523d6000602084013e610416565b606091505b50509050806104635760405162461bcd60e51b815260206004820152601460248201527311195b1959d85d194818d85b1b0819985a5b195960621b60448201526064015b60405180910390fd5b50505050565b604051636eb1769f60e11b81526001600160a01b03838116600483015282811660248301526000919085169063dd62ed3e90604401602060405180830381865afa1580156104bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104df9190610aea565b949350505050565b6060816001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa1580156102c7573d6000803e3d6000fd5b60405163a9059cbb60e01b81526001600160a01b038381166004830152602482018390526000919085169063a9059cbb906044015b6020604051808303816000875af115801561057b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104df9190610aac565b6000816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ef9190610b03565b60405163095ea7b360e01b81526001600160a01b038381166004830152602482018390526000919085169063095ea7b39060440161055c565b6000816001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561067c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ef9190610aea565b6040516001600160a01b0384811660248301528381166044830152606482018390526000919086169060840160408051601f198184030181529181526020820180516001600160e01b03166323b872dd60e01b179052516107019190610ace565b600060405180830381855af49150503d806000811461073c576040519150601f19603f3d011682016040523d82523d6000602084013e610741565b606091505b50509050806107895760405162461bcd60e51b815260206004820152601460248201527311195b1959d85d194818d85b1b0819985a5b195960621b604482015260640161045a565b5050505050565b6040516001600160a01b038381166024830152604482018390526000919085169060640160408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b179052516103d69190610ace565b6040516370a0823160e01b81526001600160a01b038281166004830152600091908416906370a0823190602401602060405180830381865afa158015610833573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108579190610aea565b9392505050565b80356001600160a01b038116811461087557600080fd5b919050565b60006020828403121561088c57600080fd5b6108578261085e565b60005b838110156108b0578181015183820152602001610898565b50506000910152565b60208152600082518060208401526108d8816040850160208701610895565b601f01601f19169190910160400192915050565b6000806000806080858703121561090257600080fd5b61090b8561085e565b93506109196020860161085e565b92506109276040860161085e565b9396929550929360600135925050565b60008060006060848603121561094c57600080fd5b6109558461085e565b92506109636020850161085e565b9150604084013590509250925092565b60008060006060848603121561098857600080fd5b6109918461085e565b925061099f6020850161085e565b91506109ad6040850161085e565b90509250925092565b600080604083850312156109c957600080fd5b6109d28361085e565b91506109e06020840161085e565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610a1157600080fd5b815167ffffffffffffffff80821115610a2957600080fd5b818401915084601f830112610a3d57600080fd5b815181811115610a4f57610a4f6109e9565b604051601f8201601f19908116603f01168101908382118183101715610a7757610a776109e9565b81604052828152876020848701011115610a9057600080fd5b610aa1836020830160208801610895565b979650505050505050565b600060208284031215610abe57600080fd5b8151801515811461085757600080fd5b60008251610ae0818460208701610895565b9190910192915050565b600060208284031215610afc57600080fd5b5051919050565b600060208284031215610b1557600080fd5b815160ff8116811461085757600080fdfea2646970667358221220e0fdab2e93670283e04f9c94f329897934b32611a62fb5c9b4bdfd4eda3c96aa64736f6c63430008170033", + "deployedBytecode": "0x6080604052600436106100c75760003560e01c8063d449a83211610074578063eac6f3fe1161004e578063eac6f3fe14610234578063f4b79da514610247578063f7888aec1461026757600080fd5b8063d449a832146101c2578063e1f21c67146101f4578063e4dc2aa41461021457600080fd5b8063927da105116100a5578063927da10514610154578063a86e357614610182578063beabacc8146101a257600080fd5b806301984892146100cc57806315dacbea14610102578063734194a714610132575b600080fd5b3480156100d857600080fd5b506100ec6100e736600461087a565b610287565b6040516100f991906108b9565b60405180910390f35b34801561010e57600080fd5b5061012261011d3660046108ec565b6102f5565b60405190151581526020016100f9565b34801561013e57600080fd5b5061015261014d366004610937565b61037d565b005b34801561016057600080fd5b5061017461016f366004610973565b610469565b6040519081526020016100f9565b34801561018e57600080fd5b506100ec61019d36600461087a565b6104e7565b3480156101ae57600080fd5b506101226101bd366004610937565b610527565b3480156101ce57600080fd5b506101e26101dd36600461087a565b61059f565b60405160ff90911681526020016100f9565b34801561020057600080fd5b5061012261020f366004610937565b610603565b34801561022057600080fd5b5061017461022f36600461087a565b61063c565b6101526102423660046108ec565b6106a0565b34801561025357600080fd5b50610152610262366004610937565b610790565b34801561027357600080fd5b506101746102823660046109b6565b6107e9565b6060816001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa1580156102c7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102ef91908101906109ff565b92915050565b6040516323b872dd60e01b81526001600160a01b038481166004830152838116602483015260448201839052600091908616906323b872dd906064016020604051808303816000875af1158015610350573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103749190610aac565b95945050505050565b6040516001600160a01b038381166024830152604482018390526000919085169060640160408051601f198184030181529181526020820180516001600160e01b031663095ea7b360e01b179052516103d69190610ace565b600060405180830381855af49150503d8060008114610411576040519150601f19603f3d011682016040523d82523d6000602084013e610416565b606091505b50509050806104635760405162461bcd60e51b815260206004820152601460248201527311195b1959d85d194818d85b1b0819985a5b195960621b60448201526064015b60405180910390fd5b50505050565b604051636eb1769f60e11b81526001600160a01b03838116600483015282811660248301526000919085169063dd62ed3e90604401602060405180830381865afa1580156104bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104df9190610aea565b949350505050565b6060816001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa1580156102c7573d6000803e3d6000fd5b60405163a9059cbb60e01b81526001600160a01b038381166004830152602482018390526000919085169063a9059cbb906044015b6020604051808303816000875af115801561057b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104df9190610aac565b6000816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ef9190610b03565b60405163095ea7b360e01b81526001600160a01b038381166004830152602482018390526000919085169063095ea7b39060440161055c565b6000816001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561067c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ef9190610aea565b6040516001600160a01b0384811660248301528381166044830152606482018390526000919086169060840160408051601f198184030181529181526020820180516001600160e01b03166323b872dd60e01b179052516107019190610ace565b600060405180830381855af49150503d806000811461073c576040519150601f19603f3d011682016040523d82523d6000602084013e610741565b606091505b50509050806107895760405162461bcd60e51b815260206004820152601460248201527311195b1959d85d194818d85b1b0819985a5b195960621b604482015260640161045a565b5050505050565b6040516001600160a01b038381166024830152604482018390526000919085169060640160408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b179052516103d69190610ace565b6040516370a0823160e01b81526001600160a01b038281166004830152600091908416906370a0823190602401602060405180830381865afa158015610833573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108579190610aea565b9392505050565b80356001600160a01b038116811461087557600080fd5b919050565b60006020828403121561088c57600080fd5b6108578261085e565b60005b838110156108b0578181015183820152602001610898565b50506000910152565b60208152600082518060208401526108d8816040850160208701610895565b601f01601f19169190910160400192915050565b6000806000806080858703121561090257600080fd5b61090b8561085e565b93506109196020860161085e565b92506109276040860161085e565b9396929550929360600135925050565b60008060006060848603121561094c57600080fd5b6109558461085e565b92506109636020850161085e565b9150604084013590509250925092565b60008060006060848603121561098857600080fd5b6109918461085e565b925061099f6020850161085e565b91506109ad6040850161085e565b90509250925092565b600080604083850312156109c957600080fd5b6109d28361085e565b91506109e06020840161085e565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610a1157600080fd5b815167ffffffffffffffff80821115610a2957600080fd5b818401915084601f830112610a3d57600080fd5b815181811115610a4f57610a4f6109e9565b604051601f8201601f19908116603f01168101908382118183101715610a7757610a776109e9565b81604052828152876020848701011115610a9057600080fd5b610aa1836020830160208801610895565b979650505050505050565b600060208284031215610abe57600080fd5b8151801515811461085757600080fd5b60008251610ae0818460208701610895565b9190910192915050565b600060208284031215610afc57600080fd5b5051919050565b600060208284031215610b1557600080fd5b815160ff8116811461085757600080fdfea2646970667358221220e0fdab2e93670283e04f9c94f329897934b32611a62fb5c9b4bdfd4eda3c96aa64736f6c63430008170033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/hts-precompile/examples/erc-721/ERC721Contract.sol/ERC721Contract.json b/artifacts/contracts/hts-precompile/examples/erc-721/ERC721Contract.sol/ERC721Contract.json new file mode 100644 index 000000000..2eb24f09e --- /dev/null +++ b/artifacts/contracts/hts-precompile/examples/erc-721/ERC721Contract.sol/ERC721Contract.json @@ -0,0 +1,455 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC721Contract", + "sourceName": "contracts/hts-precompile/examples/erc-721/ERC721Contract.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "delegateApprove", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "delegateSetApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "delegateTransferFrom", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFromWithData", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610f81806100206000396000f3fe6080604052600436106101095760003560e01c8063a86e357611610095578063e4dc2aa411610064578063e4dc2aa4146102ab578063e9dc6375146102cb578063eac6f3fe146102eb578063f49f40db146102fe578063f7888aec1461032e57600080fd5b8063a86e357614610245578063cb60f1bf14610265578063d9fc4b6114610285578063e1f21c671461029857600080fd5b806315dacbea116100dc57806315dacbea146101b15780631f29d2dc146101c4578063367605ca146101e45780636b42bf2f14610204578063734194a71461023257600080fd5b8063019848921461010e578063039d6f1914610144578063098f2366146101595780630db1cc1b14610191575b600080fd5b34801561011a57600080fd5b5061012e610129366004610b0e565b61034e565b60405161013b9190610b4f565b60405180910390f35b610157610152366004610b82565b6103bc565b005b34801561016557600080fd5b50610179610174366004610c35565b61042a565b6040516001600160a01b03909116815260200161013b565b34801561019d57600080fd5b506101576101ac366004610c6f565b61049e565b6101576101bf366004610cba565b61058b565b3480156101d057600080fd5b506101796101df366004610c35565b6105fc565b3480156101f057600080fd5b506101576101ff366004610c6f565b61062c565b34801561021057600080fd5b5061022461021f366004610d0b565b610695565b60405190815260200161013b565b610157610240366004610d0b565b610712565b34801561025157600080fd5b5061012e610260366004610b0e565b61076b565b34801561027157600080fd5b50610224610280366004610c35565b6107ab565b610157610293366004610cba565b610818565b6101576102a6366004610d0b565b610855565b3480156102b757600080fd5b506102246102c6366004610b0e565b61088a565b3480156102d757600080fd5b5061012e6102e6366004610c35565b6108ee565b6101576102f9366004610cba565b61095e565b34801561030a57600080fd5b5061031e610319366004610d4c565b610a4e565b604051901515815260200161013b565b34801561033a57600080fd5b50610224610349366004610d8c565b610ac4565b6060816001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801561038e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103b69190810190610ddb565b92915050565b604051635c46a7ef60e11b81526001600160a01b0387169063b88d4fde906103f09088908890889088908890600401610e88565b600060405180830381600087803b15801561040a57600080fd5b505af115801561041e573d6000803e3d6000fd5b50505050505050505050565b60405163020604bf60e21b8152600481018290526000906001600160a01b0384169063081812fc906024015b602060405180830381865afa158015610473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104979190610edc565b9392505050565b6040516001600160a01b03838116602483015282151560448301526000919085169060640160408051601f198184030181529181526020820180516001600160e01b031663a22cb46560e01b179052516104f89190610ef9565b600060405180830381855af49150503d8060008114610533576040519150601f19603f3d011682016040523d82523d6000602084013e610538565b606091505b50509050806105855760405162461bcd60e51b815260206004820152601460248201527311195b1959d85d194818d85b1b0819985a5b195960621b60448201526064015b60405180910390fd5b50505050565b6040516323b872dd60e01b81526001600160a01b0384811660048301528381166024830152604482018390528516906323b872dd906064015b600060405180830381600087803b1580156105de57600080fd5b505af11580156105f2573d6000803e3d6000fd5b5050505050505050565b6040516331a9108f60e11b8152600481018290526000906001600160a01b03841690636352211e90602401610456565b60405163a22cb46560e01b81526001600160a01b038381166004830152821515602483015284169063a22cb465906044015b600060405180830381600087803b15801561067857600080fd5b505af115801561068c573d6000803e3d6000fd5b50505050505050565b604051632f745c5960e01b81526001600160a01b0383811660048301526024820183905260009190851690632f745c5990604401602060405180830381865afa1580156106e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070a9190610f15565b949350505050565b6040516001600160a01b038381166024830152604482018390526000919085169060640160408051601f198184030181529181526020820180516001600160e01b031663095ea7b360e01b179052516104f89190610ef9565b6060816001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801561038e573d6000803e3d6000fd5b604051634f6ccce760e01b8152600481018290526000906001600160a01b03841690634f6ccce7906024015b602060405180830381865afa1580156107f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104979190610f15565b604051632142170760e11b81526001600160a01b0384811660048301528381166024830152604482018390528516906342842e0e906064016105c4565b60405163095ea7b360e01b81526001600160a01b0383811660048301526024820183905284169063095ea7b39060440161065e565b6000816001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b69190610f15565b60405163c87b56dd60e01b8152600481018290526060906001600160a01b0384169063c87b56dd90602401600060405180830381865afa158015610936573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104979190810190610ddb565b6040516001600160a01b0384811660248301528381166044830152606482018390526000919086169060840160408051601f198184030181529181526020820180516001600160e01b03166323b872dd60e01b179052516109bf9190610ef9565b600060405180830381855af49150503d80600081146109fa576040519150601f19603f3d011682016040523d82523d6000602084013e6109ff565b606091505b5050905080610a475760405162461bcd60e51b815260206004820152601460248201527311195b1959d85d194818d85b1b0819985a5b195960621b604482015260640161057c565b5050505050565b60405163e985e9c560e01b81526001600160a01b03838116600483015282811660248301526000919085169063e985e9c590604401602060405180830381865afa158015610aa0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070a9190610f2e565b6040516370a0823160e01b81526001600160a01b038281166004830152600091908416906370a08231906024016107d7565b6001600160a01b0381168114610b0b57600080fd5b50565b600060208284031215610b2057600080fd5b813561049781610af6565b60005b83811015610b46578181015183820152602001610b2e565b50506000910152565b6020815260008251806020840152610b6e816040850160208701610b2b565b601f01601f19169190910160400192915050565b60008060008060008060a08789031215610b9b57600080fd5b8635610ba681610af6565b95506020870135610bb681610af6565b94506040870135610bc681610af6565b935060608701359250608087013567ffffffffffffffff80821115610bea57600080fd5b818901915089601f830112610bfe57600080fd5b813581811115610c0d57600080fd5b8a6020828501011115610c1f57600080fd5b6020830194508093505050509295509295509295565b60008060408385031215610c4857600080fd5b8235610c5381610af6565b946020939093013593505050565b8015158114610b0b57600080fd5b600080600060608486031215610c8457600080fd5b8335610c8f81610af6565b92506020840135610c9f81610af6565b91506040840135610caf81610c61565b809150509250925092565b60008060008060808587031215610cd057600080fd5b8435610cdb81610af6565b93506020850135610ceb81610af6565b92506040850135610cfb81610af6565b9396929550929360600135925050565b600080600060608486031215610d2057600080fd5b8335610d2b81610af6565b92506020840135610d3b81610af6565b929592945050506040919091013590565b600080600060608486031215610d6157600080fd5b8335610d6c81610af6565b92506020840135610d7c81610af6565b91506040840135610caf81610af6565b60008060408385031215610d9f57600080fd5b8235610daa81610af6565b91506020830135610dba81610af6565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610ded57600080fd5b815167ffffffffffffffff80821115610e0557600080fd5b818401915084601f830112610e1957600080fd5b815181811115610e2b57610e2b610dc5565b604051601f8201601f19908116603f01168101908382118183101715610e5357610e53610dc5565b81604052828152876020848701011115610e6c57600080fd5b610e7d836020830160208801610b2b565b979650505050505050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b600060208284031215610eee57600080fd5b815161049781610af6565b60008251610f0b818460208701610b2b565b9190910192915050565b600060208284031215610f2757600080fd5b5051919050565b600060208284031215610f4057600080fd5b815161049781610c6156fea264697066735822122089717c52affa807a3eb1e0b66cb1f5b8eedbe60af75d70105349fbc28b0ddc5d64736f6c63430008170033", + "deployedBytecode": "0x6080604052600436106101095760003560e01c8063a86e357611610095578063e4dc2aa411610064578063e4dc2aa4146102ab578063e9dc6375146102cb578063eac6f3fe146102eb578063f49f40db146102fe578063f7888aec1461032e57600080fd5b8063a86e357614610245578063cb60f1bf14610265578063d9fc4b6114610285578063e1f21c671461029857600080fd5b806315dacbea116100dc57806315dacbea146101b15780631f29d2dc146101c4578063367605ca146101e45780636b42bf2f14610204578063734194a71461023257600080fd5b8063019848921461010e578063039d6f1914610144578063098f2366146101595780630db1cc1b14610191575b600080fd5b34801561011a57600080fd5b5061012e610129366004610b0e565b61034e565b60405161013b9190610b4f565b60405180910390f35b610157610152366004610b82565b6103bc565b005b34801561016557600080fd5b50610179610174366004610c35565b61042a565b6040516001600160a01b03909116815260200161013b565b34801561019d57600080fd5b506101576101ac366004610c6f565b61049e565b6101576101bf366004610cba565b61058b565b3480156101d057600080fd5b506101796101df366004610c35565b6105fc565b3480156101f057600080fd5b506101576101ff366004610c6f565b61062c565b34801561021057600080fd5b5061022461021f366004610d0b565b610695565b60405190815260200161013b565b610157610240366004610d0b565b610712565b34801561025157600080fd5b5061012e610260366004610b0e565b61076b565b34801561027157600080fd5b50610224610280366004610c35565b6107ab565b610157610293366004610cba565b610818565b6101576102a6366004610d0b565b610855565b3480156102b757600080fd5b506102246102c6366004610b0e565b61088a565b3480156102d757600080fd5b5061012e6102e6366004610c35565b6108ee565b6101576102f9366004610cba565b61095e565b34801561030a57600080fd5b5061031e610319366004610d4c565b610a4e565b604051901515815260200161013b565b34801561033a57600080fd5b50610224610349366004610d8c565b610ac4565b6060816001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801561038e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103b69190810190610ddb565b92915050565b604051635c46a7ef60e11b81526001600160a01b0387169063b88d4fde906103f09088908890889088908890600401610e88565b600060405180830381600087803b15801561040a57600080fd5b505af115801561041e573d6000803e3d6000fd5b50505050505050505050565b60405163020604bf60e21b8152600481018290526000906001600160a01b0384169063081812fc906024015b602060405180830381865afa158015610473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104979190610edc565b9392505050565b6040516001600160a01b03838116602483015282151560448301526000919085169060640160408051601f198184030181529181526020820180516001600160e01b031663a22cb46560e01b179052516104f89190610ef9565b600060405180830381855af49150503d8060008114610533576040519150601f19603f3d011682016040523d82523d6000602084013e610538565b606091505b50509050806105855760405162461bcd60e51b815260206004820152601460248201527311195b1959d85d194818d85b1b0819985a5b195960621b60448201526064015b60405180910390fd5b50505050565b6040516323b872dd60e01b81526001600160a01b0384811660048301528381166024830152604482018390528516906323b872dd906064015b600060405180830381600087803b1580156105de57600080fd5b505af11580156105f2573d6000803e3d6000fd5b5050505050505050565b6040516331a9108f60e11b8152600481018290526000906001600160a01b03841690636352211e90602401610456565b60405163a22cb46560e01b81526001600160a01b038381166004830152821515602483015284169063a22cb465906044015b600060405180830381600087803b15801561067857600080fd5b505af115801561068c573d6000803e3d6000fd5b50505050505050565b604051632f745c5960e01b81526001600160a01b0383811660048301526024820183905260009190851690632f745c5990604401602060405180830381865afa1580156106e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070a9190610f15565b949350505050565b6040516001600160a01b038381166024830152604482018390526000919085169060640160408051601f198184030181529181526020820180516001600160e01b031663095ea7b360e01b179052516104f89190610ef9565b6060816001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801561038e573d6000803e3d6000fd5b604051634f6ccce760e01b8152600481018290526000906001600160a01b03841690634f6ccce7906024015b602060405180830381865afa1580156107f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104979190610f15565b604051632142170760e11b81526001600160a01b0384811660048301528381166024830152604482018390528516906342842e0e906064016105c4565b60405163095ea7b360e01b81526001600160a01b0383811660048301526024820183905284169063095ea7b39060440161065e565b6000816001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b69190610f15565b60405163c87b56dd60e01b8152600481018290526060906001600160a01b0384169063c87b56dd90602401600060405180830381865afa158015610936573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104979190810190610ddb565b6040516001600160a01b0384811660248301528381166044830152606482018390526000919086169060840160408051601f198184030181529181526020820180516001600160e01b03166323b872dd60e01b179052516109bf9190610ef9565b600060405180830381855af49150503d80600081146109fa576040519150601f19603f3d011682016040523d82523d6000602084013e6109ff565b606091505b5050905080610a475760405162461bcd60e51b815260206004820152601460248201527311195b1959d85d194818d85b1b0819985a5b195960621b604482015260640161057c565b5050505050565b60405163e985e9c560e01b81526001600160a01b03838116600483015282811660248301526000919085169063e985e9c590604401602060405180830381865afa158015610aa0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070a9190610f2e565b6040516370a0823160e01b81526001600160a01b038281166004830152600091908416906370a08231906024016107d7565b6001600160a01b0381168114610b0b57600080fd5b50565b600060208284031215610b2057600080fd5b813561049781610af6565b60005b83811015610b46578181015183820152602001610b2e565b50506000910152565b6020815260008251806020840152610b6e816040850160208701610b2b565b601f01601f19169190910160400192915050565b60008060008060008060a08789031215610b9b57600080fd5b8635610ba681610af6565b95506020870135610bb681610af6565b94506040870135610bc681610af6565b935060608701359250608087013567ffffffffffffffff80821115610bea57600080fd5b818901915089601f830112610bfe57600080fd5b813581811115610c0d57600080fd5b8a6020828501011115610c1f57600080fd5b6020830194508093505050509295509295509295565b60008060408385031215610c4857600080fd5b8235610c5381610af6565b946020939093013593505050565b8015158114610b0b57600080fd5b600080600060608486031215610c8457600080fd5b8335610c8f81610af6565b92506020840135610c9f81610af6565b91506040840135610caf81610c61565b809150509250925092565b60008060008060808587031215610cd057600080fd5b8435610cdb81610af6565b93506020850135610ceb81610af6565b92506040850135610cfb81610af6565b9396929550929360600135925050565b600080600060608486031215610d2057600080fd5b8335610d2b81610af6565b92506020840135610d3b81610af6565b929592945050506040919091013590565b600080600060608486031215610d6157600080fd5b8335610d6c81610af6565b92506020840135610d7c81610af6565b91506040840135610caf81610af6565b60008060408385031215610d9f57600080fd5b8235610daa81610af6565b91506020830135610dba81610af6565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610ded57600080fd5b815167ffffffffffffffff80821115610e0557600080fd5b818401915084601f830112610e1957600080fd5b815181811115610e2b57610e2b610dc5565b604051601f8201601f19908116603f01168101908382118183101715610e5357610e53610dc5565b81604052828152876020848701011115610e6c57600080fd5b610e7d836020830160208801610b2b565b979650505050505050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b600060208284031215610eee57600080fd5b815161049781610af6565b60008251610f0b818460208701610b2b565b9190910192915050565b600060208284031215610f2757600080fd5b5051919050565b600060208284031215610f4057600080fd5b815161049781610c6156fea264697066735822122089717c52affa807a3eb1e0b66cb1f5b8eedbe60af75d70105349fbc28b0ddc5d64736f6c63430008170033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/hts-precompile/examples/hrc/HRCContract.sol/HRCContract.json b/artifacts/contracts/hts-precompile/examples/hrc/HRCContract.sol/HRCContract.json new file mode 100644 index 000000000..e01c893a9 --- /dev/null +++ b/artifacts/contracts/hts-precompile/examples/hrc/HRCContract.sol/HRCContract.json @@ -0,0 +1,49 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "HRCContract", + "sourceName": "contracts/hts-precompile/examples/hrc/HRCContract.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "associate", + "outputs": [ + { + "internalType": "uint256", + "name": "responseCode", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "dissociate", + "outputs": [ + { + "internalType": "uint256", + "name": "responseCode", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506101a0806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063322e35501461003b578063d89f312314610060575b600080fd5b61004e610049366004610121565b610073565b60405190815260200160405180910390f35b61004e61006e366004610121565b6100df565b6000816001600160a01b0316635c9217e06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156100b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100d99190610151565b92915050565b6000816001600160a01b0316630a754de66040518163ffffffff1660e01b81526004016020604051808303816000875af11580156100b5573d6000803e3d6000fd5b60006020828403121561013357600080fd5b81356001600160a01b038116811461014a57600080fd5b9392505050565b60006020828403121561016357600080fd5b505191905056fea26469706673582212209b69498c3d65324aca9a621cdb22b17518951d53b840cd6ab19db1d7118729a964736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063322e35501461003b578063d89f312314610060575b600080fd5b61004e610049366004610121565b610073565b60405190815260200160405180910390f35b61004e61006e366004610121565b6100df565b6000816001600160a01b0316635c9217e06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156100b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100d99190610151565b92915050565b6000816001600160a01b0316630a754de66040518163ffffffff1660e01b81526004016020604051808303816000875af11580156100b5573d6000803e3d6000fd5b60006020828403121561013357600080fd5b81356001600160a01b038116811461014a57600080fd5b9392505050565b60006020828403121561016357600080fd5b505191905056fea26469706673582212209b69498c3d65324aca9a621cdb22b17518951d53b840cd6ab19db1d7118729a964736f6c63430008170033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/hts-precompile/examples/token-create/TokenCreateContract.sol/TokenCreateContract.json b/artifacts/contracts/hts-precompile/examples/token-create/TokenCreateContract.sol/TokenCreateContract.json new file mode 100644 index 000000000..642b8b74e --- /dev/null +++ b/artifacts/contracts/hts-precompile/examples/token-create/TokenCreateContract.sol/TokenCreateContract.json @@ -0,0 +1,660 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TokenCreateContract", + "sourceName": "contracts/hts-precompile/examples/token-create/TokenCreateContract.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "", + "type": "bool" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "CallResponseEvent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "tokenAddress", + "type": "address" + } + ], + "name": "CreatedToken", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "kycGranted", + "type": "bool" + } + ], + "name": "KycGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "int64", + "name": "newTotalSupply", + "type": "int64" + }, + { + "indexed": false, + "internalType": "int64[]", + "name": "serialNumbers", + "type": "int64[]" + } + ], + "name": "MintedToken", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "int256", + "name": "responseCode", + "type": "int256" + } + ], + "name": "ResponseCode", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approvePublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "associateTokenPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address[]", + "name": "tokens", + "type": "address[]" + } + ], + "name": "associateTokensPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "treasury", + "type": "address" + } + ], + "name": "createFungibleTokenPublic", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "treasury", + "type": "address" + }, + { + "internalType": "address", + "name": "fixedFeeTokenAddress", + "type": "address" + } + ], + "name": "createFungibleTokenWithCustomFeesPublic", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "treasury", + "type": "address" + }, + { + "internalType": "bytes", + "name": "adminKey", + "type": "bytes" + }, + { + "internalType": "int64", + "name": "amount", + "type": "int64" + } + ], + "name": "createFungibleTokenWithSECP256K1AdminKeyAssociateAndTransferToAddressPublic", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "treasury", + "type": "address" + }, + { + "internalType": "bytes", + "name": "adminKey", + "type": "bytes" + } + ], + "name": "createFungibleTokenWithSECP256K1AdminKeyPublic", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "treasury", + "type": "address" + }, + { + "internalType": "bytes", + "name": "adminKey", + "type": "bytes" + } + ], + "name": "createFungibleTokenWithSECP256K1AdminKeyWithoutKYCPublic", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "treasury", + "type": "address" + } + ], + "name": "createNonFungibleTokenPublic", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "treasury", + "type": "address" + }, + { + "internalType": "address", + "name": "fixedFeeTokenAddress", + "type": "address" + } + ], + "name": "createNonFungibleTokenWithCustomFeesPublic", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "treasury", + "type": "address" + }, + { + "internalType": "bytes", + "name": "adminKey", + "type": "bytes" + } + ], + "name": "createNonFungibleTokenWithSECP256K1AdminKeyPublic", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "treasury", + "type": "address" + }, + { + "internalType": "bytes", + "name": "adminKey", + "type": "bytes" + } + ], + "name": "createNonFungibleTokenWithSECP256K1AdminKeyWithoutKYCPublic", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantTokenKycPublic", + "outputs": [ + { + "internalType": "int64", + "name": "responseCode", + "type": "int64" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "int64", + "name": "amount", + "type": "int64" + }, + { + "internalType": "bytes[]", + "name": "metadata", + "type": "bytes[]" + } + ], + "name": "mintTokenPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + }, + { + "internalType": "int64", + "name": "newTotalSupply", + "type": "int64" + }, + { + "internalType": "int64[]", + "name": "serialNumbers", + "type": "int64[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "int64", + "name": "amount", + "type": "int64" + }, + { + "internalType": "bytes[]", + "name": "metadata", + "type": "bytes[]" + } + ], + "name": "mintTokenToAddressPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + }, + { + "internalType": "int64", + "name": "newTotalSupply", + "type": "int64" + }, + { + "internalType": "int64[]", + "name": "serialNumbers", + "type": "int64[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "bytes", + "name": "encodedFunctionSelector", + "type": "bytes" + } + ], + "name": "redirectForToken", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + }, + { + "internalType": "bytes", + "name": "response", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "int64", + "name": "responseCode", + "type": "int64" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serialNumber", + "type": "uint256" + } + ], + "name": "transferFromNFT", + "outputs": [ + { + "internalType": "int64", + "name": "responseCode", + "type": "int64" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "components": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "address", + "name": "treasury", + "type": "address" + }, + { + "internalType": "string", + "name": "memo", + "type": "string" + }, + { + "internalType": "bool", + "name": "tokenSupplyType", + "type": "bool" + }, + { + "internalType": "int64", + "name": "maxSupply", + "type": "int64" + }, + { + "internalType": "bool", + "name": "freezeDefault", + "type": "bool" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "keyType", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "bool", + "name": "inheritAccountKey", + "type": "bool" + }, + { + "internalType": "address", + "name": "contractId", + "type": "address" + }, + { + "internalType": "bytes", + "name": "ed25519", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "ECDSA_secp256k1", + "type": "bytes" + }, + { + "internalType": "address", + "name": "delegatableContractId", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.KeyValue", + "name": "key", + "type": "tuple" + } + ], + "internalType": "struct IHederaTokenService.TokenKey[]", + "name": "tokenKeys", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "int64", + "name": "second", + "type": "int64" + }, + { + "internalType": "address", + "name": "autoRenewAccount", + "type": "address" + }, + { + "internalType": "int64", + "name": "autoRenewPeriod", + "type": "int64" + } + ], + "internalType": "struct IHederaTokenService.Expiry", + "name": "expiry", + "type": "tuple" + } + ], + "internalType": "struct IHederaTokenService.HederaToken", + "name": "tokenInfo", + "type": "tuple" + } + ], + "name": "updateTokenInfoPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60c06040526009608090815268746f6b656e4e616d6560b81b60a0526002906200002a90826200026c565b5060408051808201909152600b81526a1d1bdad95b94de5b589bdb60aa1b60208201526003906200005c90826200026c565b50604080518082019091526004808252636d656d6f60e01b6020830152906200008690826200026c565b50600580546001600160a81b0319167008000000000000271000000000000003e8179055348015620000b757600080fd5b50600160208181527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb499190915560027fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f5560047fd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f5560087f7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b5560107fedc95719e9a3b28dd8e80877cb5880a9be7de1a13fc8b05e7999683b6b567643557fe2689cd4a84e23ad2f564004f1c9013e9589d260bde6380aba3ca7e09e4df40c55600660005260407f8f331abe73332f95a25873e8b430885974c0409691f89d643119a11623a7924a5562000338565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001f057607f821691505b6020821081036200021157634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000267576000816000526020600020601f850160051c81016020861015620002425750805b601f850160051c820191505b8181101562000263578281556001016200024e565b5050505b505050565b81516001600160401b03811115620002885762000288620001c5565b620002a081620002998454620001db565b8462000217565b602080601f831160018114620002d85760008415620002bf5750858301515b600019600386901b1c1916600185901b17855562000263565b600085815260208120601f198616915b828110156200030957888601518255948401946001909101908401620002e8565b5085821015620003285787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b613e7480620003486000396000f3fe6080604052600436106101145760003560e01c80638ba74da0116100a0578063d85f74c111610064578063d85f74c1146102db578063de84a779146102ee578063e9f732261461030e578063f4a01e5b14610321578063f848fec41461034157600080fd5b80638ba74da0146102575780638f74a17b1461026a5780639b23d3d914610295578063b35d417a146102b5578063cc265af4146102c857600080fd5b806336348de3116100e757806336348de3146101b45780634b5c6687146101d45780634d1769d6146101e7578063618dc65e1461021657806371de37071461024457600080fd5b80630488c939146101195780630fd2601e1461012e578063118741e71461016657806315dacbea14610194575b600080fd5b61012c610127366004612e5f565b610361565b005b34801561013a57600080fd5b5061014e610149366004612e5f565b6108d4565b60405160079190910b81526020015b60405180910390f35b34801561017257600080fd5b50610186610181366004612f73565b610931565b60405190815260200161015d565b3480156101a057600080fd5b5061014e6101af366004613027565b610985565b3480156101c057600080fd5b506101866101cf3660046132ed565b610a79565b61012c6101e2366004613435565b610a85565b3480156101f357600080fd5b50610207610202366004613452565b610e8d565b60405161015d93929190613569565b34801561022257600080fd5b50610236610231366004613594565b610f4e565b60405161015d929190613634565b61012c610252366004613655565b61106c565b61012c610265366004612e5f565b6111d1565b61027d610278366004613594565b61163d565b6040516001600160a01b03909116815260200161015d565b3480156102a157600080fd5b5061014e6102b0366004613027565b6119ff565b61012c6102c3366004613594565b611a44565b61012c6102d6366004613594565b611dea565b61012c6102e9366004613435565b611ec1565b3480156102fa57600080fd5b50610207610309366004613452565b61225c565b61027d61031c366004613594565b6122f6565b34801561032d57600080fd5b5061018661033c366004612e5f565b6123d0565b34801561034d57600080fd5b5061018661035c3660046136b9565b6123dc565b60408051600580825260c08201909252600091816020015b610381612dda565b8152602001906001900390816103795790505090506103b460006006600060405180602001604052806000815250612438565b816000815181106103c7576103c76136fa565b60200260200101819052506103ee600160006040518060200160405280600081525061246f565b81600181518110610401576104016136fa565b6020026020010181905250610428600260006040518060200160405280600081525061246f565b8160028151811061043b5761043b6136fa565b6020026020010181905250610462600460006040518060200160405280600081525061246f565b81600381518110610475576104756136fa565b602002602001018190525061049c600360006040518060200160405280600081525061246f565b816004815181106104af576104af6136fa565b602002602001018190525060006040518060600160405280600060070b8152602001856001600160a01b03168152602001627a120060070b815250905060006040518061012001604052806002805461050790613710565b80601f016020809104026020016040519081016040528092919081815260200182805461053390613710565b80156105805780601f1061055557610100808354040283529160200191610580565b820191906000526020600020905b81548152906001019060200180831161056357829003601f168201915b505050505081526020016003805461059790613710565b80601f01602080910402602001604051908101604052809291908181526020018280546105c390613710565b80156106105780601f106105e557610100808354040283529160200191610610565b820191906000526020600020905b8154815290600101906020018083116105f357829003601f168201915b50505050508152602001866001600160a01b031681526020016004805461063690613710565b80601f016020809104026020016040519081016040528092919081815260200182805461066290613710565b80156106af5780601f10610684576101008083540402835291602001916106af565b820191906000526020600020905b81548152906001019060200180831161069257829003601f168201915b5050509183525050600160208201819052600554600160401b810460070b6040840152600160a01b900460ff16151560608301526080820186905260a090910184905290915060009060405190808252806020026020018201604052801561075157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816107165790505b506040805160a081018252600181526001600160a01b0380891660208301526000928201839052606082018390528916608082015282519293509183919061079b5761079b6136fa565b6020908102919091010152604080516001808252818301909252600091816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816107bd5790505090506040518060c00160405280600460070b8152602001600560070b8152602001600a60070b8152602001876001600160a01b03168152602001600015158152602001886001600160a01b031681525081600081518110610862576108626136fa565b602002602001018190525060008061087b8585856124a4565b90925090506016821461088d57600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a1505050505050505050565b60006108e083836125cc565b604051600782900b81529091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa9060200160405180910390a1600781900b60161461092b57600080fd5b92915050565b600061093d83836126af565b90507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa8160405161097091815260200190565b60405180910390a16016811461092b57600080fd5b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610a04919061374a565b6000604051808303816000865af19150503d8060008114610a41576040519150601f19603f3d011682016040523d82523d6000602084013e610a46565b606091505b509150915081610a57576015610a6b565b80806020019051810190610a6b9190613778565b60030b979650505050505050565b600061093d83836126db565b60408051600580825260c08201909252600091816020015b610aa5612dda565b815260200190600190039081610a9d579050509050610ad860006006600060405180602001604052806000815250612438565b81600081518110610aeb57610aeb6136fa565b6020026020010181905250610b12600160006040518060200160405280600081525061246f565b81600181518110610b2557610b256136fa565b6020026020010181905250610b4c600260006040518060200160405280600081525061246f565b81600281518110610b5f57610b5f6136fa565b6020026020010181905250610b86600360006040518060200160405280600081525061246f565b81600381518110610b9957610b996136fa565b6020026020010181905250610bc0600460006040518060200160405280600081525061246f565b81600481518110610bd357610bd36136fa565b602002602001018190525060006040518060600160405280600060070b8152602001846001600160a01b03168152602001627a120060070b8152509050600060405180610120016040528060028054610c2b90613710565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5790613710565b8015610ca45780601f10610c7957610100808354040283529160200191610ca4565b820191906000526020600020905b815481529060010190602001808311610c8757829003601f168201915b5050505050815260200160038054610cbb90613710565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce790613710565b8015610d345780601f10610d0957610100808354040283529160200191610d34565b820191906000526020600020905b815481529060010190602001808311610d1757829003601f168201915b50505050508152602001856001600160a01b0316815260200160048054610d5a90613710565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8690613710565b8015610dd35780601f10610da857610100808354040283529160200191610dd3565b820191906000526020600020905b815481529060010190602001808311610db657829003601f168201915b505050918352505060016020820152600554600160401b8104600790810b604084015260ff600160a01b830416151560608401526080830187905260a09092018590529192506000918291610e3791859181900b90600160801b900460030b612707565b909250905060168214610e4957600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a1505050505050565b6000806060610e9d868686612774565b60405183815292955090935091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa9060200160405180910390a160168314610ee557600080fd5b7ffc6b20023c4bac8ff1c48c1693e0cea5cd3c2163e9c2da41c58f17dd6d9f163d8282604051610f16929190613793565b60405180910390a1610f4486303384600081518110610f3757610f376136fa565b6020026020010151612872565b5093509350939050565b600060606000806101676001600160a01b031663618dc65e60e01b8787604051602401610f7c9291906137af565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610fba919061374a565b6000604051808303816000865af19150503d8060008114610ff7576040519150601f19603f3d011682016040523d82523d6000602084013e610ffc565b606091505b50915091507f4af4780e06fe8cb9df64b0794fa6f01399af979175bb988e35e0e57e594567bc82826040516110329291906137d1565b60405180910390a1816110565760156040518060200160405280600081525061105a565b6016815b60039190910b97909650945050505050565b604051638f74a17b60e01b81526000903090638f74a17b90349061109690889088906004016137af565b60206040518083038185885af11580156110b4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110d991906137ec565b60405163f4a01e5b60e01b81523360048201526001600160a01b0382166024820152909150309063f4a01e5b906044016020604051808303816000875af1158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613809565b506040516307e9300f60e11b81526001600160a01b03821660048201523360248201523090630fd2601e906044016020604051808303816000875af1158015611199573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bd9190613822565b506111ca813033856128ba565b5050505050565b604080516001808252818301909252600091816020015b6111f0612dda565b8152602001906001900390816111e8579050509050611222600080600060405180602001604052806000815250612438565b81600081518110611235576112356136fa565b602002602001018190525060006040518060600160405280600060070b8152602001856001600160a01b03168152602001627a120060070b815250905060006040518061012001604052806002805461128d90613710565b80601f01602080910402602001604051908101604052809291908181526020018280546112b990613710565b80156113065780601f106112db57610100808354040283529160200191611306565b820191906000526020600020905b8154815290600101906020018083116112e957829003601f168201915b505050505081526020016003805461131d90613710565b80601f016020809104026020016040519081016040528092919081815260200182805461134990613710565b80156113965780601f1061136b57610100808354040283529160200191611396565b820191906000526020600020905b81548152906001019060200180831161137957829003601f168201915b50505050508152602001866001600160a01b03168152602001600480546113bc90613710565b80601f01602080910402602001604051908101604052809291908181526020018280546113e890613710565b80156114355780601f1061140a57610100808354040283529160200191611435565b820191906000526020600020905b81548152906001019060200180831161141857829003601f168201915b5050509183525050600160208201819052600554600160401b900460070b6040808401919091526000606084018190526080840188905260a09093018690528051828152808201909152929350909190816020015b6040805160a08101825260008082526020808301829052928201819052606082018190526080820152825260001990920191018161148a5750506040805160a081018252600181526001600160a01b0388811660208301526000928201839052606082018390528916608082015282519293509183919061150d5761150d6136fa565b6020908102919091010152604080516001808252818301909252600091816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a0820152825260001990920191018161152f5750506040805160c0810182526004815260056020820152600a91810191909152601e60608201526000608082018190526001600160a01b038a1660a0830152825192935090918391906115c3576115c36136fa565b602090810291909101015260055460009081906115f3908690600781900b90600160801b900460030b8787612902565b915091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa8260405161162891815260200190565b60405180910390a16016821461088d57600080fd5b60408051600580825260c08201909252600091829190816020015b611660612dda565b81526020019060019003908161165857905050905061168460006006600386612438565b81600081518110611697576116976136fa565b60200260200101819052506116af600160038561246f565b816001815181106116c2576116c26136fa565b60200260200101819052506116da600260038561246f565b816002815181106116ed576116ed6136fa565b6020026020010181905250611705600460038561246f565b81600381518110611718576117186136fa565b602002602001018190525061172f6003808561246f565b81600481518110611742576117426136fa565b602002602001018190525060006040518060600160405280600060070b8152602001866001600160a01b03168152602001627a120060070b815250905060006040518061012001604052806002805461179a90613710565b80601f01602080910402602001604051908101604052809291908181526020018280546117c690613710565b80156118135780601f106117e857610100808354040283529160200191611813565b820191906000526020600020905b8154815290600101906020018083116117f657829003601f168201915b505050505081526020016003805461182a90613710565b80601f016020809104026020016040519081016040528092919081815260200182805461185690613710565b80156118a35780601f10611878576101008083540402835291602001916118a3565b820191906000526020600020905b81548152906001019060200180831161188657829003601f168201915b50505050508152602001876001600160a01b03168152602001600480546118c990613710565b80601f01602080910402602001604051908101604052809291908181526020018280546118f590613710565b80156119425780601f1061191757610100808354040283529160200191611942565b820191906000526020600020905b81548152906001019060200180831161192557829003601f168201915b505050918352505060016020820152600554600160401b8104600790810b604084015260ff600160a01b830416151560608401526080830187905260a090920185905291925060009182916119a691859181900b90600160801b900460030b612707565b9092509050601682146119b857600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a1979650505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a4016109c6565b60408051600580825260c08201909252600091816020015b611a64612dda565b815260200190600190039081611a5c579050509050611a8860006006600385612438565b81600081518110611a9b57611a9b6136fa565b6020026020010181905250611ab3600160038461246f565b81600181518110611ac657611ac66136fa565b6020026020010181905250611ade600260038461246f565b81600281518110611af157611af16136fa565b6020026020010181905250611b09600460038461246f565b81600381518110611b1c57611b1c6136fa565b6020026020010181905250611b336003808461246f565b81600481518110611b4657611b466136fa565b602002602001018190525060006040518060600160405280600060070b8152602001856001600160a01b03168152602001627a120060070b8152509050600060405180610120016040528060028054611b9e90613710565b80601f0160208091040260200160405190810160405280929190818152602001828054611bca90613710565b8015611c175780601f10611bec57610100808354040283529160200191611c17565b820191906000526020600020905b815481529060010190602001808311611bfa57829003601f168201915b5050505050815260200160038054611c2e90613710565b80601f0160208091040260200160405190810160405280929190818152602001828054611c5a90613710565b8015611ca75780601f10611c7c57610100808354040283529160200191611ca7565b820191906000526020600020905b815481529060010190602001808311611c8a57829003601f168201915b50505050508152602001866001600160a01b0316815260200160048054611ccd90613710565b80601f0160208091040260200160405190810160405280929190818152602001828054611cf990613710565b8015611d465780601f10611d1b57610100808354040283529160200191611d46565b820191906000526020600020905b815481529060010190602001808311611d2957829003601f168201915b505050918352505060016020820152600554600160401b810460070b6040830152600160a01b900460ff16151560608201526080810185905260a0018390529050600080611d9383612a30565b909250905060168214611da557600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a150505050505050565b60408051600480825260a08201909252600091816020015b611e0a612dda565b815260200190600190039081611e02579050509050611e2e60006006600385612438565b81600081518110611e4157611e416136fa565b6020026020010181905250611e59600260038461246f565b81600181518110611e6c57611e6c6136fa565b6020026020010181905250611e84600460038461246f565b81600281518110611e9757611e976136fa565b6020026020010181905250611eae6003808461246f565b81600381518110611b4657611b466136fa565b60408051600580825260c08201909252600091816020015b611ee1612dda565b815260200190600190039081611ed9579050509050611f1460006006600060405180602001604052806000815250612438565b81600081518110611f2757611f276136fa565b6020026020010181905250611f4e600160006040518060200160405280600081525061246f565b81600181518110611f6157611f616136fa565b6020026020010181905250611f88600260006040518060200160405280600081525061246f565b81600281518110611f9b57611f9b6136fa565b6020026020010181905250611fc2600460006040518060200160405280600081525061246f565b81600381518110611fd557611fd56136fa565b6020026020010181905250611ffc600360006040518060200160405280600081525061246f565b8160048151811061200f5761200f6136fa565b602002602001018190525060006040518060600160405280600060070b8152602001846001600160a01b03168152602001627a120060070b815250905060006040518061012001604052806002805461206790613710565b80601f016020809104026020016040519081016040528092919081815260200182805461209390613710565b80156120e05780601f106120b5576101008083540402835291602001916120e0565b820191906000526020600020905b8154815290600101906020018083116120c357829003601f168201915b50505050508152602001600380546120f790613710565b80601f016020809104026020016040519081016040528092919081815260200182805461212390613710565b80156121705780601f1061214557610100808354040283529160200191612170565b820191906000526020600020905b81548152906001019060200180831161215357829003601f168201915b50505050508152602001856001600160a01b031681526020016004805461219690613710565b80601f01602080910402602001604051908101604052809291908181526020018280546121c290613710565b801561220f5780601f106121e45761010080835404028352916020019161220f565b820191906000526020600020905b8154815290600101906020018083116121f257829003601f168201915b505050918352505060016020820152600554600160401b810460070b6040830152600160a01b900460ff16151560608201526080810185905260a0018390529050600080610e3783612a30565b600080606061226c868686612774565b60405183815292955090935091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa9060200160405180910390a1601683146122b457600080fd5b7ffc6b20023c4bac8ff1c48c1693e0cea5cd3c2163e9c2da41c58f17dd6d9f163d82826040516122e5929190613793565b60405180910390a193509350939050565b60408051600480825260a08201909252600091829190816020015b612319612dda565b81526020019060019003908161231157905050905061233d60006006600386612438565b81600081518110612350576123506136fa565b6020026020010181905250612368600260038561246f565b8160018151811061237b5761237b6136fa565b6020026020010181905250612393600460038561246f565b816002815181106123a6576123a66136fa565b60200260200101819052506123bd6003808561246f565b81600381518110611742576117426136fa565b600061093d8383612b40565b60006123e9848484612b76565b90507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa8160405161241c91815260200190565b60405180910390a16016811461243157600080fd5b9392505050565b612440612dda565b60405180604001604052806124558787612c4f565b81526020016124648585612c8a565b905295945050505050565b612477612dda565b604051806040016040528061248b86612d9b565b815260200161249a8585612c8a565b9052949350505050565b600080848061010001516000015160070b60001480156124ce57506101008101516040015160070b155b156124e4576101008101516276a7006040909101525b6000806101676001600160a01b03163463abb54eb560e01b8a8a8a60405160240161251193929190613a76565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161254f919061374a565b60006040518083038185875af1925050503d806000811461258c576040519150601f19603f3d011682016040523d82523d6000602084013e612591565b606091505b5091509150816125a457601560006125b8565b808060200190518101906125b89190613b2f565b60039190910b999098509650505050505050565b6040516001600160a01b038381166024830152821660448201526000908190819061016790638f8d7f9960e01b906064015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161263c919061374a565b6000604051808303816000865af19150503d8060008114612679576040519150601f19603f3d011682016040523d82523d6000602084013e61267e565b606091505b50915091508161268f5760156126a3565b808060200190518101906126a39190613778565b60030b95945050505050565b60008060006101676001600160a01b0316632e63879b60e01b86866040516024016125fe929190613b5b565b60008060006101676001600160a01b0316637d305cfa60e01b86866040516024016125fe929190613bb8565b600080848061010001516000015160070b600014801561273157506101008101516040015160070b155b15612747576101008101516276a7006040909101525b6000806101676001600160a01b031634630fb65bf360e01b8a8a8a60405160240161251193929190613bda565b60008060606000806101676001600160a01b031663e0f4059a60e01b8989896040516024016127a593929190613c09565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516127e3919061374a565b6000604051808303816000865af19150503d8060008114612820576040519150601f19603f3d011682016040523d82523d6000602084013e612825565b606091505b50915091508161284857604080516000808252602082019092526015919061285c565b8080602001905181019061285c9190613c88565b60039290920b9a90995090975095505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152600782900b60848201526000908190819061016790635cfc901160e01b9060a4016109c6565b6040516001600160a01b038581166024830152848116604483015283166064820152600782900b6084820152600090819081906101679063eca3691760e01b9060a4016109c6565b600080868061010001516000015160070b600014801561292c57506101008101516040015160070b155b15612942576101008101516276a7006040909101525b6000806101676001600160a01b031634632af0c59a60e01b8c8c8c8c8c604051602401612973959493929190613d48565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516129b1919061374a565b60006040518083038185875af1925050503d80600081146129ee576040519150601f19603f3d011682016040523d82523d6000602084013e6129f3565b606091505b509150915081612a065760156000612a1a565b80806020019051810190612a1a9190613b2f565b60039190910b9b909a5098505050505050505050565b600080828061010001516000015160070b6000148015612a5a57506101008101516040015160070b155b15612a70576101008101516276a7006040909101525b6000806101676001600160a01b03163463ea83f29360e01b88604051602401612a999190613e15565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612ad7919061374a565b60006040518083038185875af1925050503d8060008114612b14576040519150601f19603f3d011682016040523d82523d6000602084013e612b19565b606091505b509150915081612b2c576015600061105a565b8080602001905181019061105a9190613b2f565b6040516001600160a01b03838116602483015282166044820152600090819081906101679063248a35ef60e11b906064016125fe565b604080516001600160a01b03858116602483015284166044820152606480820184905282518083039091018152608490910182526020810180516001600160e01b031663e1f21c6760e01b17905290516000918291829161016791612bdb919061374a565b6000604051808303816000865af19150503d8060008114612c18576040519150601f19603f3d011682016040523d82523d6000602084013e612c1d565b606091505b509150915081612c2e576015612c42565b80806020019051810190612c429190613778565b60030b9695505050505050565b6000612c73836006811115612c6657612c66613e28565b600160ff9091161b821790565b9050612431826006811115612c6657612c66613e28565b612cd06040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b6000836004811115612ce457612ce4613e28565b03612cf2576001815261092b565b6001836004811115612d0657612d06613e28565b03612d21576000546001600160a01b0316602082015261092b565b6002836004811115612d3557612d35613e28565b03612d46576040810182905261092b565b6003836004811115612d5a57612d5a613e28565b03612d6b576060810182905261092b565b6004836004811115612d7f57612d7f613e28565b0361092b576000546001600160a01b0316608082015292915050565b600060016000836006811115612db357612db3613e28565b6006811115612dc457612dc4613e28565b8152602001908152602001600020549050919050565b604051806040016040528060008152602001612e326040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b905290565b6001600160a01b0381168114612e4c57600080fd5b50565b8035612e5a81612e37565b919050565b60008060408385031215612e7257600080fd5b8235612e7d81612e37565b91506020830135612e8d81612e37565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715612ed157612ed1612e98565b60405290565b60405160a0810167ffffffffffffffff81118282101715612ed157612ed1612e98565b604051610120810167ffffffffffffffff81118282101715612ed157612ed1612e98565b604051601f8201601f1916810167ffffffffffffffff81118282101715612f4757612f47612e98565b604052919050565b600067ffffffffffffffff821115612f6957612f69612e98565b5060051b60200190565b60008060408385031215612f8657600080fd5b8235612f9181612e37565b915060208381013567ffffffffffffffff811115612fae57600080fd5b8401601f81018613612fbf57600080fd5b8035612fd2612fcd82612f4f565b612f1e565b81815260059190911b82018301908381019088831115612ff157600080fd5b928401925b8284101561301857833561300981612e37565b82529284019290840190612ff6565b80955050505050509250929050565b6000806000806080858703121561303d57600080fd5b843561304881612e37565b9350602085013561305881612e37565b9250604085013561306881612e37565b9396929550929360600135925050565b600082601f83011261308957600080fd5b813567ffffffffffffffff8111156130a3576130a3612e98565b6130b6601f8201601f1916602001612f1e565b8181528460208386010111156130cb57600080fd5b816020850160208301376000918101602001919091529392505050565b80358015158114612e5a57600080fd5b8060070b8114612e4c57600080fd5b8035612e5a816130f8565b600082601f83011261312357600080fd5b81356020613133612fcd83612f4f565b82815260059290921b8401810191818101908684111561315257600080fd5b8286015b8481101561326c57803567ffffffffffffffff8082111561317657600080fd5b908801906040601f19838c03810182131561319057600080fd5b613198612eae565b88850135815282850135848111156131af57600080fd5b949094019360a0858e03830112156131c75760008081fd5b6131cf612ed7565b91506131dc8986016130e8565b8252828501356131eb81612e37565b828a0152606085810135858111156132035760008081fd5b6132118f8c838a0101613078565b858501525060809350838601358581111561322c5760008081fd5b61323a8f8c838a0101613078565b82850152505060a0850135945061325085612e37565b9181019390935280870192909252508352918301918301613156565b509695505050505050565b60006060828403121561328957600080fd5b6040516060810181811067ffffffffffffffff821117156132ac576132ac612e98565b60405290508082356132bd816130f8565b815260208301356132cd81612e37565b602082015260408301356132e0816130f8565b6040919091015292915050565b6000806040838503121561330057600080fd5b823561330b81612e37565b9150602083013567ffffffffffffffff8082111561332857600080fd5b90840190610160828703121561333d57600080fd5b613345612efa565b82358281111561335457600080fd5b61336088828601613078565b82525060208301358281111561337557600080fd5b61338188828601613078565b60208301525061339360408401612e4f565b60408201526060830135828111156133aa57600080fd5b6133b688828601613078565b6060830152506133c8608084016130e8565b60808201526133d960a08401613107565b60a08201526133ea60c084016130e8565b60c082015260e08301358281111561340157600080fd5b61340d88828601613112565b60e083015250610100915061342487838501613277565b828201528093505050509250929050565b60006020828403121561344757600080fd5b813561243181612e37565b60008060006060848603121561346757600080fd5b833561347281612e37565b9250602084810135613483816130f8565b9250604085013567ffffffffffffffff808211156134a057600080fd5b818701915087601f8301126134b457600080fd5b81356134c2612fcd82612f4f565b81815260059190911b8301840190848101908a8311156134e157600080fd5b8585015b83811015613519578035858111156134fd5760008081fd5b61350b8d89838a0101613078565b8452509186019186016134e5565b508096505050505050509250925092565b60008151808452602080850194506020840160005b8381101561355e57815160070b8752958201959082019060010161353f565b509495945050505050565b8381528260070b602082015260606040820152600061358b606083018461352a565b95945050505050565b600080604083850312156135a757600080fd5b82356135b281612e37565b9150602083013567ffffffffffffffff8111156135ce57600080fd5b6135da85828601613078565b9150509250929050565b60005b838110156135ff5781810151838201526020016135e7565b50506000910152565b600081518084526136208160208601602086016135e4565b601f01601f19169290920160200192915050565b82815260406020820152600061364d6040830184613608565b949350505050565b60008060006060848603121561366a57600080fd5b833561367581612e37565b9250602084013567ffffffffffffffff81111561369157600080fd5b61369d86828701613078565b92505060408401356136ae816130f8565b809150509250925092565b6000806000606084860312156136ce57600080fd5b83356136d981612e37565b925060208401356136e981612e37565b929592945050506040919091013590565b634e487b7160e01b600052603260045260246000fd5b600181811c9082168061372457607f821691505b60208210810361374457634e487b7160e01b600052602260045260246000fd5b50919050565b6000825161375c8184602087016135e4565b9190910192915050565b8051600381900b8114612e5a57600080fd5b60006020828403121561378a57600080fd5b61243182613766565b8260070b815260406020820152600061364d604083018461352a565b6001600160a01b038316815260406020820152600061364d6040830184613608565b821515815260406020820152600061364d6040830184613608565b6000602082840312156137fe57600080fd5b815161243181612e37565b60006020828403121561381b57600080fd5b5051919050565b60006020828403121561383457600080fd5b8151612431816130f8565b600082825180855260208086019550808260051b84010181860160005b848110156138f957601f198684030189528151604081518552858201519150808686015281511515818601528582015160606001600160a01b038083168289015283850151935060a09250608083818a01526138bb60e08a0186613608565b92860151898403603f1901858b01529294506138d78584613608565b9501511660c0979097019690965250509884019892509083019060010161385c565b5090979650505050505050565b6000610160825181855261391c82860182613608565b915050602083015184820360208601526139368282613608565b915050604083015161395360408601826001600160a01b03169052565b506060830151848203606086015261396b8282613608565b9150506080830151613981608086018215159052565b5060a083015161399660a086018260070b9052565b5060c08301516139aa60c086018215159052565b5060e083015184820360e08601526139c2828261383f565b915050610100808401516139fe82870182805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b5090949350505050565b60008151808452602080850194506020840160005b8381101561355e578151805160070b8852838101516001600160a01b03908116858a01526040808301511515908a01526060808301511515908a0152608091820151169088015260a09096019590820190600101613a1d565b60006060808352613a8a6060840187613906565b602084820381860152613a9d8288613a08565b9150604085830360408701528287518085528385019150838901945060005b81811015613b1f5785518051600790810b855286820151810b8786015285820151900b85850152878101516001600160a01b039081168986015260808083015115159086015260a09182015116908401529484019460c090920191600101613abc565b50909a9950505050505050505050565b60008060408385031215613b4257600080fd5b613b4b83613766565b91506020830151612e8d81612e37565b6000604082016001600160a01b03808616845260206040602086015282865180855260608701915060208801945060005b81811015613baa578551851683529483019491830191600101613b8c565b509098975050505050505050565b6001600160a01b038316815260406020820152600061364d6040830184613906565b606081526000613bed6060830186613906565b90508360070b60208301528260030b6040830152949350505050565b6000606082016001600160a01b038616835260208560070b60208501526060604085015281855180845260808601915060808160051b87010193506020870160005b82811015613c7957607f19888703018452613c67868351613608565b95509284019290840190600101613c4b565b50939998505050505050505050565b600080600060608486031215613c9d57600080fd5b613ca684613766565b9250602080850151613cb7816130f8565b604086015190935067ffffffffffffffff811115613cd457600080fd5b8501601f81018713613ce557600080fd5b8051613cf3612fcd82612f4f565b81815260059190911b82018301908381019089831115613d1257600080fd5b928401925b82841015613d39578351613d2a816130f8565b82529284019290840190613d17565b80955050505050509250925092565b600060a0808352613d5c60a0840189613906565b602060078960070b8287015260408960030b604088015260608785036060890152613d87858b613a08565b9450608088860360808a0152858a518088528688019150868c01975060005b81811015613e005788518051880b845288810151880b8985015286810151880b8785015285810151880b86850152848101511515858501528a01516001600160a01b03168a8401529787019760c090920191600101613da6565b50909f9e505050505050505050505050505050565b6020815260006124316020830184613906565b634e487b7160e01b600052602160045260246000fdfea26469706673582212205572ead5509a898dcd22fa91de379527df77471a95f8cb589103c0bb1fbaeee564736f6c63430008170033", + "deployedBytecode": "0x6080604052600436106101145760003560e01c80638ba74da0116100a0578063d85f74c111610064578063d85f74c1146102db578063de84a779146102ee578063e9f732261461030e578063f4a01e5b14610321578063f848fec41461034157600080fd5b80638ba74da0146102575780638f74a17b1461026a5780639b23d3d914610295578063b35d417a146102b5578063cc265af4146102c857600080fd5b806336348de3116100e757806336348de3146101b45780634b5c6687146101d45780634d1769d6146101e7578063618dc65e1461021657806371de37071461024457600080fd5b80630488c939146101195780630fd2601e1461012e578063118741e71461016657806315dacbea14610194575b600080fd5b61012c610127366004612e5f565b610361565b005b34801561013a57600080fd5b5061014e610149366004612e5f565b6108d4565b60405160079190910b81526020015b60405180910390f35b34801561017257600080fd5b50610186610181366004612f73565b610931565b60405190815260200161015d565b3480156101a057600080fd5b5061014e6101af366004613027565b610985565b3480156101c057600080fd5b506101866101cf3660046132ed565b610a79565b61012c6101e2366004613435565b610a85565b3480156101f357600080fd5b50610207610202366004613452565b610e8d565b60405161015d93929190613569565b34801561022257600080fd5b50610236610231366004613594565b610f4e565b60405161015d929190613634565b61012c610252366004613655565b61106c565b61012c610265366004612e5f565b6111d1565b61027d610278366004613594565b61163d565b6040516001600160a01b03909116815260200161015d565b3480156102a157600080fd5b5061014e6102b0366004613027565b6119ff565b61012c6102c3366004613594565b611a44565b61012c6102d6366004613594565b611dea565b61012c6102e9366004613435565b611ec1565b3480156102fa57600080fd5b50610207610309366004613452565b61225c565b61027d61031c366004613594565b6122f6565b34801561032d57600080fd5b5061018661033c366004612e5f565b6123d0565b34801561034d57600080fd5b5061018661035c3660046136b9565b6123dc565b60408051600580825260c08201909252600091816020015b610381612dda565b8152602001906001900390816103795790505090506103b460006006600060405180602001604052806000815250612438565b816000815181106103c7576103c76136fa565b60200260200101819052506103ee600160006040518060200160405280600081525061246f565b81600181518110610401576104016136fa565b6020026020010181905250610428600260006040518060200160405280600081525061246f565b8160028151811061043b5761043b6136fa565b6020026020010181905250610462600460006040518060200160405280600081525061246f565b81600381518110610475576104756136fa565b602002602001018190525061049c600360006040518060200160405280600081525061246f565b816004815181106104af576104af6136fa565b602002602001018190525060006040518060600160405280600060070b8152602001856001600160a01b03168152602001627a120060070b815250905060006040518061012001604052806002805461050790613710565b80601f016020809104026020016040519081016040528092919081815260200182805461053390613710565b80156105805780601f1061055557610100808354040283529160200191610580565b820191906000526020600020905b81548152906001019060200180831161056357829003601f168201915b505050505081526020016003805461059790613710565b80601f01602080910402602001604051908101604052809291908181526020018280546105c390613710565b80156106105780601f106105e557610100808354040283529160200191610610565b820191906000526020600020905b8154815290600101906020018083116105f357829003601f168201915b50505050508152602001866001600160a01b031681526020016004805461063690613710565b80601f016020809104026020016040519081016040528092919081815260200182805461066290613710565b80156106af5780601f10610684576101008083540402835291602001916106af565b820191906000526020600020905b81548152906001019060200180831161069257829003601f168201915b5050509183525050600160208201819052600554600160401b810460070b6040840152600160a01b900460ff16151560608301526080820186905260a090910184905290915060009060405190808252806020026020018201604052801561075157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816107165790505b506040805160a081018252600181526001600160a01b0380891660208301526000928201839052606082018390528916608082015282519293509183919061079b5761079b6136fa565b6020908102919091010152604080516001808252818301909252600091816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816107bd5790505090506040518060c00160405280600460070b8152602001600560070b8152602001600a60070b8152602001876001600160a01b03168152602001600015158152602001886001600160a01b031681525081600081518110610862576108626136fa565b602002602001018190525060008061087b8585856124a4565b90925090506016821461088d57600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a1505050505050505050565b60006108e083836125cc565b604051600782900b81529091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa9060200160405180910390a1600781900b60161461092b57600080fd5b92915050565b600061093d83836126af565b90507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa8160405161097091815260200190565b60405180910390a16016811461092b57600080fd5b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610a04919061374a565b6000604051808303816000865af19150503d8060008114610a41576040519150601f19603f3d011682016040523d82523d6000602084013e610a46565b606091505b509150915081610a57576015610a6b565b80806020019051810190610a6b9190613778565b60030b979650505050505050565b600061093d83836126db565b60408051600580825260c08201909252600091816020015b610aa5612dda565b815260200190600190039081610a9d579050509050610ad860006006600060405180602001604052806000815250612438565b81600081518110610aeb57610aeb6136fa565b6020026020010181905250610b12600160006040518060200160405280600081525061246f565b81600181518110610b2557610b256136fa565b6020026020010181905250610b4c600260006040518060200160405280600081525061246f565b81600281518110610b5f57610b5f6136fa565b6020026020010181905250610b86600360006040518060200160405280600081525061246f565b81600381518110610b9957610b996136fa565b6020026020010181905250610bc0600460006040518060200160405280600081525061246f565b81600481518110610bd357610bd36136fa565b602002602001018190525060006040518060600160405280600060070b8152602001846001600160a01b03168152602001627a120060070b8152509050600060405180610120016040528060028054610c2b90613710565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5790613710565b8015610ca45780601f10610c7957610100808354040283529160200191610ca4565b820191906000526020600020905b815481529060010190602001808311610c8757829003601f168201915b5050505050815260200160038054610cbb90613710565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce790613710565b8015610d345780601f10610d0957610100808354040283529160200191610d34565b820191906000526020600020905b815481529060010190602001808311610d1757829003601f168201915b50505050508152602001856001600160a01b0316815260200160048054610d5a90613710565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8690613710565b8015610dd35780601f10610da857610100808354040283529160200191610dd3565b820191906000526020600020905b815481529060010190602001808311610db657829003601f168201915b505050918352505060016020820152600554600160401b8104600790810b604084015260ff600160a01b830416151560608401526080830187905260a09092018590529192506000918291610e3791859181900b90600160801b900460030b612707565b909250905060168214610e4957600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a1505050505050565b6000806060610e9d868686612774565b60405183815292955090935091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa9060200160405180910390a160168314610ee557600080fd5b7ffc6b20023c4bac8ff1c48c1693e0cea5cd3c2163e9c2da41c58f17dd6d9f163d8282604051610f16929190613793565b60405180910390a1610f4486303384600081518110610f3757610f376136fa565b6020026020010151612872565b5093509350939050565b600060606000806101676001600160a01b031663618dc65e60e01b8787604051602401610f7c9291906137af565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610fba919061374a565b6000604051808303816000865af19150503d8060008114610ff7576040519150601f19603f3d011682016040523d82523d6000602084013e610ffc565b606091505b50915091507f4af4780e06fe8cb9df64b0794fa6f01399af979175bb988e35e0e57e594567bc82826040516110329291906137d1565b60405180910390a1816110565760156040518060200160405280600081525061105a565b6016815b60039190910b97909650945050505050565b604051638f74a17b60e01b81526000903090638f74a17b90349061109690889088906004016137af565b60206040518083038185885af11580156110b4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110d991906137ec565b60405163f4a01e5b60e01b81523360048201526001600160a01b0382166024820152909150309063f4a01e5b906044016020604051808303816000875af1158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613809565b506040516307e9300f60e11b81526001600160a01b03821660048201523360248201523090630fd2601e906044016020604051808303816000875af1158015611199573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bd9190613822565b506111ca813033856128ba565b5050505050565b604080516001808252818301909252600091816020015b6111f0612dda565b8152602001906001900390816111e8579050509050611222600080600060405180602001604052806000815250612438565b81600081518110611235576112356136fa565b602002602001018190525060006040518060600160405280600060070b8152602001856001600160a01b03168152602001627a120060070b815250905060006040518061012001604052806002805461128d90613710565b80601f01602080910402602001604051908101604052809291908181526020018280546112b990613710565b80156113065780601f106112db57610100808354040283529160200191611306565b820191906000526020600020905b8154815290600101906020018083116112e957829003601f168201915b505050505081526020016003805461131d90613710565b80601f016020809104026020016040519081016040528092919081815260200182805461134990613710565b80156113965780601f1061136b57610100808354040283529160200191611396565b820191906000526020600020905b81548152906001019060200180831161137957829003601f168201915b50505050508152602001866001600160a01b03168152602001600480546113bc90613710565b80601f01602080910402602001604051908101604052809291908181526020018280546113e890613710565b80156114355780601f1061140a57610100808354040283529160200191611435565b820191906000526020600020905b81548152906001019060200180831161141857829003601f168201915b5050509183525050600160208201819052600554600160401b900460070b6040808401919091526000606084018190526080840188905260a09093018690528051828152808201909152929350909190816020015b6040805160a08101825260008082526020808301829052928201819052606082018190526080820152825260001990920191018161148a5750506040805160a081018252600181526001600160a01b0388811660208301526000928201839052606082018390528916608082015282519293509183919061150d5761150d6136fa565b6020908102919091010152604080516001808252818301909252600091816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a0820152825260001990920191018161152f5750506040805160c0810182526004815260056020820152600a91810191909152601e60608201526000608082018190526001600160a01b038a1660a0830152825192935090918391906115c3576115c36136fa565b602090810291909101015260055460009081906115f3908690600781900b90600160801b900460030b8787612902565b915091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa8260405161162891815260200190565b60405180910390a16016821461088d57600080fd5b60408051600580825260c08201909252600091829190816020015b611660612dda565b81526020019060019003908161165857905050905061168460006006600386612438565b81600081518110611697576116976136fa565b60200260200101819052506116af600160038561246f565b816001815181106116c2576116c26136fa565b60200260200101819052506116da600260038561246f565b816002815181106116ed576116ed6136fa565b6020026020010181905250611705600460038561246f565b81600381518110611718576117186136fa565b602002602001018190525061172f6003808561246f565b81600481518110611742576117426136fa565b602002602001018190525060006040518060600160405280600060070b8152602001866001600160a01b03168152602001627a120060070b815250905060006040518061012001604052806002805461179a90613710565b80601f01602080910402602001604051908101604052809291908181526020018280546117c690613710565b80156118135780601f106117e857610100808354040283529160200191611813565b820191906000526020600020905b8154815290600101906020018083116117f657829003601f168201915b505050505081526020016003805461182a90613710565b80601f016020809104026020016040519081016040528092919081815260200182805461185690613710565b80156118a35780601f10611878576101008083540402835291602001916118a3565b820191906000526020600020905b81548152906001019060200180831161188657829003601f168201915b50505050508152602001876001600160a01b03168152602001600480546118c990613710565b80601f01602080910402602001604051908101604052809291908181526020018280546118f590613710565b80156119425780601f1061191757610100808354040283529160200191611942565b820191906000526020600020905b81548152906001019060200180831161192557829003601f168201915b505050918352505060016020820152600554600160401b8104600790810b604084015260ff600160a01b830416151560608401526080830187905260a090920185905291925060009182916119a691859181900b90600160801b900460030b612707565b9092509050601682146119b857600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a1979650505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a4016109c6565b60408051600580825260c08201909252600091816020015b611a64612dda565b815260200190600190039081611a5c579050509050611a8860006006600385612438565b81600081518110611a9b57611a9b6136fa565b6020026020010181905250611ab3600160038461246f565b81600181518110611ac657611ac66136fa565b6020026020010181905250611ade600260038461246f565b81600281518110611af157611af16136fa565b6020026020010181905250611b09600460038461246f565b81600381518110611b1c57611b1c6136fa565b6020026020010181905250611b336003808461246f565b81600481518110611b4657611b466136fa565b602002602001018190525060006040518060600160405280600060070b8152602001856001600160a01b03168152602001627a120060070b8152509050600060405180610120016040528060028054611b9e90613710565b80601f0160208091040260200160405190810160405280929190818152602001828054611bca90613710565b8015611c175780601f10611bec57610100808354040283529160200191611c17565b820191906000526020600020905b815481529060010190602001808311611bfa57829003601f168201915b5050505050815260200160038054611c2e90613710565b80601f0160208091040260200160405190810160405280929190818152602001828054611c5a90613710565b8015611ca75780601f10611c7c57610100808354040283529160200191611ca7565b820191906000526020600020905b815481529060010190602001808311611c8a57829003601f168201915b50505050508152602001866001600160a01b0316815260200160048054611ccd90613710565b80601f0160208091040260200160405190810160405280929190818152602001828054611cf990613710565b8015611d465780601f10611d1b57610100808354040283529160200191611d46565b820191906000526020600020905b815481529060010190602001808311611d2957829003601f168201915b505050918352505060016020820152600554600160401b810460070b6040830152600160a01b900460ff16151560608201526080810185905260a0018390529050600080611d9383612a30565b909250905060168214611da557600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a150505050505050565b60408051600480825260a08201909252600091816020015b611e0a612dda565b815260200190600190039081611e02579050509050611e2e60006006600385612438565b81600081518110611e4157611e416136fa565b6020026020010181905250611e59600260038461246f565b81600181518110611e6c57611e6c6136fa565b6020026020010181905250611e84600460038461246f565b81600281518110611e9757611e976136fa565b6020026020010181905250611eae6003808461246f565b81600381518110611b4657611b466136fa565b60408051600580825260c08201909252600091816020015b611ee1612dda565b815260200190600190039081611ed9579050509050611f1460006006600060405180602001604052806000815250612438565b81600081518110611f2757611f276136fa565b6020026020010181905250611f4e600160006040518060200160405280600081525061246f565b81600181518110611f6157611f616136fa565b6020026020010181905250611f88600260006040518060200160405280600081525061246f565b81600281518110611f9b57611f9b6136fa565b6020026020010181905250611fc2600460006040518060200160405280600081525061246f565b81600381518110611fd557611fd56136fa565b6020026020010181905250611ffc600360006040518060200160405280600081525061246f565b8160048151811061200f5761200f6136fa565b602002602001018190525060006040518060600160405280600060070b8152602001846001600160a01b03168152602001627a120060070b815250905060006040518061012001604052806002805461206790613710565b80601f016020809104026020016040519081016040528092919081815260200182805461209390613710565b80156120e05780601f106120b5576101008083540402835291602001916120e0565b820191906000526020600020905b8154815290600101906020018083116120c357829003601f168201915b50505050508152602001600380546120f790613710565b80601f016020809104026020016040519081016040528092919081815260200182805461212390613710565b80156121705780601f1061214557610100808354040283529160200191612170565b820191906000526020600020905b81548152906001019060200180831161215357829003601f168201915b50505050508152602001856001600160a01b031681526020016004805461219690613710565b80601f01602080910402602001604051908101604052809291908181526020018280546121c290613710565b801561220f5780601f106121e45761010080835404028352916020019161220f565b820191906000526020600020905b8154815290600101906020018083116121f257829003601f168201915b505050918352505060016020820152600554600160401b810460070b6040830152600160a01b900460ff16151560608201526080810185905260a0018390529050600080610e3783612a30565b600080606061226c868686612774565b60405183815292955090935091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa9060200160405180910390a1601683146122b457600080fd5b7ffc6b20023c4bac8ff1c48c1693e0cea5cd3c2163e9c2da41c58f17dd6d9f163d82826040516122e5929190613793565b60405180910390a193509350939050565b60408051600480825260a08201909252600091829190816020015b612319612dda565b81526020019060019003908161231157905050905061233d60006006600386612438565b81600081518110612350576123506136fa565b6020026020010181905250612368600260038561246f565b8160018151811061237b5761237b6136fa565b6020026020010181905250612393600460038561246f565b816002815181106123a6576123a66136fa565b60200260200101819052506123bd6003808561246f565b81600381518110611742576117426136fa565b600061093d8383612b40565b60006123e9848484612b76565b90507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa8160405161241c91815260200190565b60405180910390a16016811461243157600080fd5b9392505050565b612440612dda565b60405180604001604052806124558787612c4f565b81526020016124648585612c8a565b905295945050505050565b612477612dda565b604051806040016040528061248b86612d9b565b815260200161249a8585612c8a565b9052949350505050565b600080848061010001516000015160070b60001480156124ce57506101008101516040015160070b155b156124e4576101008101516276a7006040909101525b6000806101676001600160a01b03163463abb54eb560e01b8a8a8a60405160240161251193929190613a76565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161254f919061374a565b60006040518083038185875af1925050503d806000811461258c576040519150601f19603f3d011682016040523d82523d6000602084013e612591565b606091505b5091509150816125a457601560006125b8565b808060200190518101906125b89190613b2f565b60039190910b999098509650505050505050565b6040516001600160a01b038381166024830152821660448201526000908190819061016790638f8d7f9960e01b906064015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161263c919061374a565b6000604051808303816000865af19150503d8060008114612679576040519150601f19603f3d011682016040523d82523d6000602084013e61267e565b606091505b50915091508161268f5760156126a3565b808060200190518101906126a39190613778565b60030b95945050505050565b60008060006101676001600160a01b0316632e63879b60e01b86866040516024016125fe929190613b5b565b60008060006101676001600160a01b0316637d305cfa60e01b86866040516024016125fe929190613bb8565b600080848061010001516000015160070b600014801561273157506101008101516040015160070b155b15612747576101008101516276a7006040909101525b6000806101676001600160a01b031634630fb65bf360e01b8a8a8a60405160240161251193929190613bda565b60008060606000806101676001600160a01b031663e0f4059a60e01b8989896040516024016127a593929190613c09565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516127e3919061374a565b6000604051808303816000865af19150503d8060008114612820576040519150601f19603f3d011682016040523d82523d6000602084013e612825565b606091505b50915091508161284857604080516000808252602082019092526015919061285c565b8080602001905181019061285c9190613c88565b60039290920b9a90995090975095505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152600782900b60848201526000908190819061016790635cfc901160e01b9060a4016109c6565b6040516001600160a01b038581166024830152848116604483015283166064820152600782900b6084820152600090819081906101679063eca3691760e01b9060a4016109c6565b600080868061010001516000015160070b600014801561292c57506101008101516040015160070b155b15612942576101008101516276a7006040909101525b6000806101676001600160a01b031634632af0c59a60e01b8c8c8c8c8c604051602401612973959493929190613d48565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516129b1919061374a565b60006040518083038185875af1925050503d80600081146129ee576040519150601f19603f3d011682016040523d82523d6000602084013e6129f3565b606091505b509150915081612a065760156000612a1a565b80806020019051810190612a1a9190613b2f565b60039190910b9b909a5098505050505050505050565b600080828061010001516000015160070b6000148015612a5a57506101008101516040015160070b155b15612a70576101008101516276a7006040909101525b6000806101676001600160a01b03163463ea83f29360e01b88604051602401612a999190613e15565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612ad7919061374a565b60006040518083038185875af1925050503d8060008114612b14576040519150601f19603f3d011682016040523d82523d6000602084013e612b19565b606091505b509150915081612b2c576015600061105a565b8080602001905181019061105a9190613b2f565b6040516001600160a01b03838116602483015282166044820152600090819081906101679063248a35ef60e11b906064016125fe565b604080516001600160a01b03858116602483015284166044820152606480820184905282518083039091018152608490910182526020810180516001600160e01b031663e1f21c6760e01b17905290516000918291829161016791612bdb919061374a565b6000604051808303816000865af19150503d8060008114612c18576040519150601f19603f3d011682016040523d82523d6000602084013e612c1d565b606091505b509150915081612c2e576015612c42565b80806020019051810190612c429190613778565b60030b9695505050505050565b6000612c73836006811115612c6657612c66613e28565b600160ff9091161b821790565b9050612431826006811115612c6657612c66613e28565b612cd06040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b6000836004811115612ce457612ce4613e28565b03612cf2576001815261092b565b6001836004811115612d0657612d06613e28565b03612d21576000546001600160a01b0316602082015261092b565b6002836004811115612d3557612d35613e28565b03612d46576040810182905261092b565b6003836004811115612d5a57612d5a613e28565b03612d6b576060810182905261092b565b6004836004811115612d7f57612d7f613e28565b0361092b576000546001600160a01b0316608082015292915050565b600060016000836006811115612db357612db3613e28565b6006811115612dc457612dc4613e28565b8152602001908152602001600020549050919050565b604051806040016040528060008152602001612e326040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b905290565b6001600160a01b0381168114612e4c57600080fd5b50565b8035612e5a81612e37565b919050565b60008060408385031215612e7257600080fd5b8235612e7d81612e37565b91506020830135612e8d81612e37565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715612ed157612ed1612e98565b60405290565b60405160a0810167ffffffffffffffff81118282101715612ed157612ed1612e98565b604051610120810167ffffffffffffffff81118282101715612ed157612ed1612e98565b604051601f8201601f1916810167ffffffffffffffff81118282101715612f4757612f47612e98565b604052919050565b600067ffffffffffffffff821115612f6957612f69612e98565b5060051b60200190565b60008060408385031215612f8657600080fd5b8235612f9181612e37565b915060208381013567ffffffffffffffff811115612fae57600080fd5b8401601f81018613612fbf57600080fd5b8035612fd2612fcd82612f4f565b612f1e565b81815260059190911b82018301908381019088831115612ff157600080fd5b928401925b8284101561301857833561300981612e37565b82529284019290840190612ff6565b80955050505050509250929050565b6000806000806080858703121561303d57600080fd5b843561304881612e37565b9350602085013561305881612e37565b9250604085013561306881612e37565b9396929550929360600135925050565b600082601f83011261308957600080fd5b813567ffffffffffffffff8111156130a3576130a3612e98565b6130b6601f8201601f1916602001612f1e565b8181528460208386010111156130cb57600080fd5b816020850160208301376000918101602001919091529392505050565b80358015158114612e5a57600080fd5b8060070b8114612e4c57600080fd5b8035612e5a816130f8565b600082601f83011261312357600080fd5b81356020613133612fcd83612f4f565b82815260059290921b8401810191818101908684111561315257600080fd5b8286015b8481101561326c57803567ffffffffffffffff8082111561317657600080fd5b908801906040601f19838c03810182131561319057600080fd5b613198612eae565b88850135815282850135848111156131af57600080fd5b949094019360a0858e03830112156131c75760008081fd5b6131cf612ed7565b91506131dc8986016130e8565b8252828501356131eb81612e37565b828a0152606085810135858111156132035760008081fd5b6132118f8c838a0101613078565b858501525060809350838601358581111561322c5760008081fd5b61323a8f8c838a0101613078565b82850152505060a0850135945061325085612e37565b9181019390935280870192909252508352918301918301613156565b509695505050505050565b60006060828403121561328957600080fd5b6040516060810181811067ffffffffffffffff821117156132ac576132ac612e98565b60405290508082356132bd816130f8565b815260208301356132cd81612e37565b602082015260408301356132e0816130f8565b6040919091015292915050565b6000806040838503121561330057600080fd5b823561330b81612e37565b9150602083013567ffffffffffffffff8082111561332857600080fd5b90840190610160828703121561333d57600080fd5b613345612efa565b82358281111561335457600080fd5b61336088828601613078565b82525060208301358281111561337557600080fd5b61338188828601613078565b60208301525061339360408401612e4f565b60408201526060830135828111156133aa57600080fd5b6133b688828601613078565b6060830152506133c8608084016130e8565b60808201526133d960a08401613107565b60a08201526133ea60c084016130e8565b60c082015260e08301358281111561340157600080fd5b61340d88828601613112565b60e083015250610100915061342487838501613277565b828201528093505050509250929050565b60006020828403121561344757600080fd5b813561243181612e37565b60008060006060848603121561346757600080fd5b833561347281612e37565b9250602084810135613483816130f8565b9250604085013567ffffffffffffffff808211156134a057600080fd5b818701915087601f8301126134b457600080fd5b81356134c2612fcd82612f4f565b81815260059190911b8301840190848101908a8311156134e157600080fd5b8585015b83811015613519578035858111156134fd5760008081fd5b61350b8d89838a0101613078565b8452509186019186016134e5565b508096505050505050509250925092565b60008151808452602080850194506020840160005b8381101561355e57815160070b8752958201959082019060010161353f565b509495945050505050565b8381528260070b602082015260606040820152600061358b606083018461352a565b95945050505050565b600080604083850312156135a757600080fd5b82356135b281612e37565b9150602083013567ffffffffffffffff8111156135ce57600080fd5b6135da85828601613078565b9150509250929050565b60005b838110156135ff5781810151838201526020016135e7565b50506000910152565b600081518084526136208160208601602086016135e4565b601f01601f19169290920160200192915050565b82815260406020820152600061364d6040830184613608565b949350505050565b60008060006060848603121561366a57600080fd5b833561367581612e37565b9250602084013567ffffffffffffffff81111561369157600080fd5b61369d86828701613078565b92505060408401356136ae816130f8565b809150509250925092565b6000806000606084860312156136ce57600080fd5b83356136d981612e37565b925060208401356136e981612e37565b929592945050506040919091013590565b634e487b7160e01b600052603260045260246000fd5b600181811c9082168061372457607f821691505b60208210810361374457634e487b7160e01b600052602260045260246000fd5b50919050565b6000825161375c8184602087016135e4565b9190910192915050565b8051600381900b8114612e5a57600080fd5b60006020828403121561378a57600080fd5b61243182613766565b8260070b815260406020820152600061364d604083018461352a565b6001600160a01b038316815260406020820152600061364d6040830184613608565b821515815260406020820152600061364d6040830184613608565b6000602082840312156137fe57600080fd5b815161243181612e37565b60006020828403121561381b57600080fd5b5051919050565b60006020828403121561383457600080fd5b8151612431816130f8565b600082825180855260208086019550808260051b84010181860160005b848110156138f957601f198684030189528151604081518552858201519150808686015281511515818601528582015160606001600160a01b038083168289015283850151935060a09250608083818a01526138bb60e08a0186613608565b92860151898403603f1901858b01529294506138d78584613608565b9501511660c0979097019690965250509884019892509083019060010161385c565b5090979650505050505050565b6000610160825181855261391c82860182613608565b915050602083015184820360208601526139368282613608565b915050604083015161395360408601826001600160a01b03169052565b506060830151848203606086015261396b8282613608565b9150506080830151613981608086018215159052565b5060a083015161399660a086018260070b9052565b5060c08301516139aa60c086018215159052565b5060e083015184820360e08601526139c2828261383f565b915050610100808401516139fe82870182805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b5090949350505050565b60008151808452602080850194506020840160005b8381101561355e578151805160070b8852838101516001600160a01b03908116858a01526040808301511515908a01526060808301511515908a0152608091820151169088015260a09096019590820190600101613a1d565b60006060808352613a8a6060840187613906565b602084820381860152613a9d8288613a08565b9150604085830360408701528287518085528385019150838901945060005b81811015613b1f5785518051600790810b855286820151810b8786015285820151900b85850152878101516001600160a01b039081168986015260808083015115159086015260a09182015116908401529484019460c090920191600101613abc565b50909a9950505050505050505050565b60008060408385031215613b4257600080fd5b613b4b83613766565b91506020830151612e8d81612e37565b6000604082016001600160a01b03808616845260206040602086015282865180855260608701915060208801945060005b81811015613baa578551851683529483019491830191600101613b8c565b509098975050505050505050565b6001600160a01b038316815260406020820152600061364d6040830184613906565b606081526000613bed6060830186613906565b90508360070b60208301528260030b6040830152949350505050565b6000606082016001600160a01b038616835260208560070b60208501526060604085015281855180845260808601915060808160051b87010193506020870160005b82811015613c7957607f19888703018452613c67868351613608565b95509284019290840190600101613c4b565b50939998505050505050505050565b600080600060608486031215613c9d57600080fd5b613ca684613766565b9250602080850151613cb7816130f8565b604086015190935067ffffffffffffffff811115613cd457600080fd5b8501601f81018713613ce557600080fd5b8051613cf3612fcd82612f4f565b81815260059190911b82018301908381019089831115613d1257600080fd5b928401925b82841015613d39578351613d2a816130f8565b82529284019290840190613d17565b80955050505050509250925092565b600060a0808352613d5c60a0840189613906565b602060078960070b8287015260408960030b604088015260608785036060890152613d87858b613a08565b9450608088860360808a0152858a518088528688019150868c01975060005b81811015613e005788518051880b845288810151880b8985015286810151880b8785015285810151880b86850152848101511515858501528a01516001600160a01b03168a8401529787019760c090920191600101613da6565b50909f9e505050505050505050505050505050565b6020815260006124316020830184613906565b634e487b7160e01b600052602160045260246000fdfea26469706673582212205572ead5509a898dcd22fa91de379527df77471a95f8cb589103c0bb1fbaeee564736f6c63430008170033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/hts-precompile/examples/token-create/TokenCreateCustom.sol/TokenCreateCustomContract.json b/artifacts/contracts/hts-precompile/examples/token-create/TokenCreateCustom.sol/TokenCreateCustomContract.json new file mode 100644 index 000000000..dbe074e2b --- /dev/null +++ b/artifacts/contracts/hts-precompile/examples/token-create/TokenCreateCustom.sol/TokenCreateCustomContract.json @@ -0,0 +1,739 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TokenCreateCustomContract", + "sourceName": "contracts/hts-precompile/examples/token-create/TokenCreateCustom.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "", + "type": "bool" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "CallResponseEvent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "tokenAddress", + "type": "address" + } + ], + "name": "CreatedToken", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "int64", + "name": "newTotalSupply", + "type": "int64" + }, + { + "indexed": false, + "internalType": "int64[]", + "name": "serialNumbers", + "type": "int64[]" + } + ], + "name": "MintedToken", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "int256", + "name": "responseCode", + "type": "int256" + } + ], + "name": "ResponseCode", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "indexed": false, + "internalType": "int64", + "name": "amount", + "type": "int64" + } + ], + "name": "TransferToken", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "associateTokenPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address[]", + "name": "tokens", + "type": "address[]" + } + ], + "name": "associateTokensPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "string", + "name": "memo", + "type": "string" + }, + { + "internalType": "int64", + "name": "initialTotalSupply", + "type": "int64" + }, + { + "internalType": "int64", + "name": "maxSupply", + "type": "int64" + }, + { + "internalType": "int32", + "name": "decimals", + "type": "int32" + }, + { + "internalType": "bool", + "name": "freezeDefaultStatus", + "type": "bool" + }, + { + "internalType": "address", + "name": "treasury", + "type": "address" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "keyType", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "bool", + "name": "inheritAccountKey", + "type": "bool" + }, + { + "internalType": "address", + "name": "contractId", + "type": "address" + }, + { + "internalType": "bytes", + "name": "ed25519", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "ECDSA_secp256k1", + "type": "bytes" + }, + { + "internalType": "address", + "name": "delegatableContractId", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.KeyValue", + "name": "key", + "type": "tuple" + } + ], + "internalType": "struct IHederaTokenService.TokenKey[]", + "name": "keys", + "type": "tuple[]" + } + ], + "name": "createFungibleTokenPublic", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "treasury", + "type": "address" + }, + { + "internalType": "address", + "name": "fixedFeeTokenAddress", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "string", + "name": "memo", + "type": "string" + }, + { + "internalType": "int64", + "name": "initialTotalSupply", + "type": "int64" + }, + { + "internalType": "int64", + "name": "maxSupply", + "type": "int64" + }, + { + "internalType": "int32", + "name": "decimals", + "type": "int32" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "keyType", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "bool", + "name": "inheritAccountKey", + "type": "bool" + }, + { + "internalType": "address", + "name": "contractId", + "type": "address" + }, + { + "internalType": "bytes", + "name": "ed25519", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "ECDSA_secp256k1", + "type": "bytes" + }, + { + "internalType": "address", + "name": "delegatableContractId", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.KeyValue", + "name": "key", + "type": "tuple" + } + ], + "internalType": "struct IHederaTokenService.TokenKey[]", + "name": "keys", + "type": "tuple[]" + } + ], + "name": "createFungibleTokenWithCustomFeesPublic", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "string", + "name": "memo", + "type": "string" + }, + { + "internalType": "int64", + "name": "maxSupply", + "type": "int64" + }, + { + "internalType": "address", + "name": "treasury", + "type": "address" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "keyType", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "bool", + "name": "inheritAccountKey", + "type": "bool" + }, + { + "internalType": "address", + "name": "contractId", + "type": "address" + }, + { + "internalType": "bytes", + "name": "ed25519", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "ECDSA_secp256k1", + "type": "bytes" + }, + { + "internalType": "address", + "name": "delegatableContractId", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.KeyValue", + "name": "key", + "type": "tuple" + } + ], + "internalType": "struct IHederaTokenService.TokenKey[]", + "name": "keys", + "type": "tuple[]" + } + ], + "name": "createNonFungibleTokenPublic", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "treasury", + "type": "address" + }, + { + "internalType": "address", + "name": "fixedFeeTokenAddress", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "string", + "name": "memo", + "type": "string" + }, + { + "internalType": "int64", + "name": "maxSupply", + "type": "int64" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "keyType", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "bool", + "name": "inheritAccountKey", + "type": "bool" + }, + { + "internalType": "address", + "name": "contractId", + "type": "address" + }, + { + "internalType": "bytes", + "name": "ed25519", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "ECDSA_secp256k1", + "type": "bytes" + }, + { + "internalType": "address", + "name": "delegatableContractId", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.KeyValue", + "name": "key", + "type": "tuple" + } + ], + "internalType": "struct IHederaTokenService.TokenKey[]", + "name": "keys", + "type": "tuple[]" + } + ], + "name": "createNonFungibleTokenWithCustomFeesPublic", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantTokenKycPublic", + "outputs": [ + { + "internalType": "int64", + "name": "responseCode", + "type": "int64" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "int64", + "name": "amount", + "type": "int64" + }, + { + "internalType": "bytes[]", + "name": "metadata", + "type": "bytes[]" + } + ], + "name": "mintNonFungibleTokenToAddressPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + }, + { + "internalType": "int64", + "name": "newTotalSupply", + "type": "int64" + }, + { + "internalType": "int64[]", + "name": "serialNumbers", + "type": "int64[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "int64", + "name": "amount", + "type": "int64" + }, + { + "internalType": "bytes[]", + "name": "metadata", + "type": "bytes[]" + } + ], + "name": "mintTokenPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + }, + { + "internalType": "int64", + "name": "newTotalSupply", + "type": "int64" + }, + { + "internalType": "int64[]", + "name": "serialNumbers", + "type": "int64[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "int64", + "name": "amount", + "type": "int64" + }, + { + "internalType": "bytes[]", + "name": "metadata", + "type": "bytes[]" + } + ], + "name": "mintTokenToAddressPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + }, + { + "internalType": "int64", + "name": "newTotalSupply", + "type": "int64" + }, + { + "internalType": "int64[]", + "name": "serialNumbers", + "type": "int64[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "bytes", + "name": "encodedFunctionSelector", + "type": "bytes" + } + ], + "name": "redirectForToken", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + }, + { + "internalType": "bytes", + "name": "response", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "int64", + "name": "responseCode", + "type": "int64" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serialNumber", + "type": "uint256" + } + ], + "name": "transferFromNFT", + "outputs": [ + { + "internalType": "int64", + "name": "responseCode", + "type": "int64" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50600160208181527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb499190915560027fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f5560047fd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f5560087f7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b5560107fedc95719e9a3b28dd8e80877cb5880a9be7de1a13fc8b05e7999683b6b567643557fe2689cd4a84e23ad2f564004f1c9013e9589d260bde6380aba3ca7e09e4df40c55600660005260407f8f331abe73332f95a25873e8b430885974c0409691f89d643119a11623a7924a55612498806101276000396000f3fe6080604052600436106100d25760003560e01c8063618dc65e1161007f578063c827bd3211610059578063c827bd32146101f9578063de84a77914610228578063f4a01e5b14610248578063fec394da1461026857600080fd5b8063618dc65e146101985780639b23d3d9146101c6578063a8c40459146101e657600080fd5b806329fc46e6116100b057806329fc46e61461015d578063424f165e14610172578063566300c61461018557600080fd5b80630fd2601e146100d7578063118741e71461010f57806315dacbea1461013d575b600080fd5b3480156100e357600080fd5b506100f76100f23660046113db565b610288565b60405160079190910b81526020015b60405180910390f35b34801561011b57600080fd5b5061012f61012a3660046114cb565b6102e5565b604051908152602001610106565b34801561014957600080fd5b506100f761015836600461157f565b610339565b61017061016b3660046117e9565b61042d565b005b6101706101803660046118ea565b610507565b6101706101933660046119b7565b6105db565b3480156101a457600080fd5b506101b86101b3366004611a84565b61085b565b604051610106929190611b24565b3480156101d257600080fd5b506100f76101e136600461157f565b610979565b6101706101f4366004611b45565b6109be565b34801561020557600080fd5b50610219610214366004611ca4565b610baa565b60405161010693929190611d58565b34801561023457600080fd5b50610219610243366004611d83565b610c44565b34801561025457600080fd5b5061012f6102633660046113db565b610cde565b34801561027457600080fd5b50610219610283366004611ca4565b610cea565b60006102948383610d0d565b604051600782900b81529091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa9060200160405180910390a1600781900b6016146102df57600080fd5b92915050565b60006102f18383610df0565b90507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa8160405161032491815260200190565b60405180910390a1601681146102df57600080fd5b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516103b89190611de5565b6000604051808303816000865af19150503d80600081146103f5576040519150601f19603f3d011682016040523d82523d6000602084013e6103fa565b606091505b50915091508161040b57601561041f565b8080602001905181019061041f9190611e01565b60030b979650505050505050565b604080516060808201835260008083526001600160a01b0386166020808501829052627a1200858701528551610120810187528f81529081018e9052948501529083018a905260016080840152600788900b60a084015285151560c084015260e083018490526101008301829052909190806104aa838b8a610e1c565b9092509050601682146104bc57600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a150505050505050505050505050565b604080516060808201835260008083526001600160a01b0386166020808501829052627a1200858701528551610120810187528c81529081018b90529485015290830187905260016080840152600786900b60a084015260c0830181905260e0830184905261010083018290529091908061058183610f44565b90925090506016821461059357600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a150505050505050505050565b604080516060808201835260008083526001600160a01b038d166020808501829052627a1200858701528551610120810187528d81529081018c905280860191909152918201899052600160808301819052600788900b60a084015260c0830182905260e083018690526101008301849052845181815280860190955292939192909190816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816106645750506040805160a081018252600181526001600160a01b038e811660208301526000928201839052606082018390528f1660808201528251929350918391906106e7576106e7611e25565b6020908102919091010152604080516001808252818301909252600091816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816107095790505090506040518060c00160405280600460070b8152602001600560070b8152602001600a60070b8152602001601e60070b81526020016000151581526020018e6001600160a01b0316815250816000815181106107a9576107a9611e25565b60200260200101819052506000806107c4858b8a8787611054565b915091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa826040516107f991815260200190565b60405180910390a16016821461080e57600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a1505050505050505050505050505050565b600060606000806101676001600160a01b031663618dc65e60e01b8787604051602401610889929190611e3b565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516108c79190611de5565b6000604051808303816000865af19150503d8060008114610904576040519150601f19603f3d011682016040523d82523d6000602084013e610909565b606091505b50915091507f4af4780e06fe8cb9df64b0794fa6f01399af979175bb988e35e0e57e594567bc828260405161093f929190611e5d565b60405180910390a18161096357601560405180602001604052806000815250610967565b6016815b60039190910b97909650945050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a40161037a565b604080516060808201835260008083526001600160a01b038b166020808501829052627a1200858701528551610120810187528b81529081018a905280860191909152918201879052600160808301819052600787900b60a084015260c0830182905260e083018690526101008301849052845181815280860190955292939192909190816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181610a475750506040805160a081018252600181526001600160a01b038c811660208301526000928201839052606082018390528d166080820152825192935091839190610aca57610aca611e25565b6020908102919091010152604080516001808252818301909252600091816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a08201528252600019909201910181610aec5790505090506040518060c00160405280600460070b8152602001600560070b8152602001600a60070b81526020018b6001600160a01b031681526020016000151581526020018c6001600160a01b031681525081600081518110610b9157610b91611e25565b60200260200101819052506000806104aa858585611182565b6000806060610bba878686610c44565b809350819450829550505050610bec87308884600081518110610bdf57610bdf611e25565b60200260200101516111ef565b50604080516001600160a01b03898116825288166020820152600787900b8183015290517f215c8eec9aa8fa57cdc8525400a046bf00ff93b20cc529980e01c1ef114fc2289181900360600190a19450945094915050565b6000806060610c54868686611237565b60405183815292955090935091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa9060200160405180910390a160168314610c9c57600080fd5b7ffc6b20023c4bac8ff1c48c1693e0cea5cd3c2163e9c2da41c58f17dd6d9f163d8282604051610ccd929190611e78565b60405180910390a193509350939050565b60006102f18383611335565b6000806060610cfa878686610c44565b91945092509050610bec8730888861136b565b6040516001600160a01b038381166024830152821660448201526000908190819061016790638f8d7f9960e01b906064015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610d7d9190611de5565b6000604051808303816000865af19150503d8060008114610dba576040519150601f19603f3d011682016040523d82523d6000602084013e610dbf565b606091505b509150915081610dd0576015610de4565b80806020019051810190610de49190611e01565b60030b95945050505050565b60008060006101676001600160a01b0316632e63879b60e01b8686604051602401610d3f929190611e94565b600080848061010001516000015160070b6000148015610e4657506101008101516040015160070b155b15610e5c576101008101516276a7006040909101525b6000806101676001600160a01b031634630fb65bf360e01b8a8a8a604051602401610e89939291906120ba565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610ec79190611de5565b60006040518083038185875af1925050503d8060008114610f04576040519150601f19603f3d011682016040523d82523d6000602084013e610f09565b606091505b509150915081610f1c5760156000610f30565b80806020019051810190610f3091906120e9565b60039190910b999098509650505050505050565b600080828061010001516000015160070b6000148015610f6e57506101008101516040015160070b155b15610f84576101008101516276a7006040909101525b6000806101676001600160a01b03163463ea83f29360e01b88604051602401610fad9190612118565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610feb9190611de5565b60006040518083038185875af1925050503d8060008114611028576040519150601f19603f3d011682016040523d82523d6000602084013e61102d565b606091505b5091509150816110405760156000610967565b8080602001905181019061096791906120e9565b600080868061010001516000015160070b600014801561107e57506101008101516040015160070b155b15611094576101008101516276a7006040909101525b6000806101676001600160a01b031634632af0c59a60e01b8c8c8c8c8c6040516024016110c5959493929190612199565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516111039190611de5565b60006040518083038185875af1925050503d8060008114611140576040519150601f19603f3d011682016040523d82523d6000602084013e611145565b606091505b509150915081611158576015600061116c565b8080602001905181019061116c91906120e9565b60039190910b9b909a5098505050505050505050565b600080848061010001516000015160070b60001480156111ac57506101008101516040015160070b155b156111c2576101008101516276a7006040909101525b6000806101676001600160a01b03163463abb54eb560e01b8a8a8a604051602401610e8993929190612266565b6040516001600160a01b038581166024830152848116604483015283166064820152600782900b60848201526000908190819061016790635cfc901160e01b9060a40161037a565b60008060606000806101676001600160a01b031663e0f4059a60e01b8989896040516024016112689392919061231f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516112a69190611de5565b6000604051808303816000865af19150503d80600081146112e3576040519150601f19603f3d011682016040523d82523d6000602084013e6112e8565b606091505b50915091508161130b57604080516000808252602082019092526015919061131f565b8080602001905181019061131f919061239e565b60039290920b9a90995090975095505050505050565b6040516001600160a01b03838116602483015282166044820152600090819081906101679063248a35ef60e11b90606401610d3f565b6040516001600160a01b038581166024830152848116604483015283166064820152600782900b6084820152600090819081906101679063eca3691760e01b9060a40161037a565b6001600160a01b03811681146113c857600080fd5b50565b80356113d6816113b3565b919050565b600080604083850312156113ee57600080fd5b82356113f9816113b3565b91506020830135611409816113b3565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561144d5761144d611414565b60405290565b60405160a0810167ffffffffffffffff8111828210171561144d5761144d611414565b604051601f8201601f1916810167ffffffffffffffff8111828210171561149f5761149f611414565b604052919050565b600067ffffffffffffffff8211156114c1576114c1611414565b5060051b60200190565b600080604083850312156114de57600080fd5b82356114e9816113b3565b915060208381013567ffffffffffffffff81111561150657600080fd5b8401601f8101861361151757600080fd5b803561152a611525826114a7565b611476565b81815260059190911b8201830190838101908883111561154957600080fd5b928401925b82841015611570578335611561816113b3565b8252928401929084019061154e565b80955050505050509250929050565b6000806000806080858703121561159557600080fd5b84356115a0816113b3565b935060208501356115b0816113b3565b925060408501356115c0816113b3565b9396929550929360600135925050565b600082601f8301126115e157600080fd5b813567ffffffffffffffff8111156115fb576115fb611414565b61160e601f8201601f1916602001611476565b81815284602083860101111561162357600080fd5b816020850160208301376000918101602001919091529392505050565b8060070b81146113c857600080fd5b80356113d681611640565b8060030b81146113c857600080fd5b80356113d68161165a565b803580151581146113d657600080fd5b600082601f83011261169557600080fd5b813560206116a5611525836114a7565b82815260059290921b840181019181810190868411156116c457600080fd5b8286015b848110156117de57803567ffffffffffffffff808211156116e857600080fd5b908801906040601f19838c03810182131561170257600080fd5b61170a61142a565b888501358152828501358481111561172157600080fd5b949094019360a0858e03830112156117395760008081fd5b611741611453565b915061174e898601611674565b82528285013561175d816113b3565b828a0152606085810135858111156117755760008081fd5b6117838f8c838a01016115d0565b858501525060809350838601358581111561179e5760008081fd5b6117ac8f8c838a01016115d0565b82850152505060a085013594506117c2856113b3565b91810193909352808701929092525083529183019183016116c8565b509695505050505050565b60008060008060008060008060006101208a8c03121561180857600080fd5b893567ffffffffffffffff8082111561182057600080fd5b61182c8d838e016115d0565b9a5060208c013591508082111561184257600080fd5b61184e8d838e016115d0565b995060408c013591508082111561186457600080fd5b6118708d838e016115d0565b985061187e60608d0161164f565b975061188c60808d0161164f565b965061189a60a08d01611669565b95506118a860c08d01611674565b94506118b660e08d016113cb565b93506101008c01359150808211156118cd57600080fd5b506118da8c828d01611684565b9150509295985092959850929598565b60008060008060008060c0878903121561190357600080fd5b863567ffffffffffffffff8082111561191b57600080fd5b6119278a838b016115d0565b9750602089013591508082111561193d57600080fd5b6119498a838b016115d0565b9650604089013591508082111561195f57600080fd5b61196b8a838b016115d0565b955061197960608a0161164f565b945061198760808a016113cb565b935060a089013591508082111561199d57600080fd5b506119aa89828a01611684565b9150509295509295509295565b60008060008060008060008060006101208a8c0312156119d657600080fd5b6119df8a6113cb565b98506119ed60208b016113cb565b975060408a013567ffffffffffffffff80821115611a0a57600080fd5b611a168d838e016115d0565b985060608c0135915080821115611a2c57600080fd5b611a388d838e016115d0565b975060808c0135915080821115611a4e57600080fd5b611a5a8d838e016115d0565b9650611a6860a08d0161164f565b9550611a7660c08d0161164f565b94506118b660e08d01611669565b60008060408385031215611a9757600080fd5b8235611aa2816113b3565b9150602083013567ffffffffffffffff811115611abe57600080fd5b611aca858286016115d0565b9150509250929050565b60005b83811015611aef578181015183820152602001611ad7565b50506000910152565b60008151808452611b10816020860160208601611ad4565b601f01601f19169290920160200192915050565b828152604060208201526000611b3d6040830184611af8565b949350505050565b600080600080600080600060e0888a031215611b6057600080fd5b611b69886113cb565b9650611b77602089016113cb565b9550604088013567ffffffffffffffff80821115611b9457600080fd5b611ba08b838c016115d0565b965060608a0135915080821115611bb657600080fd5b611bc28b838c016115d0565b955060808a0135915080821115611bd857600080fd5b611be48b838c016115d0565b9450611bf260a08b0161164f565b935060c08a0135915080821115611c0857600080fd5b50611c158a828b01611684565b91505092959891949750929550565b600082601f830112611c3557600080fd5b81356020611c45611525836114a7565b82815260059290921b84018101918181019086841115611c6457600080fd5b8286015b848110156117de57803567ffffffffffffffff811115611c885760008081fd5b611c968986838b01016115d0565b845250918301918301611c68565b60008060008060808587031215611cba57600080fd5b8435611cc5816113b3565b93506020850135611cd5816113b3565b92506040850135611ce581611640565b9150606085013567ffffffffffffffff811115611d0157600080fd5b611d0d87828801611c24565b91505092959194509250565b60008151808452602080850194506020840160005b83811015611d4d57815160070b87529582019590820190600101611d2e565b509495945050505050565b8381528260070b6020820152606060408201526000611d7a6060830184611d19565b95945050505050565b600080600060608486031215611d9857600080fd5b8335611da3816113b3565b92506020840135611db381611640565b9150604084013567ffffffffffffffff811115611dcf57600080fd5b611ddb86828701611c24565b9150509250925092565b60008251611df7818460208701611ad4565b9190910192915050565b600060208284031215611e1357600080fd5b8151611e1e8161165a565b9392505050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0383168152604060208201526000611b3d6040830184611af8565b8215158152604060208201526000611b3d6040830184611af8565b8260070b8152604060208201526000611b3d6040830184611d19565b6000604082016001600160a01b03808616845260206040602086015282865180855260608701915060208801945060005b81811015611ee3578551851683529483019491830191600101611ec5565b509098975050505050505050565b600082825180855260208086019550808260051b84010181860160005b84811015611fab57601f198684030189528151604081518552858201519150808686015281511515818601528582015160606001600160a01b038083168289015283850151935060a09250608083818a0152611f6d60e08a0186611af8565b92860151898403603f1901858b0152929450611f898584611af8565b9501511660c09790970196909652505098840198925090830190600101611f0e565b5090979650505050505050565b60006101608251818552611fce82860182611af8565b91505060208301518482036020860152611fe88282611af8565b915050604083015161200560408601826001600160a01b03169052565b506060830151848203606086015261201d8282611af8565b9150506080830151612033608086018215159052565b5060a083015161204860a086018260070b9052565b5060c083015161205c60c086018215159052565b5060e083015184820360e08601526120748282611ef1565b915050610100808401516120b082870182805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b5090949350505050565b6060815260006120cd6060830186611fb8565b90508360070b60208301528260030b6040830152949350505050565b600080604083850312156120fc57600080fd5b82516121078161165a565b6020840151909250611409816113b3565b602081526000611e1e6020830184611fb8565b60008151808452602080850194506020840160005b83811015611d4d578151805160070b8852838101516001600160a01b03908116858a01526040808301511515908a01526060808301511515908a0152608091820151169088015260a09096019590820190600101612140565b600060a08083526121ad60a0840189611fb8565b602060078960070b8287015260408960030b6040880152606087850360608901526121d8858b61212b565b9450608088860360808a0152858a518088528688019150868c01975060005b818110156122515788518051880b845288810151880b8985015286810151880b8785015285810151880b86850152848101511515858501528a01516001600160a01b03168a8401529787019760c0909201916001016121f7565b50909f9e505050505050505050505050505050565b6000606080835261227a6060840187611fb8565b60208482038186015261228d828861212b565b9150604085830360408701528287518085528385019150838901945060005b8181101561230f5785518051600790810b855286820151810b8786015285820151900b85850152878101516001600160a01b039081168986015260808083015115159086015260a09182015116908401529484019460c0909201916001016122ac565b50909a9950505050505050505050565b6000606082016001600160a01b038616835260208560070b60208501526060604085015281855180845260808601915060808160051b87010193506020870160005b8281101561238f57607f1988870301845261237d868351611af8565b95509284019290840190600101612361565b50939998505050505050505050565b6000806000606084860312156123b357600080fd5b83516123be8161165a565b809350506020808501516123d181611640565b604086015190935067ffffffffffffffff8111156123ee57600080fd5b8501601f810187136123ff57600080fd5b805161240d611525826114a7565b81815260059190911b8201830190838101908983111561242c57600080fd5b928401925b8284101561245357835161244481611640565b82529284019290840190612431565b8095505050505050925092509256fea2646970667358221220b8296f48a775ff02aa340b241d086b06f9d71770188c6e8a5480fa6e6dec1c6d64736f6c63430008170033", + "deployedBytecode": "0x6080604052600436106100d25760003560e01c8063618dc65e1161007f578063c827bd3211610059578063c827bd32146101f9578063de84a77914610228578063f4a01e5b14610248578063fec394da1461026857600080fd5b8063618dc65e146101985780639b23d3d9146101c6578063a8c40459146101e657600080fd5b806329fc46e6116100b057806329fc46e61461015d578063424f165e14610172578063566300c61461018557600080fd5b80630fd2601e146100d7578063118741e71461010f57806315dacbea1461013d575b600080fd5b3480156100e357600080fd5b506100f76100f23660046113db565b610288565b60405160079190910b81526020015b60405180910390f35b34801561011b57600080fd5b5061012f61012a3660046114cb565b6102e5565b604051908152602001610106565b34801561014957600080fd5b506100f761015836600461157f565b610339565b61017061016b3660046117e9565b61042d565b005b6101706101803660046118ea565b610507565b6101706101933660046119b7565b6105db565b3480156101a457600080fd5b506101b86101b3366004611a84565b61085b565b604051610106929190611b24565b3480156101d257600080fd5b506100f76101e136600461157f565b610979565b6101706101f4366004611b45565b6109be565b34801561020557600080fd5b50610219610214366004611ca4565b610baa565b60405161010693929190611d58565b34801561023457600080fd5b50610219610243366004611d83565b610c44565b34801561025457600080fd5b5061012f6102633660046113db565b610cde565b34801561027457600080fd5b50610219610283366004611ca4565b610cea565b60006102948383610d0d565b604051600782900b81529091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa9060200160405180910390a1600781900b6016146102df57600080fd5b92915050565b60006102f18383610df0565b90507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa8160405161032491815260200190565b60405180910390a1601681146102df57600080fd5b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516103b89190611de5565b6000604051808303816000865af19150503d80600081146103f5576040519150601f19603f3d011682016040523d82523d6000602084013e6103fa565b606091505b50915091508161040b57601561041f565b8080602001905181019061041f9190611e01565b60030b979650505050505050565b604080516060808201835260008083526001600160a01b0386166020808501829052627a1200858701528551610120810187528f81529081018e9052948501529083018a905260016080840152600788900b60a084015285151560c084015260e083018490526101008301829052909190806104aa838b8a610e1c565b9092509050601682146104bc57600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a150505050505050505050505050565b604080516060808201835260008083526001600160a01b0386166020808501829052627a1200858701528551610120810187528c81529081018b90529485015290830187905260016080840152600786900b60a084015260c0830181905260e0830184905261010083018290529091908061058183610f44565b90925090506016821461059357600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a150505050505050505050565b604080516060808201835260008083526001600160a01b038d166020808501829052627a1200858701528551610120810187528d81529081018c905280860191909152918201899052600160808301819052600788900b60a084015260c0830182905260e083018690526101008301849052845181815280860190955292939192909190816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816106645750506040805160a081018252600181526001600160a01b038e811660208301526000928201839052606082018390528f1660808201528251929350918391906106e7576106e7611e25565b6020908102919091010152604080516001808252818301909252600091816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816107095790505090506040518060c00160405280600460070b8152602001600560070b8152602001600a60070b8152602001601e60070b81526020016000151581526020018e6001600160a01b0316815250816000815181106107a9576107a9611e25565b60200260200101819052506000806107c4858b8a8787611054565b915091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa826040516107f991815260200190565b60405180910390a16016821461080e57600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a1505050505050505050505050505050565b600060606000806101676001600160a01b031663618dc65e60e01b8787604051602401610889929190611e3b565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516108c79190611de5565b6000604051808303816000865af19150503d8060008114610904576040519150601f19603f3d011682016040523d82523d6000602084013e610909565b606091505b50915091507f4af4780e06fe8cb9df64b0794fa6f01399af979175bb988e35e0e57e594567bc828260405161093f929190611e5d565b60405180910390a18161096357601560405180602001604052806000815250610967565b6016815b60039190910b97909650945050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a40161037a565b604080516060808201835260008083526001600160a01b038b166020808501829052627a1200858701528551610120810187528b81529081018a905280860191909152918201879052600160808301819052600787900b60a084015260c0830182905260e083018690526101008301849052845181815280860190955292939192909190816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181610a475750506040805160a081018252600181526001600160a01b038c811660208301526000928201839052606082018390528d166080820152825192935091839190610aca57610aca611e25565b6020908102919091010152604080516001808252818301909252600091816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a08201528252600019909201910181610aec5790505090506040518060c00160405280600460070b8152602001600560070b8152602001600a60070b81526020018b6001600160a01b031681526020016000151581526020018c6001600160a01b031681525081600081518110610b9157610b91611e25565b60200260200101819052506000806104aa858585611182565b6000806060610bba878686610c44565b809350819450829550505050610bec87308884600081518110610bdf57610bdf611e25565b60200260200101516111ef565b50604080516001600160a01b03898116825288166020820152600787900b8183015290517f215c8eec9aa8fa57cdc8525400a046bf00ff93b20cc529980e01c1ef114fc2289181900360600190a19450945094915050565b6000806060610c54868686611237565b60405183815292955090935091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa9060200160405180910390a160168314610c9c57600080fd5b7ffc6b20023c4bac8ff1c48c1693e0cea5cd3c2163e9c2da41c58f17dd6d9f163d8282604051610ccd929190611e78565b60405180910390a193509350939050565b60006102f18383611335565b6000806060610cfa878686610c44565b91945092509050610bec8730888861136b565b6040516001600160a01b038381166024830152821660448201526000908190819061016790638f8d7f9960e01b906064015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610d7d9190611de5565b6000604051808303816000865af19150503d8060008114610dba576040519150601f19603f3d011682016040523d82523d6000602084013e610dbf565b606091505b509150915081610dd0576015610de4565b80806020019051810190610de49190611e01565b60030b95945050505050565b60008060006101676001600160a01b0316632e63879b60e01b8686604051602401610d3f929190611e94565b600080848061010001516000015160070b6000148015610e4657506101008101516040015160070b155b15610e5c576101008101516276a7006040909101525b6000806101676001600160a01b031634630fb65bf360e01b8a8a8a604051602401610e89939291906120ba565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610ec79190611de5565b60006040518083038185875af1925050503d8060008114610f04576040519150601f19603f3d011682016040523d82523d6000602084013e610f09565b606091505b509150915081610f1c5760156000610f30565b80806020019051810190610f3091906120e9565b60039190910b999098509650505050505050565b600080828061010001516000015160070b6000148015610f6e57506101008101516040015160070b155b15610f84576101008101516276a7006040909101525b6000806101676001600160a01b03163463ea83f29360e01b88604051602401610fad9190612118565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610feb9190611de5565b60006040518083038185875af1925050503d8060008114611028576040519150601f19603f3d011682016040523d82523d6000602084013e61102d565b606091505b5091509150816110405760156000610967565b8080602001905181019061096791906120e9565b600080868061010001516000015160070b600014801561107e57506101008101516040015160070b155b15611094576101008101516276a7006040909101525b6000806101676001600160a01b031634632af0c59a60e01b8c8c8c8c8c6040516024016110c5959493929190612199565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516111039190611de5565b60006040518083038185875af1925050503d8060008114611140576040519150601f19603f3d011682016040523d82523d6000602084013e611145565b606091505b509150915081611158576015600061116c565b8080602001905181019061116c91906120e9565b60039190910b9b909a5098505050505050505050565b600080848061010001516000015160070b60001480156111ac57506101008101516040015160070b155b156111c2576101008101516276a7006040909101525b6000806101676001600160a01b03163463abb54eb560e01b8a8a8a604051602401610e8993929190612266565b6040516001600160a01b038581166024830152848116604483015283166064820152600782900b60848201526000908190819061016790635cfc901160e01b9060a40161037a565b60008060606000806101676001600160a01b031663e0f4059a60e01b8989896040516024016112689392919061231f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516112a69190611de5565b6000604051808303816000865af19150503d80600081146112e3576040519150601f19603f3d011682016040523d82523d6000602084013e6112e8565b606091505b50915091508161130b57604080516000808252602082019092526015919061131f565b8080602001905181019061131f919061239e565b60039290920b9a90995090975095505050505050565b6040516001600160a01b03838116602483015282166044820152600090819081906101679063248a35ef60e11b90606401610d3f565b6040516001600160a01b038581166024830152848116604483015283166064820152600782900b6084820152600090819081906101679063eca3691760e01b9060a40161037a565b6001600160a01b03811681146113c857600080fd5b50565b80356113d6816113b3565b919050565b600080604083850312156113ee57600080fd5b82356113f9816113b3565b91506020830135611409816113b3565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561144d5761144d611414565b60405290565b60405160a0810167ffffffffffffffff8111828210171561144d5761144d611414565b604051601f8201601f1916810167ffffffffffffffff8111828210171561149f5761149f611414565b604052919050565b600067ffffffffffffffff8211156114c1576114c1611414565b5060051b60200190565b600080604083850312156114de57600080fd5b82356114e9816113b3565b915060208381013567ffffffffffffffff81111561150657600080fd5b8401601f8101861361151757600080fd5b803561152a611525826114a7565b611476565b81815260059190911b8201830190838101908883111561154957600080fd5b928401925b82841015611570578335611561816113b3565b8252928401929084019061154e565b80955050505050509250929050565b6000806000806080858703121561159557600080fd5b84356115a0816113b3565b935060208501356115b0816113b3565b925060408501356115c0816113b3565b9396929550929360600135925050565b600082601f8301126115e157600080fd5b813567ffffffffffffffff8111156115fb576115fb611414565b61160e601f8201601f1916602001611476565b81815284602083860101111561162357600080fd5b816020850160208301376000918101602001919091529392505050565b8060070b81146113c857600080fd5b80356113d681611640565b8060030b81146113c857600080fd5b80356113d68161165a565b803580151581146113d657600080fd5b600082601f83011261169557600080fd5b813560206116a5611525836114a7565b82815260059290921b840181019181810190868411156116c457600080fd5b8286015b848110156117de57803567ffffffffffffffff808211156116e857600080fd5b908801906040601f19838c03810182131561170257600080fd5b61170a61142a565b888501358152828501358481111561172157600080fd5b949094019360a0858e03830112156117395760008081fd5b611741611453565b915061174e898601611674565b82528285013561175d816113b3565b828a0152606085810135858111156117755760008081fd5b6117838f8c838a01016115d0565b858501525060809350838601358581111561179e5760008081fd5b6117ac8f8c838a01016115d0565b82850152505060a085013594506117c2856113b3565b91810193909352808701929092525083529183019183016116c8565b509695505050505050565b60008060008060008060008060006101208a8c03121561180857600080fd5b893567ffffffffffffffff8082111561182057600080fd5b61182c8d838e016115d0565b9a5060208c013591508082111561184257600080fd5b61184e8d838e016115d0565b995060408c013591508082111561186457600080fd5b6118708d838e016115d0565b985061187e60608d0161164f565b975061188c60808d0161164f565b965061189a60a08d01611669565b95506118a860c08d01611674565b94506118b660e08d016113cb565b93506101008c01359150808211156118cd57600080fd5b506118da8c828d01611684565b9150509295985092959850929598565b60008060008060008060c0878903121561190357600080fd5b863567ffffffffffffffff8082111561191b57600080fd5b6119278a838b016115d0565b9750602089013591508082111561193d57600080fd5b6119498a838b016115d0565b9650604089013591508082111561195f57600080fd5b61196b8a838b016115d0565b955061197960608a0161164f565b945061198760808a016113cb565b935060a089013591508082111561199d57600080fd5b506119aa89828a01611684565b9150509295509295509295565b60008060008060008060008060006101208a8c0312156119d657600080fd5b6119df8a6113cb565b98506119ed60208b016113cb565b975060408a013567ffffffffffffffff80821115611a0a57600080fd5b611a168d838e016115d0565b985060608c0135915080821115611a2c57600080fd5b611a388d838e016115d0565b975060808c0135915080821115611a4e57600080fd5b611a5a8d838e016115d0565b9650611a6860a08d0161164f565b9550611a7660c08d0161164f565b94506118b660e08d01611669565b60008060408385031215611a9757600080fd5b8235611aa2816113b3565b9150602083013567ffffffffffffffff811115611abe57600080fd5b611aca858286016115d0565b9150509250929050565b60005b83811015611aef578181015183820152602001611ad7565b50506000910152565b60008151808452611b10816020860160208601611ad4565b601f01601f19169290920160200192915050565b828152604060208201526000611b3d6040830184611af8565b949350505050565b600080600080600080600060e0888a031215611b6057600080fd5b611b69886113cb565b9650611b77602089016113cb565b9550604088013567ffffffffffffffff80821115611b9457600080fd5b611ba08b838c016115d0565b965060608a0135915080821115611bb657600080fd5b611bc28b838c016115d0565b955060808a0135915080821115611bd857600080fd5b611be48b838c016115d0565b9450611bf260a08b0161164f565b935060c08a0135915080821115611c0857600080fd5b50611c158a828b01611684565b91505092959891949750929550565b600082601f830112611c3557600080fd5b81356020611c45611525836114a7565b82815260059290921b84018101918181019086841115611c6457600080fd5b8286015b848110156117de57803567ffffffffffffffff811115611c885760008081fd5b611c968986838b01016115d0565b845250918301918301611c68565b60008060008060808587031215611cba57600080fd5b8435611cc5816113b3565b93506020850135611cd5816113b3565b92506040850135611ce581611640565b9150606085013567ffffffffffffffff811115611d0157600080fd5b611d0d87828801611c24565b91505092959194509250565b60008151808452602080850194506020840160005b83811015611d4d57815160070b87529582019590820190600101611d2e565b509495945050505050565b8381528260070b6020820152606060408201526000611d7a6060830184611d19565b95945050505050565b600080600060608486031215611d9857600080fd5b8335611da3816113b3565b92506020840135611db381611640565b9150604084013567ffffffffffffffff811115611dcf57600080fd5b611ddb86828701611c24565b9150509250925092565b60008251611df7818460208701611ad4565b9190910192915050565b600060208284031215611e1357600080fd5b8151611e1e8161165a565b9392505050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0383168152604060208201526000611b3d6040830184611af8565b8215158152604060208201526000611b3d6040830184611af8565b8260070b8152604060208201526000611b3d6040830184611d19565b6000604082016001600160a01b03808616845260206040602086015282865180855260608701915060208801945060005b81811015611ee3578551851683529483019491830191600101611ec5565b509098975050505050505050565b600082825180855260208086019550808260051b84010181860160005b84811015611fab57601f198684030189528151604081518552858201519150808686015281511515818601528582015160606001600160a01b038083168289015283850151935060a09250608083818a0152611f6d60e08a0186611af8565b92860151898403603f1901858b0152929450611f898584611af8565b9501511660c09790970196909652505098840198925090830190600101611f0e565b5090979650505050505050565b60006101608251818552611fce82860182611af8565b91505060208301518482036020860152611fe88282611af8565b915050604083015161200560408601826001600160a01b03169052565b506060830151848203606086015261201d8282611af8565b9150506080830151612033608086018215159052565b5060a083015161204860a086018260070b9052565b5060c083015161205c60c086018215159052565b5060e083015184820360e08601526120748282611ef1565b915050610100808401516120b082870182805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b5090949350505050565b6060815260006120cd6060830186611fb8565b90508360070b60208301528260030b6040830152949350505050565b600080604083850312156120fc57600080fd5b82516121078161165a565b6020840151909250611409816113b3565b602081526000611e1e6020830184611fb8565b60008151808452602080850194506020840160005b83811015611d4d578151805160070b8852838101516001600160a01b03908116858a01526040808301511515908a01526060808301511515908a0152608091820151169088015260a09096019590820190600101612140565b600060a08083526121ad60a0840189611fb8565b602060078960070b8287015260408960030b6040880152606087850360608901526121d8858b61212b565b9450608088860360808a0152858a518088528688019150868c01975060005b818110156122515788518051880b845288810151880b8985015286810151880b8785015285810151880b86850152848101511515858501528a01516001600160a01b03168a8401529787019760c0909201916001016121f7565b50909f9e505050505050505050505050505050565b6000606080835261227a6060840187611fb8565b60208482038186015261228d828861212b565b9150604085830360408701528287518085528385019150838901945060005b8181101561230f5785518051600790810b855286820151810b8786015285820151900b85850152878101516001600160a01b039081168986015260808083015115159086015260a09182015116908401529484019460c0909201916001016122ac565b50909a9950505050505050505050565b6000606082016001600160a01b038616835260208560070b60208501526060604085015281855180845260808601915060808160051b87010193506020870160005b8281101561238f57607f1988870301845261237d868351611af8565b95509284019290840190600101612361565b50939998505050505050505050565b6000806000606084860312156123b357600080fd5b83516123be8161165a565b809350506020808501516123d181611640565b604086015190935067ffffffffffffffff8111156123ee57600080fd5b8501601f810187136123ff57600080fd5b805161240d611525826114a7565b81815260059190911b8201830190838101908983111561242c57600080fd5b928401925b8284101561245357835161244481611640565b82529284019290840190612431565b8095505050505050925092509256fea2646970667358221220b8296f48a775ff02aa340b241d086b06f9d71770188c6e8a5480fa6e6dec1c6d64736f6c63430008170033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/hts-precompile/examples/token-manage/TokenManagementContract.sol/TokenManagementContract.json b/artifacts/contracts/hts-precompile/examples/token-manage/TokenManagementContract.sol/TokenManagementContract.json new file mode 100644 index 000000000..989e9bb77 --- /dev/null +++ b/artifacts/contracts/hts-precompile/examples/token-manage/TokenManagementContract.sol/TokenManagementContract.json @@ -0,0 +1,753 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TokenManagementContract", + "sourceName": "contracts/hts-precompile/examples/token-manage/TokenManagementContract.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "", + "type": "bool" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "CallResponseEvent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "paused", + "type": "bool" + } + ], + "name": "PausedToken", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "int256", + "name": "responseCode", + "type": "int256" + } + ], + "name": "ResponseCode", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "unpaused", + "type": "bool" + } + ], + "name": "UnpausedToken", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serialNumber", + "type": "uint256" + } + ], + "name": "approveNFTPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approvePublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "int64", + "name": "amount", + "type": "int64" + }, + { + "internalType": "int64[]", + "name": "serialNumbers", + "type": "int64[]" + } + ], + "name": "burnTokenPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + }, + { + "internalType": "int64", + "name": "newTotalSupply", + "type": "int64" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "deleteTokenPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "dissociateTokenPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address[]", + "name": "tokens", + "type": "address[]" + } + ], + "name": "dissociateTokensPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "freezeTokenPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "pauseTokenPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "bytes", + "name": "encodedFunctionSelector", + "type": "bytes" + } + ], + "name": "redirectForToken", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + }, + { + "internalType": "bytes", + "name": "response", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeTokenKycPublic", + "outputs": [ + { + "internalType": "int64", + "name": "responseCode", + "type": "int64" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAllPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "int64", + "name": "responseCode", + "type": "int64" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serialNumber", + "type": "uint256" + } + ], + "name": "transferFromNFT", + "outputs": [ + { + "internalType": "int64", + "name": "responseCode", + "type": "int64" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "unfreezeTokenPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "unpauseTokenPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "components": [ + { + "internalType": "int64", + "name": "second", + "type": "int64" + }, + { + "internalType": "address", + "name": "autoRenewAccount", + "type": "address" + }, + { + "internalType": "int64", + "name": "autoRenewPeriod", + "type": "int64" + } + ], + "internalType": "struct IHederaTokenService.Expiry", + "name": "expiryInfo", + "type": "tuple" + } + ], + "name": "updateTokenExpiryInfoPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "components": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "address", + "name": "treasury", + "type": "address" + }, + { + "internalType": "string", + "name": "memo", + "type": "string" + }, + { + "internalType": "bool", + "name": "tokenSupplyType", + "type": "bool" + }, + { + "internalType": "int64", + "name": "maxSupply", + "type": "int64" + }, + { + "internalType": "bool", + "name": "freezeDefault", + "type": "bool" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "keyType", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "bool", + "name": "inheritAccountKey", + "type": "bool" + }, + { + "internalType": "address", + "name": "contractId", + "type": "address" + }, + { + "internalType": "bytes", + "name": "ed25519", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "ECDSA_secp256k1", + "type": "bytes" + }, + { + "internalType": "address", + "name": "delegatableContractId", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.KeyValue", + "name": "key", + "type": "tuple" + } + ], + "internalType": "struct IHederaTokenService.TokenKey[]", + "name": "tokenKeys", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "int64", + "name": "second", + "type": "int64" + }, + { + "internalType": "address", + "name": "autoRenewAccount", + "type": "address" + }, + { + "internalType": "int64", + "name": "autoRenewPeriod", + "type": "int64" + } + ], + "internalType": "struct IHederaTokenService.Expiry", + "name": "expiry", + "type": "tuple" + } + ], + "internalType": "struct IHederaTokenService.HederaToken", + "name": "tokenInfo", + "type": "tuple" + } + ], + "name": "updateTokenInfoPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "keyType", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "bool", + "name": "inheritAccountKey", + "type": "bool" + }, + { + "internalType": "address", + "name": "contractId", + "type": "address" + }, + { + "internalType": "bytes", + "name": "ed25519", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "ECDSA_secp256k1", + "type": "bytes" + }, + { + "internalType": "address", + "name": "delegatableContractId", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.KeyValue", + "name": "key", + "type": "tuple" + } + ], + "internalType": "struct IHederaTokenService.TokenKey[]", + "name": "keys", + "type": "tuple[]" + } + ], + "name": "updateTokenKeysPublic", + "outputs": [ + { + "internalType": "int64", + "name": "responseCode", + "type": "int64" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "int64[]", + "name": "serialNumbers", + "type": "int64[]" + } + ], + "name": "wipeTokenAccountNFTPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "int64", + "name": "amount", + "type": "int64" + } + ], + "name": "wipeTokenAccountPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50600160208181527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb499190915560027fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f5560047fd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f5560087f7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b5560107fedc95719e9a3b28dd8e80877cb5880a9be7de1a13fc8b05e7999683b6b567643557fe2689cd4a84e23ad2f564004f1c9013e9589d260bde6380aba3ca7e09e4df40c55600660005260407f8f331abe73332f95a25873e8b430885974c0409691f89d643119a11623a7924a55611bb0806101276000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063815228c0116100ad578063f25b120011610071578063f25b120014610282578063f52177ee14610295578063f7be3425146102c0578063f848fec4146102d3578063fad0038a146102e657600080fd5b8063815228c0146102235780639b23d3d914610236578063a345f7bd14610249578063b26d33cb1461025c578063df6c06f51461026f57600080fd5b806336348de3116100f457806336348de3146101b65780634d8f27c9146101c957806356af8403146101dc578063618dc65e146101ef5780637d3e5da81461021057600080fd5b806315dacbea146101315780632abf6c551461015c5780632b256ec81461017d5780632d73bb2e146101905780632eecbca3146101a3575b600080fd5b61014461013f366004610e8a565b6102f9565b60405160079190910b81526020015b60405180910390f35b61016f61016a366004610fb0565b6103ed565b604051908152602001610153565b61016f61018b366004611060565b610435565b61016f61019e36600461107b565b6104b0565b6101446101b136600461107b565b6104e0565b61016f6101c436600461131c565b610525565b6101446101d7366004611462565b610531565b61016f6101ea366004611518565b61053d565b6102026101fd366004611576565b610587565b60405161015392919061160a565b61016f61021e36600461107b565b6106a5565b61016f61023136600461162b565b6106b1565b610144610244366004610e8a565b6106bd565b61016f610257366004611060565b610702565b61016f61026a36600461107b565b610748565b61016f61027d366004611656565b610754565b61016f610290366004611692565b610761565b6102a86102a33660046116d5565b61076e565b6040805192835260079190910b602083015201610153565b61016f6102ce366004611060565b6107b7565b61016f6102e1366004611656565b610829565b61016f6102f4366004611703565b610836565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610378919061174a565b6000604051808303816000865af19150503d80600081146103b5576040519150601f19603f3d011682016040523d82523d6000602084013e6103ba565b606091505b5091509150816103cb5760156103df565b808060200190518101906103df9190611778565b60030b979650505050505050565b60006103f98383610843565b9050600080516020611b5b8339815191528160405161041a91815260200190565b60405180910390a16016811461042f57600080fd5b92915050565b600061044082610920565b9050600080516020611b5b8339815191528160405161046191815260200190565b60405180910390a16016811461047657600080fd5b604051600181527f0c9c765845f4d139956bb8fc8decb2eec6093c9c608b809641b16054b29f0e13906020015b60405180910390a1919050565b60006104bc83836109fa565b60070b9050600080516020611b5b8339815191528160405161041a91815260200190565b60006104ec8383610a30565b604051600782900b8152909150600080516020611b5b8339815191529060200160405180910390a1600781900b60161461042f57600080fd5b60006103f98383610a66565b60006104ec8383610a92565b600061054a848484610abe565b9050600080516020611b5b8339815191528160405161056b91815260200190565b60405180910390a16016811461058057600080fd5b9392505050565b600060606000806101676001600160a01b031663618dc65e60e01b87876040516024016105b5929190611793565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516105f3919061174a565b6000604051808303816000865af19150503d8060008114610630576040519150601f19603f3d011682016040523d82523d6000602084013e610635565b606091505b50915091507f4af4780e06fe8cb9df64b0794fa6f01399af979175bb988e35e0e57e594567bc828260405161066b9291906117b5565b60405180910390a18161068f57601560405180602001604052806000815250610693565b6016815b60039190910b97909650945050505050565b60006104bc8383610b9e565b60006103f98383610bd4565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a40161033a565b600061070d82610c00565b9050600080516020611b5b8339815191528160405161072e91815260200190565b60405180910390a16016811461074357600080fd5b919050565b60006103f98383610c2e565b600061054a848484610c64565b600061054a848484610ca1565b60008061077c858585610cdf565b6040518281529193509150600080516020611b5b8339815191529060200160405180910390a1601682146107af57600080fd5b935093915050565b60006107c282610dc8565b9050600080516020611b5b833981519152816040516107e391815260200190565b60405180910390a1601681146107f857600080fd5b604051600181527f319ab7084208e4afa38c6e6ff7aea9587439f2e4700746f4c7d425fea17426d2906020016104a3565b600061054a848484610df6565b600061054a848484610e33565b60008060006101676001600160a01b03166378b6391860e01b868660405160240161086f9291906117d0565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516108ad919061174a565b6000604051808303816000865af19150503d80600081146108ea576040519150601f19603f3d011682016040523d82523d6000602084013e6108ef565b606091505b509150915081610900576015610914565b808060200190518101906109149190611778565b60030b95945050505050565b6040516001600160a01b03821660248201526000908190819061016790631f106b4b60e21b906044015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610988919061174a565b6000604051808303816000865af19150503d80600081146109c5576040519150601f19603f3d011682016040523d82523d6000602084013e6109ca565b606091505b5091509150816109db5760156109ef565b808060200190518101906109ef9190611778565b60030b949350505050565b6040516001600160a01b0383811660248301528216604482015260009081908190610167906352f9138760e01b9060640161086f565b6040516001600160a01b03838116602483015282166044820152600090819081906101679063af99c63360e01b9060640161086f565b60008060006101676001600160a01b0316637d305cfa60e01b868660405160240161086f9291906118f4565b60008060006101676001600160a01b0316636fc3cbaf60e01b868660405160240161086f929190611a1f565b60008060006101676001600160a01b031663f7f38e2660e01b878787604051602401610aec93929190611a80565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610b2a919061174a565b6000604051808303816000865af19150503d8060008114610b67576040519150601f19603f3d011682016040523d82523d6000602084013e610b6c565b606091505b509150915081610b7d576015610b91565b80806020019051810190610b919190611778565b60030b9695505050505050565b6040516001600160a01b0383811660248301528216604482015260009081908190610167906316e3e16160e21b9060640161086f565b60008060006101676001600160a01b031663d27be6cd60e01b868660405160240161086f929190611ab5565b6040516001600160a01b03821660248201526000908190819061016790637834fb8960e11b9060440161094a565b6040516001600160a01b038381166024830152821660448201526000908190819061016790630132f29d60e31b9060640161086f565b6040516001600160a01b038481166024830152831660448201526064810182905260009081908190610167906307336aaf60e41b90608401610aec565b6040516001600160a01b0384811660248301528316604482015281151560648201526000908190819061016790631b3b02e560e11b90608401610aec565b6000806000806101676001600160a01b031663d6910d0660e01b888888604051602401610d0e93929190611af8565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610d4c919061174a565b6000604051808303816000865af19150503d8060008114610d89576040519150601f19603f3d011682016040523d82523d6000602084013e610d8e565b606091505b509150915081610da15760156000610db5565b80806020019051810190610db59190611b23565b60039190910b9890975095505050505050565b6040516001600160a01b03821660248201526000908190819061016790633b3bff0f60e01b9060440161094a565b6040516001600160a01b0384811660248301528316604482015260648101829052600090819081906101679063e1f21c6760e01b90608401610aec565b6040516001600160a01b03848116602483015283166044820152600782900b6064820152600090819081906101679063efef57f960e01b90608401610aec565b80356001600160a01b038116811461074357600080fd5b60008060008060808587031215610ea057600080fd5b610ea985610e73565b9350610eb760208601610e73565b9250610ec560408601610e73565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610f0e57610f0e610ed5565b60405290565b60405160a0810167ffffffffffffffff81118282101715610f0e57610f0e610ed5565b604051610120810167ffffffffffffffff81118282101715610f0e57610f0e610ed5565b604051601f8201601f1916810167ffffffffffffffff81118282101715610f8457610f84610ed5565b604052919050565b600067ffffffffffffffff821115610fa657610fa6610ed5565b5060051b60200190565b60008060408385031215610fc357600080fd5b610fcc83610e73565b915060208084013567ffffffffffffffff811115610fe957600080fd5b8401601f81018613610ffa57600080fd5b803561100d61100882610f8c565b610f5b565b81815260059190911b8201830190838101908883111561102c57600080fd5b928401925b828410156110515761104284610e73565b82529284019290840190611031565b80955050505050509250929050565b60006020828403121561107257600080fd5b61058082610e73565b6000806040838503121561108e57600080fd5b61109783610e73565b91506110a560208401610e73565b90509250929050565b600082601f8301126110bf57600080fd5b813567ffffffffffffffff8111156110d9576110d9610ed5565b6110ec601f8201601f1916602001610f5b565b81815284602083860101111561110157600080fd5b816020850160208301376000918101602001919091529392505050565b8035801515811461074357600080fd5b8060070b811461113d57600080fd5b50565b80356107438161112e565b600082601f83011261115c57600080fd5b8135602061116c61100883610f8c565b82815260059290921b8401810191818101908684111561118b57600080fd5b8286015b8481101561129d57803567ffffffffffffffff808211156111af57600080fd5b908801906040601f19838c0381018213156111c957600080fd5b6111d1610eeb565b88850135815282850135848111156111e857600080fd5b949094019360a0858e03830112156112005760008081fd5b611208610f14565b915061121589860161111e565b8252611222838601610e73565b898301526060808601358581111561123a5760008081fd5b6112488f8c838a01016110ae565b85850152506080935083860135858111156112635760008081fd5b6112718f8c838a01016110ae565b82850152505061128360a08601610e73565b92820192909252818801528552505091830191830161118f565b509695505050505050565b6000606082840312156112ba57600080fd5b6040516060810181811067ffffffffffffffff821117156112dd576112dd610ed5565b60405290508082356112ee8161112e565b81526112fc60208401610e73565b6020820152604083013561130f8161112e565b6040919091015292915050565b6000806040838503121561132f57600080fd5b61133883610e73565b9150602083013567ffffffffffffffff8082111561135557600080fd5b90840190610160828703121561136a57600080fd5b611372610f37565b82358281111561138157600080fd5b61138d888286016110ae565b8252506020830135828111156113a257600080fd5b6113ae888286016110ae565b6020830152506113c060408401610e73565b60408201526060830135828111156113d757600080fd5b6113e3888286016110ae565b6060830152506113f56080840161111e565b608082015261140660a08401611140565b60a082015261141760c0840161111e565b60c082015260e08301358281111561142e57600080fd5b61143a8882860161114b565b60e0830152506101009150611451878385016112a8565b828201528093505050509250929050565b6000806040838503121561147557600080fd5b61147e83610e73565b9150602083013567ffffffffffffffff81111561149a57600080fd5b6114a68582860161114b565b9150509250929050565b600082601f8301126114c157600080fd5b813560206114d161100883610f8c565b8083825260208201915060208460051b8701019350868411156114f357600080fd5b602086015b8481101561129d57803561150b8161112e565b83529183019183016114f8565b60008060006060848603121561152d57600080fd5b61153684610e73565b925061154460208501610e73565b9150604084013567ffffffffffffffff81111561156057600080fd5b61156c868287016114b0565b9150509250925092565b6000806040838503121561158957600080fd5b61159283610e73565b9150602083013567ffffffffffffffff8111156115ae57600080fd5b6114a6858286016110ae565b60005b838110156115d55781810151838201526020016115bd565b50506000910152565b600081518084526115f68160208601602086016115ba565b601f01601f19169290920160200192915050565b82815260406020820152600061162360408301846115de565b949350505050565b6000806080838503121561163e57600080fd5b61164783610e73565b91506110a584602085016112a8565b60008060006060848603121561166b57600080fd5b61167484610e73565b925061168260208501610e73565b9150604084013590509250925092565b6000806000606084860312156116a757600080fd5b6116b084610e73565b92506116be60208501610e73565b91506116cc6040850161111e565b90509250925092565b6000806000606084860312156116ea57600080fd5b6116f384610e73565b925060208401356115448161112e565b60008060006060848603121561171857600080fd5b61172184610e73565b925061172f60208501610e73565b9150604084013561173f8161112e565b809150509250925092565b6000825161175c8184602087016115ba565b9190910192915050565b8051600381900b811461074357600080fd5b60006020828403121561178a57600080fd5b61058082611766565b6001600160a01b038316815260406020820152600061162360408301846115de565b821515815260406020820152600061162360408301846115de565b6000604082016001600160a01b03808616845260206040602086015282865180855260608701915060208801945060005b8181101561181f578551851683529483019491830191600101611801565b509098975050505050505050565b600082825180855260208086019550808260051b84010181860160005b848110156118e757601f198684030189528151604081518552858201519150808686015281511515818601528582015160606001600160a01b038083168289015283850151935060a09250608083818a01526118a960e08a01866115de565b92860151898403603f1901858b01529294506118c585846115de565b9501511660c0979097019690965250509884019892509083019060010161184a565b5090979650505050505050565b6001600160a01b0383168152604060208201526000825161016060408401526119216101a08401826115de565b90506020840151603f198085840301606086015261193f83836115de565b92506040860151915061195d60808601836001600160a01b03169052565b60608601519150808584030160a086015261197883836115de565b92506080860151915061198f60c086018315159052565b60a086015191506119a560e086018360070b9052565b60c086015191506101006119bc8187018415159052565b60e0870151925081868503016101208701526119d8848461182d565b908701518051600790810b61014089015260208201516001600160a01b03166101608901526040820151900b6101808801529093509150611a169050565b50949350505050565b6001600160a01b0383168152604060208201526000611623604083018461182d565b60008151808452602080850194506020840160005b83811015611a7557815160070b87529582019590820190600101611a56565b509495945050505050565b60006001600160a01b03808616835280851660208401525060606040830152611aac6060830184611a41565b95945050505050565b6001600160a01b0383168152608081016105806020830184805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b6001600160a01b03841681528260070b6020820152606060408201526000611aac6060830184611a41565b60008060408385031215611b3657600080fd5b611b3f83611766565b91506020830151611b4f8161112e565b80915050925092905056fe90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aaa26469706673582212209e2d64d17864a5010461c2f3ed849d53869a58eb7886f5468ed6773dcc4eb5f864736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012c5760003560e01c8063815228c0116100ad578063f25b120011610071578063f25b120014610282578063f52177ee14610295578063f7be3425146102c0578063f848fec4146102d3578063fad0038a146102e657600080fd5b8063815228c0146102235780639b23d3d914610236578063a345f7bd14610249578063b26d33cb1461025c578063df6c06f51461026f57600080fd5b806336348de3116100f457806336348de3146101b65780634d8f27c9146101c957806356af8403146101dc578063618dc65e146101ef5780637d3e5da81461021057600080fd5b806315dacbea146101315780632abf6c551461015c5780632b256ec81461017d5780632d73bb2e146101905780632eecbca3146101a3575b600080fd5b61014461013f366004610e8a565b6102f9565b60405160079190910b81526020015b60405180910390f35b61016f61016a366004610fb0565b6103ed565b604051908152602001610153565b61016f61018b366004611060565b610435565b61016f61019e36600461107b565b6104b0565b6101446101b136600461107b565b6104e0565b61016f6101c436600461131c565b610525565b6101446101d7366004611462565b610531565b61016f6101ea366004611518565b61053d565b6102026101fd366004611576565b610587565b60405161015392919061160a565b61016f61021e36600461107b565b6106a5565b61016f61023136600461162b565b6106b1565b610144610244366004610e8a565b6106bd565b61016f610257366004611060565b610702565b61016f61026a36600461107b565b610748565b61016f61027d366004611656565b610754565b61016f610290366004611692565b610761565b6102a86102a33660046116d5565b61076e565b6040805192835260079190910b602083015201610153565b61016f6102ce366004611060565b6107b7565b61016f6102e1366004611656565b610829565b61016f6102f4366004611703565b610836565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610378919061174a565b6000604051808303816000865af19150503d80600081146103b5576040519150601f19603f3d011682016040523d82523d6000602084013e6103ba565b606091505b5091509150816103cb5760156103df565b808060200190518101906103df9190611778565b60030b979650505050505050565b60006103f98383610843565b9050600080516020611b5b8339815191528160405161041a91815260200190565b60405180910390a16016811461042f57600080fd5b92915050565b600061044082610920565b9050600080516020611b5b8339815191528160405161046191815260200190565b60405180910390a16016811461047657600080fd5b604051600181527f0c9c765845f4d139956bb8fc8decb2eec6093c9c608b809641b16054b29f0e13906020015b60405180910390a1919050565b60006104bc83836109fa565b60070b9050600080516020611b5b8339815191528160405161041a91815260200190565b60006104ec8383610a30565b604051600782900b8152909150600080516020611b5b8339815191529060200160405180910390a1600781900b60161461042f57600080fd5b60006103f98383610a66565b60006104ec8383610a92565b600061054a848484610abe565b9050600080516020611b5b8339815191528160405161056b91815260200190565b60405180910390a16016811461058057600080fd5b9392505050565b600060606000806101676001600160a01b031663618dc65e60e01b87876040516024016105b5929190611793565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516105f3919061174a565b6000604051808303816000865af19150503d8060008114610630576040519150601f19603f3d011682016040523d82523d6000602084013e610635565b606091505b50915091507f4af4780e06fe8cb9df64b0794fa6f01399af979175bb988e35e0e57e594567bc828260405161066b9291906117b5565b60405180910390a18161068f57601560405180602001604052806000815250610693565b6016815b60039190910b97909650945050505050565b60006104bc8383610b9e565b60006103f98383610bd4565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a40161033a565b600061070d82610c00565b9050600080516020611b5b8339815191528160405161072e91815260200190565b60405180910390a16016811461074357600080fd5b919050565b60006103f98383610c2e565b600061054a848484610c64565b600061054a848484610ca1565b60008061077c858585610cdf565b6040518281529193509150600080516020611b5b8339815191529060200160405180910390a1601682146107af57600080fd5b935093915050565b60006107c282610dc8565b9050600080516020611b5b833981519152816040516107e391815260200190565b60405180910390a1601681146107f857600080fd5b604051600181527f319ab7084208e4afa38c6e6ff7aea9587439f2e4700746f4c7d425fea17426d2906020016104a3565b600061054a848484610df6565b600061054a848484610e33565b60008060006101676001600160a01b03166378b6391860e01b868660405160240161086f9291906117d0565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516108ad919061174a565b6000604051808303816000865af19150503d80600081146108ea576040519150601f19603f3d011682016040523d82523d6000602084013e6108ef565b606091505b509150915081610900576015610914565b808060200190518101906109149190611778565b60030b95945050505050565b6040516001600160a01b03821660248201526000908190819061016790631f106b4b60e21b906044015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610988919061174a565b6000604051808303816000865af19150503d80600081146109c5576040519150601f19603f3d011682016040523d82523d6000602084013e6109ca565b606091505b5091509150816109db5760156109ef565b808060200190518101906109ef9190611778565b60030b949350505050565b6040516001600160a01b0383811660248301528216604482015260009081908190610167906352f9138760e01b9060640161086f565b6040516001600160a01b03838116602483015282166044820152600090819081906101679063af99c63360e01b9060640161086f565b60008060006101676001600160a01b0316637d305cfa60e01b868660405160240161086f9291906118f4565b60008060006101676001600160a01b0316636fc3cbaf60e01b868660405160240161086f929190611a1f565b60008060006101676001600160a01b031663f7f38e2660e01b878787604051602401610aec93929190611a80565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610b2a919061174a565b6000604051808303816000865af19150503d8060008114610b67576040519150601f19603f3d011682016040523d82523d6000602084013e610b6c565b606091505b509150915081610b7d576015610b91565b80806020019051810190610b919190611778565b60030b9695505050505050565b6040516001600160a01b0383811660248301528216604482015260009081908190610167906316e3e16160e21b9060640161086f565b60008060006101676001600160a01b031663d27be6cd60e01b868660405160240161086f929190611ab5565b6040516001600160a01b03821660248201526000908190819061016790637834fb8960e11b9060440161094a565b6040516001600160a01b038381166024830152821660448201526000908190819061016790630132f29d60e31b9060640161086f565b6040516001600160a01b038481166024830152831660448201526064810182905260009081908190610167906307336aaf60e41b90608401610aec565b6040516001600160a01b0384811660248301528316604482015281151560648201526000908190819061016790631b3b02e560e11b90608401610aec565b6000806000806101676001600160a01b031663d6910d0660e01b888888604051602401610d0e93929190611af8565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610d4c919061174a565b6000604051808303816000865af19150503d8060008114610d89576040519150601f19603f3d011682016040523d82523d6000602084013e610d8e565b606091505b509150915081610da15760156000610db5565b80806020019051810190610db59190611b23565b60039190910b9890975095505050505050565b6040516001600160a01b03821660248201526000908190819061016790633b3bff0f60e01b9060440161094a565b6040516001600160a01b0384811660248301528316604482015260648101829052600090819081906101679063e1f21c6760e01b90608401610aec565b6040516001600160a01b03848116602483015283166044820152600782900b6064820152600090819081906101679063efef57f960e01b90608401610aec565b80356001600160a01b038116811461074357600080fd5b60008060008060808587031215610ea057600080fd5b610ea985610e73565b9350610eb760208601610e73565b9250610ec560408601610e73565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610f0e57610f0e610ed5565b60405290565b60405160a0810167ffffffffffffffff81118282101715610f0e57610f0e610ed5565b604051610120810167ffffffffffffffff81118282101715610f0e57610f0e610ed5565b604051601f8201601f1916810167ffffffffffffffff81118282101715610f8457610f84610ed5565b604052919050565b600067ffffffffffffffff821115610fa657610fa6610ed5565b5060051b60200190565b60008060408385031215610fc357600080fd5b610fcc83610e73565b915060208084013567ffffffffffffffff811115610fe957600080fd5b8401601f81018613610ffa57600080fd5b803561100d61100882610f8c565b610f5b565b81815260059190911b8201830190838101908883111561102c57600080fd5b928401925b828410156110515761104284610e73565b82529284019290840190611031565b80955050505050509250929050565b60006020828403121561107257600080fd5b61058082610e73565b6000806040838503121561108e57600080fd5b61109783610e73565b91506110a560208401610e73565b90509250929050565b600082601f8301126110bf57600080fd5b813567ffffffffffffffff8111156110d9576110d9610ed5565b6110ec601f8201601f1916602001610f5b565b81815284602083860101111561110157600080fd5b816020850160208301376000918101602001919091529392505050565b8035801515811461074357600080fd5b8060070b811461113d57600080fd5b50565b80356107438161112e565b600082601f83011261115c57600080fd5b8135602061116c61100883610f8c565b82815260059290921b8401810191818101908684111561118b57600080fd5b8286015b8481101561129d57803567ffffffffffffffff808211156111af57600080fd5b908801906040601f19838c0381018213156111c957600080fd5b6111d1610eeb565b88850135815282850135848111156111e857600080fd5b949094019360a0858e03830112156112005760008081fd5b611208610f14565b915061121589860161111e565b8252611222838601610e73565b898301526060808601358581111561123a5760008081fd5b6112488f8c838a01016110ae565b85850152506080935083860135858111156112635760008081fd5b6112718f8c838a01016110ae565b82850152505061128360a08601610e73565b92820192909252818801528552505091830191830161118f565b509695505050505050565b6000606082840312156112ba57600080fd5b6040516060810181811067ffffffffffffffff821117156112dd576112dd610ed5565b60405290508082356112ee8161112e565b81526112fc60208401610e73565b6020820152604083013561130f8161112e565b6040919091015292915050565b6000806040838503121561132f57600080fd5b61133883610e73565b9150602083013567ffffffffffffffff8082111561135557600080fd5b90840190610160828703121561136a57600080fd5b611372610f37565b82358281111561138157600080fd5b61138d888286016110ae565b8252506020830135828111156113a257600080fd5b6113ae888286016110ae565b6020830152506113c060408401610e73565b60408201526060830135828111156113d757600080fd5b6113e3888286016110ae565b6060830152506113f56080840161111e565b608082015261140660a08401611140565b60a082015261141760c0840161111e565b60c082015260e08301358281111561142e57600080fd5b61143a8882860161114b565b60e0830152506101009150611451878385016112a8565b828201528093505050509250929050565b6000806040838503121561147557600080fd5b61147e83610e73565b9150602083013567ffffffffffffffff81111561149a57600080fd5b6114a68582860161114b565b9150509250929050565b600082601f8301126114c157600080fd5b813560206114d161100883610f8c565b8083825260208201915060208460051b8701019350868411156114f357600080fd5b602086015b8481101561129d57803561150b8161112e565b83529183019183016114f8565b60008060006060848603121561152d57600080fd5b61153684610e73565b925061154460208501610e73565b9150604084013567ffffffffffffffff81111561156057600080fd5b61156c868287016114b0565b9150509250925092565b6000806040838503121561158957600080fd5b61159283610e73565b9150602083013567ffffffffffffffff8111156115ae57600080fd5b6114a6858286016110ae565b60005b838110156115d55781810151838201526020016115bd565b50506000910152565b600081518084526115f68160208601602086016115ba565b601f01601f19169290920160200192915050565b82815260406020820152600061162360408301846115de565b949350505050565b6000806080838503121561163e57600080fd5b61164783610e73565b91506110a584602085016112a8565b60008060006060848603121561166b57600080fd5b61167484610e73565b925061168260208501610e73565b9150604084013590509250925092565b6000806000606084860312156116a757600080fd5b6116b084610e73565b92506116be60208501610e73565b91506116cc6040850161111e565b90509250925092565b6000806000606084860312156116ea57600080fd5b6116f384610e73565b925060208401356115448161112e565b60008060006060848603121561171857600080fd5b61172184610e73565b925061172f60208501610e73565b9150604084013561173f8161112e565b809150509250925092565b6000825161175c8184602087016115ba565b9190910192915050565b8051600381900b811461074357600080fd5b60006020828403121561178a57600080fd5b61058082611766565b6001600160a01b038316815260406020820152600061162360408301846115de565b821515815260406020820152600061162360408301846115de565b6000604082016001600160a01b03808616845260206040602086015282865180855260608701915060208801945060005b8181101561181f578551851683529483019491830191600101611801565b509098975050505050505050565b600082825180855260208086019550808260051b84010181860160005b848110156118e757601f198684030189528151604081518552858201519150808686015281511515818601528582015160606001600160a01b038083168289015283850151935060a09250608083818a01526118a960e08a01866115de565b92860151898403603f1901858b01529294506118c585846115de565b9501511660c0979097019690965250509884019892509083019060010161184a565b5090979650505050505050565b6001600160a01b0383168152604060208201526000825161016060408401526119216101a08401826115de565b90506020840151603f198085840301606086015261193f83836115de565b92506040860151915061195d60808601836001600160a01b03169052565b60608601519150808584030160a086015261197883836115de565b92506080860151915061198f60c086018315159052565b60a086015191506119a560e086018360070b9052565b60c086015191506101006119bc8187018415159052565b60e0870151925081868503016101208701526119d8848461182d565b908701518051600790810b61014089015260208201516001600160a01b03166101608901526040820151900b6101808801529093509150611a169050565b50949350505050565b6001600160a01b0383168152604060208201526000611623604083018461182d565b60008151808452602080850194506020840160005b83811015611a7557815160070b87529582019590820190600101611a56565b509495945050505050565b60006001600160a01b03808616835280851660208401525060606040830152611aac6060830184611a41565b95945050505050565b6001600160a01b0383168152608081016105806020830184805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b6001600160a01b03841681528260070b6020820152606060408201526000611aac6060830184611a41565b60008060408385031215611b3657600080fd5b611b3f83611766565b91506020830151611b4f8161112e565b80915050925092905056fe90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aaa26469706673582212209e2d64d17864a5010461c2f3ed849d53869a58eb7886f5468ed6773dcc4eb5f864736f6c63430008170033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/hts-precompile/examples/token-query/TokenQueryContract.sol/TokenQueryContract.json b/artifacts/contracts/hts-precompile/examples/token-query/TokenQueryContract.sol/TokenQueryContract.json new file mode 100644 index 000000000..5da0b5698 --- /dev/null +++ b/artifacts/contracts/hts-precompile/examples/token-query/TokenQueryContract.sol/TokenQueryContract.json @@ -0,0 +1,2566 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TokenQueryContract", + "sourceName": "contracts/hts-precompile/examples/token-query/TokenQueryContract.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "AllowanceValue", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "Approved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "approved", + "type": "address" + } + ], + "name": "ApprovedAddress", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "", + "type": "bool" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "CallResponseEvent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "frozen", + "type": "bool" + } + ], + "name": "Frozen", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "components": [ + { + "components": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "address", + "name": "treasury", + "type": "address" + }, + { + "internalType": "string", + "name": "memo", + "type": "string" + }, + { + "internalType": "bool", + "name": "tokenSupplyType", + "type": "bool" + }, + { + "internalType": "int64", + "name": "maxSupply", + "type": "int64" + }, + { + "internalType": "bool", + "name": "freezeDefault", + "type": "bool" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "keyType", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "bool", + "name": "inheritAccountKey", + "type": "bool" + }, + { + "internalType": "address", + "name": "contractId", + "type": "address" + }, + { + "internalType": "bytes", + "name": "ed25519", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "ECDSA_secp256k1", + "type": "bytes" + }, + { + "internalType": "address", + "name": "delegatableContractId", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.KeyValue", + "name": "key", + "type": "tuple" + } + ], + "internalType": "struct IHederaTokenService.TokenKey[]", + "name": "tokenKeys", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "int64", + "name": "second", + "type": "int64" + }, + { + "internalType": "address", + "name": "autoRenewAccount", + "type": "address" + }, + { + "internalType": "int64", + "name": "autoRenewPeriod", + "type": "int64" + } + ], + "internalType": "struct IHederaTokenService.Expiry", + "name": "expiry", + "type": "tuple" + } + ], + "internalType": "struct IHederaTokenService.HederaToken", + "name": "token", + "type": "tuple" + }, + { + "internalType": "int64", + "name": "totalSupply", + "type": "int64" + }, + { + "internalType": "bool", + "name": "deleted", + "type": "bool" + }, + { + "internalType": "bool", + "name": "defaultKycStatus", + "type": "bool" + }, + { + "internalType": "bool", + "name": "pauseStatus", + "type": "bool" + }, + { + "components": [ + { + "internalType": "int64", + "name": "amount", + "type": "int64" + }, + { + "internalType": "address", + "name": "tokenId", + "type": "address" + }, + { + "internalType": "bool", + "name": "useHbarsForPayment", + "type": "bool" + }, + { + "internalType": "bool", + "name": "useCurrentTokenForPayment", + "type": "bool" + }, + { + "internalType": "address", + "name": "feeCollector", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.FixedFee[]", + "name": "fixedFees", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "int64", + "name": "numerator", + "type": "int64" + }, + { + "internalType": "int64", + "name": "denominator", + "type": "int64" + }, + { + "internalType": "int64", + "name": "minimumAmount", + "type": "int64" + }, + { + "internalType": "int64", + "name": "maximumAmount", + "type": "int64" + }, + { + "internalType": "bool", + "name": "netOfTransfers", + "type": "bool" + }, + { + "internalType": "address", + "name": "feeCollector", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.FractionalFee[]", + "name": "fractionalFees", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "int64", + "name": "numerator", + "type": "int64" + }, + { + "internalType": "int64", + "name": "denominator", + "type": "int64" + }, + { + "internalType": "int64", + "name": "amount", + "type": "int64" + }, + { + "internalType": "address", + "name": "tokenId", + "type": "address" + }, + { + "internalType": "bool", + "name": "useHbarsForPayment", + "type": "bool" + }, + { + "internalType": "address", + "name": "feeCollector", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.RoyaltyFee[]", + "name": "royaltyFees", + "type": "tuple[]" + }, + { + "internalType": "string", + "name": "ledgerId", + "type": "string" + } + ], + "internalType": "struct IHederaTokenService.TokenInfo", + "name": "tokenInfo", + "type": "tuple" + }, + { + "internalType": "int32", + "name": "decimals", + "type": "int32" + } + ], + "indexed": false, + "internalType": "struct IHederaTokenService.FungibleTokenInfo", + "name": "tokenInfo", + "type": "tuple" + } + ], + "name": "FungibleTokenInfo", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "isToken", + "type": "bool" + } + ], + "name": "IsToken", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "kycGranted", + "type": "bool" + } + ], + "name": "KycGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "components": [ + { + "components": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "address", + "name": "treasury", + "type": "address" + }, + { + "internalType": "string", + "name": "memo", + "type": "string" + }, + { + "internalType": "bool", + "name": "tokenSupplyType", + "type": "bool" + }, + { + "internalType": "int64", + "name": "maxSupply", + "type": "int64" + }, + { + "internalType": "bool", + "name": "freezeDefault", + "type": "bool" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "keyType", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "bool", + "name": "inheritAccountKey", + "type": "bool" + }, + { + "internalType": "address", + "name": "contractId", + "type": "address" + }, + { + "internalType": "bytes", + "name": "ed25519", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "ECDSA_secp256k1", + "type": "bytes" + }, + { + "internalType": "address", + "name": "delegatableContractId", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.KeyValue", + "name": "key", + "type": "tuple" + } + ], + "internalType": "struct IHederaTokenService.TokenKey[]", + "name": "tokenKeys", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "int64", + "name": "second", + "type": "int64" + }, + { + "internalType": "address", + "name": "autoRenewAccount", + "type": "address" + }, + { + "internalType": "int64", + "name": "autoRenewPeriod", + "type": "int64" + } + ], + "internalType": "struct IHederaTokenService.Expiry", + "name": "expiry", + "type": "tuple" + } + ], + "internalType": "struct IHederaTokenService.HederaToken", + "name": "token", + "type": "tuple" + }, + { + "internalType": "int64", + "name": "totalSupply", + "type": "int64" + }, + { + "internalType": "bool", + "name": "deleted", + "type": "bool" + }, + { + "internalType": "bool", + "name": "defaultKycStatus", + "type": "bool" + }, + { + "internalType": "bool", + "name": "pauseStatus", + "type": "bool" + }, + { + "components": [ + { + "internalType": "int64", + "name": "amount", + "type": "int64" + }, + { + "internalType": "address", + "name": "tokenId", + "type": "address" + }, + { + "internalType": "bool", + "name": "useHbarsForPayment", + "type": "bool" + }, + { + "internalType": "bool", + "name": "useCurrentTokenForPayment", + "type": "bool" + }, + { + "internalType": "address", + "name": "feeCollector", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.FixedFee[]", + "name": "fixedFees", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "int64", + "name": "numerator", + "type": "int64" + }, + { + "internalType": "int64", + "name": "denominator", + "type": "int64" + }, + { + "internalType": "int64", + "name": "minimumAmount", + "type": "int64" + }, + { + "internalType": "int64", + "name": "maximumAmount", + "type": "int64" + }, + { + "internalType": "bool", + "name": "netOfTransfers", + "type": "bool" + }, + { + "internalType": "address", + "name": "feeCollector", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.FractionalFee[]", + "name": "fractionalFees", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "int64", + "name": "numerator", + "type": "int64" + }, + { + "internalType": "int64", + "name": "denominator", + "type": "int64" + }, + { + "internalType": "int64", + "name": "amount", + "type": "int64" + }, + { + "internalType": "address", + "name": "tokenId", + "type": "address" + }, + { + "internalType": "bool", + "name": "useHbarsForPayment", + "type": "bool" + }, + { + "internalType": "address", + "name": "feeCollector", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.RoyaltyFee[]", + "name": "royaltyFees", + "type": "tuple[]" + }, + { + "internalType": "string", + "name": "ledgerId", + "type": "string" + } + ], + "internalType": "struct IHederaTokenService.TokenInfo", + "name": "tokenInfo", + "type": "tuple" + }, + { + "internalType": "int64", + "name": "serialNumber", + "type": "int64" + }, + { + "internalType": "address", + "name": "ownerId", + "type": "address" + }, + { + "internalType": "int64", + "name": "creationTime", + "type": "int64" + }, + { + "internalType": "bytes", + "name": "metadata", + "type": "bytes" + }, + { + "internalType": "address", + "name": "spenderId", + "type": "address" + } + ], + "indexed": false, + "internalType": "struct IHederaTokenService.NonFungibleTokenInfo", + "name": "tokenInfo", + "type": "tuple" + } + ], + "name": "NonFungibleTokenInfo", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "int256", + "name": "responseCode", + "type": "int256" + } + ], + "name": "ResponseCode", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "int64", + "name": "amount", + "type": "int64" + }, + { + "internalType": "address", + "name": "tokenId", + "type": "address" + }, + { + "internalType": "bool", + "name": "useHbarsForPayment", + "type": "bool" + }, + { + "internalType": "bool", + "name": "useCurrentTokenForPayment", + "type": "bool" + }, + { + "internalType": "address", + "name": "feeCollector", + "type": "address" + } + ], + "indexed": false, + "internalType": "struct IHederaTokenService.FixedFee[]", + "name": "fixedFees", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "int64", + "name": "numerator", + "type": "int64" + }, + { + "internalType": "int64", + "name": "denominator", + "type": "int64" + }, + { + "internalType": "int64", + "name": "minimumAmount", + "type": "int64" + }, + { + "internalType": "int64", + "name": "maximumAmount", + "type": "int64" + }, + { + "internalType": "bool", + "name": "netOfTransfers", + "type": "bool" + }, + { + "internalType": "address", + "name": "feeCollector", + "type": "address" + } + ], + "indexed": false, + "internalType": "struct IHederaTokenService.FractionalFee[]", + "name": "fractionalFees", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "int64", + "name": "numerator", + "type": "int64" + }, + { + "internalType": "int64", + "name": "denominator", + "type": "int64" + }, + { + "internalType": "int64", + "name": "amount", + "type": "int64" + }, + { + "internalType": "address", + "name": "tokenId", + "type": "address" + }, + { + "internalType": "bool", + "name": "useHbarsForPayment", + "type": "bool" + }, + { + "internalType": "address", + "name": "feeCollector", + "type": "address" + } + ], + "indexed": false, + "internalType": "struct IHederaTokenService.RoyaltyFee[]", + "name": "royaltyFees", + "type": "tuple[]" + } + ], + "name": "TokenCustomFees", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "defaultFreezeStatus", + "type": "bool" + } + ], + "name": "TokenDefaultFreezeStatus", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "defaultKycStatus", + "type": "bool" + } + ], + "name": "TokenDefaultKycStatus", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "int64", + "name": "second", + "type": "int64" + }, + { + "internalType": "address", + "name": "autoRenewAccount", + "type": "address" + }, + { + "internalType": "int64", + "name": "autoRenewPeriod", + "type": "int64" + } + ], + "indexed": false, + "internalType": "struct IHederaTokenService.Expiry", + "name": "expiryInfo", + "type": "tuple" + } + ], + "name": "TokenExpiryInfo", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "components": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "address", + "name": "treasury", + "type": "address" + }, + { + "internalType": "string", + "name": "memo", + "type": "string" + }, + { + "internalType": "bool", + "name": "tokenSupplyType", + "type": "bool" + }, + { + "internalType": "int64", + "name": "maxSupply", + "type": "int64" + }, + { + "internalType": "bool", + "name": "freezeDefault", + "type": "bool" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "keyType", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "bool", + "name": "inheritAccountKey", + "type": "bool" + }, + { + "internalType": "address", + "name": "contractId", + "type": "address" + }, + { + "internalType": "bytes", + "name": "ed25519", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "ECDSA_secp256k1", + "type": "bytes" + }, + { + "internalType": "address", + "name": "delegatableContractId", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.KeyValue", + "name": "key", + "type": "tuple" + } + ], + "internalType": "struct IHederaTokenService.TokenKey[]", + "name": "tokenKeys", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "int64", + "name": "second", + "type": "int64" + }, + { + "internalType": "address", + "name": "autoRenewAccount", + "type": "address" + }, + { + "internalType": "int64", + "name": "autoRenewPeriod", + "type": "int64" + } + ], + "internalType": "struct IHederaTokenService.Expiry", + "name": "expiry", + "type": "tuple" + } + ], + "internalType": "struct IHederaTokenService.HederaToken", + "name": "token", + "type": "tuple" + }, + { + "internalType": "int64", + "name": "totalSupply", + "type": "int64" + }, + { + "internalType": "bool", + "name": "deleted", + "type": "bool" + }, + { + "internalType": "bool", + "name": "defaultKycStatus", + "type": "bool" + }, + { + "internalType": "bool", + "name": "pauseStatus", + "type": "bool" + }, + { + "components": [ + { + "internalType": "int64", + "name": "amount", + "type": "int64" + }, + { + "internalType": "address", + "name": "tokenId", + "type": "address" + }, + { + "internalType": "bool", + "name": "useHbarsForPayment", + "type": "bool" + }, + { + "internalType": "bool", + "name": "useCurrentTokenForPayment", + "type": "bool" + }, + { + "internalType": "address", + "name": "feeCollector", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.FixedFee[]", + "name": "fixedFees", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "int64", + "name": "numerator", + "type": "int64" + }, + { + "internalType": "int64", + "name": "denominator", + "type": "int64" + }, + { + "internalType": "int64", + "name": "minimumAmount", + "type": "int64" + }, + { + "internalType": "int64", + "name": "maximumAmount", + "type": "int64" + }, + { + "internalType": "bool", + "name": "netOfTransfers", + "type": "bool" + }, + { + "internalType": "address", + "name": "feeCollector", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.FractionalFee[]", + "name": "fractionalFees", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "int64", + "name": "numerator", + "type": "int64" + }, + { + "internalType": "int64", + "name": "denominator", + "type": "int64" + }, + { + "internalType": "int64", + "name": "amount", + "type": "int64" + }, + { + "internalType": "address", + "name": "tokenId", + "type": "address" + }, + { + "internalType": "bool", + "name": "useHbarsForPayment", + "type": "bool" + }, + { + "internalType": "address", + "name": "feeCollector", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.RoyaltyFee[]", + "name": "royaltyFees", + "type": "tuple[]" + }, + { + "internalType": "string", + "name": "ledgerId", + "type": "string" + } + ], + "indexed": false, + "internalType": "struct IHederaTokenService.TokenInfo", + "name": "tokenInfo", + "type": "tuple" + } + ], + "name": "TokenInfo", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "bool", + "name": "inheritAccountKey", + "type": "bool" + }, + { + "internalType": "address", + "name": "contractId", + "type": "address" + }, + { + "internalType": "bytes", + "name": "ed25519", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "ECDSA_secp256k1", + "type": "bytes" + }, + { + "internalType": "address", + "name": "delegatableContractId", + "type": "address" + } + ], + "indexed": false, + "internalType": "struct IHederaTokenService.KeyValue", + "name": "key", + "type": "tuple" + } + ], + "name": "TokenKey", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "int32", + "name": "tokenType", + "type": "int32" + } + ], + "name": "TokenType", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowancePublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serialNumber", + "type": "uint256" + } + ], + "name": "getApprovedPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + }, + { + "internalType": "address", + "name": "approved", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "getFungibleTokenInfoPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + }, + { + "components": [ + { + "components": [ + { + "components": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "address", + "name": "treasury", + "type": "address" + }, + { + "internalType": "string", + "name": "memo", + "type": "string" + }, + { + "internalType": "bool", + "name": "tokenSupplyType", + "type": "bool" + }, + { + "internalType": "int64", + "name": "maxSupply", + "type": "int64" + }, + { + "internalType": "bool", + "name": "freezeDefault", + "type": "bool" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "keyType", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "bool", + "name": "inheritAccountKey", + "type": "bool" + }, + { + "internalType": "address", + "name": "contractId", + "type": "address" + }, + { + "internalType": "bytes", + "name": "ed25519", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "ECDSA_secp256k1", + "type": "bytes" + }, + { + "internalType": "address", + "name": "delegatableContractId", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.KeyValue", + "name": "key", + "type": "tuple" + } + ], + "internalType": "struct IHederaTokenService.TokenKey[]", + "name": "tokenKeys", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "int64", + "name": "second", + "type": "int64" + }, + { + "internalType": "address", + "name": "autoRenewAccount", + "type": "address" + }, + { + "internalType": "int64", + "name": "autoRenewPeriod", + "type": "int64" + } + ], + "internalType": "struct IHederaTokenService.Expiry", + "name": "expiry", + "type": "tuple" + } + ], + "internalType": "struct IHederaTokenService.HederaToken", + "name": "token", + "type": "tuple" + }, + { + "internalType": "int64", + "name": "totalSupply", + "type": "int64" + }, + { + "internalType": "bool", + "name": "deleted", + "type": "bool" + }, + { + "internalType": "bool", + "name": "defaultKycStatus", + "type": "bool" + }, + { + "internalType": "bool", + "name": "pauseStatus", + "type": "bool" + }, + { + "components": [ + { + "internalType": "int64", + "name": "amount", + "type": "int64" + }, + { + "internalType": "address", + "name": "tokenId", + "type": "address" + }, + { + "internalType": "bool", + "name": "useHbarsForPayment", + "type": "bool" + }, + { + "internalType": "bool", + "name": "useCurrentTokenForPayment", + "type": "bool" + }, + { + "internalType": "address", + "name": "feeCollector", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.FixedFee[]", + "name": "fixedFees", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "int64", + "name": "numerator", + "type": "int64" + }, + { + "internalType": "int64", + "name": "denominator", + "type": "int64" + }, + { + "internalType": "int64", + "name": "minimumAmount", + "type": "int64" + }, + { + "internalType": "int64", + "name": "maximumAmount", + "type": "int64" + }, + { + "internalType": "bool", + "name": "netOfTransfers", + "type": "bool" + }, + { + "internalType": "address", + "name": "feeCollector", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.FractionalFee[]", + "name": "fractionalFees", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "int64", + "name": "numerator", + "type": "int64" + }, + { + "internalType": "int64", + "name": "denominator", + "type": "int64" + }, + { + "internalType": "int64", + "name": "amount", + "type": "int64" + }, + { + "internalType": "address", + "name": "tokenId", + "type": "address" + }, + { + "internalType": "bool", + "name": "useHbarsForPayment", + "type": "bool" + }, + { + "internalType": "address", + "name": "feeCollector", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.RoyaltyFee[]", + "name": "royaltyFees", + "type": "tuple[]" + }, + { + "internalType": "string", + "name": "ledgerId", + "type": "string" + } + ], + "internalType": "struct IHederaTokenService.TokenInfo", + "name": "tokenInfo", + "type": "tuple" + }, + { + "internalType": "int32", + "name": "decimals", + "type": "int32" + } + ], + "internalType": "struct IHederaTokenService.FungibleTokenInfo", + "name": "tokenInfo", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "int64", + "name": "serialNumber", + "type": "int64" + } + ], + "name": "getNonFungibleTokenInfoPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + }, + { + "components": [ + { + "components": [ + { + "components": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "address", + "name": "treasury", + "type": "address" + }, + { + "internalType": "string", + "name": "memo", + "type": "string" + }, + { + "internalType": "bool", + "name": "tokenSupplyType", + "type": "bool" + }, + { + "internalType": "int64", + "name": "maxSupply", + "type": "int64" + }, + { + "internalType": "bool", + "name": "freezeDefault", + "type": "bool" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "keyType", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "bool", + "name": "inheritAccountKey", + "type": "bool" + }, + { + "internalType": "address", + "name": "contractId", + "type": "address" + }, + { + "internalType": "bytes", + "name": "ed25519", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "ECDSA_secp256k1", + "type": "bytes" + }, + { + "internalType": "address", + "name": "delegatableContractId", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.KeyValue", + "name": "key", + "type": "tuple" + } + ], + "internalType": "struct IHederaTokenService.TokenKey[]", + "name": "tokenKeys", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "int64", + "name": "second", + "type": "int64" + }, + { + "internalType": "address", + "name": "autoRenewAccount", + "type": "address" + }, + { + "internalType": "int64", + "name": "autoRenewPeriod", + "type": "int64" + } + ], + "internalType": "struct IHederaTokenService.Expiry", + "name": "expiry", + "type": "tuple" + } + ], + "internalType": "struct IHederaTokenService.HederaToken", + "name": "token", + "type": "tuple" + }, + { + "internalType": "int64", + "name": "totalSupply", + "type": "int64" + }, + { + "internalType": "bool", + "name": "deleted", + "type": "bool" + }, + { + "internalType": "bool", + "name": "defaultKycStatus", + "type": "bool" + }, + { + "internalType": "bool", + "name": "pauseStatus", + "type": "bool" + }, + { + "components": [ + { + "internalType": "int64", + "name": "amount", + "type": "int64" + }, + { + "internalType": "address", + "name": "tokenId", + "type": "address" + }, + { + "internalType": "bool", + "name": "useHbarsForPayment", + "type": "bool" + }, + { + "internalType": "bool", + "name": "useCurrentTokenForPayment", + "type": "bool" + }, + { + "internalType": "address", + "name": "feeCollector", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.FixedFee[]", + "name": "fixedFees", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "int64", + "name": "numerator", + "type": "int64" + }, + { + "internalType": "int64", + "name": "denominator", + "type": "int64" + }, + { + "internalType": "int64", + "name": "minimumAmount", + "type": "int64" + }, + { + "internalType": "int64", + "name": "maximumAmount", + "type": "int64" + }, + { + "internalType": "bool", + "name": "netOfTransfers", + "type": "bool" + }, + { + "internalType": "address", + "name": "feeCollector", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.FractionalFee[]", + "name": "fractionalFees", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "int64", + "name": "numerator", + "type": "int64" + }, + { + "internalType": "int64", + "name": "denominator", + "type": "int64" + }, + { + "internalType": "int64", + "name": "amount", + "type": "int64" + }, + { + "internalType": "address", + "name": "tokenId", + "type": "address" + }, + { + "internalType": "bool", + "name": "useHbarsForPayment", + "type": "bool" + }, + { + "internalType": "address", + "name": "feeCollector", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.RoyaltyFee[]", + "name": "royaltyFees", + "type": "tuple[]" + }, + { + "internalType": "string", + "name": "ledgerId", + "type": "string" + } + ], + "internalType": "struct IHederaTokenService.TokenInfo", + "name": "tokenInfo", + "type": "tuple" + }, + { + "internalType": "int64", + "name": "serialNumber", + "type": "int64" + }, + { + "internalType": "address", + "name": "ownerId", + "type": "address" + }, + { + "internalType": "int64", + "name": "creationTime", + "type": "int64" + }, + { + "internalType": "bytes", + "name": "metadata", + "type": "bytes" + }, + { + "internalType": "address", + "name": "spenderId", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.NonFungibleTokenInfo", + "name": "tokenInfo", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "getTokenCustomFeesPublic", + "outputs": [ + { + "internalType": "int64", + "name": "responseCode", + "type": "int64" + }, + { + "components": [ + { + "internalType": "int64", + "name": "amount", + "type": "int64" + }, + { + "internalType": "address", + "name": "tokenId", + "type": "address" + }, + { + "internalType": "bool", + "name": "useHbarsForPayment", + "type": "bool" + }, + { + "internalType": "bool", + "name": "useCurrentTokenForPayment", + "type": "bool" + }, + { + "internalType": "address", + "name": "feeCollector", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.FixedFee[]", + "name": "fixedFees", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "int64", + "name": "numerator", + "type": "int64" + }, + { + "internalType": "int64", + "name": "denominator", + "type": "int64" + }, + { + "internalType": "int64", + "name": "minimumAmount", + "type": "int64" + }, + { + "internalType": "int64", + "name": "maximumAmount", + "type": "int64" + }, + { + "internalType": "bool", + "name": "netOfTransfers", + "type": "bool" + }, + { + "internalType": "address", + "name": "feeCollector", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.FractionalFee[]", + "name": "fractionalFees", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "int64", + "name": "numerator", + "type": "int64" + }, + { + "internalType": "int64", + "name": "denominator", + "type": "int64" + }, + { + "internalType": "int64", + "name": "amount", + "type": "int64" + }, + { + "internalType": "address", + "name": "tokenId", + "type": "address" + }, + { + "internalType": "bool", + "name": "useHbarsForPayment", + "type": "bool" + }, + { + "internalType": "address", + "name": "feeCollector", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.RoyaltyFee[]", + "name": "royaltyFees", + "type": "tuple[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "getTokenDefaultFreezeStatusPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + }, + { + "internalType": "bool", + "name": "defaultFreezeStatus", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "getTokenDefaultKycStatusPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + }, + { + "internalType": "bool", + "name": "defaultKycStatus", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "getTokenExpiryInfoPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + }, + { + "components": [ + { + "internalType": "int64", + "name": "second", + "type": "int64" + }, + { + "internalType": "address", + "name": "autoRenewAccount", + "type": "address" + }, + { + "internalType": "int64", + "name": "autoRenewPeriod", + "type": "int64" + } + ], + "internalType": "struct IHederaTokenService.Expiry", + "name": "expiryInfo", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "getTokenInfoPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + }, + { + "components": [ + { + "components": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "address", + "name": "treasury", + "type": "address" + }, + { + "internalType": "string", + "name": "memo", + "type": "string" + }, + { + "internalType": "bool", + "name": "tokenSupplyType", + "type": "bool" + }, + { + "internalType": "int64", + "name": "maxSupply", + "type": "int64" + }, + { + "internalType": "bool", + "name": "freezeDefault", + "type": "bool" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "keyType", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "bool", + "name": "inheritAccountKey", + "type": "bool" + }, + { + "internalType": "address", + "name": "contractId", + "type": "address" + }, + { + "internalType": "bytes", + "name": "ed25519", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "ECDSA_secp256k1", + "type": "bytes" + }, + { + "internalType": "address", + "name": "delegatableContractId", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.KeyValue", + "name": "key", + "type": "tuple" + } + ], + "internalType": "struct IHederaTokenService.TokenKey[]", + "name": "tokenKeys", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "int64", + "name": "second", + "type": "int64" + }, + { + "internalType": "address", + "name": "autoRenewAccount", + "type": "address" + }, + { + "internalType": "int64", + "name": "autoRenewPeriod", + "type": "int64" + } + ], + "internalType": "struct IHederaTokenService.Expiry", + "name": "expiry", + "type": "tuple" + } + ], + "internalType": "struct IHederaTokenService.HederaToken", + "name": "token", + "type": "tuple" + }, + { + "internalType": "int64", + "name": "totalSupply", + "type": "int64" + }, + { + "internalType": "bool", + "name": "deleted", + "type": "bool" + }, + { + "internalType": "bool", + "name": "defaultKycStatus", + "type": "bool" + }, + { + "internalType": "bool", + "name": "pauseStatus", + "type": "bool" + }, + { + "components": [ + { + "internalType": "int64", + "name": "amount", + "type": "int64" + }, + { + "internalType": "address", + "name": "tokenId", + "type": "address" + }, + { + "internalType": "bool", + "name": "useHbarsForPayment", + "type": "bool" + }, + { + "internalType": "bool", + "name": "useCurrentTokenForPayment", + "type": "bool" + }, + { + "internalType": "address", + "name": "feeCollector", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.FixedFee[]", + "name": "fixedFees", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "int64", + "name": "numerator", + "type": "int64" + }, + { + "internalType": "int64", + "name": "denominator", + "type": "int64" + }, + { + "internalType": "int64", + "name": "minimumAmount", + "type": "int64" + }, + { + "internalType": "int64", + "name": "maximumAmount", + "type": "int64" + }, + { + "internalType": "bool", + "name": "netOfTransfers", + "type": "bool" + }, + { + "internalType": "address", + "name": "feeCollector", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.FractionalFee[]", + "name": "fractionalFees", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "int64", + "name": "numerator", + "type": "int64" + }, + { + "internalType": "int64", + "name": "denominator", + "type": "int64" + }, + { + "internalType": "int64", + "name": "amount", + "type": "int64" + }, + { + "internalType": "address", + "name": "tokenId", + "type": "address" + }, + { + "internalType": "bool", + "name": "useHbarsForPayment", + "type": "bool" + }, + { + "internalType": "address", + "name": "feeCollector", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.RoyaltyFee[]", + "name": "royaltyFees", + "type": "tuple[]" + }, + { + "internalType": "string", + "name": "ledgerId", + "type": "string" + } + ], + "internalType": "struct IHederaTokenService.TokenInfo", + "name": "tokenInfo", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "keyType", + "type": "uint256" + } + ], + "name": "getTokenKeyPublic", + "outputs": [ + { + "internalType": "int64", + "name": "responseCode", + "type": "int64" + }, + { + "components": [ + { + "internalType": "bool", + "name": "inheritAccountKey", + "type": "bool" + }, + { + "internalType": "address", + "name": "contractId", + "type": "address" + }, + { + "internalType": "bytes", + "name": "ed25519", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "ECDSA_secp256k1", + "type": "bytes" + }, + { + "internalType": "address", + "name": "delegatableContractId", + "type": "address" + } + ], + "internalType": "struct IHederaTokenService.KeyValue", + "name": "key", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "getTokenTypePublic", + "outputs": [ + { + "internalType": "int64", + "name": "responseCode", + "type": "int64" + }, + { + "internalType": "int32", + "name": "tokenType", + "type": "int32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAllPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isFrozenPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + }, + { + "internalType": "bool", + "name": "frozen", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isKycPublic", + "outputs": [ + { + "internalType": "int64", + "name": "responseCode", + "type": "int64" + }, + { + "internalType": "bool", + "name": "kycGranted", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "isTokenPublic", + "outputs": [ + { + "internalType": "int64", + "name": "responseCode", + "type": "int64" + }, + { + "internalType": "bool", + "name": "isTokenFlag", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "bytes", + "name": "encodedFunctionSelector", + "type": "bytes" + } + ], + "name": "redirectForToken", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + }, + { + "internalType": "bytes", + "name": "response", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "int64", + "name": "responseCode", + "type": "int64" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serialNumber", + "type": "uint256" + } + ], + "name": "transferFromNFT", + "outputs": [ + { + "internalType": "int64", + "name": "responseCode", + "type": "int64" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50600160208181527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb499190915560027fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f5560047fd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f5560087f7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b5560107fedc95719e9a3b28dd8e80877cb5880a9be7de1a13fc8b05e7999683b6b567643557fe2689cd4a84e23ad2f564004f1c9013e9589d260bde6380aba3ca7e09e4df40c55600660005260407f8f331abe73332f95a25873e8b430885974c0409691f89d643119a11623a7924a55612ede806101276000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063618dc65e116100a25780638c99ef5d116100715780638c99ef5d146102d65780639b23d3d914610303578063a3ad5b5514610316578063c0b19b6d14610329578063f2f38a741461034a57600080fd5b8063618dc65e1461026e57806369837dc21461028f5780636a4dde21146102b057806386f88d88146102c357600080fd5b80633eed2c39116100e95780633eed2c39146101bf5780634cbdb37b146101d25780635a5e6c31146101f35780635b9076b71461021b5780635d2c5bad1461023e57600080fd5b806313c05dd81461011b57806315dacbea146101485780631955de0b1461016e57806319db44b61461018f575b600080fd5b61012e610129366004611971565b61036b565b604080519283529015156020830152015b60405180910390f35b61015b6101563660046119bc565b6103e9565b60405160079190910b815260200161013f565b61018161017c366004611a0d565b6104dd565b60405161013f929190611af4565b6101a261019d366004611a0d565b61058c565b604080519283526001600160a01b0390911660208301520161013f565b61012e6101cd366004611b18565b610605565b6101e56101e0366004611b4b565b61067f565b60405161013f929190611fba565b610206610201366004611971565b6106f5565b6040805192835260208301919091520161013f565b61022e610229366004611b18565b610766565b60405161013f9493929190611fd3565b61025161024c366004611b18565b6107f8565b6040805160079390930b835260039190910b60208301520161013f565b61028161027c366004612122565b610873565b60405161013f9291906121b5565b6102a261029d366004611b18565b610991565b60405161013f9291906121fa565b61012e6102be366004612213565b610a06565b61012e6102d1366004611b18565b610a7d565b6102e96102e4366004611b18565b610aee565b6040805160079390930b835290151560208301520161013f565b61015b6103113660046119bc565b610b67565b6102e9610324366004612213565b610bac565b61033c610337366004611b18565b610c26565b60405161013f929190612241565b61035d610358366004611b18565b610cad565b60405161013f92919061227b565b600080610379858585610d22565b6040518281529193509150600080516020612e898339815191529060200160405180910390a1601682146103ac57600080fd5b60405181151581527e1c2e72360171244b3bb8cc8ddd767820edf37138ad6f129fb3574b407c307d906020015b60405180910390a1935093915050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516104689190612294565b6000604051808303816000865af19150503d80600081146104a5576040519150601f19603f3d011682016040523d82523d6000602084013e6104aa565b606091505b5091509150816104bb5760156104cf565b808060200190518101906104cf91906122c7565b60030b979650505050505050565b6040805160a081018252600080825260208201819052606092820183905282820192909252608081018290526105138484610e08565b604051600783900b81529193509150600080516020612e898339815191529060200160405180910390a1600782900b60161461054e57600080fd5b7faed084fbdf29b6ba2242463299d7270f64e0f8ced16013cfff249856bd8871578160405161057d91906122e2565b60405180910390a19250929050565b6000806105998484610f39565b6040518281529193509150600080516020612e898339815191529060200160405180910390a1601682146105cc57600080fd5b6040516001600160a01b03821681527fc2c78c7c31baf14949e75c51df12be56edb9af523cf82839c2869bbcf13b3ecb9060200161057d565b60008061061183611000565b6040518281529193509150600080516020612e898339815191529060200160405180910390a16016821461064457600080fd5b60405181151581527f6b7f3306751292f85ab4161ee2b0ac16dfc8ded13e6446ce6bd859d0a2f4c78e906020015b60405180910390a1915091565b6000610689611847565b61069384846110e4565b6040518281529193509150600080516020612e898339815191529060200160405180910390a1601682146106c657600080fd5b7f91ccf16c022fe2d397abee975516433182ab8f781d4ef14b66cc732526e66dcf8160405161057d91906122f5565b6000806107038585856111be565b6040518281529193509150600080516020612e898339815191529060200160405180910390a16016821461073657600080fd5b6040518181527f25b6684a7e8fe1b676e9c39c8dd65034fbafea906d3bdfd97bf748b7b55e14c8906020016103d9565b6000606080606061077685611291565b604051600785900b815293975091955093509150600080516020612e898339815191529060200160405180910390a1600784900b6016146107b657600080fd5b7f2fc15414e589a7221dbee977ae9650a8990a7544fd1b3ae3ae62f4797f412a998383836040516107e993929190612308565b60405180910390a19193509193565b60008061080483611378565b604051600783900b81529193509150600080516020612e898339815191529060200160405180910390a1600782900b60161461083f57600080fd5b604051600382900b81527f182137409609594f2b12128230091c673507ea4cab315d59415d5e3f8c301ad590602001610672565b600060606000806101676001600160a01b031663618dc65e60e01b87876040516024016108a1929190612341565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516108df9190612294565b6000604051808303816000865af19150503d806000811461091c576040519150601f19603f3d011682016040523d82523d6000602084013e610921565b606091505b50915091507f4af4780e06fe8cb9df64b0794fa6f01399af979175bb988e35e0e57e594567bc8282604051610957929190612363565b60405180910390a18161097b5760156040518060200160405280600081525061097f565b6016815b60039190910b97909650945050505050565b600061099b611882565b6109a48361143c565b6040518281529193509150600080516020612e898339815191529060200160405180910390a1601682146109d757600080fd5b7f4ef7d8101cfcfd8272047933834c75def485d9965aef926f86f237d4e61ef63881604051610672919061237e565b600080610a13848461150c565b60405160079290920b80835293509150600080516020612e898339815191529060200160405180910390a160168214610a4b57600080fd5b60405181151581527f59800d968fcce138300a0019410b4b75041610d65b3cdc5f31656b03ed14912e9060200161057d565b600080610a89836115e7565b6040518281529193509150600080516020612e898339815191529060200160405180910390a160168214610abc57600080fd5b60405181151581527f9ee19e13dfa1ba8db2502e15ff56dbecdeb0e0473323fb195473ce648030a2cd90602001610672565b600080610afa83611617565b604051600783900b81529193509150600080516020612e898339815191529060200160405180910390a1600782900b601614610b3557600080fd5b60405181151581527f5080c42cc33acbcea410fa6eaa925bd878674825501981184fdd53749f8478a890602001610672565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a40161042a565b600080610bb98484611647565b604051600783900b81529193509150600080516020612e898339815191529060200160405180910390a1600782900b601614610bf457600080fd5b60405181151581527fd24dda6928587354b65aa1a18c2eaf249bef7e5bafd2a71fac71d286f76f957f9060200161057d565b60408051606081018252600080825260208201819052918101829052610c4b8361167f565b6040518281529193509150600080516020612e898339815191529060200160405180910390a160168214610c7e57600080fd5b7ffed17041c1dbab1a630961a1f2d469641f421ee8a8b0f717d6f840c75e459333816040516106729190612391565b6000610cb76118a2565b610cc083611777565b6040518281529193509150600080516020612e898339815191529060200160405180910390a160168214610cf357600080fd5b7fd1a813e1ab0917de7318f3003f23664aed447e65204cf1e19c2c806e591c851f8160405161067291906123cb565b604080516001600160a01b0385811660248301528481166044830152831660648083019190915282518083039091018152608490910182526020810180516001600160e01b031663f49f40db60e01b179052905160009182918291829161016791610d8c91612294565b6000604051808303816000865af19150503d8060008114610dc9576040519150601f19603f3d011682016040523d82523d6000602084013e610dce565b606091505b509150915081610de15760156000610df5565b80806020019051810190610df591906123ee565b60039190910b9890975095505050505050565b6040805160a081018252600080825260208083018290526060838501819052808401526080830182905283516001600160a01b03871660248201526044808201879052855180830390910181526064909101855290810180516001600160e01b0316631e26e99760e11b179052925190928391829161016791610e8b9190612294565b6000604051808303816000865af19150503d8060008114610ec8576040519150601f19603f3d011682016040523d82523d6000602084013e610ecd565b606091505b5091509150610f186040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b82610f2557601581610df5565b81806020019051810190610df59190612517565b604080516001600160a01b0384166024820152604480820184905282518083039091018152606490910182526020810180516001600160e01b03166304c791b360e11b179052905160009182918291829161016791610f9791612294565b6000604051808303816000865af19150503d8060008114610fd4576040519150601f19603f3d011682016040523d82523d6000602084013e610fd9565b606091505b509150915081610fec576015600061097f565b8080602001905181019061097f9190612565565b6040516001600160a01b03821660248201526000908190819081906101679063a7daa18d60e01b906044015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161106a9190612294565b6000604051808303816000865af19150503d80600081146110a7576040519150601f19603f3d011682016040523d82523d6000602084013e6110ac565b606091505b5091509150816110bf57601560006110d3565b808060200190518101906110d391906123ee565b60039190910b969095509350505050565b60006110ee611847565b604080516001600160a01b0386166024820152600785900b60448083019190915282518083039091018152606490910182526020810180516001600160e01b031663050fc3b560e31b179052905160009182916101679161114e91612294565b6000604051808303816000865af19150503d806000811461118b576040519150601f19603f3d011682016040523d82523d6000602084013e611190565b606091505b509150915061119d611847565b826111aa57601581610df5565b81806020019051810190610df59190612bb1565b604080516001600160a01b0385811660248301528481166044830152831660648083019190915282518083039091018152608490910182526020810180516001600160e01b031663927da10560e01b17905290516000918291829182916101679161122891612294565b6000604051808303816000865af19150503d8060008114611265576040519150601f19603f3d011682016040523d82523d6000602084013e61126a565b606091505b50915091508161127d5760156000610df5565b80806020019051810190610df59190612c99565b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316630573b08d60e51b17905290516000916060918291829185918291610167916112f091612294565b6000604051808303816000865af19150503d806000811461132d576040519150601f19603f3d011682016040523d82523d6000602084013e611332565b606091505b509150915060608060608461134b57601583838361135f565b8380602001905181019061135f9190612cc5565b60039390930b9d919c509a509098509650505050505050565b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166393272baf60e01b1790529051600091829182918291610167916113d291612294565b6000604051808303816000865af19150503d806000811461140f576040519150601f19603f3d011682016040523d82523d6000602084013e611414565b606091505b5091509150816114285760156000196110d3565b808060200190518101906110d39190612d5e565b6000611446611882565b604080516001600160a01b03851660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316633f28a19b60e01b179052905160009182916101679161149c91612294565b6000604051808303816000865af19150503d80600081146114d9576040519150601f19603f3d011682016040523d82523d6000602084013e6114de565b606091505b50915091506114eb611882565b826114f85760158161097f565b8180602001905181019061097f9190612d88565b6040516001600160a01b03838116602483015282166044820152600090819081908190610167906346de0fb160e01b906064015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161157e9190612294565b6000604051808303816000865af19150503d80600081146115bb576040519150601f19603f3d011682016040523d82523d6000602084013e6115c0565b606091505b5091509150816115d3576015600061097f565b8080602001905181019061097f91906123ee565b6040516001600160a01b03821660248201526000908190819081906101679063335e04c160e01b9060440161102c565b6040516001600160a01b0382166024820152600090819081908190610167906319f3736160e01b9060440161102c565b6040516001600160a01b0383811660248301528216604482015260009081908190819061016790633cb0c7fd60e21b90606401611540565b604080516060810182526000808252602080830182905282840182905283516001600160a01b038616602480830191909152855180830390910181526044909101855290810180516001600160e01b0316631ac299b760e31b1790529251909283918291610167916116f19190612294565b6000604051808303816000865af19150503d806000811461172e576040519150601f19603f3d011682016040523d82523d6000602084013e611733565b606091505b5060408051606081018252600080825260208201819052918101919091529193509150826117635760158161097f565b8180602001905181019061097f9190612e19565b60006117816118a2565b604080516001600160a01b03851660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316631f69565f60e01b17905290516000918291610167916117d791612294565b6000604051808303816000865af19150503d8060008114611814576040519150601f19603f3d011682016040523d82523d6000602084013e611819565b606091505b50915091506118266118a2565b826118335760158161097f565b8180602001905181019061097f9190612e44565b6040518060c0016040528061185a6118a2565b8152600060208201819052604082018190526060808301829052608083015260a09091015290565b60405180604001604052806118956118a2565b8152600060209091015290565b60408051610240810182526060610120820181815261014083018290526000610160840181905261018084018390526101a084018190526101c084018190526101e0840181905261020084018390528451928301855280835260208301819052938201939093526102208201529081908152602001600060070b8152602001600015158152602001600015158152602001600015158152602001606081526020016060815260200160608152602001606081525090565b6001600160a01b038116811461196e57600080fd5b50565b60008060006060848603121561198657600080fd5b833561199181611959565b925060208401356119a181611959565b915060408401356119b181611959565b809150509250925092565b600080600080608085870312156119d257600080fd5b84356119dd81611959565b935060208501356119ed81611959565b925060408501356119fd81611959565b9396929550929360600135925050565b60008060408385031215611a2057600080fd5b8235611a2b81611959565b946020939093013593505050565b60005b83811015611a54578181015183820152602001611a3c565b50506000910152565b60008151808452611a75816020860160208601611a39565b601f01601f19169290920160200192915050565b805115158252600060208201516001600160a01b0380821660208601526040840151915060a06040860152611ac160a0860183611a5d565b915060608401518583036060870152611ada8382611a5d565b925050806080850151166080860152508091505092915050565b8260070b8152604060208201526000611b106040830184611a89565b949350505050565b600060208284031215611b2a57600080fd5b8135611b3581611959565b9392505050565b8060070b811461196e57600080fd5b60008060408385031215611b5e57600080fd5b8235611b6981611959565b91506020830135611b7981611b3c565b809150509250929050565b600082825180855260208086019550808260051b84010181860160005b84811015611be357858303601f190189528151805184528401516040858501819052611bcf81860183611a89565b9a86019a9450505090830190600101611ba1565b5090979650505050505050565b60006101608251818552611c0682860182611a5d565b91505060208301518482036020860152611c208282611a5d565b9150506040830151611c3d60408601826001600160a01b03169052565b5060608301518482036060860152611c558282611a5d565b9150506080830151611c6b608086018215159052565b5060a0830151611c8060a086018260070b9052565b5060c0830151611c9460c086018215159052565b5060e083015184820360e0860152611cac8282611b84565b91505061010080840151611ce882870182805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b5090949350505050565b60008151808452602080850194506020840160005b83811015611d60578151805160070b8852838101516001600160a01b03908116858a01526040808301511515908a01526060808301511515908a0152608091820151169088015260a09096019590820190600101611d07565b509495945050505050565b60008151808452602080850194506020840160005b83811015611d605781518051600790810b895284820151810b858a0152604080830151820b908a015260608083015190910b9089015260808082015115159089015260a0908101516001600160a01b03169088015260c09096019590820190600101611d80565b60008151808452602080850194506020840160005b83811015611d605781518051600790810b895284820151810b858a015260408083015190910b908901526060808201516001600160a01b03908116918a01919091526080808301511515908a015260a091820151169088015260c09096019590820190600101611dfc565b60006101208251818552611e7d82860182611bf0565b9150506020830151611e94602086018260070b9052565b506040830151611ea8604086018215159052565b506060830151611ebc606086018215159052565b506080830151611ed0608086018215159052565b5060a083015184820360a0860152611ee88282611cf2565b91505060c083015184820360c0860152611f028282611d6b565b91505060e083015184820360e0860152611f1c8282611de7565b9150506101008084015185830382870152611f378382611a5d565b9695505050505050565b6000815160c08452611f5660c0850182611e67565b9050602083015160070b602085015260408301516001600160a01b038082166040870152606085015160070b6060870152608085015191508583036080870152611fa08383611a5d565b92508060a08601511660a087015250508091505092915050565b828152604060208201526000611b106040830184611f41565b8460070b8152608060208201526000611fef6080830186611cf2565b82810360408401526120018186611d6b565b905082810360608401526120158185611de7565b979650505050505050565b634e487b7160e01b600052604160045260246000fd5b60405160a0810167ffffffffffffffff8111828210171561205957612059612020565b60405290565b6040805190810167ffffffffffffffff8111828210171561205957612059612020565b604051610120810167ffffffffffffffff8111828210171561205957612059612020565b60405160c0810167ffffffffffffffff8111828210171561205957612059612020565b604051601f8201601f1916810167ffffffffffffffff811182821017156120f2576120f2612020565b604052919050565b600067ffffffffffffffff82111561211457612114612020565b50601f01601f191660200190565b6000806040838503121561213557600080fd5b823561214081611959565b9150602083013567ffffffffffffffff81111561215c57600080fd5b8301601f8101851361216d57600080fd5b803561218061217b826120fa565b6120c9565b81815286602083850101111561219557600080fd5b816020840160208301376000602083830101528093505050509250929050565b828152604060208201526000611b106040830184611a5d565b60008151604084526121e36040850182611e67565b60209384015160030b949093019390935250919050565b828152604060208201526000611b1060408301846121ce565b6000806040838503121561222657600080fd5b823561223181611959565b91506020830135611b7981611959565b82815260808101611b356020830184805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b828152604060208201526000611b106040830184611e67565b600082516122a6818460208701611a39565b9190910192915050565b8051600381900b81146122c257600080fd5b919050565b6000602082840312156122d957600080fd5b611b35826122b0565b602081526000611b356020830184611a89565b602081526000611b356020830184611f41565b60608152600061231b6060830186611cf2565b828103602084015261232d8186611d6b565b90508281036040840152611f378185611de7565b6001600160a01b0383168152604060208201526000611b106040830184611a5d565b8215158152604060208201526000611b106040830184611a5d565b602081526000611b3560208301846121ce565b606081016123c58284805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b92915050565b602081526000611b356020830184611e67565b805180151581146122c257600080fd5b6000806040838503121561240157600080fd5b61240a836122b0565b9150612418602084016123de565b90509250929050565b80516122c281611959565b600082601f83011261243d57600080fd5b815161244b61217b826120fa565b81815284602083860101111561246057600080fd5b611b10826020830160208701611a39565b600060a0828403121561248357600080fd5b61248b612036565b9050612496826123de565b815260208201516124a681611959565b6020820152604082015167ffffffffffffffff808211156124c657600080fd5b6124d28583860161242c565b604084015260608401519150808211156124eb57600080fd5b506124f88482850161242c565b606083015250608082015161250c81611959565b608082015292915050565b6000806040838503121561252a57600080fd5b612533836122b0565b9150602083015167ffffffffffffffff81111561254f57600080fd5b61255b85828601612471565b9150509250929050565b6000806040838503121561257857600080fd5b612581836122b0565b91506020830151611b7981611959565b80516122c281611b3c565b600067ffffffffffffffff8211156125b6576125b6612020565b5060051b60200190565b600082601f8301126125d157600080fd5b815160206125e161217b8361259c565b82815260059290921b8401810191818101908684111561260057600080fd5b8286015b8481101561268257805167ffffffffffffffff808211156126255760008081fd5b908801906040828b03601f190181131561263f5760008081fd5b61264761205f565b8388015181529083015190828211156126605760008081fd5b61266e8c8984870101612471565b818901528652505050918301918301612604565b509695505050505050565b60006060828403121561269f57600080fd5b6040516060810181811067ffffffffffffffff821117156126c2576126c2612020565b806040525080915082516126d581611b3c565b815260208301516126e581611959565b602082015260408301516126f881611b3c565b6040919091015292915050565b6000610160828403121561271857600080fd5b612720612082565b9050815167ffffffffffffffff8082111561273a57600080fd5b6127468583860161242c565b8352602084015191508082111561275c57600080fd5b6127688583860161242c565b602084015261277960408501612421565b6040840152606084015191508082111561279257600080fd5b61279e8583860161242c565b60608401526127af608085016123de565b60808401526127c060a08501612591565b60a08401526127d160c085016123de565b60c084015260e08401519150808211156127ea57600080fd5b506127f7848285016125c0565b60e08301525061010061280c8482850161268d565b9082015292915050565b600082601f83011261282757600080fd5b8151602061283761217b8361259c565b82815260a0928302850182019282820191908785111561285657600080fd5b8387015b85811015611be35781818a0312156128725760008081fd5b61287a612036565b815161288581611b3c565b81528186015161289481611959565b8187015260406128a58382016123de565b9082015260606128b68382016123de565b908201526080828101516128c981611959565b90820152845292840192810161285a565b600082601f8301126128eb57600080fd5b815160206128fb61217b8361259c565b82815260c0928302850182019282820191908785111561291a57600080fd5b8387015b85811015611be35781818a0312156129365760008081fd5b61293e6120a6565b815161294981611b3c565b81528186015161295881611b3c565b8187015260408281015161296b81611b3c565b9082015260608281015161297e81611b3c565b90820152608061298f8382016123de565b9082015260a0828101516129a281611959565b90820152845292840192810161291e565b600082601f8301126129c457600080fd5b815160206129d461217b8361259c565b82815260c092830285018201928282019190878511156129f357600080fd5b8387015b85811015611be35781818a031215612a0f5760008081fd5b612a176120a6565b8151612a2281611b3c565b815281860151612a3181611b3c565b81870152604082810151612a4481611b3c565b90820152606082810151612a5781611959565b908201526080612a688382016123de565b9082015260a082810151612a7b81611959565b9082015284529284019281016129f7565b60006101208284031215612a9f57600080fd5b612aa7612082565b9050815167ffffffffffffffff80821115612ac157600080fd5b612acd85838601612705565b8352612adb60208501612591565b6020840152612aec604085016123de565b6040840152612afd606085016123de565b6060840152612b0e608085016123de565b608084015260a0840151915080821115612b2757600080fd5b612b3385838601612816565b60a084015260c0840151915080821115612b4c57600080fd5b612b58858386016128da565b60c084015260e0840151915080821115612b7157600080fd5b612b7d858386016129b3565b60e084015261010091508184015181811115612b9857600080fd5b612ba48682870161242c565b8385015250505092915050565b60008060408385031215612bc457600080fd5b612bcd836122b0565b9150602083015167ffffffffffffffff80821115612bea57600080fd5b9084019060c08287031215612bfe57600080fd5b612c066120a6565b825182811115612c1557600080fd5b612c2188828601612a8c565b825250612c3060208401612591565b6020820152612c4160408401612421565b6040820152612c5260608401612591565b6060820152608083015182811115612c6957600080fd5b612c758882860161242c565b608083015250612c8760a08401612421565b60a08201528093505050509250929050565b60008060408385031215612cac57600080fd5b612cb5836122b0565b9150602083015190509250929050565b60008060008060808587031215612cdb57600080fd5b612ce4856122b0565b9350602085015167ffffffffffffffff80821115612d0157600080fd5b612d0d88838901612816565b94506040870151915080821115612d2357600080fd5b612d2f888389016128da565b93506060870151915080821115612d4557600080fd5b50612d52878288016129b3565b91505092959194509250565b60008060408385031215612d7157600080fd5b612d7a836122b0565b9150612418602084016122b0565b60008060408385031215612d9b57600080fd5b612da4836122b0565b9150602083015167ffffffffffffffff80821115612dc157600080fd5b9084019060408287031215612dd557600080fd5b612ddd61205f565b825182811115612dec57600080fd5b612df888828601612a8c565b825250612e07602084016122b0565b60208201528093505050509250929050565b60008060808385031215612e2c57600080fd5b612e35836122b0565b9150612418846020850161268d565b60008060408385031215612e5757600080fd5b612e60836122b0565b9150602083015167ffffffffffffffff811115612e7c57600080fd5b61255b85828601612a8c56fe90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aaa26469706673582212201c3cbc4cf861b44f8b005d3032b6052ec11019ec49bc528fa000a4f9f82ce02164736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063618dc65e116100a25780638c99ef5d116100715780638c99ef5d146102d65780639b23d3d914610303578063a3ad5b5514610316578063c0b19b6d14610329578063f2f38a741461034a57600080fd5b8063618dc65e1461026e57806369837dc21461028f5780636a4dde21146102b057806386f88d88146102c357600080fd5b80633eed2c39116100e95780633eed2c39146101bf5780634cbdb37b146101d25780635a5e6c31146101f35780635b9076b71461021b5780635d2c5bad1461023e57600080fd5b806313c05dd81461011b57806315dacbea146101485780631955de0b1461016e57806319db44b61461018f575b600080fd5b61012e610129366004611971565b61036b565b604080519283529015156020830152015b60405180910390f35b61015b6101563660046119bc565b6103e9565b60405160079190910b815260200161013f565b61018161017c366004611a0d565b6104dd565b60405161013f929190611af4565b6101a261019d366004611a0d565b61058c565b604080519283526001600160a01b0390911660208301520161013f565b61012e6101cd366004611b18565b610605565b6101e56101e0366004611b4b565b61067f565b60405161013f929190611fba565b610206610201366004611971565b6106f5565b6040805192835260208301919091520161013f565b61022e610229366004611b18565b610766565b60405161013f9493929190611fd3565b61025161024c366004611b18565b6107f8565b6040805160079390930b835260039190910b60208301520161013f565b61028161027c366004612122565b610873565b60405161013f9291906121b5565b6102a261029d366004611b18565b610991565b60405161013f9291906121fa565b61012e6102be366004612213565b610a06565b61012e6102d1366004611b18565b610a7d565b6102e96102e4366004611b18565b610aee565b6040805160079390930b835290151560208301520161013f565b61015b6103113660046119bc565b610b67565b6102e9610324366004612213565b610bac565b61033c610337366004611b18565b610c26565b60405161013f929190612241565b61035d610358366004611b18565b610cad565b60405161013f92919061227b565b600080610379858585610d22565b6040518281529193509150600080516020612e898339815191529060200160405180910390a1601682146103ac57600080fd5b60405181151581527e1c2e72360171244b3bb8cc8ddd767820edf37138ad6f129fb3574b407c307d906020015b60405180910390a1935093915050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516104689190612294565b6000604051808303816000865af19150503d80600081146104a5576040519150601f19603f3d011682016040523d82523d6000602084013e6104aa565b606091505b5091509150816104bb5760156104cf565b808060200190518101906104cf91906122c7565b60030b979650505050505050565b6040805160a081018252600080825260208201819052606092820183905282820192909252608081018290526105138484610e08565b604051600783900b81529193509150600080516020612e898339815191529060200160405180910390a1600782900b60161461054e57600080fd5b7faed084fbdf29b6ba2242463299d7270f64e0f8ced16013cfff249856bd8871578160405161057d91906122e2565b60405180910390a19250929050565b6000806105998484610f39565b6040518281529193509150600080516020612e898339815191529060200160405180910390a1601682146105cc57600080fd5b6040516001600160a01b03821681527fc2c78c7c31baf14949e75c51df12be56edb9af523cf82839c2869bbcf13b3ecb9060200161057d565b60008061061183611000565b6040518281529193509150600080516020612e898339815191529060200160405180910390a16016821461064457600080fd5b60405181151581527f6b7f3306751292f85ab4161ee2b0ac16dfc8ded13e6446ce6bd859d0a2f4c78e906020015b60405180910390a1915091565b6000610689611847565b61069384846110e4565b6040518281529193509150600080516020612e898339815191529060200160405180910390a1601682146106c657600080fd5b7f91ccf16c022fe2d397abee975516433182ab8f781d4ef14b66cc732526e66dcf8160405161057d91906122f5565b6000806107038585856111be565b6040518281529193509150600080516020612e898339815191529060200160405180910390a16016821461073657600080fd5b6040518181527f25b6684a7e8fe1b676e9c39c8dd65034fbafea906d3bdfd97bf748b7b55e14c8906020016103d9565b6000606080606061077685611291565b604051600785900b815293975091955093509150600080516020612e898339815191529060200160405180910390a1600784900b6016146107b657600080fd5b7f2fc15414e589a7221dbee977ae9650a8990a7544fd1b3ae3ae62f4797f412a998383836040516107e993929190612308565b60405180910390a19193509193565b60008061080483611378565b604051600783900b81529193509150600080516020612e898339815191529060200160405180910390a1600782900b60161461083f57600080fd5b604051600382900b81527f182137409609594f2b12128230091c673507ea4cab315d59415d5e3f8c301ad590602001610672565b600060606000806101676001600160a01b031663618dc65e60e01b87876040516024016108a1929190612341565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516108df9190612294565b6000604051808303816000865af19150503d806000811461091c576040519150601f19603f3d011682016040523d82523d6000602084013e610921565b606091505b50915091507f4af4780e06fe8cb9df64b0794fa6f01399af979175bb988e35e0e57e594567bc8282604051610957929190612363565b60405180910390a18161097b5760156040518060200160405280600081525061097f565b6016815b60039190910b97909650945050505050565b600061099b611882565b6109a48361143c565b6040518281529193509150600080516020612e898339815191529060200160405180910390a1601682146109d757600080fd5b7f4ef7d8101cfcfd8272047933834c75def485d9965aef926f86f237d4e61ef63881604051610672919061237e565b600080610a13848461150c565b60405160079290920b80835293509150600080516020612e898339815191529060200160405180910390a160168214610a4b57600080fd5b60405181151581527f59800d968fcce138300a0019410b4b75041610d65b3cdc5f31656b03ed14912e9060200161057d565b600080610a89836115e7565b6040518281529193509150600080516020612e898339815191529060200160405180910390a160168214610abc57600080fd5b60405181151581527f9ee19e13dfa1ba8db2502e15ff56dbecdeb0e0473323fb195473ce648030a2cd90602001610672565b600080610afa83611617565b604051600783900b81529193509150600080516020612e898339815191529060200160405180910390a1600782900b601614610b3557600080fd5b60405181151581527f5080c42cc33acbcea410fa6eaa925bd878674825501981184fdd53749f8478a890602001610672565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a40161042a565b600080610bb98484611647565b604051600783900b81529193509150600080516020612e898339815191529060200160405180910390a1600782900b601614610bf457600080fd5b60405181151581527fd24dda6928587354b65aa1a18c2eaf249bef7e5bafd2a71fac71d286f76f957f9060200161057d565b60408051606081018252600080825260208201819052918101829052610c4b8361167f565b6040518281529193509150600080516020612e898339815191529060200160405180910390a160168214610c7e57600080fd5b7ffed17041c1dbab1a630961a1f2d469641f421ee8a8b0f717d6f840c75e459333816040516106729190612391565b6000610cb76118a2565b610cc083611777565b6040518281529193509150600080516020612e898339815191529060200160405180910390a160168214610cf357600080fd5b7fd1a813e1ab0917de7318f3003f23664aed447e65204cf1e19c2c806e591c851f8160405161067291906123cb565b604080516001600160a01b0385811660248301528481166044830152831660648083019190915282518083039091018152608490910182526020810180516001600160e01b031663f49f40db60e01b179052905160009182918291829161016791610d8c91612294565b6000604051808303816000865af19150503d8060008114610dc9576040519150601f19603f3d011682016040523d82523d6000602084013e610dce565b606091505b509150915081610de15760156000610df5565b80806020019051810190610df591906123ee565b60039190910b9890975095505050505050565b6040805160a081018252600080825260208083018290526060838501819052808401526080830182905283516001600160a01b03871660248201526044808201879052855180830390910181526064909101855290810180516001600160e01b0316631e26e99760e11b179052925190928391829161016791610e8b9190612294565b6000604051808303816000865af19150503d8060008114610ec8576040519150601f19603f3d011682016040523d82523d6000602084013e610ecd565b606091505b5091509150610f186040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b82610f2557601581610df5565b81806020019051810190610df59190612517565b604080516001600160a01b0384166024820152604480820184905282518083039091018152606490910182526020810180516001600160e01b03166304c791b360e11b179052905160009182918291829161016791610f9791612294565b6000604051808303816000865af19150503d8060008114610fd4576040519150601f19603f3d011682016040523d82523d6000602084013e610fd9565b606091505b509150915081610fec576015600061097f565b8080602001905181019061097f9190612565565b6040516001600160a01b03821660248201526000908190819081906101679063a7daa18d60e01b906044015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161106a9190612294565b6000604051808303816000865af19150503d80600081146110a7576040519150601f19603f3d011682016040523d82523d6000602084013e6110ac565b606091505b5091509150816110bf57601560006110d3565b808060200190518101906110d391906123ee565b60039190910b969095509350505050565b60006110ee611847565b604080516001600160a01b0386166024820152600785900b60448083019190915282518083039091018152606490910182526020810180516001600160e01b031663050fc3b560e31b179052905160009182916101679161114e91612294565b6000604051808303816000865af19150503d806000811461118b576040519150601f19603f3d011682016040523d82523d6000602084013e611190565b606091505b509150915061119d611847565b826111aa57601581610df5565b81806020019051810190610df59190612bb1565b604080516001600160a01b0385811660248301528481166044830152831660648083019190915282518083039091018152608490910182526020810180516001600160e01b031663927da10560e01b17905290516000918291829182916101679161122891612294565b6000604051808303816000865af19150503d8060008114611265576040519150601f19603f3d011682016040523d82523d6000602084013e61126a565b606091505b50915091508161127d5760156000610df5565b80806020019051810190610df59190612c99565b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316630573b08d60e51b17905290516000916060918291829185918291610167916112f091612294565b6000604051808303816000865af19150503d806000811461132d576040519150601f19603f3d011682016040523d82523d6000602084013e611332565b606091505b509150915060608060608461134b57601583838361135f565b8380602001905181019061135f9190612cc5565b60039390930b9d919c509a509098509650505050505050565b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166393272baf60e01b1790529051600091829182918291610167916113d291612294565b6000604051808303816000865af19150503d806000811461140f576040519150601f19603f3d011682016040523d82523d6000602084013e611414565b606091505b5091509150816114285760156000196110d3565b808060200190518101906110d39190612d5e565b6000611446611882565b604080516001600160a01b03851660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316633f28a19b60e01b179052905160009182916101679161149c91612294565b6000604051808303816000865af19150503d80600081146114d9576040519150601f19603f3d011682016040523d82523d6000602084013e6114de565b606091505b50915091506114eb611882565b826114f85760158161097f565b8180602001905181019061097f9190612d88565b6040516001600160a01b03838116602483015282166044820152600090819081908190610167906346de0fb160e01b906064015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161157e9190612294565b6000604051808303816000865af19150503d80600081146115bb576040519150601f19603f3d011682016040523d82523d6000602084013e6115c0565b606091505b5091509150816115d3576015600061097f565b8080602001905181019061097f91906123ee565b6040516001600160a01b03821660248201526000908190819081906101679063335e04c160e01b9060440161102c565b6040516001600160a01b0382166024820152600090819081908190610167906319f3736160e01b9060440161102c565b6040516001600160a01b0383811660248301528216604482015260009081908190819061016790633cb0c7fd60e21b90606401611540565b604080516060810182526000808252602080830182905282840182905283516001600160a01b038616602480830191909152855180830390910181526044909101855290810180516001600160e01b0316631ac299b760e31b1790529251909283918291610167916116f19190612294565b6000604051808303816000865af19150503d806000811461172e576040519150601f19603f3d011682016040523d82523d6000602084013e611733565b606091505b5060408051606081018252600080825260208201819052918101919091529193509150826117635760158161097f565b8180602001905181019061097f9190612e19565b60006117816118a2565b604080516001600160a01b03851660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316631f69565f60e01b17905290516000918291610167916117d791612294565b6000604051808303816000865af19150503d8060008114611814576040519150601f19603f3d011682016040523d82523d6000602084013e611819565b606091505b50915091506118266118a2565b826118335760158161097f565b8180602001905181019061097f9190612e44565b6040518060c0016040528061185a6118a2565b8152600060208201819052604082018190526060808301829052608083015260a09091015290565b60405180604001604052806118956118a2565b8152600060209091015290565b60408051610240810182526060610120820181815261014083018290526000610160840181905261018084018390526101a084018190526101c084018190526101e0840181905261020084018390528451928301855280835260208301819052938201939093526102208201529081908152602001600060070b8152602001600015158152602001600015158152602001600015158152602001606081526020016060815260200160608152602001606081525090565b6001600160a01b038116811461196e57600080fd5b50565b60008060006060848603121561198657600080fd5b833561199181611959565b925060208401356119a181611959565b915060408401356119b181611959565b809150509250925092565b600080600080608085870312156119d257600080fd5b84356119dd81611959565b935060208501356119ed81611959565b925060408501356119fd81611959565b9396929550929360600135925050565b60008060408385031215611a2057600080fd5b8235611a2b81611959565b946020939093013593505050565b60005b83811015611a54578181015183820152602001611a3c565b50506000910152565b60008151808452611a75816020860160208601611a39565b601f01601f19169290920160200192915050565b805115158252600060208201516001600160a01b0380821660208601526040840151915060a06040860152611ac160a0860183611a5d565b915060608401518583036060870152611ada8382611a5d565b925050806080850151166080860152508091505092915050565b8260070b8152604060208201526000611b106040830184611a89565b949350505050565b600060208284031215611b2a57600080fd5b8135611b3581611959565b9392505050565b8060070b811461196e57600080fd5b60008060408385031215611b5e57600080fd5b8235611b6981611959565b91506020830135611b7981611b3c565b809150509250929050565b600082825180855260208086019550808260051b84010181860160005b84811015611be357858303601f190189528151805184528401516040858501819052611bcf81860183611a89565b9a86019a9450505090830190600101611ba1565b5090979650505050505050565b60006101608251818552611c0682860182611a5d565b91505060208301518482036020860152611c208282611a5d565b9150506040830151611c3d60408601826001600160a01b03169052565b5060608301518482036060860152611c558282611a5d565b9150506080830151611c6b608086018215159052565b5060a0830151611c8060a086018260070b9052565b5060c0830151611c9460c086018215159052565b5060e083015184820360e0860152611cac8282611b84565b91505061010080840151611ce882870182805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b5090949350505050565b60008151808452602080850194506020840160005b83811015611d60578151805160070b8852838101516001600160a01b03908116858a01526040808301511515908a01526060808301511515908a0152608091820151169088015260a09096019590820190600101611d07565b509495945050505050565b60008151808452602080850194506020840160005b83811015611d605781518051600790810b895284820151810b858a0152604080830151820b908a015260608083015190910b9089015260808082015115159089015260a0908101516001600160a01b03169088015260c09096019590820190600101611d80565b60008151808452602080850194506020840160005b83811015611d605781518051600790810b895284820151810b858a015260408083015190910b908901526060808201516001600160a01b03908116918a01919091526080808301511515908a015260a091820151169088015260c09096019590820190600101611dfc565b60006101208251818552611e7d82860182611bf0565b9150506020830151611e94602086018260070b9052565b506040830151611ea8604086018215159052565b506060830151611ebc606086018215159052565b506080830151611ed0608086018215159052565b5060a083015184820360a0860152611ee88282611cf2565b91505060c083015184820360c0860152611f028282611d6b565b91505060e083015184820360e0860152611f1c8282611de7565b9150506101008084015185830382870152611f378382611a5d565b9695505050505050565b6000815160c08452611f5660c0850182611e67565b9050602083015160070b602085015260408301516001600160a01b038082166040870152606085015160070b6060870152608085015191508583036080870152611fa08383611a5d565b92508060a08601511660a087015250508091505092915050565b828152604060208201526000611b106040830184611f41565b8460070b8152608060208201526000611fef6080830186611cf2565b82810360408401526120018186611d6b565b905082810360608401526120158185611de7565b979650505050505050565b634e487b7160e01b600052604160045260246000fd5b60405160a0810167ffffffffffffffff8111828210171561205957612059612020565b60405290565b6040805190810167ffffffffffffffff8111828210171561205957612059612020565b604051610120810167ffffffffffffffff8111828210171561205957612059612020565b60405160c0810167ffffffffffffffff8111828210171561205957612059612020565b604051601f8201601f1916810167ffffffffffffffff811182821017156120f2576120f2612020565b604052919050565b600067ffffffffffffffff82111561211457612114612020565b50601f01601f191660200190565b6000806040838503121561213557600080fd5b823561214081611959565b9150602083013567ffffffffffffffff81111561215c57600080fd5b8301601f8101851361216d57600080fd5b803561218061217b826120fa565b6120c9565b81815286602083850101111561219557600080fd5b816020840160208301376000602083830101528093505050509250929050565b828152604060208201526000611b106040830184611a5d565b60008151604084526121e36040850182611e67565b60209384015160030b949093019390935250919050565b828152604060208201526000611b1060408301846121ce565b6000806040838503121561222657600080fd5b823561223181611959565b91506020830135611b7981611959565b82815260808101611b356020830184805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b828152604060208201526000611b106040830184611e67565b600082516122a6818460208701611a39565b9190910192915050565b8051600381900b81146122c257600080fd5b919050565b6000602082840312156122d957600080fd5b611b35826122b0565b602081526000611b356020830184611a89565b602081526000611b356020830184611f41565b60608152600061231b6060830186611cf2565b828103602084015261232d8186611d6b565b90508281036040840152611f378185611de7565b6001600160a01b0383168152604060208201526000611b106040830184611a5d565b8215158152604060208201526000611b106040830184611a5d565b602081526000611b3560208301846121ce565b606081016123c58284805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b92915050565b602081526000611b356020830184611e67565b805180151581146122c257600080fd5b6000806040838503121561240157600080fd5b61240a836122b0565b9150612418602084016123de565b90509250929050565b80516122c281611959565b600082601f83011261243d57600080fd5b815161244b61217b826120fa565b81815284602083860101111561246057600080fd5b611b10826020830160208701611a39565b600060a0828403121561248357600080fd5b61248b612036565b9050612496826123de565b815260208201516124a681611959565b6020820152604082015167ffffffffffffffff808211156124c657600080fd5b6124d28583860161242c565b604084015260608401519150808211156124eb57600080fd5b506124f88482850161242c565b606083015250608082015161250c81611959565b608082015292915050565b6000806040838503121561252a57600080fd5b612533836122b0565b9150602083015167ffffffffffffffff81111561254f57600080fd5b61255b85828601612471565b9150509250929050565b6000806040838503121561257857600080fd5b612581836122b0565b91506020830151611b7981611959565b80516122c281611b3c565b600067ffffffffffffffff8211156125b6576125b6612020565b5060051b60200190565b600082601f8301126125d157600080fd5b815160206125e161217b8361259c565b82815260059290921b8401810191818101908684111561260057600080fd5b8286015b8481101561268257805167ffffffffffffffff808211156126255760008081fd5b908801906040828b03601f190181131561263f5760008081fd5b61264761205f565b8388015181529083015190828211156126605760008081fd5b61266e8c8984870101612471565b818901528652505050918301918301612604565b509695505050505050565b60006060828403121561269f57600080fd5b6040516060810181811067ffffffffffffffff821117156126c2576126c2612020565b806040525080915082516126d581611b3c565b815260208301516126e581611959565b602082015260408301516126f881611b3c565b6040919091015292915050565b6000610160828403121561271857600080fd5b612720612082565b9050815167ffffffffffffffff8082111561273a57600080fd5b6127468583860161242c565b8352602084015191508082111561275c57600080fd5b6127688583860161242c565b602084015261277960408501612421565b6040840152606084015191508082111561279257600080fd5b61279e8583860161242c565b60608401526127af608085016123de565b60808401526127c060a08501612591565b60a08401526127d160c085016123de565b60c084015260e08401519150808211156127ea57600080fd5b506127f7848285016125c0565b60e08301525061010061280c8482850161268d565b9082015292915050565b600082601f83011261282757600080fd5b8151602061283761217b8361259c565b82815260a0928302850182019282820191908785111561285657600080fd5b8387015b85811015611be35781818a0312156128725760008081fd5b61287a612036565b815161288581611b3c565b81528186015161289481611959565b8187015260406128a58382016123de565b9082015260606128b68382016123de565b908201526080828101516128c981611959565b90820152845292840192810161285a565b600082601f8301126128eb57600080fd5b815160206128fb61217b8361259c565b82815260c0928302850182019282820191908785111561291a57600080fd5b8387015b85811015611be35781818a0312156129365760008081fd5b61293e6120a6565b815161294981611b3c565b81528186015161295881611b3c565b8187015260408281015161296b81611b3c565b9082015260608281015161297e81611b3c565b90820152608061298f8382016123de565b9082015260a0828101516129a281611959565b90820152845292840192810161291e565b600082601f8301126129c457600080fd5b815160206129d461217b8361259c565b82815260c092830285018201928282019190878511156129f357600080fd5b8387015b85811015611be35781818a031215612a0f5760008081fd5b612a176120a6565b8151612a2281611b3c565b815281860151612a3181611b3c565b81870152604082810151612a4481611b3c565b90820152606082810151612a5781611959565b908201526080612a688382016123de565b9082015260a082810151612a7b81611959565b9082015284529284019281016129f7565b60006101208284031215612a9f57600080fd5b612aa7612082565b9050815167ffffffffffffffff80821115612ac157600080fd5b612acd85838601612705565b8352612adb60208501612591565b6020840152612aec604085016123de565b6040840152612afd606085016123de565b6060840152612b0e608085016123de565b608084015260a0840151915080821115612b2757600080fd5b612b3385838601612816565b60a084015260c0840151915080821115612b4c57600080fd5b612b58858386016128da565b60c084015260e0840151915080821115612b7157600080fd5b612b7d858386016129b3565b60e084015261010091508184015181811115612b9857600080fd5b612ba48682870161242c565b8385015250505092915050565b60008060408385031215612bc457600080fd5b612bcd836122b0565b9150602083015167ffffffffffffffff80821115612bea57600080fd5b9084019060c08287031215612bfe57600080fd5b612c066120a6565b825182811115612c1557600080fd5b612c2188828601612a8c565b825250612c3060208401612591565b6020820152612c4160408401612421565b6040820152612c5260608401612591565b6060820152608083015182811115612c6957600080fd5b612c758882860161242c565b608083015250612c8760a08401612421565b60a08201528093505050509250929050565b60008060408385031215612cac57600080fd5b612cb5836122b0565b9150602083015190509250929050565b60008060008060808587031215612cdb57600080fd5b612ce4856122b0565b9350602085015167ffffffffffffffff80821115612d0157600080fd5b612d0d88838901612816565b94506040870151915080821115612d2357600080fd5b612d2f888389016128da565b93506060870151915080821115612d4557600080fd5b50612d52878288016129b3565b91505092959194509250565b60008060408385031215612d7157600080fd5b612d7a836122b0565b9150612418602084016122b0565b60008060408385031215612d9b57600080fd5b612da4836122b0565b9150602083015167ffffffffffffffff80821115612dc157600080fd5b9084019060408287031215612dd557600080fd5b612ddd61205f565b825182811115612dec57600080fd5b612df888828601612a8c565b825250612e07602084016122b0565b60208201528093505050509250929050565b60008060808385031215612e2c57600080fd5b612e35836122b0565b9150612418846020850161268d565b60008060408385031215612e5757600080fd5b612e60836122b0565b9150602083015167ffffffffffffffff811115612e7c57600080fd5b61255b85828601612a8c56fe90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aaa26469706673582212201c3cbc4cf861b44f8b005d3032b6052ec11019ec49bc528fa000a4f9f82ce02164736f6c63430008170033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/hts-precompile/examples/token-transfer/TokenTransferContract.sol/TokenTransferContract.json b/artifacts/contracts/hts-precompile/examples/token-transfer/TokenTransferContract.sol/TokenTransferContract.json new file mode 100644 index 000000000..38daf31c1 --- /dev/null +++ b/artifacts/contracts/hts-precompile/examples/token-transfer/TokenTransferContract.sol/TokenTransferContract.json @@ -0,0 +1,530 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TokenTransferContract", + "sourceName": "contracts/hts-precompile/examples/token-transfer/TokenTransferContract.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "", + "type": "bool" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "CallResponseEvent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "int256", + "name": "responseCode", + "type": "int256" + } + ], + "name": "ResponseCode", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serialNumber", + "type": "uint256" + } + ], + "name": "approveNFTPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approvePublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "components": [ + { + "internalType": "address", + "name": "accountID", + "type": "address" + }, + { + "internalType": "int64", + "name": "amount", + "type": "int64" + }, + { + "internalType": "bool", + "name": "isApproval", + "type": "bool" + } + ], + "internalType": "struct IHederaTokenService.AccountAmount[]", + "name": "transfers", + "type": "tuple[]" + } + ], + "internalType": "struct IHederaTokenService.TransferList", + "name": "transferList", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "components": [ + { + "internalType": "address", + "name": "accountID", + "type": "address" + }, + { + "internalType": "int64", + "name": "amount", + "type": "int64" + }, + { + "internalType": "bool", + "name": "isApproval", + "type": "bool" + } + ], + "internalType": "struct IHederaTokenService.AccountAmount[]", + "name": "transfers", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "address", + "name": "senderAccountID", + "type": "address" + }, + { + "internalType": "address", + "name": "receiverAccountID", + "type": "address" + }, + { + "internalType": "int64", + "name": "serialNumber", + "type": "int64" + }, + { + "internalType": "bool", + "name": "isApproval", + "type": "bool" + } + ], + "internalType": "struct IHederaTokenService.NftTransfer[]", + "name": "nftTransfers", + "type": "tuple[]" + } + ], + "internalType": "struct IHederaTokenService.TokenTransferList[]", + "name": "tokenTransferList", + "type": "tuple[]" + } + ], + "name": "cryptoTransferPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "bytes", + "name": "encodedFunctionSelector", + "type": "bytes" + } + ], + "name": "redirectForToken", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + }, + { + "internalType": "bytes", + "name": "response", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAllPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "int64", + "name": "responseCode", + "type": "int64" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serialNumber", + "type": "uint256" + } + ], + "name": "transferFromNFT", + "outputs": [ + { + "internalType": "int64", + "name": "responseCode", + "type": "int64" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serialNumber", + "type": "uint256" + } + ], + "name": "transferFromNFTPublic", + "outputs": [ + { + "internalType": "int64", + "name": "responseCode", + "type": "int64" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFromPublic", + "outputs": [ + { + "internalType": "int64", + "name": "responseCode", + "type": "int64" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "int64", + "name": "serialNumber", + "type": "int64" + } + ], + "name": "transferNFTPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address[]", + "name": "sender", + "type": "address[]" + }, + { + "internalType": "address[]", + "name": "receiver", + "type": "address[]" + }, + { + "internalType": "int64[]", + "name": "serialNumber", + "type": "int64[]" + } + ], + "name": "transferNFTsPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "int64", + "name": "amount", + "type": "int64" + } + ], + "name": "transferTokenPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address[]", + "name": "accountId", + "type": "address[]" + }, + { + "internalType": "int64[]", + "name": "amount", + "type": "int64[]" + } + ], + "name": "transferTokensPublic", + "outputs": [ + { + "internalType": "int256", + "name": "responseCode", + "type": "int256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50600160208181527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb499190915560027fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f5560047fd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f5560087f7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b5560107fedc95719e9a3b28dd8e80877cb5880a9be7de1a13fc8b05e7999683b6b567643557fe2689cd4a84e23ad2f564004f1c9013e9589d260bde6380aba3ca7e09e4df40c55600660005260407f8f331abe73332f95a25873e8b430885974c0409691f89d643119a11623a7924a55611541806101276000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c8063842b71db1161008c578063cc2528f011610066578063cc2528f0146101c3578063df6c06f5146101d6578063f25b1200146101e9578063f848fec4146101fc57600080fd5b8063842b71db1461018a578063970e23d21461019d5780639b23d3d9146101b057600080fd5b8063618dc65e116100bd578063618dc65e146101435780636c40a777146101645780636da6b1f01461017757600080fd5b806315dacbea146100e45780634ba670351461010f5780635813155114610130575b600080fd5b6100f76100f23660046109e7565b61020f565b60405160079190910b81526020015b60405180910390f35b61012261011d366004610a44565b610303565b604051908152602001610106565b61012261013e366004610c2f565b610361565b610156610151366004610ca3565b6103bd565b604051610106929190610d99565b6100f76101723660046109e7565b6104db565b610122610185366004610a44565b6105ab565b6100f76101983660046109e7565b6105b9565b6101226101ab366004610db2565b6105ff565b6100f76101be3660046109e7565b61061c565b6101226101d1366004610e54565b610661565b6101226101e4366004610eed565b61066f565b6101226101f7366004610f39565b61067c565b61012261020a366004610eed565b610689565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161028e9190610f7c565b6000604051808303816000865af19150503d80600081146102cb576040519150601f19603f3d011682016040523d82523d6000602084013e6102d0565b606091505b5091509150816102e15760156102f5565b808060200190518101906102f59190610f98565b60030b979650505050505050565b600061031185858585610696565b90507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa8160405161034491815260200190565b60405180910390a16016811461035957600080fd5b949350505050565b600061036e8484846106de565b90507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa816040516103a191815260200190565b60405180910390a1601681146103b657600080fd5b9392505050565b600060606000806101676001600160a01b031663618dc65e60e01b87876040516024016103eb929190610fbb565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516104299190610f7c565b6000604051808303816000865af19150503d8060008114610466576040519150601f19603f3d011682016040523d82523d6000602084013e61046b565b606091505b50915091507f4af4780e06fe8cb9df64b0794fa6f01399af979175bb988e35e0e57e594567bc82826040516104a1929190610fdd565b60405180910390a1816104c5576015604051806020016040528060008152506104c9565b6016815b60039190910b97909650945050505050565b604051639b23d3d960e01b81526001600160a01b038086166004830152808516602483015283166044820152606481018290526000903090639b23d3d9906084015b6020604051808303816000875af115801561053c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105609190610ff8565b604051600782900b81529091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa9060200160405180910390a1600781900b60161461035957600080fd5b6000610311858585856107be565b604051630aed65f560e11b81526001600160a01b0380861660048301528085166024830152831660448201526064810182905260009030906315dacbea9060840161051d565b600061036e61060d856110c0565b6106178486611121565b610806565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a401610250565b6000610311858585856108e3565b600061036e848484610913565b600061036e848484610950565b600061036e84848461098e565b6040516001600160a01b038581166024830152848116604483015283166064820152600782900b6084820152600090819081906101679063eca3691760e01b9060a401610250565b60008060006101676001600160a01b03166382bba49360e01b87878760405160240161070c93929190611327565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161074a9190610f7c565b6000604051808303816000865af19150503d8060008114610787576040519150601f19603f3d011682016040523d82523d6000602084013e61078c565b606091505b50915091508161079d5760156107b1565b808060200190518101906107b19190610f98565b60030b9695505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152600782900b60848201526000908190819061016790635cfc901160e01b9060a401610250565b60008060006101676001600160a01b0316630e71804f60e01b86866040516024016108329291906113ba565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516108709190610f7c565b6000604051808303816000865af19150503d80600081146108ad576040519150601f19603f3d011682016040523d82523d6000602084013e6108b2565b606091505b5091509150816108c35760156108d7565b808060200190518101906108d79190610f98565b60030b95945050505050565b60008060006101676001600160a01b0316632c4ba19160e01b8888888860405160240161025094939291906114b8565b6040516001600160a01b038481166024830152831660448201526064810182905260009081908190610167906307336aaf60e41b9060840161070c565b6040516001600160a01b0384811660248301528316604482015281151560648201526000908190819061016790631b3b02e560e11b9060840161070c565b6040516001600160a01b0384811660248301528316604482015260648101829052600090819081906101679063e1f21c6760e01b9060840161070c565b80356001600160a01b03811681146109e257600080fd5b919050565b600080600080608085870312156109fd57600080fd5b610a06856109cb565b9350610a14602086016109cb565b9250610a22604086016109cb565b9396929550929360600135925050565b8060070b8114610a4157600080fd5b50565b60008060008060808587031215610a5a57600080fd5b610a63856109cb565b9350610a71602086016109cb565b9250610a7f604086016109cb565b91506060850135610a8f81610a32565b939692955090935050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715610ad357610ad3610a9a565b60405290565b6040516080810167ffffffffffffffff81118282101715610ad357610ad3610a9a565b604051601f8201601f1916810167ffffffffffffffff81118282101715610b2557610b25610a9a565b604052919050565b600067ffffffffffffffff821115610b4757610b47610a9a565b5060051b60200190565b600082601f830112610b6257600080fd5b81356020610b77610b7283610b2d565b610afc565b8083825260208201915060208460051b870101935086841115610b9957600080fd5b602086015b84811015610bbc57610baf816109cb565b8352918301918301610b9e565b509695505050505050565b600082601f830112610bd857600080fd5b81356020610be8610b7283610b2d565b8083825260208201915060208460051b870101935086841115610c0a57600080fd5b602086015b84811015610bbc578035610c2281610a32565b8352918301918301610c0f565b600080600060608486031215610c4457600080fd5b610c4d846109cb565b9250602084013567ffffffffffffffff80821115610c6a57600080fd5b610c7687838801610b51565b93506040860135915080821115610c8c57600080fd5b50610c9986828701610bc7565b9150509250925092565b60008060408385031215610cb657600080fd5b610cbf836109cb565b915060208084013567ffffffffffffffff80821115610cdd57600080fd5b818601915086601f830112610cf157600080fd5b813581811115610d0357610d03610a9a565b610d15601f8201601f19168501610afc565b91508082528784828501011115610d2b57600080fd5b80848401858401376000848284010152508093505050509250929050565b60005b83811015610d64578181015183820152602001610d4c565b50506000910152565b60008151808452610d85816020860160208601610d49565b601f01601f19169290920160200192915050565b8281526040602082015260006103596040830184610d6d565b600080600060408486031215610dc757600080fd5b833567ffffffffffffffff80821115610ddf57600080fd5b9085019060208288031215610df357600080fd5b90935060208501359080821115610e0957600080fd5b818601915086601f830112610e1d57600080fd5b813581811115610e2c57600080fd5b8760208260051b8501011115610e4157600080fd5b6020830194508093505050509250925092565b60008060008060808587031215610e6a57600080fd5b610e73856109cb565b9350602085013567ffffffffffffffff80821115610e9057600080fd5b610e9c88838901610b51565b94506040870135915080821115610eb257600080fd5b610ebe88838901610b51565b93506060870135915080821115610ed457600080fd5b50610ee187828801610bc7565b91505092959194509250565b600080600060608486031215610f0257600080fd5b610f0b846109cb565b9250610f19602085016109cb565b9150604084013590509250925092565b803580151581146109e257600080fd5b600080600060608486031215610f4e57600080fd5b610f57846109cb565b9250610f65602085016109cb565b9150610f7360408501610f29565b90509250925092565b60008251610f8e818460208701610d49565b9190910192915050565b600060208284031215610faa57600080fd5b81518060030b81146103b657600080fd5b6001600160a01b03831681526040602082015260006103596040830184610d6d565b82151581526040602082015260006103596040830184610d6d565b60006020828403121561100a57600080fd5b81516103b681610a32565b600082601f83011261102657600080fd5b81356020611036610b7283610b2d565b8281526060928302850182019282820191908785111561105557600080fd5b8387015b858110156110b35781818a0312156110715760008081fd5b611079610ab0565b611082826109cb565b81528582013561109181610a32565b8187015260406110a2838201610f29565b908201528452928401928101611059565b5090979650505050505050565b6000602082360312156110d257600080fd5b6040516020810167ffffffffffffffff82821081831117156110f6576110f6610a9a565b81604052843591508082111561110b57600080fd5b5061111836828601611015565b82525092915050565b600061112f610b7284610b2d565b80848252602080830192508560051b85013681111561114d57600080fd5b855b818110156112a257803567ffffffffffffffff808211156111705760008081fd5b818901915060608083360312156111875760008081fd5b61118f610ab0565b611198846109cb565b815286840135838111156111ac5760008081fd5b6111b836828701611015565b8883015250604080850135848111156111d15760008081fd5b949094019336601f8601126111e857600093508384fd5b843593506111f8610b7285610b2d565b84815260079490941b850188019388810190368611156112185760008081fd5b958901955b8587101561128a57608087360312156112365760008081fd5b61123e610ad9565b611247886109cb565b81526112548b89016109cb565b8b8201528388013561126581610a32565b81850152611274888701610f29565b818701528252608096909601959089019061121d565b9183019190915250885250505093820193820161114f565b50919695505050505050565b60008151808452602080850194506020840160005b838110156112e85781516001600160a01b0316875295820195908201906001016112c3565b509495945050505050565b60008151808452602080850194506020840160005b838110156112e857815160070b87529582019590820190600101611308565b6001600160a01b038416815260606020820152600061134960608301856112ae565b828103604084015261135b81856112f3565b9695505050505050565b60008151808452602080850194506020840160005b838110156112e857815180516001600160a01b031688528381015160070b848901526040908101511515908801526060909601959082019060010161137a565b6000604080835260608551602080848701526113d96060870183611365565b9150858203818701528187518084528284019150828160051b850101838a0160005b838110156114a757601f1987840301855281516001600160a01b03808251168552878201518a898701526114318b870182611365565b928c0151868403878e01528051808552908a0193600092508a01905b808310156114915784518051851683528b81015185168c8401528e81015160070b8f8401528d015115158d830152938a01936001929092019160809091019061144d565b50978901979550505091860191506001016113fb565b50909b9a5050505050505050505050565b6001600160a01b03851681526080602082015260006114da60808301866112ae565b82810360408401526114ec81866112ae565b9050828103606084015261150081856112f3565b97965050505050505056fea2646970667358221220189162899ac148248f63b2cd8cdfdfcb45c2b65edd61e956b18482e1e7408dbc64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100df5760003560e01c8063842b71db1161008c578063cc2528f011610066578063cc2528f0146101c3578063df6c06f5146101d6578063f25b1200146101e9578063f848fec4146101fc57600080fd5b8063842b71db1461018a578063970e23d21461019d5780639b23d3d9146101b057600080fd5b8063618dc65e116100bd578063618dc65e146101435780636c40a777146101645780636da6b1f01461017757600080fd5b806315dacbea146100e45780634ba670351461010f5780635813155114610130575b600080fd5b6100f76100f23660046109e7565b61020f565b60405160079190910b81526020015b60405180910390f35b61012261011d366004610a44565b610303565b604051908152602001610106565b61012261013e366004610c2f565b610361565b610156610151366004610ca3565b6103bd565b604051610106929190610d99565b6100f76101723660046109e7565b6104db565b610122610185366004610a44565b6105ab565b6100f76101983660046109e7565b6105b9565b6101226101ab366004610db2565b6105ff565b6100f76101be3660046109e7565b61061c565b6101226101d1366004610e54565b610661565b6101226101e4366004610eed565b61066f565b6101226101f7366004610f39565b61067c565b61012261020a366004610eed565b610689565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161028e9190610f7c565b6000604051808303816000865af19150503d80600081146102cb576040519150601f19603f3d011682016040523d82523d6000602084013e6102d0565b606091505b5091509150816102e15760156102f5565b808060200190518101906102f59190610f98565b60030b979650505050505050565b600061031185858585610696565b90507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa8160405161034491815260200190565b60405180910390a16016811461035957600080fd5b949350505050565b600061036e8484846106de565b90507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa816040516103a191815260200190565b60405180910390a1601681146103b657600080fd5b9392505050565b600060606000806101676001600160a01b031663618dc65e60e01b87876040516024016103eb929190610fbb565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516104299190610f7c565b6000604051808303816000865af19150503d8060008114610466576040519150601f19603f3d011682016040523d82523d6000602084013e61046b565b606091505b50915091507f4af4780e06fe8cb9df64b0794fa6f01399af979175bb988e35e0e57e594567bc82826040516104a1929190610fdd565b60405180910390a1816104c5576015604051806020016040528060008152506104c9565b6016815b60039190910b97909650945050505050565b604051639b23d3d960e01b81526001600160a01b038086166004830152808516602483015283166044820152606481018290526000903090639b23d3d9906084015b6020604051808303816000875af115801561053c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105609190610ff8565b604051600782900b81529091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa9060200160405180910390a1600781900b60161461035957600080fd5b6000610311858585856107be565b604051630aed65f560e11b81526001600160a01b0380861660048301528085166024830152831660448201526064810182905260009030906315dacbea9060840161051d565b600061036e61060d856110c0565b6106178486611121565b610806565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a401610250565b6000610311858585856108e3565b600061036e848484610913565b600061036e848484610950565b600061036e84848461098e565b6040516001600160a01b038581166024830152848116604483015283166064820152600782900b6084820152600090819081906101679063eca3691760e01b9060a401610250565b60008060006101676001600160a01b03166382bba49360e01b87878760405160240161070c93929190611327565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161074a9190610f7c565b6000604051808303816000865af19150503d8060008114610787576040519150601f19603f3d011682016040523d82523d6000602084013e61078c565b606091505b50915091508161079d5760156107b1565b808060200190518101906107b19190610f98565b60030b9695505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152600782900b60848201526000908190819061016790635cfc901160e01b9060a401610250565b60008060006101676001600160a01b0316630e71804f60e01b86866040516024016108329291906113ba565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516108709190610f7c565b6000604051808303816000865af19150503d80600081146108ad576040519150601f19603f3d011682016040523d82523d6000602084013e6108b2565b606091505b5091509150816108c35760156108d7565b808060200190518101906108d79190610f98565b60030b95945050505050565b60008060006101676001600160a01b0316632c4ba19160e01b8888888860405160240161025094939291906114b8565b6040516001600160a01b038481166024830152831660448201526064810182905260009081908190610167906307336aaf60e41b9060840161070c565b6040516001600160a01b0384811660248301528316604482015281151560648201526000908190819061016790631b3b02e560e11b9060840161070c565b6040516001600160a01b0384811660248301528316604482015260648101829052600090819081906101679063e1f21c6760e01b9060840161070c565b80356001600160a01b03811681146109e257600080fd5b919050565b600080600080608085870312156109fd57600080fd5b610a06856109cb565b9350610a14602086016109cb565b9250610a22604086016109cb565b9396929550929360600135925050565b8060070b8114610a4157600080fd5b50565b60008060008060808587031215610a5a57600080fd5b610a63856109cb565b9350610a71602086016109cb565b9250610a7f604086016109cb565b91506060850135610a8f81610a32565b939692955090935050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715610ad357610ad3610a9a565b60405290565b6040516080810167ffffffffffffffff81118282101715610ad357610ad3610a9a565b604051601f8201601f1916810167ffffffffffffffff81118282101715610b2557610b25610a9a565b604052919050565b600067ffffffffffffffff821115610b4757610b47610a9a565b5060051b60200190565b600082601f830112610b6257600080fd5b81356020610b77610b7283610b2d565b610afc565b8083825260208201915060208460051b870101935086841115610b9957600080fd5b602086015b84811015610bbc57610baf816109cb565b8352918301918301610b9e565b509695505050505050565b600082601f830112610bd857600080fd5b81356020610be8610b7283610b2d565b8083825260208201915060208460051b870101935086841115610c0a57600080fd5b602086015b84811015610bbc578035610c2281610a32565b8352918301918301610c0f565b600080600060608486031215610c4457600080fd5b610c4d846109cb565b9250602084013567ffffffffffffffff80821115610c6a57600080fd5b610c7687838801610b51565b93506040860135915080821115610c8c57600080fd5b50610c9986828701610bc7565b9150509250925092565b60008060408385031215610cb657600080fd5b610cbf836109cb565b915060208084013567ffffffffffffffff80821115610cdd57600080fd5b818601915086601f830112610cf157600080fd5b813581811115610d0357610d03610a9a565b610d15601f8201601f19168501610afc565b91508082528784828501011115610d2b57600080fd5b80848401858401376000848284010152508093505050509250929050565b60005b83811015610d64578181015183820152602001610d4c565b50506000910152565b60008151808452610d85816020860160208601610d49565b601f01601f19169290920160200192915050565b8281526040602082015260006103596040830184610d6d565b600080600060408486031215610dc757600080fd5b833567ffffffffffffffff80821115610ddf57600080fd5b9085019060208288031215610df357600080fd5b90935060208501359080821115610e0957600080fd5b818601915086601f830112610e1d57600080fd5b813581811115610e2c57600080fd5b8760208260051b8501011115610e4157600080fd5b6020830194508093505050509250925092565b60008060008060808587031215610e6a57600080fd5b610e73856109cb565b9350602085013567ffffffffffffffff80821115610e9057600080fd5b610e9c88838901610b51565b94506040870135915080821115610eb257600080fd5b610ebe88838901610b51565b93506060870135915080821115610ed457600080fd5b50610ee187828801610bc7565b91505092959194509250565b600080600060608486031215610f0257600080fd5b610f0b846109cb565b9250610f19602085016109cb565b9150604084013590509250925092565b803580151581146109e257600080fd5b600080600060608486031215610f4e57600080fd5b610f57846109cb565b9250610f65602085016109cb565b9150610f7360408501610f29565b90509250925092565b60008251610f8e818460208701610d49565b9190910192915050565b600060208284031215610faa57600080fd5b81518060030b81146103b657600080fd5b6001600160a01b03831681526040602082015260006103596040830184610d6d565b82151581526040602082015260006103596040830184610d6d565b60006020828403121561100a57600080fd5b81516103b681610a32565b600082601f83011261102657600080fd5b81356020611036610b7283610b2d565b8281526060928302850182019282820191908785111561105557600080fd5b8387015b858110156110b35781818a0312156110715760008081fd5b611079610ab0565b611082826109cb565b81528582013561109181610a32565b8187015260406110a2838201610f29565b908201528452928401928101611059565b5090979650505050505050565b6000602082360312156110d257600080fd5b6040516020810167ffffffffffffffff82821081831117156110f6576110f6610a9a565b81604052843591508082111561110b57600080fd5b5061111836828601611015565b82525092915050565b600061112f610b7284610b2d565b80848252602080830192508560051b85013681111561114d57600080fd5b855b818110156112a257803567ffffffffffffffff808211156111705760008081fd5b818901915060608083360312156111875760008081fd5b61118f610ab0565b611198846109cb565b815286840135838111156111ac5760008081fd5b6111b836828701611015565b8883015250604080850135848111156111d15760008081fd5b949094019336601f8601126111e857600093508384fd5b843593506111f8610b7285610b2d565b84815260079490941b850188019388810190368611156112185760008081fd5b958901955b8587101561128a57608087360312156112365760008081fd5b61123e610ad9565b611247886109cb565b81526112548b89016109cb565b8b8201528388013561126581610a32565b81850152611274888701610f29565b818701528252608096909601959089019061121d565b9183019190915250885250505093820193820161114f565b50919695505050505050565b60008151808452602080850194506020840160005b838110156112e85781516001600160a01b0316875295820195908201906001016112c3565b509495945050505050565b60008151808452602080850194506020840160005b838110156112e857815160070b87529582019590820190600101611308565b6001600160a01b038416815260606020820152600061134960608301856112ae565b828103604084015261135b81856112f3565b9695505050505050565b60008151808452602080850194506020840160005b838110156112e857815180516001600160a01b031688528381015160070b848901526040908101511515908801526060909601959082019060010161137a565b6000604080835260608551602080848701526113d96060870183611365565b9150858203818701528187518084528284019150828160051b850101838a0160005b838110156114a757601f1987840301855281516001600160a01b03808251168552878201518a898701526114318b870182611365565b928c0151868403878e01528051808552908a0193600092508a01905b808310156114915784518051851683528b81015185168c8401528e81015160070b8f8401528d015115158d830152938a01936001929092019160809091019061144d565b50978901979550505091860191506001016113fb565b50909b9a5050505050505050505050565b6001600160a01b03851681526080602082015260006114da60808301866112ae565b82810360408401526114ec81866112ae565b9050828103606084015261150081856112f3565b97965050505050505056fea2646970667358221220189162899ac148248f63b2cd8cdfdfcb45c2b65edd61e956b18482e1e7408dbc64736f6c63430008170033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/openzeppelin/ERC-20/ERC20Mock.sol/ERC20Mock.json b/artifacts/contracts/openzeppelin/ERC-20/ERC20Mock.sol/ERC20Mock.json new file mode 100644 index 000000000..0bc379284 --- /dev/null +++ b/artifacts/contracts/openzeppelin/ERC-20/ERC20Mock.sol/ERC20Mock.json @@ -0,0 +1,353 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC20Mock", + "sourceName": "contracts/openzeppelin/ERC-20/ERC20Mock.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC20InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC20InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC20InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "ERC20InvalidSpender", + "type": "error" + }, + { + "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": "value", + "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": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "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": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b5060405162000a8f38038062000a8f833981016040819052620000349162000126565b8181600362000044838262000221565b50600462000053828262000221565b5050505050620002ed565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b8160405283815260209250866020858801011115620000ec57600080fd5b600091505b83821015620001105785820183015181830184015290820190620000f1565b6000602085830101528094505050505092915050565b600080604083850312156200013a57600080fd5b82516001600160401b03808211156200015257600080fd5b620001608683870162000074565b935060208501519150808211156200017757600080fd5b50620001868582860162000074565b9150509250929050565b600181811c90821680620001a557607f821691505b602082108103620001c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021c576000816000526020600020601f850160051c81016020861015620001f75750805b601f850160051c820191505b81811015620002185782815560010162000203565b5050505b505050565b81516001600160401b038111156200023d576200023d6200005e565b62000255816200024e845462000190565b84620001cc565b602080601f8311600181146200028d5760008415620002745750858301515b600019600386901b1c1916600185901b17855562000218565b600085815260208120601f198616915b82811015620002be578886015182559484019460019091019084016200029d565b5085821015620002dd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61079280620002fd6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806340c10f191161006657806340c10f191461011857806370a082311461012d57806395d89b4114610156578063a9059cbb1461015e578063dd62ed3e1461017157600080fd5b806306fdde03146100a3578063095ea7b3146100c157806318160ddd146100e457806323b872dd146100f6578063313ce56714610109575b600080fd5b6100ab6101aa565b6040516100b891906105db565b60405180910390f35b6100d46100cf366004610646565b61023c565b60405190151581526020016100b8565b6002545b6040519081526020016100b8565b6100d4610104366004610670565b610256565b604051601281526020016100b8565b61012b610126366004610646565b61027a565b005b6100e861013b3660046106ac565b6001600160a01b031660009081526020819052604090205490565b6100ab610295565b6100d461016c366004610646565b6102a4565b6100e861017f3660046106ce565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101b990610701565b80601f01602080910402602001604051908101604052809291908181526020018280546101e590610701565b80156102325780601f1061020757610100808354040283529160200191610232565b820191906000526020600020905b81548152906001019060200180831161021557829003601f168201915b5050505050905090565b60003361024a8185856102b2565b60019150505b92915050565b6000336102648582856102c4565b61026f858585610347565b506001949350505050565b6000811161028757600080fd5b61029182826103a6565b5050565b6060600480546101b990610701565b60003361024a818585610347565b6102bf83838360016103dc565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610341578181101561033257604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b610341848484840360006103dc565b50505050565b6001600160a01b03831661037157604051634b637e8f60e11b815260006004820152602401610329565b6001600160a01b03821661039b5760405163ec442f0560e01b815260006004820152602401610329565b6102bf8383836104b1565b6001600160a01b0382166103d05760405163ec442f0560e01b815260006004820152602401610329565b610291600083836104b1565b6001600160a01b0384166104065760405163e602df0560e01b815260006004820152602401610329565b6001600160a01b03831661043057604051634a1406b160e11b815260006004820152602401610329565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561034157826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104a391815260200190565b60405180910390a350505050565b6001600160a01b0383166104dc5780600260008282546104d1919061073b565b9091555061054e9050565b6001600160a01b0383166000908152602081905260409020548181101561052f5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610329565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661056a57600280548290039055610589565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105ce91815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b81811015610609578581018301518582016040015282016105ed565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461064157600080fd5b919050565b6000806040838503121561065957600080fd5b6106628361062a565b946020939093013593505050565b60008060006060848603121561068557600080fd5b61068e8461062a565b925061069c6020850161062a565b9150604084013590509250925092565b6000602082840312156106be57600080fd5b6106c78261062a565b9392505050565b600080604083850312156106e157600080fd5b6106ea8361062a565b91506106f86020840161062a565b90509250929050565b600181811c9082168061071557607f821691505b60208210810361073557634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561025057634e487b7160e01b600052601160045260246000fdfea26469706673582212200a182db5de6d5ef8b7c9f9340161be3323818c56a59f0048fe4b79c597f2fe6064736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c806340c10f191161006657806340c10f191461011857806370a082311461012d57806395d89b4114610156578063a9059cbb1461015e578063dd62ed3e1461017157600080fd5b806306fdde03146100a3578063095ea7b3146100c157806318160ddd146100e457806323b872dd146100f6578063313ce56714610109575b600080fd5b6100ab6101aa565b6040516100b891906105db565b60405180910390f35b6100d46100cf366004610646565b61023c565b60405190151581526020016100b8565b6002545b6040519081526020016100b8565b6100d4610104366004610670565b610256565b604051601281526020016100b8565b61012b610126366004610646565b61027a565b005b6100e861013b3660046106ac565b6001600160a01b031660009081526020819052604090205490565b6100ab610295565b6100d461016c366004610646565b6102a4565b6100e861017f3660046106ce565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101b990610701565b80601f01602080910402602001604051908101604052809291908181526020018280546101e590610701565b80156102325780601f1061020757610100808354040283529160200191610232565b820191906000526020600020905b81548152906001019060200180831161021557829003601f168201915b5050505050905090565b60003361024a8185856102b2565b60019150505b92915050565b6000336102648582856102c4565b61026f858585610347565b506001949350505050565b6000811161028757600080fd5b61029182826103a6565b5050565b6060600480546101b990610701565b60003361024a818585610347565b6102bf83838360016103dc565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610341578181101561033257604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b610341848484840360006103dc565b50505050565b6001600160a01b03831661037157604051634b637e8f60e11b815260006004820152602401610329565b6001600160a01b03821661039b5760405163ec442f0560e01b815260006004820152602401610329565b6102bf8383836104b1565b6001600160a01b0382166103d05760405163ec442f0560e01b815260006004820152602401610329565b610291600083836104b1565b6001600160a01b0384166104065760405163e602df0560e01b815260006004820152602401610329565b6001600160a01b03831661043057604051634a1406b160e11b815260006004820152602401610329565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561034157826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104a391815260200190565b60405180910390a350505050565b6001600160a01b0383166104dc5780600260008282546104d1919061073b565b9091555061054e9050565b6001600160a01b0383166000908152602081905260409020548181101561052f5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610329565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661056a57600280548290039055610589565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105ce91815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b81811015610609578581018301518582016040015282016105ed565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461064157600080fd5b919050565b6000806040838503121561065957600080fd5b6106628361062a565b946020939093013593505050565b60008060006060848603121561068557600080fd5b61068e8461062a565b925061069c6020850161062a565b9150604084013590509250925092565b6000602082840312156106be57600080fd5b6106c78261062a565b9392505050565b600080604083850312156106e157600080fd5b6106ea8361062a565b91506106f86020840161062a565b90509250929050565b600181811c9082168061071557607f821691505b60208210810361073557634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561025057634e487b7160e01b600052601160045260246000fdfea26469706673582212200a182db5de6d5ef8b7c9f9340161be3323818c56a59f0048fe4b79c597f2fe6064736f6c63430008170033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/openzeppelin/ERC-721/ERC721Mock.sol/ERC721Mock.json b/artifacts/contracts/openzeppelin/ERC-721/ERC721Mock.sol/ERC721Mock.json new file mode 100644 index 000000000..c1de8435b --- /dev/null +++ b/artifacts/contracts/openzeppelin/ERC-721/ERC721Mock.sol/ERC721Mock.json @@ -0,0 +1,478 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC721Mock", + "sourceName": "contracts/openzeppelin/ERC-721/ERC721Mock.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721IncorrectOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721InsufficientApproval", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC721InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "ERC721InvalidOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721InvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC721InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC721InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721NonexistentToken", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b50604051620012e1380380620012e1833981016040819052620000349162000126565b8181600062000044838262000221565b50600162000053828262000221565b5050505050620002ed565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b8160405283815260209250866020858801011115620000ec57600080fd5b600091505b83821015620001105785820183015181830184015290820190620000f1565b6000602085830101528094505050505092915050565b600080604083850312156200013a57600080fd5b82516001600160401b03808211156200015257600080fd5b620001608683870162000074565b935060208501519150808211156200017757600080fd5b50620001868582860162000074565b9150509250929050565b600181811c90821680620001a557607f821691505b602082108103620001c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021c576000816000526020600020601f850160051c81016020861015620001f75750805b601f850160051c820191505b81811015620002185782815560010162000203565b5050505b505050565b81516001600160401b038111156200023d576200023d6200005e565b62000255816200024e845462000190565b84620001cc565b602080601f8311600181146200028d5760008415620002745750858301515b600019600386901b1c1916600185901b17855562000218565b600085815260208120601f198616915b82811015620002be578886015182559484019460019091019084016200029d565b5085821015620002dd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610fe480620002fd6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101e1578063b88d4fde146101f4578063c87b56dd14610207578063e985e9c51461021a57600080fd5b80636352211e146101a557806370a08231146101b857806395d89b41146101d957600080fd5b8063095ea7b3116100c8578063095ea7b31461015757806323b872dd1461016c57806340c10f191461017f57806342842e0e1461019257600080fd5b806301ffc9a7146100ef57806306fdde0314610117578063081812fc1461012c575b600080fd5b6101026100fd366004610c55565b610256565b60405190151581526020015b60405180910390f35b61011f6102a8565b60405161010e9190610cc2565b61013f61013a366004610cd5565b61033a565b6040516001600160a01b03909116815260200161010e565b61016a610165366004610d0a565b610363565b005b61016a61017a366004610d34565b610372565b61016a61018d366004610d0a565b610402565b61016a6101a0366004610d34565b61040c565b61013f6101b3366004610cd5565b61042c565b6101cb6101c6366004610d70565b610437565b60405190815260200161010e565b61011f61047f565b61016a6101ef366004610d8b565b61048e565b61016a610202366004610ddd565b610499565b61011f610215366004610cd5565b6104b0565b610102610228366004610eb9565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061028757506001600160e01b03198216635b5e139f60e01b145b806102a257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102b790610eec565b80601f01602080910402602001604051908101604052809291908181526020018280546102e390610eec565b80156103305780601f1061030557610100808354040283529160200191610330565b820191906000526020600020905b81548152906001019060200180831161031357829003601f168201915b5050505050905090565b600061034582610525565b506000828152600460205260409020546001600160a01b03166102a2565b61036e82823361055e565b5050565b6001600160a01b0382166103a157604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103ae83833361056b565b9050836001600160a01b0316816001600160a01b0316146103fc576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610398565b50505050565b61036e8282610671565b61042783838360405180602001604052806000815250610499565b505050565b60006102a282610525565b60006001600160a01b038216610463576040516322718ad960e21b815260006004820152602401610398565b506001600160a01b031660009081526003602052604090205490565b6060600180546102b790610eec565b61036e3383836106d6565b6104a4848484610372565b6103fc84848484610775565b60606104bb82610525565b5060006104d360408051602081019091526000815290565b905060008151116104f3576040518060200160405280600081525061051e565b806104fd8461089e565b60405160200161050e929190610f26565b6040516020818303038152906040525b9392505050565b6000818152600260205260408120546001600160a01b0316806102a257604051637e27328960e01b815260048101849052602401610398565b610427838383600161093e565b6000828152600260205260408120546001600160a01b039081169083161561059857610598818486610a70565b6001600160a01b038116156105d6576105b560008560008061093e565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b03851615610605576001600160a01b0385166000908152600360205260409020805460010190555b600084815260026020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6001600160a01b03821661069b57604051633250574960e11b815260006004820152602401610398565b60006106a98383600061056b565b90506001600160a01b03811615610427576040516339e3563760e11b815260006004820152602401610398565b6001600160a01b03821661070857604051630b61174360e31b81526001600160a01b0383166004820152602401610398565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b156103fc57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906107b7903390889087908790600401610f55565b6020604051808303816000875af19250505080156107f2575060408051601f3d908101601f191682019092526107ef91810190610f91565b60015b61085b573d808015610820576040519150601f19603f3d011682016040523d82523d6000602084013e610825565b606091505b50805160000361085357604051633250574960e11b81526001600160a01b0385166004820152602401610398565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461089757604051633250574960e11b81526001600160a01b0385166004820152602401610398565b5050505050565b606060006108ab83610ad4565b600101905060008167ffffffffffffffff8111156108cb576108cb610dc7565b6040519080825280601f01601f1916602001820160405280156108f5576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846108ff57509392505050565b808061095257506001600160a01b03821615155b15610a3357600061096284610525565b90506001600160a01b0383161580159061098e5750826001600160a01b0316816001600160a01b031614155b80156109c057506001600160a01b0380821660009081526005602090815260408083209387168352929052205460ff16155b156109e95760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401610398565b8115610a315783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50506000908152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610a7b838383610bb6565b610427576001600160a01b038316610aa957604051637e27328960e01b815260048101829052602401610398565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610398565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310610b1d577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310610b49576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610b6757662386f26fc10000830492506010015b6305f5e1008310610b7f576305f5e100830492506008015b6127108310610b9357612710830492506004015b60648310610ba5576064830492506002015b600a83106102a25760010192915050565b60006001600160a01b03831615801590610c345750826001600160a01b0316846001600160a01b03161480610c1057506001600160a01b0380851660009081526005602090815260408083209387168352929052205460ff165b80610c3457506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160e01b031981168114610c5257600080fd5b50565b600060208284031215610c6757600080fd5b813561051e81610c3c565b60005b83811015610c8d578181015183820152602001610c75565b50506000910152565b60008151808452610cae816020860160208601610c72565b601f01601f19169290920160200192915050565b60208152600061051e6020830184610c96565b600060208284031215610ce757600080fd5b5035919050565b80356001600160a01b0381168114610d0557600080fd5b919050565b60008060408385031215610d1d57600080fd5b610d2683610cee565b946020939093013593505050565b600080600060608486031215610d4957600080fd5b610d5284610cee565b9250610d6060208501610cee565b9150604084013590509250925092565b600060208284031215610d8257600080fd5b61051e82610cee565b60008060408385031215610d9e57600080fd5b610da783610cee565b915060208301358015158114610dbc57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610df357600080fd5b610dfc85610cee565b9350610e0a60208601610cee565b925060408501359150606085013567ffffffffffffffff80821115610e2e57600080fd5b818701915087601f830112610e4257600080fd5b813581811115610e5457610e54610dc7565b604051601f8201601f19908116603f01168101908382118183101715610e7c57610e7c610dc7565b816040528281528a6020848701011115610e9557600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ecc57600080fd5b610ed583610cee565b9150610ee360208401610cee565b90509250929050565b600181811c90821680610f0057607f821691505b602082108103610f2057634e487b7160e01b600052602260045260246000fd5b50919050565b60008351610f38818460208801610c72565b835190830190610f4c818360208801610c72565b01949350505050565b60006001600160a01b03808716835280861660208401525083604083015260806060830152610f876080830184610c96565b9695505050505050565b600060208284031215610fa357600080fd5b815161051e81610c3c56fea2646970667358221220fb078c6a442579e164230fddba239120e2d7fa724202c735a0ff6341bc8fef9b64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101e1578063b88d4fde146101f4578063c87b56dd14610207578063e985e9c51461021a57600080fd5b80636352211e146101a557806370a08231146101b857806395d89b41146101d957600080fd5b8063095ea7b3116100c8578063095ea7b31461015757806323b872dd1461016c57806340c10f191461017f57806342842e0e1461019257600080fd5b806301ffc9a7146100ef57806306fdde0314610117578063081812fc1461012c575b600080fd5b6101026100fd366004610c55565b610256565b60405190151581526020015b60405180910390f35b61011f6102a8565b60405161010e9190610cc2565b61013f61013a366004610cd5565b61033a565b6040516001600160a01b03909116815260200161010e565b61016a610165366004610d0a565b610363565b005b61016a61017a366004610d34565b610372565b61016a61018d366004610d0a565b610402565b61016a6101a0366004610d34565b61040c565b61013f6101b3366004610cd5565b61042c565b6101cb6101c6366004610d70565b610437565b60405190815260200161010e565b61011f61047f565b61016a6101ef366004610d8b565b61048e565b61016a610202366004610ddd565b610499565b61011f610215366004610cd5565b6104b0565b610102610228366004610eb9565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061028757506001600160e01b03198216635b5e139f60e01b145b806102a257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102b790610eec565b80601f01602080910402602001604051908101604052809291908181526020018280546102e390610eec565b80156103305780601f1061030557610100808354040283529160200191610330565b820191906000526020600020905b81548152906001019060200180831161031357829003601f168201915b5050505050905090565b600061034582610525565b506000828152600460205260409020546001600160a01b03166102a2565b61036e82823361055e565b5050565b6001600160a01b0382166103a157604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103ae83833361056b565b9050836001600160a01b0316816001600160a01b0316146103fc576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610398565b50505050565b61036e8282610671565b61042783838360405180602001604052806000815250610499565b505050565b60006102a282610525565b60006001600160a01b038216610463576040516322718ad960e21b815260006004820152602401610398565b506001600160a01b031660009081526003602052604090205490565b6060600180546102b790610eec565b61036e3383836106d6565b6104a4848484610372565b6103fc84848484610775565b60606104bb82610525565b5060006104d360408051602081019091526000815290565b905060008151116104f3576040518060200160405280600081525061051e565b806104fd8461089e565b60405160200161050e929190610f26565b6040516020818303038152906040525b9392505050565b6000818152600260205260408120546001600160a01b0316806102a257604051637e27328960e01b815260048101849052602401610398565b610427838383600161093e565b6000828152600260205260408120546001600160a01b039081169083161561059857610598818486610a70565b6001600160a01b038116156105d6576105b560008560008061093e565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b03851615610605576001600160a01b0385166000908152600360205260409020805460010190555b600084815260026020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6001600160a01b03821661069b57604051633250574960e11b815260006004820152602401610398565b60006106a98383600061056b565b90506001600160a01b03811615610427576040516339e3563760e11b815260006004820152602401610398565b6001600160a01b03821661070857604051630b61174360e31b81526001600160a01b0383166004820152602401610398565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b156103fc57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906107b7903390889087908790600401610f55565b6020604051808303816000875af19250505080156107f2575060408051601f3d908101601f191682019092526107ef91810190610f91565b60015b61085b573d808015610820576040519150601f19603f3d011682016040523d82523d6000602084013e610825565b606091505b50805160000361085357604051633250574960e11b81526001600160a01b0385166004820152602401610398565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461089757604051633250574960e11b81526001600160a01b0385166004820152602401610398565b5050505050565b606060006108ab83610ad4565b600101905060008167ffffffffffffffff8111156108cb576108cb610dc7565b6040519080825280601f01601f1916602001820160405280156108f5576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846108ff57509392505050565b808061095257506001600160a01b03821615155b15610a3357600061096284610525565b90506001600160a01b0383161580159061098e5750826001600160a01b0316816001600160a01b031614155b80156109c057506001600160a01b0380821660009081526005602090815260408083209387168352929052205460ff16155b156109e95760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401610398565b8115610a315783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50506000908152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610a7b838383610bb6565b610427576001600160a01b038316610aa957604051637e27328960e01b815260048101829052602401610398565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610398565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310610b1d577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310610b49576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610b6757662386f26fc10000830492506010015b6305f5e1008310610b7f576305f5e100830492506008015b6127108310610b9357612710830492506004015b60648310610ba5576064830492506002015b600a83106102a25760010192915050565b60006001600160a01b03831615801590610c345750826001600160a01b0316846001600160a01b03161480610c1057506001600160a01b0380851660009081526005602090815260408083209387168352929052205460ff165b80610c3457506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160e01b031981168114610c5257600080fd5b50565b600060208284031215610c6757600080fd5b813561051e81610c3c565b60005b83811015610c8d578181015183820152602001610c75565b50506000910152565b60008151808452610cae816020860160208601610c72565b601f01601f19169290920160200192915050565b60208152600061051e6020830184610c96565b600060208284031215610ce757600080fd5b5035919050565b80356001600160a01b0381168114610d0557600080fd5b919050565b60008060408385031215610d1d57600080fd5b610d2683610cee565b946020939093013593505050565b600080600060608486031215610d4957600080fd5b610d5284610cee565b9250610d6060208501610cee565b9150604084013590509250925092565b600060208284031215610d8257600080fd5b61051e82610cee565b60008060408385031215610d9e57600080fd5b610da783610cee565b915060208301358015158114610dbc57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610df357600080fd5b610dfc85610cee565b9350610e0a60208601610cee565b925060408501359150606085013567ffffffffffffffff80821115610e2e57600080fd5b818701915087601f830112610e4257600080fd5b813581811115610e5457610e54610dc7565b604051601f8201601f19908116603f01168101908382118183101715610e7c57610e7c610dc7565b816040528281528a6020848701011115610e9557600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ecc57600080fd5b610ed583610cee565b9150610ee360208401610cee565b90509250929050565b600181811c90821680610f0057607f821691505b602082108103610f2057634e487b7160e01b600052602260045260246000fd5b50919050565b60008351610f38818460208801610c72565b835190830190610f4c818360208801610c72565b01949350505050565b60006001600160a01b03808716835280861660208401525083604083015260806060830152610f876080830184610c96565b9695505050505050565b600060208284031215610fa357600080fd5b815161051e81610c3c56fea2646970667358221220fb078c6a442579e164230fddba239120e2d7fa724202c735a0ff6341bc8fef9b64736f6c63430008170033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/util-precompile/IPrngSystemContract.sol/IPrngSystemContract.json b/artifacts/contracts/util-precompile/IPrngSystemContract.sol/IPrngSystemContract.json new file mode 100644 index 000000000..236fcbcd8 --- /dev/null +++ b/artifacts/contracts/util-precompile/IPrngSystemContract.sol/IPrngSystemContract.json @@ -0,0 +1,24 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IPrngSystemContract", + "sourceName": "contracts/util-precompile/IPrngSystemContract.sol", + "abi": [ + { + "inputs": [], + "name": "getPseudorandomSeed", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/contracts/util-precompile/PrngSystemContract.sol/PrngSystemContract.json b/artifacts/contracts/util-precompile/PrngSystemContract.sol/PrngSystemContract.json new file mode 100644 index 000000000..8f7e1b5f8 --- /dev/null +++ b/artifacts/contracts/util-precompile/PrngSystemContract.sol/PrngSystemContract.json @@ -0,0 +1,37 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "PrngSystemContract", + "sourceName": "contracts/util-precompile/PrngSystemContract.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "seedBytes", + "type": "bytes32" + } + ], + "name": "PseudoRandomSeed", + "type": "event" + }, + { + "inputs": [], + "name": "getPseudorandomSeed", + "outputs": [ + { + "internalType": "bytes32", + "name": "seedBytes", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610208806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063d83bf9a114610030575b600080fd5b61003861004a565b60405190815260200160405180910390f35b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663d83bf9a160e01b1790529051600091829182916101699161009e919061018a565b6000604051808303816000865af19150503d80600081146100db576040519150601f19603f3d011682016040523d82523d6000602084013e6100e0565b606091505b5091509150816101365760405162461bcd60e51b815260206004820152601760248201527f50524e472073797374656d2063616c6c206661696c6564000000000000000000604482015260640160405180910390fd5b8080602001905181019061014a91906101b9565b92507f597d607a3790e8d60862649d1fef7e222a0160226d4648901d47e03c6f056f668360405161017d91815260200190565b60405180910390a1505090565b6000825160005b818110156101ab5760208186018101518583015201610191565b506000920191825250919050565b6000602082840312156101cb57600080fd5b505191905056fea26469706673582212201f401c48877f830442f87ccf72aa11cac54cda07b4c44f84a3f3f4eb3a544b9064736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063d83bf9a114610030575b600080fd5b61003861004a565b60405190815260200160405180910390f35b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663d83bf9a160e01b1790529051600091829182916101699161009e919061018a565b6000604051808303816000865af19150503d80600081146100db576040519150601f19603f3d011682016040523d82523d6000602084013e6100e0565b606091505b5091509150816101365760405162461bcd60e51b815260206004820152601760248201527f50524e472073797374656d2063616c6c206661696c6564000000000000000000604482015260640160405180910390fd5b8080602001905181019061014a91906101b9565b92507f597d607a3790e8d60862649d1fef7e222a0160226d4648901d47e03c6f056f668360405161017d91815260200190565b60405180910390a1505090565b6000825160005b818110156101ab5760208186018101518583015201610191565b506000920191825250919050565b6000602082840312156101cb57600080fd5b505191905056fea26469706673582212201f401c48877f830442f87ccf72aa11cac54cda07b4c44f84a3f3f4eb3a544b9064736f6c63430008170033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/system-contract-dapp-playground/prerequisite-check/contracts-info/index.ts b/system-contract-dapp-playground/prerequisite-check/contracts-info/index.ts index 45a119bb3..69d312dc7 100644 --- a/system-contract-dapp-playground/prerequisite-check/contracts-info/index.ts +++ b/system-contract-dapp-playground/prerequisite-check/contracts-info/index.ts @@ -45,13 +45,13 @@ const getHederaSmartContractAssets = (HederaSmartContractsRootPath: string) => { }, IHRC729Contract: { name: 'IHRC729Contract', - contractPath: `${HederaSmartContractsRootPath}/contracts/hts-precompile/examples/hrc/HRCContract.sol`, - artifactPath: `${HederaSmartContractsRootPath}/artifacts/contracts/hts-precompile/examples/hrc/HRCContract.sol/HRCContract.json`, + contractPath: `${HederaSmartContractsRootPath}/contracts/hts-precompile/IHRC.sol`, + artifactPath: `${HederaSmartContractsRootPath}/artifacts/contracts/hts-precompile/IHRC.sol/IHRC.json`, }, - SelfFunding: { - name: 'SelfFunding', - contractPath: `${HederaSmartContractsRootPath}/contracts/exchange-rate-precompile/SelfFunding.sol`, - artifactPath: `${HederaSmartContractsRootPath}/artifacts/contracts/exchange-rate-precompile/SelfFunding.sol/SelfFunding.json`, + ExchangeRateMock: { + name: 'ExchangeRateMock', + contractPath: `${HederaSmartContractsRootPath}/contracts/exchange-rate-precompile/ExchangeRateMock.sol`, + artifactPath: `${HederaSmartContractsRootPath}/artifacts/contracts/exchange-rate-precompile/ExchangeRateMock.sol/ExchangeRateMock.json`, }, PrngSystemContract: { name: 'PrngSystemContract', diff --git a/system-contract-dapp-playground/prerequisite-check/scripts/index.ts b/system-contract-dapp-playground/prerequisite-check/scripts/index.ts index cc7b60130..412126b0e 100644 --- a/system-contract-dapp-playground/prerequisite-check/scripts/index.ts +++ b/system-contract-dapp-playground/prerequisite-check/scripts/index.ts @@ -53,9 +53,9 @@ const HEDERA_SMART_CONTRACTS = getHederaSmartContractAssetsFunc(HederaSmartContr 'TokenManagementContract', 'TokenTransferContract', 'PrngSystemContract', + 'ExchangeRateMock', 'TokenQueryContract', 'IHRC729Contract', - 'SelfFunding', 'ERC20Mock', 'ERC721Mock', ];