diff --git a/.gitleaksignore b/.gitleaksignore index 50a5ccad..27e97667 100644 --- a/.gitleaksignore +++ b/.gitleaksignore @@ -416,3 +416,11 @@ ef62598164a80b6f475cdd52a7b541eed19b9cf4:scripts/deployment/l2/globals_polygon_a ef62598164a80b6f475cdd52a7b541eed19b9cf4:scripts/deployment/l2/globals_polygon_mainnet.json:generic-api-key:2 eff9ec09651b73fcbd7270f070b2747e6f408157:scripts/deployment/l2/globals_arbitrum_one.json:generic-api-key:1 eff9ec09651b73fcbd7270f070b2747e6f408157:scripts/deployment/l2/globals_arbitrum_one.json:generic-api-key:2 +51bc81b7247b53f7b15fa98e5906760488595f7:scripts/deployment/l2/globals_mode_sepolia.json:generic-api-key:1 +51bc81b7247b53f7b15fa98e5906760488595f7:scripts/deployment/l2/globals_mode_sepolia.json:generic-api-key:2 +451bc81b7247b53f7b15fa98e5906760488595f7:scripts/deployment/l2/globals_mode_sepolia.json:generic-api-key:1 +451bc81b7247b53f7b15fa98e5906760488595f7:scripts/deployment/l2/globals_mode_sepolia.json:generic-api-key:2 +408d8153bc8dc60d952edbb022229c1994906c7e:scripts/deployment/l2/globals_mode_sepolia.json:generic-api-key:1 +408d8153bc8dc60d952edbb022229c1994906c7e:scripts/deployment/l2/globals_mode_sepolia.json:generic-api-key:2 +08d8153bc8dc60d952edbb022229c1994906c7e:scripts/deployment/l2/globals_mode_sepolia.json:generic-api-key:1 +08d8153bc8dc60d952edbb022229c1994906c7e:scripts/deployment/l2/globals_mode_sepolia.json:generic-api-key:2 diff --git a/abis/0.8.28/GnosisSafeMultisig.json b/abis/0.8.28/GnosisSafeMultisig.json new file mode 100644 index 00000000..b723e2fe --- /dev/null +++ b/abis/0.8.28/GnosisSafeMultisig.json @@ -0,0 +1,124 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "GnosisSafeMultisig", + "sourceName": "contracts/multisigs/GnosisSafeMultisig.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address payable", + "name": "_gnosisSafe", + "type": "address" + }, + { + "internalType": "address", + "name": "_gnosisSafeProxyFactory", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "provided", + "type": "uint256" + } + ], + "name": "IncorrectDataLength", + "type": "error" + }, + { + "inputs": [], + "name": "DEFAULT_DATA_LENGTH", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "GNOSIS_SAFE_SETUP_SELECTOR", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "owners", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "threshold", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "create", + "outputs": [ + { + "internalType": "address", + "name": "multisig", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "gnosisSafe", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "gnosisSafeProxyFactory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60c060405234801561000f575f5ffd5b5060405161083338038061083383398101604081905261002e9161005c565b6001600160a01b039182166080521660a052610094565b6001600160a01b0381168114610059575f5ffd5b50565b5f5f6040838503121561006d575f5ffd5b825161007881610045565b602084015190925061008981610045565b809150509250929050565b60805160a0516107726100c15f395f8181606d01526101f501525f818160f0015261022201526107725ff3fe608060405234801561000f575f5ffd5b5060043610610064575f3560e01c8063a84173ae1161004d578063a84173ae146100eb578063f02fb77414610112578063f398dba814610128575f5ffd5b8063490b7a79146100685780639f1a308d146100ac575b5f5ffd5b61008f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ba63b63e800d60e01b81565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100a3565b61008f7f000000000000000000000000000000000000000000000000000000000000000081565b61011a609081565b6040519081526020016100a3565b61008f6101363660046104bd565b5f5f5f5f5f5f5f5f6101478961029e565b96509650965096509650965096505f63b63e800d60e01b8c8c8a858b8b8a8c60405160240161017d9897969594939291906105d2565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051631688f0b960e01b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631688f0b99061024e907f00000000000000000000000000000000000000000000000000000000000000009085908890600401610695565b6020604051808303815f875af115801561026a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061028e91906106c6565b9c9b505050505050505050505050565b5f5f5f5f5f5f60605f885190505f8111156103e95760908110156102e357604051631a64813d60e11b8152609060048201526024810182905260440160405180910390fd5b601489015160288a0151603c8b015160508c015160708d01516090808f0151959d50939b50919950975095509093508111156103e9575f6103256090836106fc565b90508067ffffffffffffffff811115610340576103406103f5565b6040519080825280601f01601f19166020018201604052801561036a576020820181803683370190505b5092505f5b818110156103e6578a610383609083610715565b8151811061039357610393610728565b602001015160f81c60f81b8482815181106103b0576103b0610728565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535060010161036f565b50505b50919395979092949650565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610432576104326103f5565b604052919050565b6001600160a01b038116811461044e575f5ffd5b50565b5f82601f830112610460575f5ffd5b813567ffffffffffffffff81111561047a5761047a6103f5565b61048d601f8201601f1916602001610409565b8181528460208386010111156104a1575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f606084860312156104cf575f5ffd5b833567ffffffffffffffff8111156104e5575f5ffd5b8401601f810186136104f5575f5ffd5b803567ffffffffffffffff81111561050f5761050f6103f5565b8060051b61051f60208201610409565b9182526020818401810192908101908984111561053a575f5ffd5b6020850194505b8385101561056857843592506105568361043a565b82825260209485019490910190610541565b96505050506020850135925050604084013567ffffffffffffffff81111561058e575f5ffd5b61059a86828701610451565b9150509250925092565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b61010080825289519082018190525f9060208b0190610120840190835b818110156106165783516001600160a01b03168352602093840193909201916001016105ef565b50508a6020850152610633604085018b6001600160a01b03169052565b8381036060850152610645818a6105a4565b9250505061065e60808301876001600160a01b03169052565b6001600160a01b03851660a08301528360c083015261068860e08301846001600160a01b03169052565b9998505050505050505050565b6001600160a01b0384168152606060208201525f6106b660608301856105a4565b9050826040830152949350505050565b5f602082840312156106d6575f5ffd5b81516106e18161043a565b9392505050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561070f5761070f6106e8565b92915050565b8082018082111561070f5761070f6106e8565b634e487b7160e01b5f52603260045260245ffdfea264697066735822122018fa7773e83746ac550eab8063897767830e0601355103d74b989440761b0fb964736f6c634300081c0033", + "deployedBytecode": "0x608060405234801561000f575f5ffd5b5060043610610064575f3560e01c8063a84173ae1161004d578063a84173ae146100eb578063f02fb77414610112578063f398dba814610128575f5ffd5b8063490b7a79146100685780639f1a308d146100ac575b5f5ffd5b61008f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ba63b63e800d60e01b81565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100a3565b61008f7f000000000000000000000000000000000000000000000000000000000000000081565b61011a609081565b6040519081526020016100a3565b61008f6101363660046104bd565b5f5f5f5f5f5f5f5f6101478961029e565b96509650965096509650965096505f63b63e800d60e01b8c8c8a858b8b8a8c60405160240161017d9897969594939291906105d2565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051631688f0b960e01b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631688f0b99061024e907f00000000000000000000000000000000000000000000000000000000000000009085908890600401610695565b6020604051808303815f875af115801561026a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061028e91906106c6565b9c9b505050505050505050505050565b5f5f5f5f5f5f60605f885190505f8111156103e95760908110156102e357604051631a64813d60e11b8152609060048201526024810182905260440160405180910390fd5b601489015160288a0151603c8b015160508c015160708d01516090808f0151959d50939b50919950975095509093508111156103e9575f6103256090836106fc565b90508067ffffffffffffffff811115610340576103406103f5565b6040519080825280601f01601f19166020018201604052801561036a576020820181803683370190505b5092505f5b818110156103e6578a610383609083610715565b8151811061039357610393610728565b602001015160f81c60f81b8482815181106103b0576103b0610728565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535060010161036f565b50505b50919395979092949650565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610432576104326103f5565b604052919050565b6001600160a01b038116811461044e575f5ffd5b50565b5f82601f830112610460575f5ffd5b813567ffffffffffffffff81111561047a5761047a6103f5565b61048d601f8201601f1916602001610409565b8181528460208386010111156104a1575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f606084860312156104cf575f5ffd5b833567ffffffffffffffff8111156104e5575f5ffd5b8401601f810186136104f5575f5ffd5b803567ffffffffffffffff81111561050f5761050f6103f5565b8060051b61051f60208201610409565b9182526020818401810192908101908984111561053a575f5ffd5b6020850194505b8385101561056857843592506105568361043a565b82825260209485019490910190610541565b96505050506020850135925050604084013567ffffffffffffffff81111561058e575f5ffd5b61059a86828701610451565b9150509250925092565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b61010080825289519082018190525f9060208b0190610120840190835b818110156106165783516001600160a01b03168352602093840193909201916001016105ef565b50508a6020850152610633604085018b6001600160a01b03169052565b8381036060850152610645818a6105a4565b9250505061065e60808301876001600160a01b03169052565b6001600160a01b03851660a08301528360c083015261068860e08301846001600160a01b03169052565b9998505050505050505050565b6001600160a01b0384168152606060208201525f6106b660608301856105a4565b9050826040830152949350505050565b5f602082840312156106d6575f5ffd5b81516106e18161043a565b9392505050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561070f5761070f6106e8565b92915050565b8082018082111561070f5761070f6106e8565b634e487b7160e01b5f52603260045260245ffdfea264697066735822122018fa7773e83746ac550eab8063897767830e0601355103d74b989440761b0fb964736f6c634300081c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/abis/0.8.28/GnosisSafeSameAddressMultisig.json b/abis/0.8.28/GnosisSafeSameAddressMultisig.json new file mode 100644 index 00000000..0c4a567a --- /dev/null +++ b/abis/0.8.28/GnosisSafeSameAddressMultisig.json @@ -0,0 +1,163 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "GnosisSafeSameAddressMultisig", + "sourceName": "contracts/multisigs/GnosisSafeSameAddressMultisig.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_proxyHash", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "provided", + "type": "uint256" + } + ], + "name": "IncorrectDataLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "provided", + "type": "address" + } + ], + "name": "MultisigExecFailed", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "multisig", + "type": "address" + } + ], + "name": "UnauthorizedMultisig", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "provided", + "type": "uint256" + } + ], + "name": "WrongNumOwners", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "provided", + "type": "address" + } + ], + "name": "WrongOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "provided", + "type": "uint256" + } + ], + "name": "WrongThreshold", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroValue", + "type": "error" + }, + { + "inputs": [], + "name": "DEFAULT_DATA_LENGTH", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "owners", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "threshold", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "create", + "outputs": [ + { + "internalType": "address", + "name": "multisig", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "proxyHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60a0604052348015600e575f5ffd5b5060405161083d38038061083d833981016040819052602b91604f565b80604857604051637c946ed760e01b815260040160405180910390fd5b6080526065565b5f60208284031215605e575f5ffd5b5051919050565b6080516107ba6100835f395f81816048015261012101526107ba5ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c8063809cee2f14610043578063f02fb7741461007d578063f398dba814610085575b5f5ffd5b61006a7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b61006a601481565b610098610093366004610597565b6100b0565b6040516001600160a01b039091168152602001610074565b80515f9060148110156100e8578251604051631a64813d60e11b81526014600482015260248101919091526044015b60405180910390fd5b601483015191505f826001600160a01b0316803b806020016040519081016040528181525f908060200190933c805190602001209050807f0000000000000000000000000000000000000000000000000000000000000000146101685760405162a2307960e51b81526001600160a01b03841660048201526024016100df565b60148211156102c8575f61017d60148461067d565b90505f8167ffffffffffffffff811115610199576101996104ac565b6040519080825280601f01601f1916602001820160405280156101c3576020820181803683370190505b5090505f5b8281101561023f57866101dc601483610696565b815181106101ec576101ec6106a9565b602001015160f81c60f81b828281518110610209576102096106a9565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053506001016101c8565b505f856001600160a01b03168260405161025991906106bd565b5f604051808303815f865af19150503d805f8114610292576040519150601f19603f3d011682016040523d82523d5f602084013e610297565b606091505b50509050806102c457604051632aacb4bd60e21b81526001600160a01b03871660048201526024016100df565b5050505b5f836001600160a01b031663a0e67e2b6040518163ffffffff1660e01b81526004015f60405180830381865afa158015610304573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261032b91908101906106d3565b90505f846001600160a01b031663e75235b86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561036a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061038e919061076d565b90508087146103ba57604051635372461560e01b815260048101829052602481018890526044016100df565b8751825181146103ea57825160405163f720290d60e01b81526004810191909152602481018290526044016100df565b5f5b8181101561049f57836001610401838561067d565b61040b919061067d565b8151811061041b5761041b6106a9565b60200260200101516001600160a01b03168a828151811061043e5761043e6106a9565b60200260200101516001600160a01b03161461049757898181518110610466576104666106a9565b60200260200101516040516374dba67360e01b81526004016100df91906001600160a01b0391909116815260200190565b6001016103ec565b5050505050509392505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156104e9576104e96104ac565b604052919050565b5f67ffffffffffffffff82111561050a5761050a6104ac565b5060051b60200190565b6001600160a01b0381168114610528575f5ffd5b50565b5f82601f83011261053a575f5ffd5b813567ffffffffffffffff811115610554576105546104ac565b610567601f8201601f19166020016104c0565b81815284602083860101111561057b575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f606084860312156105a9575f5ffd5b833567ffffffffffffffff8111156105bf575f5ffd5b8401601f810186136105cf575f5ffd5b80356105e26105dd826104f1565b6104c0565b8082825260208201915060208360051b850101925088831115610603575f5ffd5b6020840193505b8284101561062e57833561061d81610514565b82526020938401939091019061060a565b955050505060208401359150604084013567ffffffffffffffff811115610653575f5ffd5b61065f8682870161052b565b9150509250925092565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561069057610690610669565b92915050565b8082018082111561069057610690610669565b634e487b7160e01b5f52603260045260245ffd5b5f82518060208501845e5f920191825250919050565b5f602082840312156106e3575f5ffd5b815167ffffffffffffffff8111156106f9575f5ffd5b8201601f81018413610709575f5ffd5b80516107176105dd826104f1565b8082825260208201915060208360051b850101925086831115610738575f5ffd5b6020840193505b8284101561076357835161075281610514565b82526020938401939091019061073f565b9695505050505050565b5f6020828403121561077d575f5ffd5b505191905056fea264697066735822122054940a26e43a356739380777f2892e973405513343a557f334fa52f250ce890d64736f6c634300081c0033", + "deployedBytecode": "0x608060405234801561000f575f5ffd5b506004361061003f575f3560e01c8063809cee2f14610043578063f02fb7741461007d578063f398dba814610085575b5f5ffd5b61006a7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b61006a601481565b610098610093366004610597565b6100b0565b6040516001600160a01b039091168152602001610074565b80515f9060148110156100e8578251604051631a64813d60e11b81526014600482015260248101919091526044015b60405180910390fd5b601483015191505f826001600160a01b0316803b806020016040519081016040528181525f908060200190933c805190602001209050807f0000000000000000000000000000000000000000000000000000000000000000146101685760405162a2307960e51b81526001600160a01b03841660048201526024016100df565b60148211156102c8575f61017d60148461067d565b90505f8167ffffffffffffffff811115610199576101996104ac565b6040519080825280601f01601f1916602001820160405280156101c3576020820181803683370190505b5090505f5b8281101561023f57866101dc601483610696565b815181106101ec576101ec6106a9565b602001015160f81c60f81b828281518110610209576102096106a9565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053506001016101c8565b505f856001600160a01b03168260405161025991906106bd565b5f604051808303815f865af19150503d805f8114610292576040519150601f19603f3d011682016040523d82523d5f602084013e610297565b606091505b50509050806102c457604051632aacb4bd60e21b81526001600160a01b03871660048201526024016100df565b5050505b5f836001600160a01b031663a0e67e2b6040518163ffffffff1660e01b81526004015f60405180830381865afa158015610304573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261032b91908101906106d3565b90505f846001600160a01b031663e75235b86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561036a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061038e919061076d565b90508087146103ba57604051635372461560e01b815260048101829052602481018890526044016100df565b8751825181146103ea57825160405163f720290d60e01b81526004810191909152602481018290526044016100df565b5f5b8181101561049f57836001610401838561067d565b61040b919061067d565b8151811061041b5761041b6106a9565b60200260200101516001600160a01b03168a828151811061043e5761043e6106a9565b60200260200101516001600160a01b03161461049757898181518110610466576104666106a9565b60200260200101516040516374dba67360e01b81526004016100df91906001600160a01b0391909116815260200190565b6001016103ec565b5050505050509392505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156104e9576104e96104ac565b604052919050565b5f67ffffffffffffffff82111561050a5761050a6104ac565b5060051b60200190565b6001600160a01b0381168114610528575f5ffd5b50565b5f82601f83011261053a575f5ffd5b813567ffffffffffffffff811115610554576105546104ac565b610567601f8201601f19166020016104c0565b81815284602083860101111561057b575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f606084860312156105a9575f5ffd5b833567ffffffffffffffff8111156105bf575f5ffd5b8401601f810186136105cf575f5ffd5b80356105e26105dd826104f1565b6104c0565b8082825260208201915060208360051b850101925088831115610603575f5ffd5b6020840193505b8284101561062e57833561061d81610514565b82526020938401939091019061060a565b955050505060208401359150604084013567ffffffffffffffff811115610653575f5ffd5b61065f8682870161052b565b9150509250925092565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561069057610690610669565b92915050565b8082018082111561069057610690610669565b634e487b7160e01b5f52603260045260245ffd5b5f82518060208501845e5f920191825250919050565b5f602082840312156106e3575f5ffd5b815167ffffffffffffffff8111156106f9575f5ffd5b8201601f81018413610709575f5ffd5b80516107176105dd826104f1565b8082825260208201915060208360051b850101925086831115610738575f5ffd5b6020840193505b8284101561076357835161075281610514565b82526020938401939091019061073f565b9695505050505050565b5f6020828403121561077d575f5ffd5b505191905056fea264697066735822122054940a26e43a356739380777f2892e973405513343a557f334fa52f250ce890d64736f6c634300081c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/abis/0.8.28/OperatorWhitelist.json b/abis/0.8.28/OperatorWhitelist.json new file mode 100644 index 00000000..acd1a4bc --- /dev/null +++ b/abis/0.8.28/OperatorWhitelist.json @@ -0,0 +1,266 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "OperatorWhitelist", + "sourceName": "contracts/utils/OperatorWhitelist.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_serviceRegistry", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnerOnly", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numValues1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "numValues2", + "type": "uint256" + } + ], + "name": "WrongArrayLength", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddress", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "serviceOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "OperatorsWhitelistCheckSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "serviceOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "operators", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "bool[]", + "name": "statuses", + "type": "bool[]" + }, + { + "indexed": false, + "internalType": "bool", + "name": "setCheck", + "type": "bool" + } + ], + "name": "OperatorsWhitelistUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "serviceOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bool", + "name": "setCheck", + "type": "bool" + } + ], + "name": "SetOperatorsCheck", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isOperatorWhitelisted", + "outputs": [ + { + "internalType": "bool", + "name": "status", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "mapServiceIdOperators", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapServiceIdOperatorsCheck", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "serviceRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "setCheck", + "type": "bool" + } + ], + "name": "setOperatorsCheck", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "operators", + "type": "address[]" + }, + { + "internalType": "bool[]", + "name": "statuses", + "type": "bool[]" + }, + { + "internalType": "bool", + "name": "setCheck", + "type": "bool" + } + ], + "name": "setOperatorsStatuses", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60a060405234801561000f575f5ffd5b506040516109a63803806109a683398101604081905261002e91610066565b6001600160a01b0381166100555760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0316608052610093565b5f60208284031215610076575f5ffd5b81516001600160a01b038116811461008c575f5ffd5b9392505050565b6080516108e76100bf5f395f818160f5015281816101a9015281816103a4015261049201526108e75ff3fe608060405234801561000f575f5ffd5b506004361061006f575f3560e01c8063bb4f56f01161004d578063bb4f56f0146100dd578063cbcf252a146100f0578063ecc4060c1461012f575f5ffd5b806345131adb1461007357806356a7b607146100885780635c2f6ef4146100b0575b5f5ffd5b61008661008136600461069a565b610151565b005b61009b610096366004610778565b610389565b60405190151581526020015b60405180910390f35b61009b6100be366004610778565b600160209081525f928352604080842090915290825290205460ff1681565b6100866100eb3660046107a6565b61047a565b6101177f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100a7565b61009b61013d3660046107d0565b5f6020819052908152604090205460ff1681565b8251158061016157508151835114155b1561019157825182516040516308151c1160e41b8152600481019290925260248201526044015b60405180910390fd5b6040516331a9108f60e11b8152600481018590525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156101f6573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061021a91906107e7565b90506001600160a01b03811633146102565760405163521eb56d60e11b81526001600160a01b0382166004820152336024820152604401610188565b5f858152602081905260408120805460ff19168415151790555b845181101561033b575f6001600160a01b031685828151811061029557610295610809565b60200260200101516001600160a01b0316036102c45760405163d92e233d60e01b815260040160405180910390fd5b8381815181106102d6576102d6610809565b602002602001015160015f8881526020019081526020015f205f87848151811061030257610302610809565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610270565b5084336001600160a01b03167f468d072a954ba60f48b97590cdedbb50ed040a6c0b7419e7e26e8c30f0d4698986868660405161037a9392919061081d565b60405180910390a35050505050565b6040516331a9108f60e11b8152600481018390526001905f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156103f1573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061041591906107e7565b9050826001600160a01b0316816001600160a01b03161415801561044657505f8481526020819052604090205460ff165b15610473575f8481526001602090815260408083206001600160a01b038716845290915290205460ff1691505b5092915050565b6040516331a9108f60e11b8152600481018390525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156104df573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061050391906107e7565b90506001600160a01b038116331461053f5760405163521eb56d60e11b81526001600160a01b0382166004820152336024820152604401610188565b5f8381526020818152604091829020805460ff19168515159081179091559151918252849133917f23b65c8cb3df8015266b5a426d083d4b0c7ac26d5acba4be838cf8e01626742c910160405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156105d3576105d3610596565b604052919050565b5f67ffffffffffffffff8211156105f4576105f4610596565b5060051b60200190565b6001600160a01b0381168114610612575f5ffd5b50565b80358015158114610624575f5ffd5b919050565b5f82601f830112610638575f5ffd5b813561064b610646826105db565b6105aa565b8082825260208201915060208360051b86010192508583111561066c575f5ffd5b602085015b838110156106905761068281610615565b835260209283019201610671565b5095945050505050565b5f5f5f5f608085870312156106ad575f5ffd5b84359350602085013567ffffffffffffffff8111156106ca575f5ffd5b8501601f810187136106da575f5ffd5b80356106e8610646826105db565b8082825260208201915060208360051b850101925089831115610709575f5ffd5b6020840193505b82841015610734578335610723816105fe565b825260209384019390910190610710565b9550505050604085013567ffffffffffffffff811115610752575f5ffd5b61075e87828801610629565b92505061076d60608601610615565b905092959194509250565b5f5f60408385031215610789575f5ffd5b82359150602083013561079b816105fe565b809150509250929050565b5f5f604083850312156107b7575f5ffd5b823591506107c760208401610615565b90509250929050565b5f602082840312156107e0575f5ffd5b5035919050565b5f602082840312156107f7575f5ffd5b8151610802816105fe565b9392505050565b634e487b7160e01b5f52603260045260245ffd5b606080825284519082018190525f9060208601906080840190835b8181101561085f5783516001600160a01b0316835260209384019390920191600101610838565b5050838103602080860191909152865180835291810192508601905f5b8181101561089c578251151584526020938401939092019160010161087c565b5050508315156040840152905094935050505056fea2646970667358221220911f058fb87de08f48ab786f930362c477461ff8c81c812d4b8c104eeefaad9664736f6c634300081c0033", + "deployedBytecode": "0x608060405234801561000f575f5ffd5b506004361061006f575f3560e01c8063bb4f56f01161004d578063bb4f56f0146100dd578063cbcf252a146100f0578063ecc4060c1461012f575f5ffd5b806345131adb1461007357806356a7b607146100885780635c2f6ef4146100b0575b5f5ffd5b61008661008136600461069a565b610151565b005b61009b610096366004610778565b610389565b60405190151581526020015b60405180910390f35b61009b6100be366004610778565b600160209081525f928352604080842090915290825290205460ff1681565b6100866100eb3660046107a6565b61047a565b6101177f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100a7565b61009b61013d3660046107d0565b5f6020819052908152604090205460ff1681565b8251158061016157508151835114155b1561019157825182516040516308151c1160e41b8152600481019290925260248201526044015b60405180910390fd5b6040516331a9108f60e11b8152600481018590525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156101f6573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061021a91906107e7565b90506001600160a01b03811633146102565760405163521eb56d60e11b81526001600160a01b0382166004820152336024820152604401610188565b5f858152602081905260408120805460ff19168415151790555b845181101561033b575f6001600160a01b031685828151811061029557610295610809565b60200260200101516001600160a01b0316036102c45760405163d92e233d60e01b815260040160405180910390fd5b8381815181106102d6576102d6610809565b602002602001015160015f8881526020019081526020015f205f87848151811061030257610302610809565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610270565b5084336001600160a01b03167f468d072a954ba60f48b97590cdedbb50ed040a6c0b7419e7e26e8c30f0d4698986868660405161037a9392919061081d565b60405180910390a35050505050565b6040516331a9108f60e11b8152600481018390526001905f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156103f1573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061041591906107e7565b9050826001600160a01b0316816001600160a01b03161415801561044657505f8481526020819052604090205460ff165b15610473575f8481526001602090815260408083206001600160a01b038716845290915290205460ff1691505b5092915050565b6040516331a9108f60e11b8152600481018390525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156104df573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061050391906107e7565b90506001600160a01b038116331461053f5760405163521eb56d60e11b81526001600160a01b0382166004820152336024820152604401610188565b5f8381526020818152604091829020805460ff19168515159081179091559151918252849133917f23b65c8cb3df8015266b5a426d083d4b0c7ac26d5acba4be838cf8e01626742c910160405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156105d3576105d3610596565b604052919050565b5f67ffffffffffffffff8211156105f4576105f4610596565b5060051b60200190565b6001600160a01b0381168114610612575f5ffd5b50565b80358015158114610624575f5ffd5b919050565b5f82601f830112610638575f5ffd5b813561064b610646826105db565b6105aa565b8082825260208201915060208360051b86010192508583111561066c575f5ffd5b602085015b838110156106905761068281610615565b835260209283019201610671565b5095945050505050565b5f5f5f5f608085870312156106ad575f5ffd5b84359350602085013567ffffffffffffffff8111156106ca575f5ffd5b8501601f810187136106da575f5ffd5b80356106e8610646826105db565b8082825260208201915060208360051b850101925089831115610709575f5ffd5b6020840193505b82841015610734578335610723816105fe565b825260209384019390910190610710565b9550505050604085013567ffffffffffffffff811115610752575f5ffd5b61075e87828801610629565b92505061076d60608601610615565b905092959194509250565b5f5f60408385031215610789575f5ffd5b82359150602083013561079b816105fe565b809150509250929050565b5f5f604083850312156107b7575f5ffd5b823591506107c760208401610615565b90509250929050565b5f602082840312156107e0575f5ffd5b5035919050565b5f602082840312156107f7575f5ffd5b8151610802816105fe565b9392505050565b634e487b7160e01b5f52603260045260245ffd5b606080825284519082018190525f9060208601906080840190835b8181101561085f5783516001600160a01b0316835260209384019390920191600101610838565b5050838103602080860191909152865180835291810192508601905f5b8181101561089c578251151584526020938401939092019160010161087c565b5050508315156040840152905094935050505056fea2646970667358221220911f058fb87de08f48ab786f930362c477461ff8c81c812d4b8c104eeefaad9664736f6c634300081c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/abis/0.8.28/ServiceManagerToken.json b/abis/0.8.28/ServiceManagerToken.json new file mode 100644 index 00000000..3788b880 --- /dev/null +++ b/abis/0.8.28/ServiceManagerToken.json @@ -0,0 +1,1331 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ServiceManagerToken", + "sourceName": "contracts/ServiceManagerToken.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_serviceRegistry", + "type": "address" + }, + { + "internalType": "address", + "name": "_serviceRegistryTokenUtility", + "type": "address" + }, + { + "internalType": "address", + "name": "_operatorWhitelist", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "AgentInstanceRegistered", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "AgentInstancesSlotsFilled", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + } + ], + "name": "AgentNotFound", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "AgentNotInService", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "componentId", + "type": "uint256" + } + ], + "name": "ComponentNotFound", + "type": "error" + }, + { + "inputs": [], + "name": "HashExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "HashNotApproved", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "HashNotValidated", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "sent", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "IncorrectAgentBondingValue", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "sent", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "IncorrectRegistrationDepositValue", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "provided", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + } + ], + "name": "IncorrectSignatureLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "manager", + "type": "address" + } + ], + "name": "ManagerOnly", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "provided", + "type": "address" + }, + { + "internalType": "address", + "name": "expected", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "OnlyOwnServiceMultisig", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "OperatorHasNoInstances", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "provided", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "Overflow", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnerOnly", + "type": "error" + }, + { + "inputs": [], + "name": "Paused", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuard", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "ServiceMustBeInactive", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TransferFailed", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "multisig", + "type": "address" + } + ], + "name": "UnauthorizedMultisig", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + } + ], + "name": "WrongAgentId", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numValues1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "numValues2", + "type": "uint256" + } + ], + "name": "WrongArrayLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "WrongOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "provided", + "type": "address" + }, + { + "internalType": "address", + "name": "expected", + "type": "address" + } + ], + "name": "WrongOperatorAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "state", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "WrongServiceState", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "currentThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxThreshold", + "type": "uint256" + } + ], + "name": "WrongThreshold", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddress", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroOperatorAddress", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroValue", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "multisig", + "type": "address" + } + ], + "name": "CreateMultisig", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + } + ], + "name": "OperatorHashApproved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operatorWhitelist", + "type": "address" + } + ], + "name": "OperatorWhitelistUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnerUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "Pause", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "Unpause", + "type": "event" + }, + { + "inputs": [], + "name": "BOND_WRAPPER", + "outputs": [ + { + "internalType": "uint96", + "name": "", + "type": "uint96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR_TYPE_HASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ETH_TOKEN_ADDRESS", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "REGISTER_AGENTS_TYPE_HASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UNBOND_TYPE_HASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "activateRegistration", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "chainId", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "changeOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "serviceOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "configHash", + "type": "bytes32" + }, + { + "internalType": "uint32[]", + "name": "agentIds", + "type": "uint32[]" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "slots", + "type": "uint32" + }, + { + "internalType": "uint96", + "name": "bond", + "type": "uint96" + } + ], + "internalType": "struct IService.AgentParams[]", + "name": "agentParams", + "type": "tuple[]" + }, + { + "internalType": "uint32", + "name": "threshold", + "type": "uint32" + } + ], + "name": "create", + "outputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "multisigImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "deploy", + "outputs": [ + { + "internalType": "address", + "name": "multisig", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "domainSeparator", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDomainSeparator", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "getOperatorRegisterAgentsNonce", + "outputs": [ + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "getOperatorUnbondNonce", + "outputs": [ + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "serviceOwner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "agentInstances", + "type": "address[]" + }, + { + "internalType": "uint32[]", + "name": "agentIds", + "type": "uint32[]" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "name": "getRegisterAgentsHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "serviceOwner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "name": "getUnbondHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + } + ], + "name": "isOperatorHashApproved", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "mapOperatorApprovedHashes", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapOperatorRegisterAgentsNonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapOperatorUnbondNonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nameHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + } + ], + "name": "operatorApproveHash", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "operatorWhitelist", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "agentInstances", + "type": "address[]" + }, + { + "internalType": "uint32[]", + "name": "agentIds", + "type": "uint32[]" + } + ], + "name": "registerAgents", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "agentInstances", + "type": "address[]" + }, + { + "internalType": "uint32[]", + "name": "agentIds", + "type": "uint32[]" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "registerAgentsWithSignature", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "serviceRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "serviceRegistryTokenUtility", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOperatorWhitelist", + "type": "address" + } + ], + "name": "setOperatorWhitelist", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "terminate", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "refund", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "unbond", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "refund", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "unbondWithSignature", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "refund", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "configHash", + "type": "bytes32" + }, + { + "internalType": "uint32[]", + "name": "agentIds", + "type": "uint32[]" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "slots", + "type": "uint32" + }, + { + "internalType": "uint96", + "name": "bond", + "type": "uint96" + } + ], + "internalType": "struct IService.AgentParams[]", + "name": "agentParams", + "type": "tuple[]" + }, + { + "internalType": "uint32", + "name": "threshold", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "update", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "version", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "versionHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x610140604052348015610010575f5ffd5b5060405161351338038061351383398101604081905261002f916101bd565b6040518060400160405280601581526020017f53657276696365204d616e6167657220546f6b656e000000000000000000000081525060405180604001604052806005815260200164312e312e3160d81b81525081600190816100929190610295565b50600261009f8282610295565b50815160208084019190912060c05281519082012060e0524660a05261012560c0805160e051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f910160405160208183030381529060405280519060200120905090565b60805250506001600160a01b038316158061014757506001600160a01b038216155b156101655760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03928316610100529082166101205260068054919092166001600160a01b0319918216179091555f80549091163317905561034f565b80516001600160a01b03811681146101b8575f5ffd5b919050565b5f5f5f606084860312156101cf575f5ffd5b6101d8846101a2565b92506101e6602085016101a2565b91506101f4604085016101a2565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061022557607f821691505b60208210810361024357634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561029057805f5260205f20601f840160051c8101602085101561026e5750805b601f840160051c820191505b8181101561028d575f815560010161027a565b50505b505050565b81516001600160401b038111156102ae576102ae6101fd565b6102c2816102bc8454610211565b84610249565b6020601f8211600181146102f4575f83156102dd5750848201515b5f19600385901b1c1916600184901b17845561028d565b5f84815260208120601f198516915b828110156103235787850151825560209485019460019092019101610303565b508482101561034057868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60805160a05160c05160e05161010051610120516130b26104615f395f818161040801528181610b7b01528181610d7b01528181610fd401528181611186015281816114bf0152818161191401528181611b6501528181611c97015261213d01525f81816107160152818161098501528181610a5f01528181610bfc01528181610cc201528181610e0401528181610e900152818161106901528181611214015281816112ad0152818161156a0152818161187c01528181611acc01528181611d1a01528181611de001528181611ef701526120a601525f8181610328015261222401525f818161080001526121fc01525f818161066b01526121a801525f8181610866015261227c01526130b25ff3fe608060405260043610610291575f3560e01c8063757b115611610165578063cbcf252a116100c6578063e5da07531161007c578063f172a4ce11610062578063f172a4ce146107ef578063f5dcb7bb14610822578063f698da2514610855575f5ffd5b8063e5da0753146107bc578063ed24911d146107db575f5ffd5b8063d03ca40a116100ac578063d03ca40a14610757578063dc1d95251461076a578063e42cdd7c1461079d575f5ffd5b8063cbcf252a14610705578063cbf994f814610738575f5ffd5b8063948879111161011b578063a2e2ad7e11610101578063a2e2ad7e1461068d578063a6a7187f146106c7578063a6f9dae1146106e6575f5ffd5b806394887911146106275780639a8a05921461065a575f5ffd5b80638456cb591161014b5780638456cb59146105ca5780638a39fa16146105de5780638da5cb5b14610609575f5ffd5b8063757b11561461058c5780637a828b28146105ab575f5ffd5b806328f223421161020f5780635405ecb9116101c557806356bda507116101ab57806356bda50714610522578063599be46f1461054e5780635c975abb1461056d575f5ffd5b80635405ecb9146104d457806354fd4d501461050e575f5ffd5b80633f4ba83a116101f55780633f4ba83a1461048257806341b60677146104965780634d5a5827146104c1575f5ffd5b806328f223421461042a5780633af5d04e14610449575f5ffd5b80631878d1f11161026457806321561bfc1161024a57806321561bfc146103a257806327de9e32146103c157806328714051146103f7575f5ffd5b80631878d1f1146103585780631ee81fb51461037f575f5ffd5b806306fdde031461029557806307a3e0a8146102bf5780630d0d57a8146102e0578063152b5c0f14610317575b5f5ffd5b3480156102a0575f5ffd5b506102a9610888565b6040516102b69190612539565b60405180910390f35b3480156102ca575f5ffd5b506102de6102d9366004612552565b610914565b005b3480156102eb575f5ffd5b506102ff6102fa36600461265a565b61096c565b6040516001600160a01b0390911681526020016102b6565b348015610322575f5ffd5b5061034a7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016102b6565b348015610363575f5ffd5b506102ff73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b61039261038d3660046127bf565b610a3d565b60405190151581526020016102b6565b3480156103ad575f5ffd5b506006546102ff906001600160a01b031681565b3480156103cc575f5ffd5b506103e06103db366004612552565b610d51565b6040805192151583526020830191909152016102b6565b348015610402575f5ffd5b506102ff7f000000000000000000000000000000000000000000000000000000000000000081565b348015610435575f5ffd5b506103e0610444366004612869565b610e8b565b348015610454575f5ffd5b506103926104633660046128a8565b600560209081525f928352604080842090915290825290205460ff1681565b34801561048d575f5ffd5b506102de6110f0565b3480156104a1575f5ffd5b5061034a6104b0366004612552565b60046020525f908152604090205481565b6103926104cf366004612552565b611164565b3480156104df575f5ffd5b5061034a6104ee3660046128a8565b60a01b6001600160a01b03909116175f9081526003602052604090205490565b348015610519575f5ffd5b506102a961132b565b34801561052d575f5ffd5b50610536600181565b6040516001600160601b0390911681526020016102b6565b348015610559575f5ffd5b506102de6105683660046128d2565b611338565b348015610578575f5ffd5b505f5461039290600160a01b900460ff1681565b348015610597575f5ffd5b5061034a6105a63660046128ed565b6113cc565b3480156105b6575f5ffd5b506103e06105c5366004612552565b6114ba565b3480156105d5575f5ffd5b506102de6115a1565b3480156105e9575f5ffd5b5061034a6105f8366004612552565b60036020525f908152604090205481565b348015610614575f5ffd5b505f546102ff906001600160a01b031681565b348015610632575f5ffd5b5061034a7f92b2008d2a99f26809ac9d1989fe92334aa84124767331997ba0eec16050ecf481565b348015610665575f5ffd5b5061034a7f000000000000000000000000000000000000000000000000000000000000000081565b348015610698575f5ffd5b5061034a6106a73660046128a8565b60a01b6001600160a01b03909116175f9081526004602052604090205490565b3480156106d2575f5ffd5b5061034a6106e1366004612989565b61161b565b3480156106f1575f5ffd5b506102de6107003660046128d2565b6116d6565b348015610710575f5ffd5b506102ff7f000000000000000000000000000000000000000000000000000000000000000081565b348015610743575f5ffd5b50610392610752366004612a6b565b61178f565b610392610765366004612b05565b611bda565b348015610775575f5ffd5b5061034a7fde64b4c9fac43e1615e938b03573b078604f57b4d2e78d3a27d7b20ba017e12681565b3480156107a8575f5ffd5b5061034a6107b7366004612b68565b611e69565b3480156107c7575f5ffd5b506103926107d63660046128a8565b612178565b3480156107e6575f5ffd5b5061034a6121a5565b3480156107fa575f5ffd5b5061034a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561082d575f5ffd5b5061034a7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b348015610860575f5ffd5b5061034a7f000000000000000000000000000000000000000000000000000000000000000081565b6001805461089590612c09565b80601f01602080910402602001604051908101604052809291908181526020018280546108c190612c09565b801561090c5780601f106108e35761010080835404028352916020019161090c565b820191905f5260205f20905b8154815290600101906020018083116108ef57829003601f168201915b505050505081565b335f818152600560209081526040808320858452825291829020805460ff1916600117905590518381527f85eb1f050732417c0566422b6004a6c5cbded9ded1a406de04060719af52a13a910160405180910390a250565b60405163f908bc7760e01b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f908bc77906109c0903390889088908890600401612c3b565b6020604051808303815f875af11580156109dc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a009190612c71565b6040519091506001600160a01b038216907fec97633905b1dbe9773a7536e9a986dcf89803e1193934b7b6d76587c68beb40905f90a29392505050565b6040516331a9108f60e11b8152600481018590525f9081906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610aa4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac89190612c71565b9050336001600160a01b03821614610b095760405163521eb56d60e11b81523360048201526001600160a01b03821660248201526044015b60405180910390fd5b60a086901b6001600160a01b038816175f8181526004602052604081205490610b368a858b8b8b876113cc565b9050610b438a828861229e565b81610b4d81612ca0565b5f8581526004602081905260408083208490555163dc4f8bc560e01b81529295509092506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163dc4f8bc591610bb2918f918f918e9101612cf8565b6020604051808303815f875af1158015610bce573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf29190612d37565b90508015610cab577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dff7672460016001600160601b03168b51610c409190612d50565b8d8d8d8d6040518663ffffffff1660e01b8152600401610c639493929190612da0565b60206040518083038185885af1158015610c7f573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610ca49190612d37565b9550610d43565b6040516337fdd9c960e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063dff76724903490610cff908f908f908f908f90600401612da0565b60206040518083038185885af1158015610d1b573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d409190612d37565b95505b505050505095945050505050565b60405163161e984960e31b8152336004820152602481018290525f90819081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b0f4c248906044016020604051808303815f875af1158015610dc1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610de59190612de4565b6040516352e82ce560e11b8152336004820152602481018690529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a5d059ca906044015b60408051808303815f875af1158015610e52573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e769190612dfb565b90935091508015610e85578091505b50915091565b5f5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e866040518263ffffffff1660e01b8152600401610edc91815260200190565b602060405180830381865afa158015610ef7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f1b9190612c71565b9050336001600160a01b03821614610f575760405163521eb56d60e11b81523360048201526001600160a01b0382166024820152604401610b00565b60a085901b6001600160a01b038716175f8181526003602052604081205490610f8289858a8561161b565b9050610f8f89828961229e565b81610f9981612ca0565b5f858152600360205260408082208390555163161e984960e31b81526001600160a01b038d81166004830152602482018d90529295509092507f00000000000000000000000000000000000000000000000000000000000000009091169063b0f4c248906044016020604051808303815f875af115801561101c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110409190612de4565b6040516352e82ce560e11b81526001600160a01b038c81166004830152602482018c90529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a5d059ca9060440160408051808303815f875af11580156110b0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d49190612dfb565b909750955080156110e3578095505b5050505050935093915050565b5f546001600160a01b0316331461112e575f5460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610b00565b5f805460ff60a01b1916815560405133917faeb196d352664784d1900b0e7414a8face7d29f4dae8c4b0cf68ed477423bbf491a2565b60405163542db44960e01b8152600481018290525f9081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063542db449906024016020604051808303815f875af11580156111cc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111f09190612d37565b905080156112915760405163388fdbed60e21b8152336004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e23f6fb49060019060440160206040518083038185885af1158015611265573d5f5f3e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061128a9190612d37565b9150611325565b60405163388fdbed60e21b8152336004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e23f6fb490349060440160206040518083038185885af11580156112fd573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906113229190612d37565b91505b50919050565b6002805461089590612c09565b5f546001600160a01b03163314611376575f5460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610b00565b6006805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517ff8e76e8a7c35558598a944d509f1ed32b104e77b1098ef1dfa5b97b86b09df8f905f90a250565b5f6113d56121a5565b7fde64b4c9fac43e1615e938b03573b078604f57b4d2e78d3a27d7b20ba017e126888888888860405160200161140c929190612e25565b60408051601f198184030181528282528051602091820120908301969096526001600160a01b0394851690820152929091166060830152608082015260a081019190915260c0810184905260e0016040516020818303038152906040528051906020012060405160200161149792919061190160f01b81526002810192909252602282015260420190565b6040516020818303038152906040528051906020012090505b9695505050505050565b5f5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166325e1afc3856040518263ffffffff1660e01b815260040161150b91815260200190565b6020604051808303815f875af1158015611527573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154b9190612de4565b60405163ccc9305d60e01b8152336004820152602481018690529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ccc9305d90604401610e37565b5f546001600160a01b031633146115df575f5460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610b00565b5f805460ff60a01b1916600160a01b17815560405133917f5ee71a369c8672edded508e624ffc9257fa1ae6886ef32905c18e60196bca39991a2565b5f6116246121a5565b604080517f92b2008d2a99f26809ac9d1989fe92334aa84124767331997ba0eec16050ecf460208201526001600160a01b038089169282019290925290861660608201526080810185905260a0810184905260c001604051602081830303815290604052805190602001206040516020016116b692919061190160f01b81526002810192909252602282015260420190565b604051602081830303815290604052805190602001209050949350505050565b5f546001600160a01b03163314611714575f5460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610b00565b6001600160a01b03811661173b5760405163d92e233d60e01b815260040160405180910390fd5b5f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117825560405190917f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b91a250565b5f6001600160a01b0387166117b75760405163d92e233d60e01b815260040160405180910390fd5b835173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03891601611978575f5b81811015611864575f8682815181106117fb576117fb612e49565b60200260200101515f015163ffffffff1611801561183e575085818151811061182657611826612e49565b6020026020010151602001516001600160601b03165f145b1561185c57604051637c946ed760e01b815260040160405180910390fd5b6001016117e0565b5060405163197f329f60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cbf994f8906118bb9033908b908b908b908b908b90600401612ea8565b6020604051808303815f875af11580156118d7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118fb9190612d37565b604051630be6cc4b60e31b8152600481018590529092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635f366258906024015f604051808303815f87803b15801561195d575f5ffd5b505af115801561196f573d5f5f3e3d5ffd5b50505050611bcf565b5f8167ffffffffffffffff81111561199257611992612580565b6040519080825280602002602001820160405280156119bb578160200160208202803683370190505b5090505f5b82811015611ab4575f8782815181106119db576119db612e49565b60200260200101515f015163ffffffff161115611aac57868181518110611a0457611a04612e49565b6020026020010151602001516001600160601b03165f03611a3857604051637c946ed760e01b815260040160405180910390fd5b868181518110611a4a57611a4a612e49565b6020026020010151602001516001600160601b0316828281518110611a7157611a71612e49565b6020026020010181815250506001878281518110611a9157611a91612e49565b6020908102919091018101516001600160601b039092169101525b6001016119c0565b5060405163197f329f60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cbf994f890611b0b9033908c908c908c908c908c90600401612ea8565b6020604051808303815f875af1158015611b27573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b4b9190612d37565b6040516338f3a6a160e21b81529093506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e3ce9a8490611ba09087908d908c908790600401612efd565b5f604051808303815f87803b158015611bb7575f5ffd5b505af1158015611bc9573d5f5f3e3d5ffd5b50505050505b509695505050505050565b6006545f906001600160a01b031615611c7e576006546040516356a7b60760e01b8152600481018690523360248201526001600160a01b03909116906356a7b60790604401602060405180830381865afa158015611c3a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c5e9190612d37565b611c7e576040516322ddebd960e21b815260048101859052602401610b00565b60405163dc4f8bc560e01b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063dc4f8bc590611cd090339089908890600401612cf8565b6020604051808303815f875af1158015611cec573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d109190612d37565b90508015611dc9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dff7672460016001600160601b03168651611d5e9190612d50565b338888886040518663ffffffff1660e01b8152600401611d819493929190612da0565b60206040518083038185885af1158015611d9d573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611dc29190612d37565b9150611e61565b6040516337fdd9c960e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063dff76724903490611e1d9033908a908a908a90600401612da0565b60206040518083038185885af1158015611e39573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611e5e9190612d37565b91505b509392505050565b5f8054600160a01b900460ff1615611e94576040516313d0ff5960e31b815260040160405180910390fd5b6001600160a01b038616611ebb5760405163d92e233d60e01b815260040160405180910390fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03871601611f7b5760405163fbdeb3d760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fbdeb3d790611f34908a908990899089908990600401612f67565b6020604051808303815f875af1158015611f50573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f749190612de4565b90506114b0565b82515f8167ffffffffffffffff811115611f9757611f97612580565b604051908082528060200260200182016040528015611fc0578160200160208202803683370190505b5090505f5b8281101561208e57858181518110611fdf57611fdf612e49565b6020026020010151602001516001600160601b03165f0361201357604051637c946ed760e01b815260040160405180910390fd5b85818151811061202557612025612e49565b6020026020010151602001516001600160601b031682828151811061204c5761204c612e49565b602002602001018181525050600186828151811061206c5761206c612e49565b6020908102919091018101516001600160601b03909216910152600101611fc5565b5060405163fbdeb3d760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fbdeb3d7906120e3908c908b908b908b908b90600401612f67565b6020604051808303815f875af11580156120ff573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121239190612de4565b6040516338f3a6a160e21b81529093506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e3ce9a8490611ba09086908c908b908790600401612efd565b6001600160a01b0382165f90815260056020908152604080832084845290915290205460ff165b92915050565b5f7f0000000000000000000000000000000000000000000000000000000000000000461461227957612274604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0383166122c55760405163e63f571f60e01b815260040160405180910390fd5b80516041146122ee578051604051631d9f5a5f60e01b8152610b00918391604190600401612fb9565b5f8160408151811061230257612302612e49565b016020015160f81c905060048110801561232457506001600160a01b0384163b155b1561233757612334601b82612fdd565b90505b602082015160408301515f60ff84166004036124095750604051630b135d3f60e11b80825283916001600160a01b03831690631626ba7e9061237f908a908a90600401612ff6565b602060405180830381865afa15801561239a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123be9190613016565b7fffffffff0000000000000000000000000000000000000000000000000000000016146124045780868660405163694d54dd60e01b8152600401610b0093929190613055565b6124bd565b8360ff1660050361246057506001600160a01b0382165f908152600560209081526040808320888452909152902054829060ff16612404578086866040516312cf832560e01b8152600401610b0093929190613055565b604080515f81526020810180835288905260ff861691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa1580156124b0573d5f5f3e3d5ffd5b5050506020604051035190505b866001600160a01b0316816001600160a01b0316146125025760405163a806216d60e01b81526001600160a01b03808316600483015288166024820152604401610b00565b50505050505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61254b602083018461250b565b9392505050565b5f60208284031215612562575f5ffd5b5035919050565b6001600160a01b038116811461257d575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156125b7576125b7612580565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156125e6576125e6612580565b604052919050565b5f82601f8301126125fd575f5ffd5b813567ffffffffffffffff81111561261757612617612580565b61262a601f8201601f19166020016125bd565b81815284602083860101111561263e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f6060848603121561266c575f5ffd5b83359250602084013561267e81612569565b9150604084013567ffffffffffffffff811115612699575f5ffd5b6126a5868287016125ee565b9150509250925092565b5f67ffffffffffffffff8211156126c8576126c8612580565b5060051b60200190565b5f82601f8301126126e1575f5ffd5b81356126f46126ef826126af565b6125bd565b8082825260208201915060208360051b860101925085831115612715575f5ffd5b602085015b8381101561273b57803561272d81612569565b83526020928301920161271a565b5095945050505050565b803563ffffffff81168114612758575f5ffd5b919050565b5f82601f83011261276c575f5ffd5b813561277a6126ef826126af565b8082825260208201915060208360051b86010192508583111561279b575f5ffd5b602085015b8381101561273b576127b181612745565b8352602092830192016127a0565b5f5f5f5f5f60a086880312156127d3575f5ffd5b85356127de81612569565b945060208601359350604086013567ffffffffffffffff811115612800575f5ffd5b61280c888289016126d2565b935050606086013567ffffffffffffffff811115612828575f5ffd5b6128348882890161275d565b925050608086013567ffffffffffffffff811115612850575f5ffd5b61285c888289016125ee565b9150509295509295909350565b5f5f5f6060848603121561287b575f5ffd5b833561288681612569565b925060208401359150604084013567ffffffffffffffff811115612699575f5ffd5b5f5f604083850312156128b9575f5ffd5b82356128c481612569565b946020939093013593505050565b5f602082840312156128e2575f5ffd5b813561254b81612569565b5f5f5f5f5f5f60c08789031215612902575f5ffd5b863561290d81612569565b9550602087013561291d81612569565b945060408701359350606087013567ffffffffffffffff81111561293f575f5ffd5b61294b89828a016126d2565b935050608087013567ffffffffffffffff811115612967575f5ffd5b61297389828a0161275d565b9699959850939692959460a09093013593505050565b5f5f5f5f6080858703121561299c575f5ffd5b84356129a781612569565b935060208501356129b781612569565b93969395505050506040820135916060013590565b5f82601f8301126129db575f5ffd5b81356129e96126ef826126af565b8082825260208201915060208360061b860101925085831115612a0a575f5ffd5b602085015b8381101561273b5760408188031215612a26575f5ffd5b612a2e612594565b612a3782612745565b815260208201356001600160601b0381168114612a52575f5ffd5b6020828101919091529084529290920191604001612a0f565b5f5f5f5f5f5f60c08789031215612a80575f5ffd5b8635612a8b81612569565b955060208701359450604087013567ffffffffffffffff811115612aad575f5ffd5b612ab989828a0161275d565b945050606087013567ffffffffffffffff811115612ad5575f5ffd5b612ae189828a016129cc565b935050612af060808801612745565b9598949750929591949360a090920135925050565b5f5f5f60608486031215612b17575f5ffd5b83359250602084013567ffffffffffffffff811115612b34575f5ffd5b612b40868287016126d2565b925050604084013567ffffffffffffffff811115612b5c575f5ffd5b6126a58682870161275d565b5f5f5f5f5f5f60c08789031215612b7d575f5ffd5b8635612b8881612569565b95506020870135612b9881612569565b945060408701359350606087013567ffffffffffffffff811115612bba575f5ffd5b612bc689828a0161275d565b935050608087013567ffffffffffffffff811115612be2575f5ffd5b612bee89828a016129cc565b925050612bfd60a08801612745565b90509295509295509295565b600181811c90821680612c1d57607f821691505b60208210810361132557634e487b7160e01b5f52602260045260245ffd5b6001600160a01b03851681528360208201526001600160a01b0383166040820152608060608201525f6114b0608083018461250b565b5f60208284031215612c81575f5ffd5b815161254b81612569565b634e487b7160e01b5f52601160045260245ffd5b5f60018201612cb157612cb1612c8c565b5060010190565b5f8151808452602084019350602083015f5b82811015612cee57815163ffffffff16865260209586019590910190600101612cca565b5093949350505050565b6001600160a01b0384168152826020820152606060408201525f612d1f6060830184612cb8565b95945050505050565b80518015158114612758575f5ffd5b5f60208284031215612d47575f5ffd5b61254b82612d28565b808202811582820484141761219f5761219f612c8c565b5f8151808452602084019350602083015f5b82811015612cee5781516001600160a01b0316865260209586019590910190600101612d79565b6001600160a01b0385168152836020820152608060408201525f612dc76080830185612d67565b8281036060840152612dd98185612cb8565b979650505050505050565b5f60208284031215612df4575f5ffd5b5051919050565b5f5f60408385031215612e0c575f5ffd5b612e1583612d28565b6020939093015192949293505050565b604081525f612e376040830185612d67565b8281036020840152611e5e8185612cb8565b634e487b7160e01b5f52603260045260245ffd5b5f8151808452602084019350602083015f5b82811015612cee578151805163ffffffff1687526020908101516001600160601b03168188015260409096019590910190600101612e6f565b6001600160a01b038716815285602082015260c060408201525f612ecf60c0830187612cb8565b8281036060840152612ee18187612e5d565b63ffffffff959095166080840152505060a00152949350505050565b8481526001600160a01b0384166020820152608060408201525f612f246080830185612cb8565b8281036060840152835180825260208086019201905f5b81811015612f59578351835260209384019390920191600101612f3b565b509098975050505050505050565b6001600160a01b038616815284602082015260a060408201525f612f8e60a0830186612cb8565b8281036060840152612fa08186612e5d565b91505063ffffffff831660808301529695505050505050565b606081525f612fcb606083018661250b565b60208301949094525060400152919050565b60ff818116838216019081111561219f5761219f612c8c565b828152604060208201525f61300e604083018461250b565b949350505050565b5f60208284031215613026575f5ffd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811461254b575f5ffd5b6001600160a01b0384168152826020820152606060408201525f612d1f606083018461250b56fea26469706673582212206c65a933c6d2ec39728095684a54cab5154d2039cac6bced964d6dc1be550cc064736f6c634300081c0033", + "deployedBytecode": "0x608060405260043610610291575f3560e01c8063757b115611610165578063cbcf252a116100c6578063e5da07531161007c578063f172a4ce11610062578063f172a4ce146107ef578063f5dcb7bb14610822578063f698da2514610855575f5ffd5b8063e5da0753146107bc578063ed24911d146107db575f5ffd5b8063d03ca40a116100ac578063d03ca40a14610757578063dc1d95251461076a578063e42cdd7c1461079d575f5ffd5b8063cbcf252a14610705578063cbf994f814610738575f5ffd5b8063948879111161011b578063a2e2ad7e11610101578063a2e2ad7e1461068d578063a6a7187f146106c7578063a6f9dae1146106e6575f5ffd5b806394887911146106275780639a8a05921461065a575f5ffd5b80638456cb591161014b5780638456cb59146105ca5780638a39fa16146105de5780638da5cb5b14610609575f5ffd5b8063757b11561461058c5780637a828b28146105ab575f5ffd5b806328f223421161020f5780635405ecb9116101c557806356bda507116101ab57806356bda50714610522578063599be46f1461054e5780635c975abb1461056d575f5ffd5b80635405ecb9146104d457806354fd4d501461050e575f5ffd5b80633f4ba83a116101f55780633f4ba83a1461048257806341b60677146104965780634d5a5827146104c1575f5ffd5b806328f223421461042a5780633af5d04e14610449575f5ffd5b80631878d1f11161026457806321561bfc1161024a57806321561bfc146103a257806327de9e32146103c157806328714051146103f7575f5ffd5b80631878d1f1146103585780631ee81fb51461037f575f5ffd5b806306fdde031461029557806307a3e0a8146102bf5780630d0d57a8146102e0578063152b5c0f14610317575b5f5ffd5b3480156102a0575f5ffd5b506102a9610888565b6040516102b69190612539565b60405180910390f35b3480156102ca575f5ffd5b506102de6102d9366004612552565b610914565b005b3480156102eb575f5ffd5b506102ff6102fa36600461265a565b61096c565b6040516001600160a01b0390911681526020016102b6565b348015610322575f5ffd5b5061034a7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016102b6565b348015610363575f5ffd5b506102ff73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b61039261038d3660046127bf565b610a3d565b60405190151581526020016102b6565b3480156103ad575f5ffd5b506006546102ff906001600160a01b031681565b3480156103cc575f5ffd5b506103e06103db366004612552565b610d51565b6040805192151583526020830191909152016102b6565b348015610402575f5ffd5b506102ff7f000000000000000000000000000000000000000000000000000000000000000081565b348015610435575f5ffd5b506103e0610444366004612869565b610e8b565b348015610454575f5ffd5b506103926104633660046128a8565b600560209081525f928352604080842090915290825290205460ff1681565b34801561048d575f5ffd5b506102de6110f0565b3480156104a1575f5ffd5b5061034a6104b0366004612552565b60046020525f908152604090205481565b6103926104cf366004612552565b611164565b3480156104df575f5ffd5b5061034a6104ee3660046128a8565b60a01b6001600160a01b03909116175f9081526003602052604090205490565b348015610519575f5ffd5b506102a961132b565b34801561052d575f5ffd5b50610536600181565b6040516001600160601b0390911681526020016102b6565b348015610559575f5ffd5b506102de6105683660046128d2565b611338565b348015610578575f5ffd5b505f5461039290600160a01b900460ff1681565b348015610597575f5ffd5b5061034a6105a63660046128ed565b6113cc565b3480156105b6575f5ffd5b506103e06105c5366004612552565b6114ba565b3480156105d5575f5ffd5b506102de6115a1565b3480156105e9575f5ffd5b5061034a6105f8366004612552565b60036020525f908152604090205481565b348015610614575f5ffd5b505f546102ff906001600160a01b031681565b348015610632575f5ffd5b5061034a7f92b2008d2a99f26809ac9d1989fe92334aa84124767331997ba0eec16050ecf481565b348015610665575f5ffd5b5061034a7f000000000000000000000000000000000000000000000000000000000000000081565b348015610698575f5ffd5b5061034a6106a73660046128a8565b60a01b6001600160a01b03909116175f9081526004602052604090205490565b3480156106d2575f5ffd5b5061034a6106e1366004612989565b61161b565b3480156106f1575f5ffd5b506102de6107003660046128d2565b6116d6565b348015610710575f5ffd5b506102ff7f000000000000000000000000000000000000000000000000000000000000000081565b348015610743575f5ffd5b50610392610752366004612a6b565b61178f565b610392610765366004612b05565b611bda565b348015610775575f5ffd5b5061034a7fde64b4c9fac43e1615e938b03573b078604f57b4d2e78d3a27d7b20ba017e12681565b3480156107a8575f5ffd5b5061034a6107b7366004612b68565b611e69565b3480156107c7575f5ffd5b506103926107d63660046128a8565b612178565b3480156107e6575f5ffd5b5061034a6121a5565b3480156107fa575f5ffd5b5061034a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561082d575f5ffd5b5061034a7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b348015610860575f5ffd5b5061034a7f000000000000000000000000000000000000000000000000000000000000000081565b6001805461089590612c09565b80601f01602080910402602001604051908101604052809291908181526020018280546108c190612c09565b801561090c5780601f106108e35761010080835404028352916020019161090c565b820191905f5260205f20905b8154815290600101906020018083116108ef57829003601f168201915b505050505081565b335f818152600560209081526040808320858452825291829020805460ff1916600117905590518381527f85eb1f050732417c0566422b6004a6c5cbded9ded1a406de04060719af52a13a910160405180910390a250565b60405163f908bc7760e01b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f908bc77906109c0903390889088908890600401612c3b565b6020604051808303815f875af11580156109dc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a009190612c71565b6040519091506001600160a01b038216907fec97633905b1dbe9773a7536e9a986dcf89803e1193934b7b6d76587c68beb40905f90a29392505050565b6040516331a9108f60e11b8152600481018590525f9081906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610aa4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac89190612c71565b9050336001600160a01b03821614610b095760405163521eb56d60e11b81523360048201526001600160a01b03821660248201526044015b60405180910390fd5b60a086901b6001600160a01b038816175f8181526004602052604081205490610b368a858b8b8b876113cc565b9050610b438a828861229e565b81610b4d81612ca0565b5f8581526004602081905260408083208490555163dc4f8bc560e01b81529295509092506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163dc4f8bc591610bb2918f918f918e9101612cf8565b6020604051808303815f875af1158015610bce573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf29190612d37565b90508015610cab577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dff7672460016001600160601b03168b51610c409190612d50565b8d8d8d8d6040518663ffffffff1660e01b8152600401610c639493929190612da0565b60206040518083038185885af1158015610c7f573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610ca49190612d37565b9550610d43565b6040516337fdd9c960e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063dff76724903490610cff908f908f908f908f90600401612da0565b60206040518083038185885af1158015610d1b573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d409190612d37565b95505b505050505095945050505050565b60405163161e984960e31b8152336004820152602481018290525f90819081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b0f4c248906044016020604051808303815f875af1158015610dc1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610de59190612de4565b6040516352e82ce560e11b8152336004820152602481018690529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a5d059ca906044015b60408051808303815f875af1158015610e52573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e769190612dfb565b90935091508015610e85578091505b50915091565b5f5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e866040518263ffffffff1660e01b8152600401610edc91815260200190565b602060405180830381865afa158015610ef7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f1b9190612c71565b9050336001600160a01b03821614610f575760405163521eb56d60e11b81523360048201526001600160a01b0382166024820152604401610b00565b60a085901b6001600160a01b038716175f8181526003602052604081205490610f8289858a8561161b565b9050610f8f89828961229e565b81610f9981612ca0565b5f858152600360205260408082208390555163161e984960e31b81526001600160a01b038d81166004830152602482018d90529295509092507f00000000000000000000000000000000000000000000000000000000000000009091169063b0f4c248906044016020604051808303815f875af115801561101c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110409190612de4565b6040516352e82ce560e11b81526001600160a01b038c81166004830152602482018c90529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a5d059ca9060440160408051808303815f875af11580156110b0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d49190612dfb565b909750955080156110e3578095505b5050505050935093915050565b5f546001600160a01b0316331461112e575f5460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610b00565b5f805460ff60a01b1916815560405133917faeb196d352664784d1900b0e7414a8face7d29f4dae8c4b0cf68ed477423bbf491a2565b60405163542db44960e01b8152600481018290525f9081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063542db449906024016020604051808303815f875af11580156111cc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111f09190612d37565b905080156112915760405163388fdbed60e21b8152336004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e23f6fb49060019060440160206040518083038185885af1158015611265573d5f5f3e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061128a9190612d37565b9150611325565b60405163388fdbed60e21b8152336004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e23f6fb490349060440160206040518083038185885af11580156112fd573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906113229190612d37565b91505b50919050565b6002805461089590612c09565b5f546001600160a01b03163314611376575f5460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610b00565b6006805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517ff8e76e8a7c35558598a944d509f1ed32b104e77b1098ef1dfa5b97b86b09df8f905f90a250565b5f6113d56121a5565b7fde64b4c9fac43e1615e938b03573b078604f57b4d2e78d3a27d7b20ba017e126888888888860405160200161140c929190612e25565b60408051601f198184030181528282528051602091820120908301969096526001600160a01b0394851690820152929091166060830152608082015260a081019190915260c0810184905260e0016040516020818303038152906040528051906020012060405160200161149792919061190160f01b81526002810192909252602282015260420190565b6040516020818303038152906040528051906020012090505b9695505050505050565b5f5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166325e1afc3856040518263ffffffff1660e01b815260040161150b91815260200190565b6020604051808303815f875af1158015611527573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154b9190612de4565b60405163ccc9305d60e01b8152336004820152602481018690529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ccc9305d90604401610e37565b5f546001600160a01b031633146115df575f5460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610b00565b5f805460ff60a01b1916600160a01b17815560405133917f5ee71a369c8672edded508e624ffc9257fa1ae6886ef32905c18e60196bca39991a2565b5f6116246121a5565b604080517f92b2008d2a99f26809ac9d1989fe92334aa84124767331997ba0eec16050ecf460208201526001600160a01b038089169282019290925290861660608201526080810185905260a0810184905260c001604051602081830303815290604052805190602001206040516020016116b692919061190160f01b81526002810192909252602282015260420190565b604051602081830303815290604052805190602001209050949350505050565b5f546001600160a01b03163314611714575f5460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610b00565b6001600160a01b03811661173b5760405163d92e233d60e01b815260040160405180910390fd5b5f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117825560405190917f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b91a250565b5f6001600160a01b0387166117b75760405163d92e233d60e01b815260040160405180910390fd5b835173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03891601611978575f5b81811015611864575f8682815181106117fb576117fb612e49565b60200260200101515f015163ffffffff1611801561183e575085818151811061182657611826612e49565b6020026020010151602001516001600160601b03165f145b1561185c57604051637c946ed760e01b815260040160405180910390fd5b6001016117e0565b5060405163197f329f60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cbf994f8906118bb9033908b908b908b908b908b90600401612ea8565b6020604051808303815f875af11580156118d7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118fb9190612d37565b604051630be6cc4b60e31b8152600481018590529092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635f366258906024015f604051808303815f87803b15801561195d575f5ffd5b505af115801561196f573d5f5f3e3d5ffd5b50505050611bcf565b5f8167ffffffffffffffff81111561199257611992612580565b6040519080825280602002602001820160405280156119bb578160200160208202803683370190505b5090505f5b82811015611ab4575f8782815181106119db576119db612e49565b60200260200101515f015163ffffffff161115611aac57868181518110611a0457611a04612e49565b6020026020010151602001516001600160601b03165f03611a3857604051637c946ed760e01b815260040160405180910390fd5b868181518110611a4a57611a4a612e49565b6020026020010151602001516001600160601b0316828281518110611a7157611a71612e49565b6020026020010181815250506001878281518110611a9157611a91612e49565b6020908102919091018101516001600160601b039092169101525b6001016119c0565b5060405163197f329f60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cbf994f890611b0b9033908c908c908c908c908c90600401612ea8565b6020604051808303815f875af1158015611b27573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b4b9190612d37565b6040516338f3a6a160e21b81529093506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e3ce9a8490611ba09087908d908c908790600401612efd565b5f604051808303815f87803b158015611bb7575f5ffd5b505af1158015611bc9573d5f5f3e3d5ffd5b50505050505b509695505050505050565b6006545f906001600160a01b031615611c7e576006546040516356a7b60760e01b8152600481018690523360248201526001600160a01b03909116906356a7b60790604401602060405180830381865afa158015611c3a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c5e9190612d37565b611c7e576040516322ddebd960e21b815260048101859052602401610b00565b60405163dc4f8bc560e01b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063dc4f8bc590611cd090339089908890600401612cf8565b6020604051808303815f875af1158015611cec573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d109190612d37565b90508015611dc9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dff7672460016001600160601b03168651611d5e9190612d50565b338888886040518663ffffffff1660e01b8152600401611d819493929190612da0565b60206040518083038185885af1158015611d9d573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611dc29190612d37565b9150611e61565b6040516337fdd9c960e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063dff76724903490611e1d9033908a908a908a90600401612da0565b60206040518083038185885af1158015611e39573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611e5e9190612d37565b91505b509392505050565b5f8054600160a01b900460ff1615611e94576040516313d0ff5960e31b815260040160405180910390fd5b6001600160a01b038616611ebb5760405163d92e233d60e01b815260040160405180910390fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03871601611f7b5760405163fbdeb3d760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fbdeb3d790611f34908a908990899089908990600401612f67565b6020604051808303815f875af1158015611f50573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f749190612de4565b90506114b0565b82515f8167ffffffffffffffff811115611f9757611f97612580565b604051908082528060200260200182016040528015611fc0578160200160208202803683370190505b5090505f5b8281101561208e57858181518110611fdf57611fdf612e49565b6020026020010151602001516001600160601b03165f0361201357604051637c946ed760e01b815260040160405180910390fd5b85818151811061202557612025612e49565b6020026020010151602001516001600160601b031682828151811061204c5761204c612e49565b602002602001018181525050600186828151811061206c5761206c612e49565b6020908102919091018101516001600160601b03909216910152600101611fc5565b5060405163fbdeb3d760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fbdeb3d7906120e3908c908b908b908b908b90600401612f67565b6020604051808303815f875af11580156120ff573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121239190612de4565b6040516338f3a6a160e21b81529093506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e3ce9a8490611ba09086908c908b908790600401612efd565b6001600160a01b0382165f90815260056020908152604080832084845290915290205460ff165b92915050565b5f7f0000000000000000000000000000000000000000000000000000000000000000461461227957612274604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0383166122c55760405163e63f571f60e01b815260040160405180910390fd5b80516041146122ee578051604051631d9f5a5f60e01b8152610b00918391604190600401612fb9565b5f8160408151811061230257612302612e49565b016020015160f81c905060048110801561232457506001600160a01b0384163b155b1561233757612334601b82612fdd565b90505b602082015160408301515f60ff84166004036124095750604051630b135d3f60e11b80825283916001600160a01b03831690631626ba7e9061237f908a908a90600401612ff6565b602060405180830381865afa15801561239a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123be9190613016565b7fffffffff0000000000000000000000000000000000000000000000000000000016146124045780868660405163694d54dd60e01b8152600401610b0093929190613055565b6124bd565b8360ff1660050361246057506001600160a01b0382165f908152600560209081526040808320888452909152902054829060ff16612404578086866040516312cf832560e01b8152600401610b0093929190613055565b604080515f81526020810180835288905260ff861691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa1580156124b0573d5f5f3e3d5ffd5b5050506020604051035190505b866001600160a01b0316816001600160a01b0316146125025760405163a806216d60e01b81526001600160a01b03808316600483015288166024820152604401610b00565b50505050505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61254b602083018461250b565b9392505050565b5f60208284031215612562575f5ffd5b5035919050565b6001600160a01b038116811461257d575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156125b7576125b7612580565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156125e6576125e6612580565b604052919050565b5f82601f8301126125fd575f5ffd5b813567ffffffffffffffff81111561261757612617612580565b61262a601f8201601f19166020016125bd565b81815284602083860101111561263e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f6060848603121561266c575f5ffd5b83359250602084013561267e81612569565b9150604084013567ffffffffffffffff811115612699575f5ffd5b6126a5868287016125ee565b9150509250925092565b5f67ffffffffffffffff8211156126c8576126c8612580565b5060051b60200190565b5f82601f8301126126e1575f5ffd5b81356126f46126ef826126af565b6125bd565b8082825260208201915060208360051b860101925085831115612715575f5ffd5b602085015b8381101561273b57803561272d81612569565b83526020928301920161271a565b5095945050505050565b803563ffffffff81168114612758575f5ffd5b919050565b5f82601f83011261276c575f5ffd5b813561277a6126ef826126af565b8082825260208201915060208360051b86010192508583111561279b575f5ffd5b602085015b8381101561273b576127b181612745565b8352602092830192016127a0565b5f5f5f5f5f60a086880312156127d3575f5ffd5b85356127de81612569565b945060208601359350604086013567ffffffffffffffff811115612800575f5ffd5b61280c888289016126d2565b935050606086013567ffffffffffffffff811115612828575f5ffd5b6128348882890161275d565b925050608086013567ffffffffffffffff811115612850575f5ffd5b61285c888289016125ee565b9150509295509295909350565b5f5f5f6060848603121561287b575f5ffd5b833561288681612569565b925060208401359150604084013567ffffffffffffffff811115612699575f5ffd5b5f5f604083850312156128b9575f5ffd5b82356128c481612569565b946020939093013593505050565b5f602082840312156128e2575f5ffd5b813561254b81612569565b5f5f5f5f5f5f60c08789031215612902575f5ffd5b863561290d81612569565b9550602087013561291d81612569565b945060408701359350606087013567ffffffffffffffff81111561293f575f5ffd5b61294b89828a016126d2565b935050608087013567ffffffffffffffff811115612967575f5ffd5b61297389828a0161275d565b9699959850939692959460a09093013593505050565b5f5f5f5f6080858703121561299c575f5ffd5b84356129a781612569565b935060208501356129b781612569565b93969395505050506040820135916060013590565b5f82601f8301126129db575f5ffd5b81356129e96126ef826126af565b8082825260208201915060208360061b860101925085831115612a0a575f5ffd5b602085015b8381101561273b5760408188031215612a26575f5ffd5b612a2e612594565b612a3782612745565b815260208201356001600160601b0381168114612a52575f5ffd5b6020828101919091529084529290920191604001612a0f565b5f5f5f5f5f5f60c08789031215612a80575f5ffd5b8635612a8b81612569565b955060208701359450604087013567ffffffffffffffff811115612aad575f5ffd5b612ab989828a0161275d565b945050606087013567ffffffffffffffff811115612ad5575f5ffd5b612ae189828a016129cc565b935050612af060808801612745565b9598949750929591949360a090920135925050565b5f5f5f60608486031215612b17575f5ffd5b83359250602084013567ffffffffffffffff811115612b34575f5ffd5b612b40868287016126d2565b925050604084013567ffffffffffffffff811115612b5c575f5ffd5b6126a58682870161275d565b5f5f5f5f5f5f60c08789031215612b7d575f5ffd5b8635612b8881612569565b95506020870135612b9881612569565b945060408701359350606087013567ffffffffffffffff811115612bba575f5ffd5b612bc689828a0161275d565b935050608087013567ffffffffffffffff811115612be2575f5ffd5b612bee89828a016129cc565b925050612bfd60a08801612745565b90509295509295509295565b600181811c90821680612c1d57607f821691505b60208210810361132557634e487b7160e01b5f52602260045260245ffd5b6001600160a01b03851681528360208201526001600160a01b0383166040820152608060608201525f6114b0608083018461250b565b5f60208284031215612c81575f5ffd5b815161254b81612569565b634e487b7160e01b5f52601160045260245ffd5b5f60018201612cb157612cb1612c8c565b5060010190565b5f8151808452602084019350602083015f5b82811015612cee57815163ffffffff16865260209586019590910190600101612cca565b5093949350505050565b6001600160a01b0384168152826020820152606060408201525f612d1f6060830184612cb8565b95945050505050565b80518015158114612758575f5ffd5b5f60208284031215612d47575f5ffd5b61254b82612d28565b808202811582820484141761219f5761219f612c8c565b5f8151808452602084019350602083015f5b82811015612cee5781516001600160a01b0316865260209586019590910190600101612d79565b6001600160a01b0385168152836020820152608060408201525f612dc76080830185612d67565b8281036060840152612dd98185612cb8565b979650505050505050565b5f60208284031215612df4575f5ffd5b5051919050565b5f5f60408385031215612e0c575f5ffd5b612e1583612d28565b6020939093015192949293505050565b604081525f612e376040830185612d67565b8281036020840152611e5e8185612cb8565b634e487b7160e01b5f52603260045260245ffd5b5f8151808452602084019350602083015f5b82811015612cee578151805163ffffffff1687526020908101516001600160601b03168188015260409096019590910190600101612e6f565b6001600160a01b038716815285602082015260c060408201525f612ecf60c0830187612cb8565b8281036060840152612ee18187612e5d565b63ffffffff959095166080840152505060a00152949350505050565b8481526001600160a01b0384166020820152608060408201525f612f246080830185612cb8565b8281036060840152835180825260208086019201905f5b81811015612f59578351835260209384019390920191600101612f3b565b509098975050505050505050565b6001600160a01b038616815284602082015260a060408201525f612f8e60a0830186612cb8565b8281036060840152612fa08186612e5d565b91505063ffffffff831660808301529695505050505050565b606081525f612fcb606083018661250b565b60208301949094525060400152919050565b60ff818116838216019081111561219f5761219f612c8c565b828152604060208201525f61300e604083018461250b565b949350505050565b5f60208284031215613026575f5ffd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811461254b575f5ffd5b6001600160a01b0384168152826020820152606060408201525f612d1f606083018461250b56fea26469706673582212206c65a933c6d2ec39728095684a54cab5154d2039cac6bced964d6dc1be550cc064736f6c634300081c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/abis/0.8.28/ServiceRegistryL2.json b/abis/0.8.28/ServiceRegistryL2.json new file mode 100644 index 00000000..5c3eb0c6 --- /dev/null +++ b/abis/0.8.28/ServiceRegistryL2.json @@ -0,0 +1,1899 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ServiceRegistryL2", + "sourceName": "contracts/ServiceRegistryL2.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + }, + { + "internalType": "string", + "name": "_baseURI", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "AgentInstanceRegistered", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "AgentInstancesSlotsFilled", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + } + ], + "name": "AgentNotFound", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "AgentNotInService", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "componentId", + "type": "uint256" + } + ], + "name": "ComponentNotFound", + "type": "error" + }, + { + "inputs": [], + "name": "HashExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "sent", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "IncorrectAgentBondingValue", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "sent", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "IncorrectRegistrationDepositValue", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "manager", + "type": "address" + } + ], + "name": "ManagerOnly", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "provided", + "type": "address" + }, + { + "internalType": "address", + "name": "expected", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "OnlyOwnServiceMultisig", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "OperatorHasNoInstances", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "provided", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "Overflow", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnerOnly", + "type": "error" + }, + { + "inputs": [], + "name": "Paused", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuard", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "ServiceMustBeInactive", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TransferFailed", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "multisig", + "type": "address" + } + ], + "name": "UnauthorizedMultisig", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + } + ], + "name": "WrongAgentId", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numValues1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "numValues2", + "type": "uint256" + } + ], + "name": "WrongArrayLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "WrongOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "state", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "WrongServiceState", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "currentThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxThreshold", + "type": "uint256" + } + ], + "name": "WrongThreshold", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddress", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroValue", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "ActivateRegistration", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "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": false, + "internalType": "string", + "name": "baseURI", + "type": "string" + } + ], + "name": "BaseURIChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "multisig", + "type": "address" + } + ], + "name": "CreateMultisigWithAgents", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "configHash", + "type": "bytes32" + } + ], + "name": "CreateService", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "DeployService", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "drainer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Drain", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "drainer", + "type": "address" + } + ], + "name": "DrainerUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "manager", + "type": "address" + } + ], + "name": "ManagerUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "OperatorSlashed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "OperatorUnbond", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnerUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Refund", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "agentInstance", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + } + ], + "name": "RegisterInstance", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "TerminateService", + "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": "id", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "configHash", + "type": "bytes32" + } + ], + "name": "UpdateService", + "type": "event" + }, + { + "inputs": [], + "name": "CID_PREFIX", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "serviceOwner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "activateRegistration", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "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": [], + "name": "baseURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newDrainer", + "type": "address" + } + ], + "name": "changeDrainer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newManager", + "type": "address" + } + ], + "name": "changeManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "multisig", + "type": "address" + }, + { + "internalType": "bool", + "name": "permission", + "type": "bool" + } + ], + "name": "changeMultisigPermission", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "changeOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "serviceOwner", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "configHash", + "type": "bytes32" + }, + { + "internalType": "uint32[]", + "name": "agentIds", + "type": "uint32[]" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "slots", + "type": "uint32" + }, + { + "internalType": "uint96", + "name": "bond", + "type": "uint96" + } + ], + "internalType": "struct AgentParams[]", + "name": "agentParams", + "type": "tuple[]" + }, + { + "internalType": "uint32", + "name": "threshold", + "type": "uint32" + } + ], + "name": "create", + "outputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "serviceOwner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "multisigImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "deploy", + "outputs": [ + { + "internalType": "address", + "name": "multisig", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "drain", + "outputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "drainer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "unitId", + "type": "uint256" + } + ], + "name": "exists", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "getAgentInstances", + "outputs": [ + { + "internalType": "uint256", + "name": "numAgentInstances", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "agentInstances", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "getAgentParams", + "outputs": [ + { + "internalType": "uint256", + "name": "numAgentIds", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "slots", + "type": "uint32" + }, + { + "internalType": "uint96", + "name": "bond", + "type": "uint96" + } + ], + "internalType": "struct AgentParams[]", + "name": "agentParams", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + } + ], + "name": "getInstancesForAgentId", + "outputs": [ + { + "internalType": "uint256", + "name": "numAgentInstances", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "agentInstances", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "getOperatorBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "getPreviousHashes", + "outputs": [ + { + "internalType": "uint256", + "name": "numHashes", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "configHashes", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "getService", + "outputs": [ + { + "components": [ + { + "internalType": "uint96", + "name": "securityDeposit", + "type": "uint96" + }, + { + "internalType": "address", + "name": "multisig", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "configHash", + "type": "bytes32" + }, + { + "internalType": "uint32", + "name": "threshold", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "maxNumAgentInstances", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "numAgentInstances", + "type": "uint32" + }, + { + "internalType": "enum ServiceRegistryL2.ServiceState", + "name": "state", + "type": "uint8" + }, + { + "internalType": "uint32[]", + "name": "agentIds", + "type": "uint32[]" + } + ], + "internalType": "struct ServiceRegistryL2.Service", + "name": "service", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "manager", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "mapAgentInstanceOperators", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapConfigHashes", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "mapMultisigs", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapOperatorAndServiceIdAgentInstances", + "outputs": [ + { + "internalType": "address", + "name": "instance", + "type": "address" + }, + { + "internalType": "uint32", + "name": "agentId", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapOperatorAndServiceIdOperatorBalances", + "outputs": [ + { + "internalType": "uint96", + "name": "", + "type": "uint96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapServiceAndAgentIdAgentInstances", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapServiceAndAgentIdAgentParams", + "outputs": [ + { + "internalType": "uint32", + "name": "slots", + "type": "uint32" + }, + { + "internalType": "uint96", + "name": "bond", + "type": "uint96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapServices", + "outputs": [ + { + "internalType": "uint96", + "name": "securityDeposit", + "type": "uint96" + }, + { + "internalType": "address", + "name": "multisig", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "configHash", + "type": "bytes32" + }, + { + "internalType": "uint32", + "name": "threshold", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "maxNumAgentInstances", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "numAgentInstances", + "type": "uint32" + }, + { + "internalType": "enum ServiceRegistryL2.ServiceState", + "name": "state", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "agentInstances", + "type": "address[]" + }, + { + "internalType": "uint32[]", + "name": "agentIds", + "type": "uint32[]" + } + ], + "name": "registerAgents", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "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": "id", + "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": "string", + "name": "bURI", + "type": "string" + } + ], + "name": "setBaseURI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "agentInstances", + "type": "address[]" + }, + { + "internalType": "uint96[]", + "name": "amounts", + "type": "uint96[]" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "slash", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "slashedFunds", + "outputs": [ + { + "internalType": "uint96", + "name": "", + "type": "uint96" + } + ], + "stateMutability": "view", + "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": "address", + "name": "serviceOwner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "terminate", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "refund", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "unitId", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "unitId", + "type": "uint256" + } + ], + "name": "tokenURI", + "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": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "unbond", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "refund", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "serviceOwner", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "configHash", + "type": "bytes32" + }, + { + "internalType": "uint32[]", + "name": "agentIds", + "type": "uint32[]" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "slots", + "type": "uint32" + }, + { + "internalType": "uint96", + "name": "bond", + "type": "uint96" + } + ], + "internalType": "struct AgentParams[]", + "name": "agentParams", + "type": "tuple[]" + }, + { + "internalType": "uint32", + "name": "threshold", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "update", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040526001600a55348015610014575f5ffd5b5060405161595e38038061595e83398101604081905261003391610117565b82825f610040838261022a565b50600161004d828261022a565b506008915061005e9050828261022a565b5050600680546001600160a01b03191633179055506102e49050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261009d575f5ffd5b81516001600160401b038111156100b6576100b661007a565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100e4576100e461007a565b6040528181528382016020018510156100fb575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f60608486031215610129575f5ffd5b83516001600160401b0381111561013e575f5ffd5b61014a8682870161008e565b602086015190945090506001600160401b03811115610167575f5ffd5b6101738682870161008e565b604086015190935090506001600160401b03811115610190575f5ffd5b61019c8682870161008e565b9150509250925092565b600181811c908216806101ba57607f821691505b6020821081036101d857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561022557805f5260205f20601f840160051c810160208510156102035750805b601f840160051c820191505b81811015610222575f815560010161020f565b50505b505050565b81516001600160401b038111156102435761024361007a565b6102578161025184546101a6565b846101de565b6020601f821160018114610289575f83156102725750848201515b5f19600385901b1c1916600184901b178455610222565b5f84815260208120601f198516915b828110156102b85787850151825560209485019460019092019101610298565b50848210156102d557868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b61566d806102f15f395ff3fe608060405260043610610324575f3560e01c806370a08231116101a7578063a60e4c3c116100e7578063dff7672411610092578063ef0e239b1161006d578063ef0e239b14610ab1578063f908bc7714610add578063fbdeb3d714610afc578063ffa1ad7414610b1b575f5ffd5b8063dff7672414610a52578063e23f6fb414610a65578063e985e9c514610a78575f5ffd5b8063c87b56dd116100c2578063c87b56dd146109f5578063cbf994f814610a14578063ccc9305d14610a33575f5ffd5b8063a60e4c3c1461098a578063a6f9dae1146109b7578063b88d4fde146109d6575f5ffd5b80638a2bd86f116101525780639890220b1161012d5780639890220b14610902578063a22cb46514610916578063a3fbbaae14610935578063a5d059ca14610954575f5ffd5b80638a2bd86f1461088c5780638da5cb5b146108cf57806395d89b41146108ee575f5ffd5b80637c5e63e0116101825780637c5e63e01461081a57806382694b1d1461084e57806386a2bdd41461086d575f5ffd5b806370a0823114610799578063718934d8146107b857806373b8b6a2146107fb575f5ffd5b806342842e0e1161027257806355f804b31161021d5780636352211e116101f85780636352211e146106df57806363dd7615146106fe5780636c0360eb146107665780636f99f15c1461077a575f5ffd5b806355f804b31461067b57806357838e851461069a5780635e4507fa146106c0575f5ffd5b80634eb780da1161024d5780634eb780da146106095780634f558e791461063d5780634f6ccce71461065c575f5ffd5b806342842e0e146105ac578063481c6a75146105cb5780634d486f85146105ea575f5ffd5b806318160ddd116102d257806323b872dd116102ad57806323b872dd146104b457806342144854146104d35780634236aff81461051f575f5ffd5b806318160ddd146104375780631de286ba1461045a57806321e4f7bb14610487575f5ffd5b8063095ea7b311610302578063095ea7b3146103c957806310c6aa19146103ea57806317351f7e14610409575f5ffd5b806301ffc9a71461032857806306fdde031461035c578063081812fc1461037d575b5f5ffd5b348015610333575f5ffd5b50610347610342366004614810565b610b4b565b60405190151581526020015b60405180910390f35b348015610367575f5ffd5b50610370610b9c565b6040516103539190614860565b348015610388575f5ffd5b506103b1610397366004614872565b60046020525f90815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610353565b3480156103d4575f5ffd5b506103e86103e336600461489d565b610c27565b005b3480156103f5575f5ffd5b506103e86104043660046148c7565b610d0b565b348015610414575f5ffd5b506103476104233660046148c7565b60126020525f908152604090205460ff1681565b348015610442575f5ffd5b5061044c60095481565b604051908152602001610353565b348015610465575f5ffd5b50610479610474366004614872565b610dc3565b6040516103539291906148e2565b348015610492575f5ffd5b506104a66104a136600461494a565b611008565b6040516103539291906149ad565b3480156104bf575f5ffd5b506103e86104ce3660046149cd565b6110e6565b3480156104de575f5ffd5b506105076104ed366004614872565b60106020525f90815260409020546001600160601b031681565b6040516001600160601b039091168152602001610353565b34801561052a575f5ffd5b50610599610539366004614872565b60136020525f90815260409020805460018201546002909201546001600160601b03821692600160601b928390046001600160a01b031692909163ffffffff808216926401000000008304821692600160401b8104909216910460ff1687565b6040516103539796959493929190614a3f565b3480156105b7575f5ffd5b506103e86105c63660046149cd565b6112bb565b3480156105d6575f5ffd5b506007546103b1906001600160a01b031681565b3480156105f5575f5ffd5b506104a6610604366004614872565b6113ac565b348015610614575f5ffd5b506103b16106233660046148c7565b60116020525f90815260409020546001600160a01b031681565b348015610648575f5ffd5b50610347610657366004614872565b6114fa565b348015610667575f5ffd5b5061044c610676366004614872565b61151b565b348015610686575f5ffd5b506103e8610695366004614b61565b61155f565b3480156106a5575f5ffd5b50600b546103b190600160601b90046001600160a01b031681565b3480156106cb575f5ffd5b506103b16106da36600461494a565b611607565b3480156106ea575f5ffd5b506103b16106f9366004614872565b61163b565b348015610709575f5ffd5b50610742610718366004614872565b600e6020525f908152604090205463ffffffff81169064010000000090046001600160601b031682565b6040805163ffffffff90931683526001600160601b03909116602083015201610353565b348015610771575f5ffd5b5061037061169f565b348015610785575f5ffd5b50600b54610507906001600160601b031681565b3480156107a4575f5ffd5b5061044c6107b33660046148c7565b6116ac565b3480156107c3575f5ffd5b506107d76107d236600461494a565b61171e565b604080516001600160a01b03909316835263ffffffff909116602083015201610353565b348015610806575f5ffd5b50610347610815366004614c52565b611760565b348015610825575f5ffd5b506103706040518060400160405280600981526020016806630313730313232360bc1b81525081565b348015610859575f5ffd5b50610347610868366004614d1e565b611ba3565b348015610878575f5ffd5b5061044c61088736600461494a565b611c3a565b348015610897575f5ffd5b5061044c6108a636600461489d565b60a01b6001600160a01b03909116175f908152601060205260409020546001600160601b031690565b3480156108da575f5ffd5b506006546103b1906001600160a01b031681565b3480156108f9575f5ffd5b50610370611c65565b34801561090d575f5ffd5b5061044c611c72565b348015610921575f5ffd5b506103e8610930366004614d1e565b611dcb565b348015610940575f5ffd5b506103e861094f3660046148c7565b611e36565b34801561095f575f5ffd5b5061097361096e36600461489d565b611ee6565b604080519215158352602083019190915201610353565b348015610995575f5ffd5b506109a96109a4366004614872565b612366565b604051610353929190614d59565b3480156109c2575f5ffd5b506103e86109d13660046148c7565b6123c7565b3480156109e1575f5ffd5b506103e86109f0366004614d9a565b612477565b348015610a00575f5ffd5b50610370610a0f366004614872565b612559565b348015610a1f575f5ffd5b50610347610a2e366004614f3b565b6125d2565b348015610a3e575f5ffd5b50610973610a4d36600461489d565b612b46565b610347610a60366004614fd5565b612e91565b610347610a7336600461489d565b61346e565b348015610a83575f5ffd5b50610347610a92366004615055565b600560209081525f928352604080842090915290825290205460ff1681565b348015610abc575f5ffd5b50610ad0610acb366004614872565b6135e9565b60405161035391906150b7565b348015610ae8575f5ffd5b506103b1610af7366004615152565b613764565b348015610b07575f5ffd5b5061044c610b163660046151c1565b613b28565b348015610b26575f5ffd5b50610370604051806040016040528060058152602001640312e302e360dc1b81525081565b5f6301ffc9a760e01b6001600160e01b031983161480610b7b57506380ac58cd60e01b6001600160e01b03198316145b80610b965750635b5e139f60e01b6001600160e01b03198316145b92915050565b5f8054610ba890615251565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd490615251565b8015610c1f5780601f10610bf657610100808354040283529160200191610c1f565b820191905f5260205f20905b815481529060010190602001808311610c0257829003601f168201915b505050505081565b5f818152600260205260409020546001600160a01b031633811480610c6e57506001600160a01b0381165f90815260056020908152604080832033845290915290205460ff165b610cb05760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b5f8281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6006546001600160a01b03163314610d4b5760065460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610ca7565b6001600160a01b038116610d725760405163d92e233d60e01b815260040160405180910390fd5b600b80546001600160601b0316600160601b6001600160a01b038416908102919091179091556040517f8d1e8547016120917daad7f81c42b48f7fee379badc48f1889f0f43bb6194725905f90a250565b5f81815260136020908152604080832081516101008101835281546001600160601b03811682526001600160a01b03600160601b918290041694820194909452600182015492810192909252600281015463ffffffff808216606085810191909152640100000000830482166080860152600160401b830490911660a0850152938593929160c084019160ff9104166005811115610e6357610e63614a0b565b6005811115610e7457610e74614a0b565b815260200160038201805480602002602001604051908101604052809291908181526020018280548015610ef057602002820191905f5260205f20905f905b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610eb35790505b50505050508152505090508060e001515192508267ffffffffffffffff811115610f1c57610f1c614a9a565b604051908082528060200260200182016040528015610f6057816020015b604080518082019091525f8082526020820152815260200190600190039081610f3a5790505b5091505f5b83811015611001575f85905060208360e001518381518110610f8957610f89615289565b60209081029190910181015163ffffffff90811690921b929092175f818152600e845260409081902081518083019092525492831681526401000000009092046001600160601b0316928201929092528451859084908110610fed57610fed615289565b602090810291909101015250600101610f65565b5050915091565b602081811b83175f818152600f909252604090912054906060908267ffffffffffffffff81111561103b5761103b614a9a565b604051908082528060200260200182016040528015611064578160200160208202803683370190505b5091505f5b838110156110dd575f828152600f6020526040902080548290811061109057611090615289565b905f5260205f20015f9054906101000a90046001600160a01b03168382815181106110bd576110bd615289565b6001600160a01b0390921660209283029190910190910152600101611069565b50509250929050565b5f818152600260205260409020546001600160a01b0384811691161461114e5760405162461bcd60e51b815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610ca7565b6001600160a01b0382166111985760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610ca7565b336001600160a01b03841614806111d157506001600160a01b0383165f90815260056020908152604080832033845290915290205460ff165b806111f157505f818152600460205260409020546001600160a01b031633145b61122e5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610ca7565b6001600160a01b038084165f81815260036020908152604080832080545f19019055938616808352848320805460010190558583526002825284832080546001600160a01b03199081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6112c68383836110e6565b6001600160a01b0382163b156113a757604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401525f608484015290919084169063150b7a029060a4016020604051808303815f875af1158015611339573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061135d919061529d565b6001600160e01b031916146113a75760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610ca7565b505050565b5f81815260136020908152604080832081516101008101835281546001600160601b03811682526001600160a01b03600160601b918290041694820194909452600182015492810192909252600281015463ffffffff808216606085810191909152640100000000830482166080860152600160401b830490911660a0850152938593929160c084019160ff910416600581111561144c5761144c614a0b565b600581111561145d5761145d614a0b565b8152602001600382018054806020026020016040519081016040528092919081815260200182805480156114d957602002820191905f5260205f20905f905b82829054906101000a900463ffffffff1663ffffffff168152602001906004019060208260030104928301926001038202915080841161149c5790505b50505050508152505090506114ee8185613e1e565b91508151925050915091565b5f5f82118015610b9657506009546115139060016152cc565b821092915050565b5f6115278260016152cc565b905060095481111561155a57600954604051637ae5968560e01b8152610ca7918391600401918252602082015260400190565b919050565b6006546001600160a01b0316331461159f5760065460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610ca7565b80515f036115c057604051637c946ed760e01b815260040160405180910390fd5b60086115cc8282615323565b507f5411e8ebf1636d9e83d5fc4900bf80cbac82e8790da2a4c94db4895e889eedf6816040516115fc9190614860565b60405180910390a150565b600f602052815f5260405f208181548110611620575f80fd5b5f918252602090912001546001600160a01b03169150829050565b5f818152600260205260409020546001600160a01b03168061155a5760405162461bcd60e51b815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610ca7565b60088054610ba890615251565b5f6001600160a01b0382166117035760405162461bcd60e51b815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610ca7565b506001600160a01b03165f9081526003602052604090205490565b600d602052815f5260405f208181548110611737575f80fd5b5f918252602090912001546001600160a01b0381169250600160a01b900463ffffffff16905082565b5f81815260136020908152604080832081516101008101835281546001600160601b0381168252600160601b908190046001600160a01b031694820194909452600182015492810192909252600281015463ffffffff8082166060850152640100000000820481166080850152600160401b82041660a0840152849360c08401910460ff1660058111156117f6576117f6614a0b565b600581111561180757611807614a0b565b81526020016003820180548060200260200160405190810160405280929190818152602001828054801561188357602002820191905f5260205f20905f905b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116118465790505b5050505050815250509050600460058111156118a1576118a1614a0b565b8160c0015160058111156118b7576118b7614a0b565b146118f6578060c0015160058111156118d2576118d2614a0b565b604051633c053f9d60e21b8152600481019190915260248101849052604401610ca7565b835185511461192557845184516040516308151c1160e41b815260048101929092526024820152604401610ca7565b80602001516001600160a01b0316336001600160a01b0316146119795760208101516040516379f91cd360e01b81523360048201526001600160a01b03909116602482015260448101849052606401610ca7565b84515f5b81811015611b96575f60115f89848151811061199b5761199b615289565b6020908102919091018101516001600160a01b0390811683528282019390935260409182015f9081205490931660a08a901b81178085526010909252919092205489519193506001600160601b03169081908a90869081106119ff576119ff615289565b60200260200101516001611a1391906153de565b6001600160601b03161115611a6b57600b80548291905f90611a3f9084906001600160601b03166153de565b92506101000a8154816001600160601b0302191690836001600160601b031602179055505f9050611aee565b888481518110611a7d57611a7d615289565b6020908102919091010151600b80545f90611aa29084906001600160601b03166153de565b92506101000a8154816001600160601b0302191690836001600160601b03160217905550888481518110611ad857611ad8615289565b602002602001015181611aeb91906153fd565b90505b5f82815260106020526040902080546bffffffffffffffffffffffff19166001600160601b038316179055885188906001600160a01b038516907fa2e524bd0f71903485fbb3d6d50cb305f61005ceea2047c3ac92aa7e0d104306908c9088908110611b5c57611b5c615289565b6020026020010151604051611b8091906001600160601b0391909116815260200190565b60405180910390a350505080600101905061197d565b5060019695505050505050565b6006545f906001600160a01b03163314611be55760065460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610ca7565b6001600160a01b038316611c0c5760405163d92e233d60e01b815260040160405180910390fd5b506001600160a01b03919091165f908152601260205260409020805460ff1916911515919091179055600190565b600c602052815f5260405f208181548110611c53575f80fd5b905f5260205f20015f91509150505481565b60018054610ba890615251565b5f6001600a541115611c97576040516345f5ce8b60e11b815260040160405180910390fd5b6002600a55600b54600160601b90046001600160a01b03163314611ce957600b5460405163312d21ff60e11b8152336004820152600160601b9091046001600160a01b03166024820152604401610ca7565b50600b546001600160601b03168015611dc357600b80546bffffffffffffffffffffffff191690556040515f90339083908381818185875af1925050503d805f8114611d50576040519150601f19603f3d011682016040523d82523d5f602084013e611d55565b606091505b5050905080611d8c5760405163cd3f165960e01b81525f600482015230602482015233604482015260648101839052608401610ca7565b60405182815233907ff36f4d6622e16a536bbb049064af779cdd483a0b388d347d3752a65f1058bf5b9060200160405180910390a2505b6001600a5590565b335f8181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6006546001600160a01b03163314611e765760065460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610ca7565b6001600160a01b038116611e9d5760405163d92e233d60e01b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0383169081179091556040517f2c1c11af44aa5608f1dca38c00275c30ea091e02417d36e70e9a1538689c433d905f90a250565b5f5f6001600a541115611f0c576040516345f5ce8b60e11b815260040160405180910390fd5b6002600a556007546001600160a01b03163314611f515760075460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610ca7565b6001600160a01b038416611f785760405163d92e233d60e01b815260040160405180910390fd5b5f83815260136020526040902060056002820154600160601b900460ff166005811115611fa757611fa7614a0b565b14611ff0576002810154600160601b900460ff166005811115611fcc57611fcc614a0b565b604051633c053f9d60e21b8152600481019190915260248101859052604401610ca7565b60a084901b6001600160a01b038616175f818152600d6020908152604080832080548251818502810185019093528083529192909190849084015b82821015612076575f84815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b900463ffffffff168183015282526001909201910161202b565b5050825192935050505f8190036120b25760405163df2ddd7360e01b81526001600160a01b038916600482015260248101889052604401610ca7565b808460020160088282829054906101000a900463ffffffff166120d5919061541c565b92506101000a81548163ffffffff021916908363ffffffff1602179055508360020160089054906101000a900463ffffffff1663ffffffff165f0361212a5760028401805460ff60601b1916600160601b1790555b5f5b818110156121e3575f889050602084838151811061214c5761214c615289565b60209081029190910181015181015163ffffffff1690911b919091175f818152600e9092526040909120546121929064010000000090046001600160601b0316886152cc565b965060115f8584815181106121a9576121a9615289565b602090810291909101810151516001600160a01b031682528101919091526040015f2080546001600160a01b03191690555060010161212c565b505f838152600d602052604081206121fa916146d2565b5f838152601060205260409020546001600160601b03168086111561222657806001600160601b031695505b851561231b575f8481526010602052604080822080546bffffffffffffffffffffffff19169055516001600160a01b038b169088908381818185875af1925050503d805f8114612291576040519150601f19603f3d011682016040523d82523d5f602084013e612296565b606091505b50509050806122d65760405163cd3f165960e01b81525f60048201523060248201526001600160a01b038b16604482015260648101889052608401610ca7565b896001600160a01b03167fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d8860405161231191815260200190565b60405180910390a2505b60405188906001600160a01b038b16907f5ebf7fe30be09f0f03b9195632508d95c8b67bf010c93abda67f70d5d9599d1e905f90a350506001600a8190559793965092945050505050565b5f818152600c6020908152604080832080548251818502810185019093528083526060938301828280156123b757602002820191905f5260205f20905b8154815260200190600101908083116123a3575b5050505050905080519150915091565b6006546001600160a01b031633146124075760065460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610ca7565b6001600160a01b03811661242e5760405163d92e233d60e01b815260040160405180910390fd5b600680546001600160a01b0319166001600160a01b0383169081179091556040517f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b905f90a250565b6124828585856110e6565b6001600160a01b0384163b1561255257604051630a85bd0160e11b808252906001600160a01b0386169063150b7a02906124c89033908a90899089908990600401615438565b6020604051808303815f875af11580156124e4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612508919061529d565b6001600160e01b031916146125525760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610ca7565b5050505050565b5f818152601360205260408120600101546060915060086040518060400160405280600981526020016806630313730313232360bc1b81525061259b83613f51565b6125a8608085901b613f51565b6040516020016125bb949392919061548d565b604051602081830303815290604052915050919050565b6007545f906001600160a01b031633146126145760075460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610ca7565b5f61261e8361163b565b9050876001600160a01b0316816001600160a01b0316146126655760405163521eb56d60e11b81526001600160a01b03808a16600483015282166024820152604401610ca7565b5f83815260136020908152604080832081516101008101835281546001600160601b03811682526001600160a01b03600160601b918290041694820194909452600182015492810192909252600281015463ffffffff8082166060850152640100000000820481166080850152600160401b82041660a08401529192909160c084019160ff91041660058111156126fe576126fe614a0b565b600581111561270f5761270f614a0b565b81526020016003820180548060200260200160405190810160405280929190818152602001828054801561278b57602002820191905f5260205f20905f905b82829054906101000a900463ffffffff1663ffffffff168152602001906004019060208260030104928301926001038202915080841161274e5790505b5050505050815250509050600160058111156127a9576127a9614a0b565b8160c0015160058111156127bf576127bf614a0b565b146127da578060c001516005811115611fcc57611fcc614a0b565b6127e5888888614121565b63ffffffff851660608201525f60808201819052875167ffffffffffffffff81111561281357612813614a9a565b60405190808252806020026020018201604052801561283c578160200160208202803683370190505b5090505f885167ffffffffffffffff81111561285a5761285a614a9a565b60405190808252806020026020018201604052801561289e57816020015b604080518082019091525f80825260208201528152602001906001900390816128785790505b5090505f805b8a518110156129c4578981815181106128bf576128bf615289565b60200260200101515f015163ffffffff165f03612930575f88905060208c83815181106128ee576128ee615289565b60209081029190910181015163ffffffff1690911b919091175f908152600e9091526040902080546fffffffffffffffffffffffffffffffff191690556129bc565b8a818151811061294257612942615289565b602002602001015184838151811061295c5761295c615289565b602002602001019063ffffffff16908163ffffffff168152505089818151811061298857612988615289565b60200260200101518383815181106129a2576129a2615289565b602002602001018190525081806129b890615513565b9250505b6001016128a4565b5060408401518b81146129fa575f888152600c602090815260408083208054600181018255908452919092200182905585018c90525b612a07858585858c614227565b5f888152601360209081526040918290208751918801516001600160a01b0316600160601b9081026001600160601b03909316929092178155918701516001830155606087015160028301805460808a015160a08b015163ffffffff908116600160401b026bffffffff0000000000000000199282166401000000000267ffffffffffffffff199094169190951617919091179081168317825560c08a01518a9594909360ff60601b19166cffffffffff0000000000000000199092169190911790836005811115612adb57612adb614a0b565b021790555060e08201518051612afb9160038401916020909101906146f0565b50506040518d81528991507fff312ce131c4d73ac90ece91266be7090486c5e15f78b7ea2b108c36dfd475299060200160405180910390a25060019c9b505050505050505050505050565b5f5f6001600a541115612b6c576040516345f5ce8b60e11b815260040160405180910390fd5b6002600a556007546001600160a01b03163314612bb15760075460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610ca7565b5f612bbb8461163b565b9050846001600160a01b0316816001600160a01b031614612c025760405163521eb56d60e11b81526001600160a01b03808716600483015282166024820152604401610ca7565b5f84815260136020526040902060016002820154600160601b900460ff166005811115612c3157612c31614a0b565b1480612c5c575060056002820154600160601b900460ff166005811115612c5a57612c5a614a0b565b145b15612ca5576002810154600160601b900460ff166005811115612c8157612c81614a0b565b604051633c053f9d60e21b8152600481019190915260248101869052604401610ca7565b6002810154600160401b900463ffffffff1615612cdf5760028101805460ff60601b19166c05000000000000000000000000179055612cf5565b60028101805460ff60601b1916600160601b1790555b5f5b6003820154811015612d73575f8690506020836003018381548110612d1e57612d1e615289565b905f5260205f2090600891828204019190066004029054906101000a900463ffffffff1663ffffffff16901b81179050600f5f8281526020019081526020015f205f612d6a919061479c565b50600101612cf7565b5080546040516001600160601b0390911693505f906001600160a01b0388169085908381818185875af1925050503d805f8114612dcb576040519150601f19603f3d011682016040523d82523d5f602084013e612dd0565b606091505b5050905080612e105760405163cd3f165960e01b81525f60048201523060248201526001600160a01b038816604482015260648101859052608401610ca7565b866001600160a01b03167fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d85604051612e4b91815260200190565b60405180910390a260405186907fe45f5b9540df4f71b7e044809fa318806328c1ea2388a70c7373d97ccf8a0faa905f90a250506001600a819055959194509092505050565b6007545f906001600160a01b03163314612ed35760075460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610ca7565b8151835114612f0257825182516040516308151c1160e41b815260048101929092526024820152604401610ca7565b5f848152601360205260409020600280820154600160601b900460ff166005811115612f3057612f30614a0b565b14612f55576002810154600160601b900460ff166005811115612c8157612c81614a0b565b83515f805b82811015613041575f8890506020878381518110612f7a57612f7a615289565b60209081029190910181015163ffffffff90811690921b929092175f818152600e845260408082208151808301909252549384168082526401000000009094046001600160601b031694810194909452909291900361301a57878381518110612fe557612fe5615289565b60200260200101518a6040516332832be560e21b8152600401610ca792919063ffffffff929092168252602082015260400190565b6020810151613032906001600160601b0316856152cc565b93505050806001019050612f5a565b5080341461307257604051637ebbcab960e11b81523460048201526024810182905260448101889052606401610ca7565b6001600160a01b038881165f9081526011602052604090205416156130ad576040516322ddebd960e21b815260048101889052602401610ca7565b60a087901b6001600160a01b038916175f5b83811015613390575f8882815181106130da576130da615289565b602002602001015190505f8883815181106130f7576130f7615289565b60200260200101519050816001600160a01b03168c6001600160a01b031603613136576040516322ddebd960e21b8152600481018c9052602401610ca7565b6001600160a01b038281165f90815260116020526040902054161561318b576001600160a01b038281165f908152601160205260409081902054905163631695bd60e01b815291166004820152602401610ca7565b5f8b905060208a85815181106131a3576131a3615289565b60209081029190910181015163ffffffff90811690921b929092175f818152600e8452604080822054600f909552902054909290911690036131fb576040516304ad100760e21b8152600481018d9052602401610ca7565b5f818152600f602090815260408083208054600181810183559185528385200180546001600160a01b03808a166001600160a01b031990921682179092558a8652600d8552838620845180860190955290845263ffffffff8089168587019081528254948501835591875294909520925192909101805494518416600160a01b0277ffffffffffffffffffffffffffffffffffffffffffffffff19909516929091169190911792909217909155600289018054600160401b90049091169060086132c48361552b565b91906101000a81548163ffffffff021916908363ffffffff160217905550508c60115f856001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550826001600160a01b03168c8e6001600160a01b03167f6835389a6da5341647f18cbe0a89c56f473f4c17bfaee6e6d07d61f1928e0b7c8560405161337a919063ffffffff91909116815260200190565b60405180910390a45050508060010190506130bf565b50600284015463ffffffff64010000000082048116600160401b90920416036133d25760028401805460ff60601b19166c030000000000000000000000001790555b5f81815260106020526040812080543492906133f89084906001600160601b03166153de565b92506101000a8154816001600160601b0302191690836001600160601b03160217905550886001600160a01b03167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c3460405161345791815260200190565b60405180910390a250600198975050505050505050565b6007545f906001600160a01b031633146134b05760075460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610ca7565b5f6134ba8361163b565b9050836001600160a01b0316816001600160a01b0316146135015760405163521eb56d60e11b81526001600160a01b03808616600483015282166024820152604401610ca7565b5f83815260136020526040902060016002820154600160601b900460ff16600581111561353057613530614a0b565b1461355157604051635960d22f60e11b815260048101859052602401610ca7565b80546001600160601b03163414613596578054604051631c30abbb60e31b81523460048201526001600160601b03909116602482015260448101859052606401610ca7565b60028101805460ff60601b19166c0200000000000000000000000017905560405184907fa48b531f972c0e4aca57afcc5c099c52a7bd21bc5e2a1b733eec3be9e88da97a905f90a2506001949350505050565b61363060408051610100810182525f80825260208201819052918101829052606081018290526080810182905260a081018290529060c08201908152602001606081525090565b5f8281526013602090815260409182902082516101008101845281546001600160601b0381168252600160601b908190046001600160a01b031693820193909352600182015493810193909352600281015463ffffffff8082166060860152640100000000820481166080860152600160401b82041660a0850152909160c08401910460ff1660058111156136c7576136c7614a0b565b60058111156136d8576136d8614a0b565b81526020016003820180548060200260200160405190810160405280929190818152602001828054801561375457602002820191905f5260205f20905f905b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116137175790505b5050505050815250509050919050565b5f6001600a541115613789576040516345f5ce8b60e11b815260040160405180910390fd5b6002600a556007546001600160a01b031633146137ce5760075460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610ca7565b5f6137d88561163b565b9050856001600160a01b0316816001600160a01b03161461381f5760405163521eb56d60e11b81526001600160a01b03808816600483015282166024820152604401610ca7565b6001600160a01b0384165f9081526012602052604090205460ff166138615760405162a2307960e51b81526001600160a01b0385166004820152602401610ca7565b5f85815260136020526040902060036002820154600160601b900460ff16600581111561389057613890614a0b565b146138d9576002810154600160601b900460ff1660058111156138b5576138b5614a0b565b604051633c053f9d60e21b8152600481019190915260248101879052604401610ca7565b604080516101008101825282546001600160601b0381168252600160601b908190046001600160a01b03166020830152600184015492820192909252600283015463ffffffff8082166060840152640100000000820481166080840152600160401b82041660a08301525f92613a029291859160c08401910460ff16600581111561396657613966614a0b565b600581111561397757613977614a0b565b8152602001600382018054806020026020016040519081016040528092919081815260200182805480156139f357602002820191905f5260205f20905f905b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116139b65790505b50505050508152505088613e1e565b6002830154604051631e731b7560e31b81529192506001600160a01b0388169163f398dba891613a3f91859163ffffffff16908a9060040161554f565b6020604051808303815f875af1158015613a5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a7f9190615589565b82546001600160601b0316600160601b6001600160a01b03831690810291909117845560028401805460ff60601b19166c040000000000000000000000001790556040519195509088907f2d53f895cd5faf3cddba94a25c2ced2105885b5b37450ff430ffa3cbdf332c74905f90a360405187907fa133ed72c03a7d008deaae618a61613c4fd41c67bba1cad1a6bc0a1c5a9c156e905f90a250506001600a5550949350505050565b5f6001600a541115613b4d576040516345f5ce8b60e11b815260040160405180910390fd5b6002600a556007546001600160a01b03163314613b925760075460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610ca7565b6001600160a01b038616613bb95760405163d92e233d60e01b815260040160405180910390fd5b613bc4858585614121565b5f5b8451811015613c4a57838181518110613be157613be1615289565b60200260200101515f015163ffffffff165f1480613c245750838181518110613c0c57613c0c615289565b6020026020010151602001516001600160601b03165f145b15613c4257604051637c946ed760e01b815260040160405180910390fd5b600101613bc6565b505060095480613c5981615513565b915050613ca360408051610100810182525f80825260208201819052918101829052606081018290526080810182905260a081018290529060c08201908152602001606081525090565b63ffffffff8316606082015260408101869052600160c082018181525050613ccf818686885186614227565b5f828152601360209081526040918290208351918401516001600160a01b0316600160601b9081026001600160601b039093169290921781559183015160018301556060830151600283018054608086015160a087015163ffffffff908116600160401b026bffffffff0000000000000000199282166401000000000267ffffffffffffffff199094169190951617919091179081168317825560c0860151869594909360ff60601b19166cffffffffff0000000000000000199092169190911790836005811115613da357613da3614a0b565b021790555060e08201518051613dc39160038401916020909101906146f0565b5050506009829055613dd587836144ce565b817fb34c1e02384201736eb4693b9b173306cb41bff12f15894dea5773088e9a3b1c87604051613e0791815260200190565b60405180910390a2506001600a5595945050505050565b60608260a0015163ffffffff1667ffffffffffffffff811115613e4357613e43614a9a565b604051908082528060200260200182016040528015613e6c578160200160208202803683370190505b5090505f805b8460e0015151811015613f49575f84905060208660e001518381518110613e9b57613e9b615289565b602090810291909101015163ffffffff16901b175f5b5f828152600f6020526040902054811015613f3f575f828152600f60205260409020805482908110613ee557613ee5615289565b905f5260205f20015f9054906101000a90046001600160a01b0316858581518110613f1257613f12615289565b6001600160a01b039092166020928302919091019091015283613f3481615513565b945050600101613eb1565b5050600101613e72565b505092915050565b7aff00000000000000ff00000000000000ff00000000000000ff00006bffffffff0000000000000000604083901c9081167bffffffff00000000000000000000000000000000000000000000000084161760201c6fffffffff000000000000000000000000919091166001600160e01b031984161717601081901c9182167eff00000000000000ff00000000000000ff00000000000000ff000000000000821617600890811c7bff00000000000000ff00000000000000ff00000000000000ff000000939093167fff00000000000000ff00000000000000ff00000000000000ff000000000000009290921691909117919091179081901c7e0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f167f0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f00600492831c1617906140bd827f06060606060606060606060606060606060606060606060606060606060606066152cc565b901c7f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f1660276140ed91906155a4565b614117827f30303030303030303030303030303030303030303030303030303030303030306152cc565b610b9691906152cc565b5f83900361414257604051637c946ed760e01b815260040160405180910390fd5b8151158061415257508051825114155b1561417d57815181516040516308151c1160e41b815260048101929092526024820152604401610ca7565b5f805b8351811015612552576141948260016152cc565b8482815181106141a6576141a6615289565b602002602001015163ffffffff1610156141fa578381815181106141cc576141cc615289565b6020026020010151604051632ab10b0b60e21b8152600401610ca7919063ffffffff91909116815260200190565b83818151811061420c5761420c615289565b602090810291909101015163ffffffff169150600101614180565b5f8267ffffffffffffffff81111561424157614241614a9a565b60405190808252806020026020018201604052801561426a578160200160208202803683370190505b5060e08701525f5b838110156143ed5785818151811061428c5761428c615289565b60200260200101518760e0015182815181106142aa576142aa615289565b63ffffffff90921660209283029190910182015286518491908890849081106142d5576142d5615289565b602002602001015163ffffffff16901b811790508582815181106142fb576142fb615289565b6020908102919091018101515f838152600e8352604090208151815492909301516001600160601b0316640100000000026fffffffffffffffffffffffffffffffff1990921663ffffffff90931692909217179055855186908390811061436457614364615289565b60200260200101515f01518860800181815161438091906155bb565b63ffffffff1690525085516001600160601b038416908790849081106143a8576143a8615289565b6020026020010151602001516001600160601b031611156143e4578582815181106143d5576143d5615289565b60200260200101516020015192505b50600101614272565b506001600160601b038116865260808601515f9061440c9060026155d7565b6144179060016155bb565b63ffffffff16905061442a600382615611565b5f036144425761443b600382615624565b905061445b565b61444d600382615624565b6144589060016152cc565b90505b80876060015163ffffffff1610806144865750866080015163ffffffff16876060015163ffffffff16115b156144c5576060870151608088015160405163eb3a8ba360e01b815263ffffffff92831660048201526024810184905291166044820152606401610ca7565b50505050505050565b6144d882826145ba565b6001600160a01b0382163b156145b657604051630a85bd0160e11b8082523360048301525f6024830181905260448301849052608060648401526084830152906001600160a01b0384169063150b7a029060a4016020604051808303815f875af1158015614548573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061456c919061529d565b6001600160e01b031916146145b65760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610ca7565b5050565b6001600160a01b0382166146045760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610ca7565b5f818152600260205260409020546001600160a01b0316156146685760405162461bcd60e51b815260206004820152600e60248201527f414c52454144595f4d494e5445440000000000000000000000000000000000006044820152606401610ca7565b6001600160a01b0382165f81815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b5080545f8255905f5260205f20908101906146ed91906147b7565b50565b828054828255905f5260205f209060070160089004810192821561478c579160200282015f5b8382111561475a57835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302614716565b801561478a5782816101000a81549063ffffffff021916905560040160208160030104928301926001030261475a565b505b506147989291506147e7565b5090565b5080545f8255905f5260205f20908101906146ed91906147e7565b5b8082111561479857805477ffffffffffffffffffffffffffffffffffffffffffffffff191681556001016147b8565b5b80821115614798575f81556001016147e8565b6001600160e01b0319811681146146ed575f5ffd5b5f60208284031215614820575f5ffd5b813561482b816147fb565b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61482b6020830184614832565b5f60208284031215614882575f5ffd5b5035919050565b6001600160a01b03811681146146ed575f5ffd5b5f5f604083850312156148ae575f5ffd5b82356148b981614889565b946020939093013593505050565b5f602082840312156148d7575f5ffd5b813561482b81614889565b5f60408201848352604060208401528084518083526060850191506020860192505f5b8181101561493e578351805163ffffffff1684526020908101516001600160601b03168185015290930192604090920191600101614905565b50909695505050505050565b5f5f6040838503121561495b575f5ffd5b50508035926020909101359150565b5f8151808452602084019350602083015f5b828110156149a35781516001600160a01b031686526020958601959091019060010161497c565b5093949350505050565b828152604060208201525f6149c5604083018461496a565b949350505050565b5f5f5f606084860312156149df575f5ffd5b83356149ea81614889565b925060208401356149fa81614889565b929592945050506040919091013590565b634e487b7160e01b5f52602160045260245ffd5b60068110614a3b57634e487b7160e01b5f52602160045260245ffd5b9052565b6001600160601b03881681526001600160a01b03871660208201526040810186905263ffffffff85811660608301528481166080830152831660a082015260e08101614a8e60c0830184614a1f565b98975050505050505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715614ad157614ad1614a9a565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614b0057614b00614a9a565b604052919050565b5f5f67ffffffffffffffff841115614b2257614b22614a9a565b50601f8301601f1916602001614b3781614ad7565b915050828152838383011115614b4b575f5ffd5b828260208301375f602084830101529392505050565b5f60208284031215614b71575f5ffd5b813567ffffffffffffffff811115614b87575f5ffd5b8201601f81018413614b97575f5ffd5b6149c584823560208401614b08565b5f67ffffffffffffffff821115614bbf57614bbf614a9a565b5060051b60200190565b5f82601f830112614bd8575f5ffd5b8135614beb614be682614ba6565b614ad7565b8082825260208201915060208360051b860101925085831115614c0c575f5ffd5b602085015b83811015614c32578035614c2481614889565b835260209283019201614c11565b5095945050505050565b80356001600160601b038116811461155a575f5ffd5b5f5f5f60608486031215614c64575f5ffd5b833567ffffffffffffffff811115614c7a575f5ffd5b614c8686828701614bc9565b935050602084013567ffffffffffffffff811115614ca2575f5ffd5b8401601f81018613614cb2575f5ffd5b8035614cc0614be682614ba6565b8082825260208201915060208360051b850101925088831115614ce1575f5ffd5b6020840193505b82841015614d0a57614cf984614c3c565b825260209384019390910190614ce8565b959895975050505060409390930135925050565b5f5f60408385031215614d2f575f5ffd5b8235614d3a81614889565b915060208301358015158114614d4e575f5ffd5b809150509250929050565b5f60408201848352604060208401528084518083526060850191506020860192505f5b8181101561493e578351835260209384019390920191600101614d7c565b5f5f5f5f5f60808688031215614dae575f5ffd5b8535614db981614889565b94506020860135614dc981614889565b935060408601359250606086013567ffffffffffffffff811115614deb575f5ffd5b8601601f81018813614dfb575f5ffd5b803567ffffffffffffffff811115614e11575f5ffd5b886020828401011115614e22575f5ffd5b959894975092955050506020019190565b803563ffffffff8116811461155a575f5ffd5b5f82601f830112614e55575f5ffd5b8135614e63614be682614ba6565b8082825260208201915060208360051b860101925085831115614e84575f5ffd5b602085015b83811015614c3257614e9a81614e33565b835260209283019201614e89565b5f82601f830112614eb7575f5ffd5b8135614ec5614be682614ba6565b8082825260208201915060208360061b860101925085831115614ee6575f5ffd5b602085015b83811015614c325760408188031215614f02575f5ffd5b614f0a614aae565b614f1382614e33565b8152614f2160208301614c3c565b602082015280845250602083019250604081019050614eeb565b5f5f5f5f5f5f60c08789031215614f50575f5ffd5b8635614f5b81614889565b955060208701359450604087013567ffffffffffffffff811115614f7d575f5ffd5b614f8989828a01614e46565b945050606087013567ffffffffffffffff811115614fa5575f5ffd5b614fb189828a01614ea8565b935050614fc060808801614e33565b9598949750929591949360a090920135925050565b5f5f5f5f60808587031215614fe8575f5ffd5b8435614ff381614889565b935060208501359250604085013567ffffffffffffffff811115615015575f5ffd5b61502187828801614bc9565b925050606085013567ffffffffffffffff81111561503d575f5ffd5b61504987828801614e46565b91505092959194509250565b5f5f60408385031215615066575f5ffd5b823561507181614889565b91506020830135614d4e81614889565b5f8151808452602084019350602083015f5b828110156149a357815163ffffffff16865260209586019590910190600101615093565b602081526001600160601b0382511660208201526001600160a01b036020830151166040820152604082015160608201525f6060830151615100608084018263ffffffff169052565b50608083015163ffffffff811660a08401525060a083015163ffffffff811660c08401525060c083015161513760e0840182614a1f565b5060e0830151610100808401526149c5610120840182615081565b5f5f5f5f60808587031215615165575f5ffd5b843561517081614889565b935060208501359250604085013561518781614889565b9150606085013567ffffffffffffffff8111156151a2575f5ffd5b8501601f810187136151b2575f5ffd5b61504987823560208401614b08565b5f5f5f5f5f60a086880312156151d5575f5ffd5b85356151e081614889565b945060208601359350604086013567ffffffffffffffff811115615202575f5ffd5b61520e88828901614e46565b935050606086013567ffffffffffffffff81111561522a575f5ffd5b61523688828901614ea8565b92505061524560808701614e33565b90509295509295909350565b600181811c9082168061526557607f821691505b60208210810361528357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156152ad575f5ffd5b815161482b816147fb565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610b9657610b966152b8565b601f8211156113a757805f5260205f20601f840160051c810160208510156153045750805b601f840160051c820191505b81811015612552575f8155600101615310565b815167ffffffffffffffff81111561533d5761533d614a9a565b6153518161534b8454615251565b846152df565b6020601f821160018114615383575f831561536c5750848201515b5f19600385901b1c1916600184901b178455612552565b5f84815260208120601f198516915b828110156153b25787850151825560209485019460019092019101615392565b50848210156153cf57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b6001600160601b038181168382160190811115610b9657610b966152b8565b6001600160601b038281168282160390811115610b9657610b966152b8565b63ffffffff8281168282160390811115610b9657610b966152b8565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152816080820152818360a08301375f81830160a090810191909152601f909201601f19160101949350505050565b5f5f865461549a81615251565b6001821680156154b157600181146154c6576154f3565b60ff19831686528115158202860193506154f3565b895f5260205f205f5b838110156154eb578154888201526001909101906020016154cf565b505081860193505b50505085518060208801835e019384525050602082015260400192915050565b5f60018201615524576155246152b8565b5060010190565b5f63ffffffff821663ffffffff8103615546576155466152b8565b60010192915050565b606081525f615561606083018661496a565b63ffffffff85166020840152828103604084015261557f8185614832565b9695505050505050565b5f60208284031215615599575f5ffd5b815161482b81614889565b8082028115828204841417610b9657610b966152b8565b63ffffffff8181168382160190811115610b9657610b966152b8565b63ffffffff81811683821602908116908181146155f6576155f66152b8565b5092915050565b634e487b7160e01b5f52601260045260245ffd5b5f8261561f5761561f6155fd565b500690565b5f82615632576156326155fd565b50049056fea26469706673582212208d37ec3bdfcbbd60b58ffad1c94bed6e9df47f30dc210ad84ab2b82fc84d2cb064736f6c634300081c0033", + "deployedBytecode": "0x608060405260043610610324575f3560e01c806370a08231116101a7578063a60e4c3c116100e7578063dff7672411610092578063ef0e239b1161006d578063ef0e239b14610ab1578063f908bc7714610add578063fbdeb3d714610afc578063ffa1ad7414610b1b575f5ffd5b8063dff7672414610a52578063e23f6fb414610a65578063e985e9c514610a78575f5ffd5b8063c87b56dd116100c2578063c87b56dd146109f5578063cbf994f814610a14578063ccc9305d14610a33575f5ffd5b8063a60e4c3c1461098a578063a6f9dae1146109b7578063b88d4fde146109d6575f5ffd5b80638a2bd86f116101525780639890220b1161012d5780639890220b14610902578063a22cb46514610916578063a3fbbaae14610935578063a5d059ca14610954575f5ffd5b80638a2bd86f1461088c5780638da5cb5b146108cf57806395d89b41146108ee575f5ffd5b80637c5e63e0116101825780637c5e63e01461081a57806382694b1d1461084e57806386a2bdd41461086d575f5ffd5b806370a0823114610799578063718934d8146107b857806373b8b6a2146107fb575f5ffd5b806342842e0e1161027257806355f804b31161021d5780636352211e116101f85780636352211e146106df57806363dd7615146106fe5780636c0360eb146107665780636f99f15c1461077a575f5ffd5b806355f804b31461067b57806357838e851461069a5780635e4507fa146106c0575f5ffd5b80634eb780da1161024d5780634eb780da146106095780634f558e791461063d5780634f6ccce71461065c575f5ffd5b806342842e0e146105ac578063481c6a75146105cb5780634d486f85146105ea575f5ffd5b806318160ddd116102d257806323b872dd116102ad57806323b872dd146104b457806342144854146104d35780634236aff81461051f575f5ffd5b806318160ddd146104375780631de286ba1461045a57806321e4f7bb14610487575f5ffd5b8063095ea7b311610302578063095ea7b3146103c957806310c6aa19146103ea57806317351f7e14610409575f5ffd5b806301ffc9a71461032857806306fdde031461035c578063081812fc1461037d575b5f5ffd5b348015610333575f5ffd5b50610347610342366004614810565b610b4b565b60405190151581526020015b60405180910390f35b348015610367575f5ffd5b50610370610b9c565b6040516103539190614860565b348015610388575f5ffd5b506103b1610397366004614872565b60046020525f90815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610353565b3480156103d4575f5ffd5b506103e86103e336600461489d565b610c27565b005b3480156103f5575f5ffd5b506103e86104043660046148c7565b610d0b565b348015610414575f5ffd5b506103476104233660046148c7565b60126020525f908152604090205460ff1681565b348015610442575f5ffd5b5061044c60095481565b604051908152602001610353565b348015610465575f5ffd5b50610479610474366004614872565b610dc3565b6040516103539291906148e2565b348015610492575f5ffd5b506104a66104a136600461494a565b611008565b6040516103539291906149ad565b3480156104bf575f5ffd5b506103e86104ce3660046149cd565b6110e6565b3480156104de575f5ffd5b506105076104ed366004614872565b60106020525f90815260409020546001600160601b031681565b6040516001600160601b039091168152602001610353565b34801561052a575f5ffd5b50610599610539366004614872565b60136020525f90815260409020805460018201546002909201546001600160601b03821692600160601b928390046001600160a01b031692909163ffffffff808216926401000000008304821692600160401b8104909216910460ff1687565b6040516103539796959493929190614a3f565b3480156105b7575f5ffd5b506103e86105c63660046149cd565b6112bb565b3480156105d6575f5ffd5b506007546103b1906001600160a01b031681565b3480156105f5575f5ffd5b506104a6610604366004614872565b6113ac565b348015610614575f5ffd5b506103b16106233660046148c7565b60116020525f90815260409020546001600160a01b031681565b348015610648575f5ffd5b50610347610657366004614872565b6114fa565b348015610667575f5ffd5b5061044c610676366004614872565b61151b565b348015610686575f5ffd5b506103e8610695366004614b61565b61155f565b3480156106a5575f5ffd5b50600b546103b190600160601b90046001600160a01b031681565b3480156106cb575f5ffd5b506103b16106da36600461494a565b611607565b3480156106ea575f5ffd5b506103b16106f9366004614872565b61163b565b348015610709575f5ffd5b50610742610718366004614872565b600e6020525f908152604090205463ffffffff81169064010000000090046001600160601b031682565b6040805163ffffffff90931683526001600160601b03909116602083015201610353565b348015610771575f5ffd5b5061037061169f565b348015610785575f5ffd5b50600b54610507906001600160601b031681565b3480156107a4575f5ffd5b5061044c6107b33660046148c7565b6116ac565b3480156107c3575f5ffd5b506107d76107d236600461494a565b61171e565b604080516001600160a01b03909316835263ffffffff909116602083015201610353565b348015610806575f5ffd5b50610347610815366004614c52565b611760565b348015610825575f5ffd5b506103706040518060400160405280600981526020016806630313730313232360bc1b81525081565b348015610859575f5ffd5b50610347610868366004614d1e565b611ba3565b348015610878575f5ffd5b5061044c61088736600461494a565b611c3a565b348015610897575f5ffd5b5061044c6108a636600461489d565b60a01b6001600160a01b03909116175f908152601060205260409020546001600160601b031690565b3480156108da575f5ffd5b506006546103b1906001600160a01b031681565b3480156108f9575f5ffd5b50610370611c65565b34801561090d575f5ffd5b5061044c611c72565b348015610921575f5ffd5b506103e8610930366004614d1e565b611dcb565b348015610940575f5ffd5b506103e861094f3660046148c7565b611e36565b34801561095f575f5ffd5b5061097361096e36600461489d565b611ee6565b604080519215158352602083019190915201610353565b348015610995575f5ffd5b506109a96109a4366004614872565b612366565b604051610353929190614d59565b3480156109c2575f5ffd5b506103e86109d13660046148c7565b6123c7565b3480156109e1575f5ffd5b506103e86109f0366004614d9a565b612477565b348015610a00575f5ffd5b50610370610a0f366004614872565b612559565b348015610a1f575f5ffd5b50610347610a2e366004614f3b565b6125d2565b348015610a3e575f5ffd5b50610973610a4d36600461489d565b612b46565b610347610a60366004614fd5565b612e91565b610347610a7336600461489d565b61346e565b348015610a83575f5ffd5b50610347610a92366004615055565b600560209081525f928352604080842090915290825290205460ff1681565b348015610abc575f5ffd5b50610ad0610acb366004614872565b6135e9565b60405161035391906150b7565b348015610ae8575f5ffd5b506103b1610af7366004615152565b613764565b348015610b07575f5ffd5b5061044c610b163660046151c1565b613b28565b348015610b26575f5ffd5b50610370604051806040016040528060058152602001640312e302e360dc1b81525081565b5f6301ffc9a760e01b6001600160e01b031983161480610b7b57506380ac58cd60e01b6001600160e01b03198316145b80610b965750635b5e139f60e01b6001600160e01b03198316145b92915050565b5f8054610ba890615251565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd490615251565b8015610c1f5780601f10610bf657610100808354040283529160200191610c1f565b820191905f5260205f20905b815481529060010190602001808311610c0257829003601f168201915b505050505081565b5f818152600260205260409020546001600160a01b031633811480610c6e57506001600160a01b0381165f90815260056020908152604080832033845290915290205460ff165b610cb05760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b5f8281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6006546001600160a01b03163314610d4b5760065460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610ca7565b6001600160a01b038116610d725760405163d92e233d60e01b815260040160405180910390fd5b600b80546001600160601b0316600160601b6001600160a01b038416908102919091179091556040517f8d1e8547016120917daad7f81c42b48f7fee379badc48f1889f0f43bb6194725905f90a250565b5f81815260136020908152604080832081516101008101835281546001600160601b03811682526001600160a01b03600160601b918290041694820194909452600182015492810192909252600281015463ffffffff808216606085810191909152640100000000830482166080860152600160401b830490911660a0850152938593929160c084019160ff9104166005811115610e6357610e63614a0b565b6005811115610e7457610e74614a0b565b815260200160038201805480602002602001604051908101604052809291908181526020018280548015610ef057602002820191905f5260205f20905f905b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610eb35790505b50505050508152505090508060e001515192508267ffffffffffffffff811115610f1c57610f1c614a9a565b604051908082528060200260200182016040528015610f6057816020015b604080518082019091525f8082526020820152815260200190600190039081610f3a5790505b5091505f5b83811015611001575f85905060208360e001518381518110610f8957610f89615289565b60209081029190910181015163ffffffff90811690921b929092175f818152600e845260409081902081518083019092525492831681526401000000009092046001600160601b0316928201929092528451859084908110610fed57610fed615289565b602090810291909101015250600101610f65565b5050915091565b602081811b83175f818152600f909252604090912054906060908267ffffffffffffffff81111561103b5761103b614a9a565b604051908082528060200260200182016040528015611064578160200160208202803683370190505b5091505f5b838110156110dd575f828152600f6020526040902080548290811061109057611090615289565b905f5260205f20015f9054906101000a90046001600160a01b03168382815181106110bd576110bd615289565b6001600160a01b0390921660209283029190910190910152600101611069565b50509250929050565b5f818152600260205260409020546001600160a01b0384811691161461114e5760405162461bcd60e51b815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610ca7565b6001600160a01b0382166111985760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610ca7565b336001600160a01b03841614806111d157506001600160a01b0383165f90815260056020908152604080832033845290915290205460ff165b806111f157505f818152600460205260409020546001600160a01b031633145b61122e5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610ca7565b6001600160a01b038084165f81815260036020908152604080832080545f19019055938616808352848320805460010190558583526002825284832080546001600160a01b03199081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6112c68383836110e6565b6001600160a01b0382163b156113a757604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401525f608484015290919084169063150b7a029060a4016020604051808303815f875af1158015611339573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061135d919061529d565b6001600160e01b031916146113a75760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610ca7565b505050565b5f81815260136020908152604080832081516101008101835281546001600160601b03811682526001600160a01b03600160601b918290041694820194909452600182015492810192909252600281015463ffffffff808216606085810191909152640100000000830482166080860152600160401b830490911660a0850152938593929160c084019160ff910416600581111561144c5761144c614a0b565b600581111561145d5761145d614a0b565b8152602001600382018054806020026020016040519081016040528092919081815260200182805480156114d957602002820191905f5260205f20905f905b82829054906101000a900463ffffffff1663ffffffff168152602001906004019060208260030104928301926001038202915080841161149c5790505b50505050508152505090506114ee8185613e1e565b91508151925050915091565b5f5f82118015610b9657506009546115139060016152cc565b821092915050565b5f6115278260016152cc565b905060095481111561155a57600954604051637ae5968560e01b8152610ca7918391600401918252602082015260400190565b919050565b6006546001600160a01b0316331461159f5760065460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610ca7565b80515f036115c057604051637c946ed760e01b815260040160405180910390fd5b60086115cc8282615323565b507f5411e8ebf1636d9e83d5fc4900bf80cbac82e8790da2a4c94db4895e889eedf6816040516115fc9190614860565b60405180910390a150565b600f602052815f5260405f208181548110611620575f80fd5b5f918252602090912001546001600160a01b03169150829050565b5f818152600260205260409020546001600160a01b03168061155a5760405162461bcd60e51b815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610ca7565b60088054610ba890615251565b5f6001600160a01b0382166117035760405162461bcd60e51b815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610ca7565b506001600160a01b03165f9081526003602052604090205490565b600d602052815f5260405f208181548110611737575f80fd5b5f918252602090912001546001600160a01b0381169250600160a01b900463ffffffff16905082565b5f81815260136020908152604080832081516101008101835281546001600160601b0381168252600160601b908190046001600160a01b031694820194909452600182015492810192909252600281015463ffffffff8082166060850152640100000000820481166080850152600160401b82041660a0840152849360c08401910460ff1660058111156117f6576117f6614a0b565b600581111561180757611807614a0b565b81526020016003820180548060200260200160405190810160405280929190818152602001828054801561188357602002820191905f5260205f20905f905b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116118465790505b5050505050815250509050600460058111156118a1576118a1614a0b565b8160c0015160058111156118b7576118b7614a0b565b146118f6578060c0015160058111156118d2576118d2614a0b565b604051633c053f9d60e21b8152600481019190915260248101849052604401610ca7565b835185511461192557845184516040516308151c1160e41b815260048101929092526024820152604401610ca7565b80602001516001600160a01b0316336001600160a01b0316146119795760208101516040516379f91cd360e01b81523360048201526001600160a01b03909116602482015260448101849052606401610ca7565b84515f5b81811015611b96575f60115f89848151811061199b5761199b615289565b6020908102919091018101516001600160a01b0390811683528282019390935260409182015f9081205490931660a08a901b81178085526010909252919092205489519193506001600160601b03169081908a90869081106119ff576119ff615289565b60200260200101516001611a1391906153de565b6001600160601b03161115611a6b57600b80548291905f90611a3f9084906001600160601b03166153de565b92506101000a8154816001600160601b0302191690836001600160601b031602179055505f9050611aee565b888481518110611a7d57611a7d615289565b6020908102919091010151600b80545f90611aa29084906001600160601b03166153de565b92506101000a8154816001600160601b0302191690836001600160601b03160217905550888481518110611ad857611ad8615289565b602002602001015181611aeb91906153fd565b90505b5f82815260106020526040902080546bffffffffffffffffffffffff19166001600160601b038316179055885188906001600160a01b038516907fa2e524bd0f71903485fbb3d6d50cb305f61005ceea2047c3ac92aa7e0d104306908c9088908110611b5c57611b5c615289565b6020026020010151604051611b8091906001600160601b0391909116815260200190565b60405180910390a350505080600101905061197d565b5060019695505050505050565b6006545f906001600160a01b03163314611be55760065460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610ca7565b6001600160a01b038316611c0c5760405163d92e233d60e01b815260040160405180910390fd5b506001600160a01b03919091165f908152601260205260409020805460ff1916911515919091179055600190565b600c602052815f5260405f208181548110611c53575f80fd5b905f5260205f20015f91509150505481565b60018054610ba890615251565b5f6001600a541115611c97576040516345f5ce8b60e11b815260040160405180910390fd5b6002600a55600b54600160601b90046001600160a01b03163314611ce957600b5460405163312d21ff60e11b8152336004820152600160601b9091046001600160a01b03166024820152604401610ca7565b50600b546001600160601b03168015611dc357600b80546bffffffffffffffffffffffff191690556040515f90339083908381818185875af1925050503d805f8114611d50576040519150601f19603f3d011682016040523d82523d5f602084013e611d55565b606091505b5050905080611d8c5760405163cd3f165960e01b81525f600482015230602482015233604482015260648101839052608401610ca7565b60405182815233907ff36f4d6622e16a536bbb049064af779cdd483a0b388d347d3752a65f1058bf5b9060200160405180910390a2505b6001600a5590565b335f8181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6006546001600160a01b03163314611e765760065460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610ca7565b6001600160a01b038116611e9d5760405163d92e233d60e01b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0383169081179091556040517f2c1c11af44aa5608f1dca38c00275c30ea091e02417d36e70e9a1538689c433d905f90a250565b5f5f6001600a541115611f0c576040516345f5ce8b60e11b815260040160405180910390fd5b6002600a556007546001600160a01b03163314611f515760075460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610ca7565b6001600160a01b038416611f785760405163d92e233d60e01b815260040160405180910390fd5b5f83815260136020526040902060056002820154600160601b900460ff166005811115611fa757611fa7614a0b565b14611ff0576002810154600160601b900460ff166005811115611fcc57611fcc614a0b565b604051633c053f9d60e21b8152600481019190915260248101859052604401610ca7565b60a084901b6001600160a01b038616175f818152600d6020908152604080832080548251818502810185019093528083529192909190849084015b82821015612076575f84815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b900463ffffffff168183015282526001909201910161202b565b5050825192935050505f8190036120b25760405163df2ddd7360e01b81526001600160a01b038916600482015260248101889052604401610ca7565b808460020160088282829054906101000a900463ffffffff166120d5919061541c565b92506101000a81548163ffffffff021916908363ffffffff1602179055508360020160089054906101000a900463ffffffff1663ffffffff165f0361212a5760028401805460ff60601b1916600160601b1790555b5f5b818110156121e3575f889050602084838151811061214c5761214c615289565b60209081029190910181015181015163ffffffff1690911b919091175f818152600e9092526040909120546121929064010000000090046001600160601b0316886152cc565b965060115f8584815181106121a9576121a9615289565b602090810291909101810151516001600160a01b031682528101919091526040015f2080546001600160a01b03191690555060010161212c565b505f838152600d602052604081206121fa916146d2565b5f838152601060205260409020546001600160601b03168086111561222657806001600160601b031695505b851561231b575f8481526010602052604080822080546bffffffffffffffffffffffff19169055516001600160a01b038b169088908381818185875af1925050503d805f8114612291576040519150601f19603f3d011682016040523d82523d5f602084013e612296565b606091505b50509050806122d65760405163cd3f165960e01b81525f60048201523060248201526001600160a01b038b16604482015260648101889052608401610ca7565b896001600160a01b03167fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d8860405161231191815260200190565b60405180910390a2505b60405188906001600160a01b038b16907f5ebf7fe30be09f0f03b9195632508d95c8b67bf010c93abda67f70d5d9599d1e905f90a350506001600a8190559793965092945050505050565b5f818152600c6020908152604080832080548251818502810185019093528083526060938301828280156123b757602002820191905f5260205f20905b8154815260200190600101908083116123a3575b5050505050905080519150915091565b6006546001600160a01b031633146124075760065460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610ca7565b6001600160a01b03811661242e5760405163d92e233d60e01b815260040160405180910390fd5b600680546001600160a01b0319166001600160a01b0383169081179091556040517f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b905f90a250565b6124828585856110e6565b6001600160a01b0384163b1561255257604051630a85bd0160e11b808252906001600160a01b0386169063150b7a02906124c89033908a90899089908990600401615438565b6020604051808303815f875af11580156124e4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612508919061529d565b6001600160e01b031916146125525760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610ca7565b5050505050565b5f818152601360205260408120600101546060915060086040518060400160405280600981526020016806630313730313232360bc1b81525061259b83613f51565b6125a8608085901b613f51565b6040516020016125bb949392919061548d565b604051602081830303815290604052915050919050565b6007545f906001600160a01b031633146126145760075460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610ca7565b5f61261e8361163b565b9050876001600160a01b0316816001600160a01b0316146126655760405163521eb56d60e11b81526001600160a01b03808a16600483015282166024820152604401610ca7565b5f83815260136020908152604080832081516101008101835281546001600160601b03811682526001600160a01b03600160601b918290041694820194909452600182015492810192909252600281015463ffffffff8082166060850152640100000000820481166080850152600160401b82041660a08401529192909160c084019160ff91041660058111156126fe576126fe614a0b565b600581111561270f5761270f614a0b565b81526020016003820180548060200260200160405190810160405280929190818152602001828054801561278b57602002820191905f5260205f20905f905b82829054906101000a900463ffffffff1663ffffffff168152602001906004019060208260030104928301926001038202915080841161274e5790505b5050505050815250509050600160058111156127a9576127a9614a0b565b8160c0015160058111156127bf576127bf614a0b565b146127da578060c001516005811115611fcc57611fcc614a0b565b6127e5888888614121565b63ffffffff851660608201525f60808201819052875167ffffffffffffffff81111561281357612813614a9a565b60405190808252806020026020018201604052801561283c578160200160208202803683370190505b5090505f885167ffffffffffffffff81111561285a5761285a614a9a565b60405190808252806020026020018201604052801561289e57816020015b604080518082019091525f80825260208201528152602001906001900390816128785790505b5090505f805b8a518110156129c4578981815181106128bf576128bf615289565b60200260200101515f015163ffffffff165f03612930575f88905060208c83815181106128ee576128ee615289565b60209081029190910181015163ffffffff1690911b919091175f908152600e9091526040902080546fffffffffffffffffffffffffffffffff191690556129bc565b8a818151811061294257612942615289565b602002602001015184838151811061295c5761295c615289565b602002602001019063ffffffff16908163ffffffff168152505089818151811061298857612988615289565b60200260200101518383815181106129a2576129a2615289565b602002602001018190525081806129b890615513565b9250505b6001016128a4565b5060408401518b81146129fa575f888152600c602090815260408083208054600181018255908452919092200182905585018c90525b612a07858585858c614227565b5f888152601360209081526040918290208751918801516001600160a01b0316600160601b9081026001600160601b03909316929092178155918701516001830155606087015160028301805460808a015160a08b015163ffffffff908116600160401b026bffffffff0000000000000000199282166401000000000267ffffffffffffffff199094169190951617919091179081168317825560c08a01518a9594909360ff60601b19166cffffffffff0000000000000000199092169190911790836005811115612adb57612adb614a0b565b021790555060e08201518051612afb9160038401916020909101906146f0565b50506040518d81528991507fff312ce131c4d73ac90ece91266be7090486c5e15f78b7ea2b108c36dfd475299060200160405180910390a25060019c9b505050505050505050505050565b5f5f6001600a541115612b6c576040516345f5ce8b60e11b815260040160405180910390fd5b6002600a556007546001600160a01b03163314612bb15760075460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610ca7565b5f612bbb8461163b565b9050846001600160a01b0316816001600160a01b031614612c025760405163521eb56d60e11b81526001600160a01b03808716600483015282166024820152604401610ca7565b5f84815260136020526040902060016002820154600160601b900460ff166005811115612c3157612c31614a0b565b1480612c5c575060056002820154600160601b900460ff166005811115612c5a57612c5a614a0b565b145b15612ca5576002810154600160601b900460ff166005811115612c8157612c81614a0b565b604051633c053f9d60e21b8152600481019190915260248101869052604401610ca7565b6002810154600160401b900463ffffffff1615612cdf5760028101805460ff60601b19166c05000000000000000000000000179055612cf5565b60028101805460ff60601b1916600160601b1790555b5f5b6003820154811015612d73575f8690506020836003018381548110612d1e57612d1e615289565b905f5260205f2090600891828204019190066004029054906101000a900463ffffffff1663ffffffff16901b81179050600f5f8281526020019081526020015f205f612d6a919061479c565b50600101612cf7565b5080546040516001600160601b0390911693505f906001600160a01b0388169085908381818185875af1925050503d805f8114612dcb576040519150601f19603f3d011682016040523d82523d5f602084013e612dd0565b606091505b5050905080612e105760405163cd3f165960e01b81525f60048201523060248201526001600160a01b038816604482015260648101859052608401610ca7565b866001600160a01b03167fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d85604051612e4b91815260200190565b60405180910390a260405186907fe45f5b9540df4f71b7e044809fa318806328c1ea2388a70c7373d97ccf8a0faa905f90a250506001600a819055959194509092505050565b6007545f906001600160a01b03163314612ed35760075460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610ca7565b8151835114612f0257825182516040516308151c1160e41b815260048101929092526024820152604401610ca7565b5f848152601360205260409020600280820154600160601b900460ff166005811115612f3057612f30614a0b565b14612f55576002810154600160601b900460ff166005811115612c8157612c81614a0b565b83515f805b82811015613041575f8890506020878381518110612f7a57612f7a615289565b60209081029190910181015163ffffffff90811690921b929092175f818152600e845260408082208151808301909252549384168082526401000000009094046001600160601b031694810194909452909291900361301a57878381518110612fe557612fe5615289565b60200260200101518a6040516332832be560e21b8152600401610ca792919063ffffffff929092168252602082015260400190565b6020810151613032906001600160601b0316856152cc565b93505050806001019050612f5a565b5080341461307257604051637ebbcab960e11b81523460048201526024810182905260448101889052606401610ca7565b6001600160a01b038881165f9081526011602052604090205416156130ad576040516322ddebd960e21b815260048101889052602401610ca7565b60a087901b6001600160a01b038916175f5b83811015613390575f8882815181106130da576130da615289565b602002602001015190505f8883815181106130f7576130f7615289565b60200260200101519050816001600160a01b03168c6001600160a01b031603613136576040516322ddebd960e21b8152600481018c9052602401610ca7565b6001600160a01b038281165f90815260116020526040902054161561318b576001600160a01b038281165f908152601160205260409081902054905163631695bd60e01b815291166004820152602401610ca7565b5f8b905060208a85815181106131a3576131a3615289565b60209081029190910181015163ffffffff90811690921b929092175f818152600e8452604080822054600f909552902054909290911690036131fb576040516304ad100760e21b8152600481018d9052602401610ca7565b5f818152600f602090815260408083208054600181810183559185528385200180546001600160a01b03808a166001600160a01b031990921682179092558a8652600d8552838620845180860190955290845263ffffffff8089168587019081528254948501835591875294909520925192909101805494518416600160a01b0277ffffffffffffffffffffffffffffffffffffffffffffffff19909516929091169190911792909217909155600289018054600160401b90049091169060086132c48361552b565b91906101000a81548163ffffffff021916908363ffffffff160217905550508c60115f856001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550826001600160a01b03168c8e6001600160a01b03167f6835389a6da5341647f18cbe0a89c56f473f4c17bfaee6e6d07d61f1928e0b7c8560405161337a919063ffffffff91909116815260200190565b60405180910390a45050508060010190506130bf565b50600284015463ffffffff64010000000082048116600160401b90920416036133d25760028401805460ff60601b19166c030000000000000000000000001790555b5f81815260106020526040812080543492906133f89084906001600160601b03166153de565b92506101000a8154816001600160601b0302191690836001600160601b03160217905550886001600160a01b03167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c3460405161345791815260200190565b60405180910390a250600198975050505050505050565b6007545f906001600160a01b031633146134b05760075460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610ca7565b5f6134ba8361163b565b9050836001600160a01b0316816001600160a01b0316146135015760405163521eb56d60e11b81526001600160a01b03808616600483015282166024820152604401610ca7565b5f83815260136020526040902060016002820154600160601b900460ff16600581111561353057613530614a0b565b1461355157604051635960d22f60e11b815260048101859052602401610ca7565b80546001600160601b03163414613596578054604051631c30abbb60e31b81523460048201526001600160601b03909116602482015260448101859052606401610ca7565b60028101805460ff60601b19166c0200000000000000000000000017905560405184907fa48b531f972c0e4aca57afcc5c099c52a7bd21bc5e2a1b733eec3be9e88da97a905f90a2506001949350505050565b61363060408051610100810182525f80825260208201819052918101829052606081018290526080810182905260a081018290529060c08201908152602001606081525090565b5f8281526013602090815260409182902082516101008101845281546001600160601b0381168252600160601b908190046001600160a01b031693820193909352600182015493810193909352600281015463ffffffff8082166060860152640100000000820481166080860152600160401b82041660a0850152909160c08401910460ff1660058111156136c7576136c7614a0b565b60058111156136d8576136d8614a0b565b81526020016003820180548060200260200160405190810160405280929190818152602001828054801561375457602002820191905f5260205f20905f905b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116137175790505b5050505050815250509050919050565b5f6001600a541115613789576040516345f5ce8b60e11b815260040160405180910390fd5b6002600a556007546001600160a01b031633146137ce5760075460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610ca7565b5f6137d88561163b565b9050856001600160a01b0316816001600160a01b03161461381f5760405163521eb56d60e11b81526001600160a01b03808816600483015282166024820152604401610ca7565b6001600160a01b0384165f9081526012602052604090205460ff166138615760405162a2307960e51b81526001600160a01b0385166004820152602401610ca7565b5f85815260136020526040902060036002820154600160601b900460ff16600581111561389057613890614a0b565b146138d9576002810154600160601b900460ff1660058111156138b5576138b5614a0b565b604051633c053f9d60e21b8152600481019190915260248101879052604401610ca7565b604080516101008101825282546001600160601b0381168252600160601b908190046001600160a01b03166020830152600184015492820192909252600283015463ffffffff8082166060840152640100000000820481166080840152600160401b82041660a08301525f92613a029291859160c08401910460ff16600581111561396657613966614a0b565b600581111561397757613977614a0b565b8152602001600382018054806020026020016040519081016040528092919081815260200182805480156139f357602002820191905f5260205f20905f905b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116139b65790505b50505050508152505088613e1e565b6002830154604051631e731b7560e31b81529192506001600160a01b0388169163f398dba891613a3f91859163ffffffff16908a9060040161554f565b6020604051808303815f875af1158015613a5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a7f9190615589565b82546001600160601b0316600160601b6001600160a01b03831690810291909117845560028401805460ff60601b19166c040000000000000000000000001790556040519195509088907f2d53f895cd5faf3cddba94a25c2ced2105885b5b37450ff430ffa3cbdf332c74905f90a360405187907fa133ed72c03a7d008deaae618a61613c4fd41c67bba1cad1a6bc0a1c5a9c156e905f90a250506001600a5550949350505050565b5f6001600a541115613b4d576040516345f5ce8b60e11b815260040160405180910390fd5b6002600a556007546001600160a01b03163314613b925760075460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610ca7565b6001600160a01b038616613bb95760405163d92e233d60e01b815260040160405180910390fd5b613bc4858585614121565b5f5b8451811015613c4a57838181518110613be157613be1615289565b60200260200101515f015163ffffffff165f1480613c245750838181518110613c0c57613c0c615289565b6020026020010151602001516001600160601b03165f145b15613c4257604051637c946ed760e01b815260040160405180910390fd5b600101613bc6565b505060095480613c5981615513565b915050613ca360408051610100810182525f80825260208201819052918101829052606081018290526080810182905260a081018290529060c08201908152602001606081525090565b63ffffffff8316606082015260408101869052600160c082018181525050613ccf818686885186614227565b5f828152601360209081526040918290208351918401516001600160a01b0316600160601b9081026001600160601b039093169290921781559183015160018301556060830151600283018054608086015160a087015163ffffffff908116600160401b026bffffffff0000000000000000199282166401000000000267ffffffffffffffff199094169190951617919091179081168317825560c0860151869594909360ff60601b19166cffffffffff0000000000000000199092169190911790836005811115613da357613da3614a0b565b021790555060e08201518051613dc39160038401916020909101906146f0565b5050506009829055613dd587836144ce565b817fb34c1e02384201736eb4693b9b173306cb41bff12f15894dea5773088e9a3b1c87604051613e0791815260200190565b60405180910390a2506001600a5595945050505050565b60608260a0015163ffffffff1667ffffffffffffffff811115613e4357613e43614a9a565b604051908082528060200260200182016040528015613e6c578160200160208202803683370190505b5090505f805b8460e0015151811015613f49575f84905060208660e001518381518110613e9b57613e9b615289565b602090810291909101015163ffffffff16901b175f5b5f828152600f6020526040902054811015613f3f575f828152600f60205260409020805482908110613ee557613ee5615289565b905f5260205f20015f9054906101000a90046001600160a01b0316858581518110613f1257613f12615289565b6001600160a01b039092166020928302919091019091015283613f3481615513565b945050600101613eb1565b5050600101613e72565b505092915050565b7aff00000000000000ff00000000000000ff00000000000000ff00006bffffffff0000000000000000604083901c9081167bffffffff00000000000000000000000000000000000000000000000084161760201c6fffffffff000000000000000000000000919091166001600160e01b031984161717601081901c9182167eff00000000000000ff00000000000000ff00000000000000ff000000000000821617600890811c7bff00000000000000ff00000000000000ff00000000000000ff000000939093167fff00000000000000ff00000000000000ff00000000000000ff000000000000009290921691909117919091179081901c7e0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f167f0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f00600492831c1617906140bd827f06060606060606060606060606060606060606060606060606060606060606066152cc565b901c7f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f1660276140ed91906155a4565b614117827f30303030303030303030303030303030303030303030303030303030303030306152cc565b610b9691906152cc565b5f83900361414257604051637c946ed760e01b815260040160405180910390fd5b8151158061415257508051825114155b1561417d57815181516040516308151c1160e41b815260048101929092526024820152604401610ca7565b5f805b8351811015612552576141948260016152cc565b8482815181106141a6576141a6615289565b602002602001015163ffffffff1610156141fa578381815181106141cc576141cc615289565b6020026020010151604051632ab10b0b60e21b8152600401610ca7919063ffffffff91909116815260200190565b83818151811061420c5761420c615289565b602090810291909101015163ffffffff169150600101614180565b5f8267ffffffffffffffff81111561424157614241614a9a565b60405190808252806020026020018201604052801561426a578160200160208202803683370190505b5060e08701525f5b838110156143ed5785818151811061428c5761428c615289565b60200260200101518760e0015182815181106142aa576142aa615289565b63ffffffff90921660209283029190910182015286518491908890849081106142d5576142d5615289565b602002602001015163ffffffff16901b811790508582815181106142fb576142fb615289565b6020908102919091018101515f838152600e8352604090208151815492909301516001600160601b0316640100000000026fffffffffffffffffffffffffffffffff1990921663ffffffff90931692909217179055855186908390811061436457614364615289565b60200260200101515f01518860800181815161438091906155bb565b63ffffffff1690525085516001600160601b038416908790849081106143a8576143a8615289565b6020026020010151602001516001600160601b031611156143e4578582815181106143d5576143d5615289565b60200260200101516020015192505b50600101614272565b506001600160601b038116865260808601515f9061440c9060026155d7565b6144179060016155bb565b63ffffffff16905061442a600382615611565b5f036144425761443b600382615624565b905061445b565b61444d600382615624565b6144589060016152cc565b90505b80876060015163ffffffff1610806144865750866080015163ffffffff16876060015163ffffffff16115b156144c5576060870151608088015160405163eb3a8ba360e01b815263ffffffff92831660048201526024810184905291166044820152606401610ca7565b50505050505050565b6144d882826145ba565b6001600160a01b0382163b156145b657604051630a85bd0160e11b8082523360048301525f6024830181905260448301849052608060648401526084830152906001600160a01b0384169063150b7a029060a4016020604051808303815f875af1158015614548573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061456c919061529d565b6001600160e01b031916146145b65760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610ca7565b5050565b6001600160a01b0382166146045760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610ca7565b5f818152600260205260409020546001600160a01b0316156146685760405162461bcd60e51b815260206004820152600e60248201527f414c52454144595f4d494e5445440000000000000000000000000000000000006044820152606401610ca7565b6001600160a01b0382165f81815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b5080545f8255905f5260205f20908101906146ed91906147b7565b50565b828054828255905f5260205f209060070160089004810192821561478c579160200282015f5b8382111561475a57835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302614716565b801561478a5782816101000a81549063ffffffff021916905560040160208160030104928301926001030261475a565b505b506147989291506147e7565b5090565b5080545f8255905f5260205f20908101906146ed91906147e7565b5b8082111561479857805477ffffffffffffffffffffffffffffffffffffffffffffffff191681556001016147b8565b5b80821115614798575f81556001016147e8565b6001600160e01b0319811681146146ed575f5ffd5b5f60208284031215614820575f5ffd5b813561482b816147fb565b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61482b6020830184614832565b5f60208284031215614882575f5ffd5b5035919050565b6001600160a01b03811681146146ed575f5ffd5b5f5f604083850312156148ae575f5ffd5b82356148b981614889565b946020939093013593505050565b5f602082840312156148d7575f5ffd5b813561482b81614889565b5f60408201848352604060208401528084518083526060850191506020860192505f5b8181101561493e578351805163ffffffff1684526020908101516001600160601b03168185015290930192604090920191600101614905565b50909695505050505050565b5f5f6040838503121561495b575f5ffd5b50508035926020909101359150565b5f8151808452602084019350602083015f5b828110156149a35781516001600160a01b031686526020958601959091019060010161497c565b5093949350505050565b828152604060208201525f6149c5604083018461496a565b949350505050565b5f5f5f606084860312156149df575f5ffd5b83356149ea81614889565b925060208401356149fa81614889565b929592945050506040919091013590565b634e487b7160e01b5f52602160045260245ffd5b60068110614a3b57634e487b7160e01b5f52602160045260245ffd5b9052565b6001600160601b03881681526001600160a01b03871660208201526040810186905263ffffffff85811660608301528481166080830152831660a082015260e08101614a8e60c0830184614a1f565b98975050505050505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715614ad157614ad1614a9a565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614b0057614b00614a9a565b604052919050565b5f5f67ffffffffffffffff841115614b2257614b22614a9a565b50601f8301601f1916602001614b3781614ad7565b915050828152838383011115614b4b575f5ffd5b828260208301375f602084830101529392505050565b5f60208284031215614b71575f5ffd5b813567ffffffffffffffff811115614b87575f5ffd5b8201601f81018413614b97575f5ffd5b6149c584823560208401614b08565b5f67ffffffffffffffff821115614bbf57614bbf614a9a565b5060051b60200190565b5f82601f830112614bd8575f5ffd5b8135614beb614be682614ba6565b614ad7565b8082825260208201915060208360051b860101925085831115614c0c575f5ffd5b602085015b83811015614c32578035614c2481614889565b835260209283019201614c11565b5095945050505050565b80356001600160601b038116811461155a575f5ffd5b5f5f5f60608486031215614c64575f5ffd5b833567ffffffffffffffff811115614c7a575f5ffd5b614c8686828701614bc9565b935050602084013567ffffffffffffffff811115614ca2575f5ffd5b8401601f81018613614cb2575f5ffd5b8035614cc0614be682614ba6565b8082825260208201915060208360051b850101925088831115614ce1575f5ffd5b6020840193505b82841015614d0a57614cf984614c3c565b825260209384019390910190614ce8565b959895975050505060409390930135925050565b5f5f60408385031215614d2f575f5ffd5b8235614d3a81614889565b915060208301358015158114614d4e575f5ffd5b809150509250929050565b5f60408201848352604060208401528084518083526060850191506020860192505f5b8181101561493e578351835260209384019390920191600101614d7c565b5f5f5f5f5f60808688031215614dae575f5ffd5b8535614db981614889565b94506020860135614dc981614889565b935060408601359250606086013567ffffffffffffffff811115614deb575f5ffd5b8601601f81018813614dfb575f5ffd5b803567ffffffffffffffff811115614e11575f5ffd5b886020828401011115614e22575f5ffd5b959894975092955050506020019190565b803563ffffffff8116811461155a575f5ffd5b5f82601f830112614e55575f5ffd5b8135614e63614be682614ba6565b8082825260208201915060208360051b860101925085831115614e84575f5ffd5b602085015b83811015614c3257614e9a81614e33565b835260209283019201614e89565b5f82601f830112614eb7575f5ffd5b8135614ec5614be682614ba6565b8082825260208201915060208360061b860101925085831115614ee6575f5ffd5b602085015b83811015614c325760408188031215614f02575f5ffd5b614f0a614aae565b614f1382614e33565b8152614f2160208301614c3c565b602082015280845250602083019250604081019050614eeb565b5f5f5f5f5f5f60c08789031215614f50575f5ffd5b8635614f5b81614889565b955060208701359450604087013567ffffffffffffffff811115614f7d575f5ffd5b614f8989828a01614e46565b945050606087013567ffffffffffffffff811115614fa5575f5ffd5b614fb189828a01614ea8565b935050614fc060808801614e33565b9598949750929591949360a090920135925050565b5f5f5f5f60808587031215614fe8575f5ffd5b8435614ff381614889565b935060208501359250604085013567ffffffffffffffff811115615015575f5ffd5b61502187828801614bc9565b925050606085013567ffffffffffffffff81111561503d575f5ffd5b61504987828801614e46565b91505092959194509250565b5f5f60408385031215615066575f5ffd5b823561507181614889565b91506020830135614d4e81614889565b5f8151808452602084019350602083015f5b828110156149a357815163ffffffff16865260209586019590910190600101615093565b602081526001600160601b0382511660208201526001600160a01b036020830151166040820152604082015160608201525f6060830151615100608084018263ffffffff169052565b50608083015163ffffffff811660a08401525060a083015163ffffffff811660c08401525060c083015161513760e0840182614a1f565b5060e0830151610100808401526149c5610120840182615081565b5f5f5f5f60808587031215615165575f5ffd5b843561517081614889565b935060208501359250604085013561518781614889565b9150606085013567ffffffffffffffff8111156151a2575f5ffd5b8501601f810187136151b2575f5ffd5b61504987823560208401614b08565b5f5f5f5f5f60a086880312156151d5575f5ffd5b85356151e081614889565b945060208601359350604086013567ffffffffffffffff811115615202575f5ffd5b61520e88828901614e46565b935050606086013567ffffffffffffffff81111561522a575f5ffd5b61523688828901614ea8565b92505061524560808701614e33565b90509295509295909350565b600181811c9082168061526557607f821691505b60208210810361528357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156152ad575f5ffd5b815161482b816147fb565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610b9657610b966152b8565b601f8211156113a757805f5260205f20601f840160051c810160208510156153045750805b601f840160051c820191505b81811015612552575f8155600101615310565b815167ffffffffffffffff81111561533d5761533d614a9a565b6153518161534b8454615251565b846152df565b6020601f821160018114615383575f831561536c5750848201515b5f19600385901b1c1916600184901b178455612552565b5f84815260208120601f198516915b828110156153b25787850151825560209485019460019092019101615392565b50848210156153cf57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b6001600160601b038181168382160190811115610b9657610b966152b8565b6001600160601b038281168282160390811115610b9657610b966152b8565b63ffffffff8281168282160390811115610b9657610b966152b8565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152816080820152818360a08301375f81830160a090810191909152601f909201601f19160101949350505050565b5f5f865461549a81615251565b6001821680156154b157600181146154c6576154f3565b60ff19831686528115158202860193506154f3565b895f5260205f205f5b838110156154eb578154888201526001909101906020016154cf565b505081860193505b50505085518060208801835e019384525050602082015260400192915050565b5f60018201615524576155246152b8565b5060010190565b5f63ffffffff821663ffffffff8103615546576155466152b8565b60010192915050565b606081525f615561606083018661496a565b63ffffffff85166020840152828103604084015261557f8185614832565b9695505050505050565b5f60208284031215615599575f5ffd5b815161482b81614889565b8082028115828204841417610b9657610b966152b8565b63ffffffff8181168382160190811115610b9657610b966152b8565b63ffffffff81811683821602908116908181146155f6576155f66152b8565b5092915050565b634e487b7160e01b5f52601260045260245ffd5b5f8261561f5761561f6155fd565b500690565b5f82615632576156326155fd565b50049056fea26469706673582212208d37ec3bdfcbbd60b58ffad1c94bed6e9df47f30dc210ad84ab2b82fc84d2cb064736f6c634300081c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/abis/0.8.28/ServiceRegistryTokenUtility.json b/abis/0.8.28/ServiceRegistryTokenUtility.json new file mode 100644 index 00000000..4b4f6f5a --- /dev/null +++ b/abis/0.8.28/ServiceRegistryTokenUtility.json @@ -0,0 +1,926 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ServiceRegistryTokenUtility", + "sourceName": "contracts/ServiceRegistryTokenUtility.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_serviceRegistry", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "AgentInstanceRegistered", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "AgentInstancesSlotsFilled", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + } + ], + "name": "AgentNotFound", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "AgentNotInService", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "componentId", + "type": "uint256" + } + ], + "name": "ComponentNotFound", + "type": "error" + }, + { + "inputs": [], + "name": "HashExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "sent", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "IncorrectAgentBondingValue", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "sent", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "IncorrectRegistrationDepositValue", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "manager", + "type": "address" + } + ], + "name": "ManagerOnly", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "provided", + "type": "address" + }, + { + "internalType": "address", + "name": "expected", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "OnlyOwnServiceMultisig", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "OperatorHasNoInstances", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "provided", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "Overflow", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnerOnly", + "type": "error" + }, + { + "inputs": [], + "name": "Paused", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuard", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "ServiceMustBeInactive", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "TokenRejected", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TransferFailed", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "multisig", + "type": "address" + } + ], + "name": "UnauthorizedMultisig", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + } + ], + "name": "WrongAgentId", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numValues1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "numValues2", + "type": "uint256" + } + ], + "name": "WrongArrayLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "WrongOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "state", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "WrongServiceState", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "currentThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxThreshold", + "type": "uint256" + } + ], + "name": "WrongThreshold", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddress", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroValue", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "drainer", + "type": "address" + } + ], + "name": "DrainerUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "manager", + "type": "address" + } + ], + "name": "ManagerUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "OperatorTokenSlashed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnerUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenDeposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "drainer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenDrain", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenRefund", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "activateRegistrationTokenDeposit", + "outputs": [ + { + "internalType": "bool", + "name": "isTokenSecured", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newDrainer", + "type": "address" + } + ], + "name": "changeDrainer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newManager", + "type": "address" + } + ], + "name": "changeManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "changeOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint32[]", + "name": "agentIds", + "type": "uint32[]" + }, + { + "internalType": "uint256[]", + "name": "bonds", + "type": "uint256[]" + } + ], + "name": "createWithToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "drain", + "outputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "drainer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + } + ], + "name": "getAgentBond", + "outputs": [ + { + "internalType": "uint256", + "name": "bond", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "getOperatorBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "isTokenSecuredService", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "manager", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapOperatorAndServiceIdOperatorBalances", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapServiceAndAgentIdAgentBond", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapServiceIdTokenDeposit", + "outputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint96", + "name": "securityDeposit", + "type": "uint96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "mapSlashedFunds", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "uint32[]", + "name": "agentIds", + "type": "uint32[]" + } + ], + "name": "registerAgentsTokenDeposit", + "outputs": [ + { + "internalType": "bool", + "name": "isTokenSecured", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "resetServiceToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "serviceRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "agentInstances", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "slash", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "terminateTokenRefund", + "outputs": [ + { + "internalType": "uint256", + "name": "securityRefund", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "unbondTokenRefund", + "outputs": [ + { + "internalType": "uint256", + "name": "refund", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60a06040526001600355348015610014575f5ffd5b50604051611e77380380611e778339810160408190526100339161007c565b6001600160a01b03811661005a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03166080525f80546001600160a01b031916331790556100a9565b5f6020828403121561008c575f5ffd5b81516001600160a01b03811681146100a2575f5ffd5b9392505050565b608051611d9a6100dd5f395f81816103ad015281816105a9015281816106a1015281816108260152610b300152611d9a5ff3fe608060405234801561000f575f5ffd5b5060043610610179575f3560e01c806375c1f934116100d2578063b0f4c24811610088578063dc4f8bc511610063578063dc4f8bc5146103ee578063e3ce9a8414610401578063ece5313214610414575f5ffd5b8063b0f4c24814610395578063cbcf252a146103a8578063cbd413a5146103cf575f5ffd5b80638da5cb5b116100b85780638da5cb5b1461035d578063a3fbbaae1461036f578063a6f9dae114610382575f5ffd5b806375c1f934146103085780638a2bd86f1461032f575f5ffd5b806346d7836d11610132578063542db4491161010d578063542db449146102cf57806357838e85146102e25780635f366258146102f5575f5ffd5b806346d7836d14610257578063481c6a75146102915780635419bb8c146102bc575f5ffd5b806325e1afc31161016257806325e1afc3146101c45780633cebfa4f146101d75780634214485414610238575f5ffd5b806310c6aa191461017d57806313f824d814610192575b5f5ffd5b61019061018b3660046118d4565b610427565b005b6101b16101a03660046118f6565b60056020525f908152604090205481565b6040519081526020015b60405180910390f35b6101b16101d23660046118f6565b6104e7565b6102116101e53660046118f6565b60046020525f90815260409020546001600160a01b03811690600160a01b90046001600160601b031682565b604080516001600160a01b0390931683526001600160601b039091166020830152016101bb565b6101b16102463660046118f6565b60066020525f908152604090205481565b6102816102653660046118f6565b5f908152600460205260409020546001600160a01b0316151590565b60405190151581526020016101bb565b6001546102a4906001600160a01b031681565b6040516001600160a01b0390911681526020016101bb565b6102816102ca3660046119df565b61069c565b6102816102dd3660046118f6565b610a58565b6002546102a4906001600160a01b031681565b6101906103033660046118f6565b610dcf565b6101b1610316366004611aad565b602090811b9091175f9081526005909152604090205490565b6101b161033d366004611acd565b60a01b6001600160a01b03909116175f9081526006602052604090205490565b5f546102a4906001600160a01b031681565b61019061037d3660046118d4565b610e1f565b6101906103903660046118d4565b610eda565b6101b16103a3366004611acd565b610f93565b6102a47f000000000000000000000000000000000000000000000000000000000000000081565b6101b16103dd3660046118d4565b60076020525f908152604090205481565b6102816103fc366004611b6c565b6110b5565b61019061040f366004611bc1565b611404565b6101b16104223660046118d4565b611698565b5f546001600160a01b0316331461046a575f5460405163521eb56d60e11b81523360048201526001600160a01b0390911660248201526044015b60405180910390fd5b6001600160a01b0381166104915760405163d92e233d60e01b815260040160405180910390fd5b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517f8d1e8547016120917daad7f81c42b48f7fee379badc48f1889f0f43bb6194725905f90a250565b5f6001600354111561050c576040516345f5ce8b60e11b815260040160405180910390fd5b60026003556001546001600160a01b031633146105515760015460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610461565b5f828152600460209081526040918290208251808401909352546001600160a01b038116808452600160a01b9091046001600160601b03169183019190915280156106905781602001516001600160601b031692505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e866040518263ffffffff1660e01b81526004016105f591815260200190565b602060405180830381865afa158015610610573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106349190611c41565b90506106418282866117bc565b816001600160a01b0316816001600160a01b03167fb5ea3bd24bc48df54cdc99f11e448ab16503a3e16f46c363202f5fff4891acba8660405161068691815260200190565b60405180910390a3505b50506001600355919050565b5f5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634236aff8856040518263ffffffff1660e01b81526004016106ed91815260200190565b60e060405180830381865afa158015610708573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061072c9190611c5c565b9650505050509250508060ff1660041461076557604051633c053f9d60e21b815260ff8216600482015260248101859052604401610461565b8551158061077557508451865114155b156107a057855185516040516308151c1160e41b815260048101929092526024820152604401610461565b336001600160a01b038316146107e1576040516379f91cd360e01b81523360048201526001600160a01b038316602482015260448101859052606401610461565b5f848152600460205260409020546001600160a01b0316806108165760405163d92e233d60e01b815260040160405180910390fd5b86515f805b82811015610a0b575f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634eb780da8c848151811061086557610865611cf9565b60200260200101516040518263ffffffff1660e01b815260040161089891906001600160a01b0391909116815260200190565b602060405180830381865afa1580156108b3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d79190611c41565b60a08a901b6001600160a01b038216175f8181526006602052604081205492935090919081900361090a57505050610a03565b808c858151811061091d5761091d611cf9565b60200260200101511061093e576109348186611d21565b94505f905061098d565b8b848151811061095057610950611cf9565b6020026020010151856109639190611d21565b94508b848151811061097757610977611cf9565b60200260200101518161098a9190611d3a565b90505b5f8281526006602052604090208190558b518b906001600160a01b038516907fd79658b314eb967321e5e6a82ab39f6f7ffc567d38c6feee527761aca406a597908f90889081106109e0576109e0611cf9565b60200260200101516040516109f791815260200190565b60405180910390a35050505b60010161081b565b506001600160a01b0383165f90815260076020526040902054610a2e9082611d21565b6001600160a01b039093165f90815260076020526040902092909255506001979650505050505050565b5f60016003541115610a7d576040516345f5ce8b60e11b815260040160405180910390fd5b60026003556001546001600160a01b03163314610ac25760015460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610461565b5f828152600460209081526040918290208251808401909352546001600160a01b038116808452600160a01b9091046001600160601b03169183019190915280156106905760208201516040516331a9108f60e11b8152600481018690526001600160601b03909116905f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610b7d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ba19190611c41565b604051636eb1769f60e11b81526001600160a01b0380831660048301523060248301529192505f9185169063dd62ed3e90604401602060405180830381865afa158015610bf0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c149190611d4d565b905082811015610c4857604051631c30abbb60e31b8152600481018290526024810184905260448101889052606401610461565b6040516370a0823160e01b8152306004820152600196505f906001600160a01b038616906370a0823190602401602060405180830381865afa158015610c90573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb49190611d4d565b9050610cc285843087611839565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa158015610d06573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d2a9190611d4d565b905080821180610d43575084610d408383611d3a565b14155b15610d7157604051631c30abbb60e31b81525f600482015260248101869052604481018a9052606401610461565b856001600160a01b0316846001600160a01b03167f98c09d9949722bae4bd0d988d4050091c3ae7ec6d51d3c6bbfe4233593944e9e87604051610db691815260200190565b60405180910390a3505050505050506001600355919050565b6001546001600160a01b03163314610e0f5760015460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610461565b5f90815260046020526040812055565b5f546001600160a01b03163314610e5d575f5460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610461565b6001600160a01b038116610e845760405163d92e233d60e01b815260040160405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517f2c1c11af44aa5608f1dca38c00275c30ea091e02417d36e70e9a1538689c433d905f90a250565b5f546001600160a01b03163314610f18575f5460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610461565b6001600160a01b038116610f3f5760405163d92e233d60e01b815260040160405180910390fd5b5f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117825560405190917f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b91a250565b5f60016003541115610fb8576040516345f5ce8b60e11b815260040160405180910390fd5b60026003556001546001600160a01b03163314610ffd5760015460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610461565b5f828152600460205260409020546001600160a01b031680156110a95760a083901b6001600160a01b038516175f81815260066020526040902054925082156110a7575f818152600660205260408120556110598286856117bc565b816001600160a01b0316856001600160a01b03167fb5ea3bd24bc48df54cdc99f11e448ab16503a3e16f46c363202f5fff4891acba8560405161109e91815260200190565b60405180910390a35b505b50600160035592915050565b5f600160035411156110da576040516345f5ce8b60e11b815260040160405180910390fd5b60026003556001546001600160a01b0316331461111f5760015460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610461565b5f838152600460205260409020546001600160a01b031680156113f75782515f805b828110156111a2575f879050602087838151811061116157611161611cf9565b60209081029190910181015163ffffffff1690911b919091175f81815260059092526040909120546111938185611d21565b93505050806001019050611141565b50604051636eb1769f60e11b81526001600160a01b0388811660048301523060248301525f919085169063dd62ed3e90604401602060405180830381865afa1580156111f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112149190611d4d565b90508181101561124857604051637ebbcab960e11b8152600481018290526024810183905260448101889052606401610461565b60a087901b6001600160a01b038916175f8181526006602052604081208054859290611275908490611d21565b90915550506040516370a0823160e01b8152306004820152600196505f906001600160a01b038716906370a0823190602401602060405180830381865afa1580156112c2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e69190611d4d565b90506112f4868b3087611839565b6040516370a0823160e01b81523060048201525f906001600160a01b038816906370a0823190602401602060405180830381865afa158015611338573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061135c9190611d4d565b9050808211806113755750846113728383611d3a565b14155b156113a357604051637ebbcab960e11b81525f600482015260248101869052604481018b9052606401610461565b866001600160a01b03168b6001600160a01b03167f98c09d9949722bae4bd0d988d4050091c3ae7ec6d51d3c6bbfe4233593944e9e876040516113e891815260200190565b60405180910390a35050505050505b5060016003559392505050565b6001546001600160a01b031633146114445760015460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610461565b604080515f60248083018290528351808403909101815260449092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166370a0823160e01b1790527f70a08231b98ef4ca268c9cc3f6b4590e4bfec28280db06bb5d45e689f2a360be91906001600160a01b0386163b156114d3575f5f825160208401895afa91505b816114fc5760405163e77376f360e01b81526001600160a01b0387166004820152602401610461565b5f805b86518110156116455785818151811061151a5761151a611cf9565b60200260200101515f031561163d576001600160601b03801686828151811061154557611545611cf9565b602002602001015111156115a25785818151811061156557611565611cf9565b60200260200101516001600160601b03604051637ae5968560e01b81526004016104619291909182526001600160601b0316602082015260400190565b5f89905060208883815181106115ba576115ba611cf9565b602002602001015163ffffffff16901b811790508682815181106115e0576115e0611cf9565b602002602001015160055f8381526020019081526020015f20819055508287838151811061161057611610611cf9565b6020026020010151111561163b5786828151811061163057611630611cf9565b602002602001015192505b505b6001016114ff565b506040805180820182526001600160a01b0398891681526001600160601b0392831660208083019182525f9b8c52600490529190992098519051909116600160a01b029616959095179095555050505050565b5f600160035411156116bd576040516345f5ce8b60e11b815260040160405180910390fd5b60026003555f546001600160a01b03163314611700575f5460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610461565b6002546001600160a01b03166117295760405163d92e233d60e01b815260040160405180910390fd5b506001600160a01b0381165f9081526007602052604090205480156117b2576001600160a01b038083165f9081526007602052604081205560025461177191849116836117bc565b6040518181526001600160a01b0383169033907feb64d3e0fe21df59e0edd78e9749e4bc9f3cf593a842d487fe40f29ef45fdad69060200160405180910390a35b6001600355919050565b5f60405163a9059cbb60e01b5f52836004528260245260205f60445f5f895af13d15601f3d1160015f511416171691505f6060528060405250806118335760405163cd3f165960e01b81526001600160a01b0380861660048301523060248301528416604482015260648101839052608401610461565b50505050565b5f6040516323b872dd60e01b5f5284600452836024528260445260205f60645f5f8a5af13d15601f3d1160015f511416171691505f6060528060405250806118b65760405163cd3f165960e01b81526001600160a01b03808716600483015280861660248301528416604482015260648101839052608401610461565b5050505050565b6001600160a01b03811681146118d1575f5ffd5b50565b5f602082840312156118e4575f5ffd5b81356118ef816118bd565b9392505050565b5f60208284031215611906575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561194a5761194a61190d565b604052919050565b5f67ffffffffffffffff82111561196b5761196b61190d565b5060051b60200190565b5f82601f830112611984575f5ffd5b813561199761199282611952565b611921565b8082825260208201915060208360051b8601019250858311156119b8575f5ffd5b602085015b838110156119d55780358352602092830192016119bd565b5095945050505050565b5f5f5f606084860312156119f1575f5ffd5b833567ffffffffffffffff811115611a07575f5ffd5b8401601f81018613611a17575f5ffd5b8035611a2561199282611952565b8082825260208201915060208360051b850101925088831115611a46575f5ffd5b6020840193505b82841015611a71578335611a60816118bd565b825260209384019390910190611a4d565b9550505050602084013567ffffffffffffffff811115611a8f575f5ffd5b611a9b86828701611975565b93969395505050506040919091013590565b5f5f60408385031215611abe575f5ffd5b50508035926020909101359150565b5f5f60408385031215611ade575f5ffd5b8235611ae9816118bd565b946020939093013593505050565b63ffffffff811681146118d1575f5ffd5b5f82601f830112611b17575f5ffd5b8135611b2561199282611952565b8082825260208201915060208360051b860101925085831115611b46575f5ffd5b602085015b838110156119d5578035611b5e81611af7565b835260209283019201611b4b565b5f5f5f60608486031215611b7e575f5ffd5b8335611b89816118bd565b925060208401359150604084013567ffffffffffffffff811115611bab575f5ffd5b611bb786828701611b08565b9150509250925092565b5f5f5f5f60808587031215611bd4575f5ffd5b843593506020850135611be6816118bd565b9250604085013567ffffffffffffffff811115611c01575f5ffd5b611c0d87828801611b08565b925050606085013567ffffffffffffffff811115611c29575f5ffd5b611c3587828801611975565b91505092959194509250565b5f60208284031215611c51575f5ffd5b81516118ef816118bd565b5f5f5f5f5f5f5f60e0888a031215611c72575f5ffd5b87516001600160601b0381168114611c88575f5ffd5b6020890151909750611c99816118bd565b604089015160608a01519197509550611cb181611af7565b6080890151909450611cc281611af7565b60a0890151909350611cd381611af7565b60c089015190925060ff81168114611ce9575f5ffd5b8091505092959891949750929550565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115611d3457611d34611d0d565b92915050565b81810381811115611d3457611d34611d0d565b5f60208284031215611d5d575f5ffd5b505191905056fea26469706673582212201cf065724aecdad4a24ff271e061ee3eb243de2d8e61ee3359e66c1e686e6d2464736f6c634300081c0033", + "deployedBytecode": "0x608060405234801561000f575f5ffd5b5060043610610179575f3560e01c806375c1f934116100d2578063b0f4c24811610088578063dc4f8bc511610063578063dc4f8bc5146103ee578063e3ce9a8414610401578063ece5313214610414575f5ffd5b8063b0f4c24814610395578063cbcf252a146103a8578063cbd413a5146103cf575f5ffd5b80638da5cb5b116100b85780638da5cb5b1461035d578063a3fbbaae1461036f578063a6f9dae114610382575f5ffd5b806375c1f934146103085780638a2bd86f1461032f575f5ffd5b806346d7836d11610132578063542db4491161010d578063542db449146102cf57806357838e85146102e25780635f366258146102f5575f5ffd5b806346d7836d14610257578063481c6a75146102915780635419bb8c146102bc575f5ffd5b806325e1afc31161016257806325e1afc3146101c45780633cebfa4f146101d75780634214485414610238575f5ffd5b806310c6aa191461017d57806313f824d814610192575b5f5ffd5b61019061018b3660046118d4565b610427565b005b6101b16101a03660046118f6565b60056020525f908152604090205481565b6040519081526020015b60405180910390f35b6101b16101d23660046118f6565b6104e7565b6102116101e53660046118f6565b60046020525f90815260409020546001600160a01b03811690600160a01b90046001600160601b031682565b604080516001600160a01b0390931683526001600160601b039091166020830152016101bb565b6101b16102463660046118f6565b60066020525f908152604090205481565b6102816102653660046118f6565b5f908152600460205260409020546001600160a01b0316151590565b60405190151581526020016101bb565b6001546102a4906001600160a01b031681565b6040516001600160a01b0390911681526020016101bb565b6102816102ca3660046119df565b61069c565b6102816102dd3660046118f6565b610a58565b6002546102a4906001600160a01b031681565b6101906103033660046118f6565b610dcf565b6101b1610316366004611aad565b602090811b9091175f9081526005909152604090205490565b6101b161033d366004611acd565b60a01b6001600160a01b03909116175f9081526006602052604090205490565b5f546102a4906001600160a01b031681565b61019061037d3660046118d4565b610e1f565b6101906103903660046118d4565b610eda565b6101b16103a3366004611acd565b610f93565b6102a47f000000000000000000000000000000000000000000000000000000000000000081565b6101b16103dd3660046118d4565b60076020525f908152604090205481565b6102816103fc366004611b6c565b6110b5565b61019061040f366004611bc1565b611404565b6101b16104223660046118d4565b611698565b5f546001600160a01b0316331461046a575f5460405163521eb56d60e11b81523360048201526001600160a01b0390911660248201526044015b60405180910390fd5b6001600160a01b0381166104915760405163d92e233d60e01b815260040160405180910390fd5b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517f8d1e8547016120917daad7f81c42b48f7fee379badc48f1889f0f43bb6194725905f90a250565b5f6001600354111561050c576040516345f5ce8b60e11b815260040160405180910390fd5b60026003556001546001600160a01b031633146105515760015460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610461565b5f828152600460209081526040918290208251808401909352546001600160a01b038116808452600160a01b9091046001600160601b03169183019190915280156106905781602001516001600160601b031692505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e866040518263ffffffff1660e01b81526004016105f591815260200190565b602060405180830381865afa158015610610573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106349190611c41565b90506106418282866117bc565b816001600160a01b0316816001600160a01b03167fb5ea3bd24bc48df54cdc99f11e448ab16503a3e16f46c363202f5fff4891acba8660405161068691815260200190565b60405180910390a3505b50506001600355919050565b5f5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634236aff8856040518263ffffffff1660e01b81526004016106ed91815260200190565b60e060405180830381865afa158015610708573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061072c9190611c5c565b9650505050509250508060ff1660041461076557604051633c053f9d60e21b815260ff8216600482015260248101859052604401610461565b8551158061077557508451865114155b156107a057855185516040516308151c1160e41b815260048101929092526024820152604401610461565b336001600160a01b038316146107e1576040516379f91cd360e01b81523360048201526001600160a01b038316602482015260448101859052606401610461565b5f848152600460205260409020546001600160a01b0316806108165760405163d92e233d60e01b815260040160405180910390fd5b86515f805b82811015610a0b575f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634eb780da8c848151811061086557610865611cf9565b60200260200101516040518263ffffffff1660e01b815260040161089891906001600160a01b0391909116815260200190565b602060405180830381865afa1580156108b3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d79190611c41565b60a08a901b6001600160a01b038216175f8181526006602052604081205492935090919081900361090a57505050610a03565b808c858151811061091d5761091d611cf9565b60200260200101511061093e576109348186611d21565b94505f905061098d565b8b848151811061095057610950611cf9565b6020026020010151856109639190611d21565b94508b848151811061097757610977611cf9565b60200260200101518161098a9190611d3a565b90505b5f8281526006602052604090208190558b518b906001600160a01b038516907fd79658b314eb967321e5e6a82ab39f6f7ffc567d38c6feee527761aca406a597908f90889081106109e0576109e0611cf9565b60200260200101516040516109f791815260200190565b60405180910390a35050505b60010161081b565b506001600160a01b0383165f90815260076020526040902054610a2e9082611d21565b6001600160a01b039093165f90815260076020526040902092909255506001979650505050505050565b5f60016003541115610a7d576040516345f5ce8b60e11b815260040160405180910390fd5b60026003556001546001600160a01b03163314610ac25760015460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610461565b5f828152600460209081526040918290208251808401909352546001600160a01b038116808452600160a01b9091046001600160601b03169183019190915280156106905760208201516040516331a9108f60e11b8152600481018690526001600160601b03909116905f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610b7d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ba19190611c41565b604051636eb1769f60e11b81526001600160a01b0380831660048301523060248301529192505f9185169063dd62ed3e90604401602060405180830381865afa158015610bf0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c149190611d4d565b905082811015610c4857604051631c30abbb60e31b8152600481018290526024810184905260448101889052606401610461565b6040516370a0823160e01b8152306004820152600196505f906001600160a01b038616906370a0823190602401602060405180830381865afa158015610c90573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb49190611d4d565b9050610cc285843087611839565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa158015610d06573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d2a9190611d4d565b905080821180610d43575084610d408383611d3a565b14155b15610d7157604051631c30abbb60e31b81525f600482015260248101869052604481018a9052606401610461565b856001600160a01b0316846001600160a01b03167f98c09d9949722bae4bd0d988d4050091c3ae7ec6d51d3c6bbfe4233593944e9e87604051610db691815260200190565b60405180910390a3505050505050506001600355919050565b6001546001600160a01b03163314610e0f5760015460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610461565b5f90815260046020526040812055565b5f546001600160a01b03163314610e5d575f5460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610461565b6001600160a01b038116610e845760405163d92e233d60e01b815260040160405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517f2c1c11af44aa5608f1dca38c00275c30ea091e02417d36e70e9a1538689c433d905f90a250565b5f546001600160a01b03163314610f18575f5460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610461565b6001600160a01b038116610f3f5760405163d92e233d60e01b815260040160405180910390fd5b5f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117825560405190917f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b91a250565b5f60016003541115610fb8576040516345f5ce8b60e11b815260040160405180910390fd5b60026003556001546001600160a01b03163314610ffd5760015460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610461565b5f828152600460205260409020546001600160a01b031680156110a95760a083901b6001600160a01b038516175f81815260066020526040902054925082156110a7575f818152600660205260408120556110598286856117bc565b816001600160a01b0316856001600160a01b03167fb5ea3bd24bc48df54cdc99f11e448ab16503a3e16f46c363202f5fff4891acba8560405161109e91815260200190565b60405180910390a35b505b50600160035592915050565b5f600160035411156110da576040516345f5ce8b60e11b815260040160405180910390fd5b60026003556001546001600160a01b0316331461111f5760015460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610461565b5f838152600460205260409020546001600160a01b031680156113f75782515f805b828110156111a2575f879050602087838151811061116157611161611cf9565b60209081029190910181015163ffffffff1690911b919091175f81815260059092526040909120546111938185611d21565b93505050806001019050611141565b50604051636eb1769f60e11b81526001600160a01b0388811660048301523060248301525f919085169063dd62ed3e90604401602060405180830381865afa1580156111f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112149190611d4d565b90508181101561124857604051637ebbcab960e11b8152600481018290526024810183905260448101889052606401610461565b60a087901b6001600160a01b038916175f8181526006602052604081208054859290611275908490611d21565b90915550506040516370a0823160e01b8152306004820152600196505f906001600160a01b038716906370a0823190602401602060405180830381865afa1580156112c2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e69190611d4d565b90506112f4868b3087611839565b6040516370a0823160e01b81523060048201525f906001600160a01b038816906370a0823190602401602060405180830381865afa158015611338573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061135c9190611d4d565b9050808211806113755750846113728383611d3a565b14155b156113a357604051637ebbcab960e11b81525f600482015260248101869052604481018b9052606401610461565b866001600160a01b03168b6001600160a01b03167f98c09d9949722bae4bd0d988d4050091c3ae7ec6d51d3c6bbfe4233593944e9e876040516113e891815260200190565b60405180910390a35050505050505b5060016003559392505050565b6001546001600160a01b031633146114445760015460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610461565b604080515f60248083018290528351808403909101815260449092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166370a0823160e01b1790527f70a08231b98ef4ca268c9cc3f6b4590e4bfec28280db06bb5d45e689f2a360be91906001600160a01b0386163b156114d3575f5f825160208401895afa91505b816114fc5760405163e77376f360e01b81526001600160a01b0387166004820152602401610461565b5f805b86518110156116455785818151811061151a5761151a611cf9565b60200260200101515f031561163d576001600160601b03801686828151811061154557611545611cf9565b602002602001015111156115a25785818151811061156557611565611cf9565b60200260200101516001600160601b03604051637ae5968560e01b81526004016104619291909182526001600160601b0316602082015260400190565b5f89905060208883815181106115ba576115ba611cf9565b602002602001015163ffffffff16901b811790508682815181106115e0576115e0611cf9565b602002602001015160055f8381526020019081526020015f20819055508287838151811061161057611610611cf9565b6020026020010151111561163b5786828151811061163057611630611cf9565b602002602001015192505b505b6001016114ff565b506040805180820182526001600160a01b0398891681526001600160601b0392831660208083019182525f9b8c52600490529190992098519051909116600160a01b029616959095179095555050505050565b5f600160035411156116bd576040516345f5ce8b60e11b815260040160405180910390fd5b60026003555f546001600160a01b03163314611700575f5460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610461565b6002546001600160a01b03166117295760405163d92e233d60e01b815260040160405180910390fd5b506001600160a01b0381165f9081526007602052604090205480156117b2576001600160a01b038083165f9081526007602052604081205560025461177191849116836117bc565b6040518181526001600160a01b0383169033907feb64d3e0fe21df59e0edd78e9749e4bc9f3cf593a842d487fe40f29ef45fdad69060200160405180910390a35b6001600355919050565b5f60405163a9059cbb60e01b5f52836004528260245260205f60445f5f895af13d15601f3d1160015f511416171691505f6060528060405250806118335760405163cd3f165960e01b81526001600160a01b0380861660048301523060248301528416604482015260648101839052608401610461565b50505050565b5f6040516323b872dd60e01b5f5284600452836024528260445260205f60645f5f8a5af13d15601f3d1160015f511416171691505f6060528060405250806118b65760405163cd3f165960e01b81526001600160a01b03808716600483015280861660248301528416604482015260648101839052608401610461565b5050505050565b6001600160a01b03811681146118d1575f5ffd5b50565b5f602082840312156118e4575f5ffd5b81356118ef816118bd565b9392505050565b5f60208284031215611906575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561194a5761194a61190d565b604052919050565b5f67ffffffffffffffff82111561196b5761196b61190d565b5060051b60200190565b5f82601f830112611984575f5ffd5b813561199761199282611952565b611921565b8082825260208201915060208360051b8601019250858311156119b8575f5ffd5b602085015b838110156119d55780358352602092830192016119bd565b5095945050505050565b5f5f5f606084860312156119f1575f5ffd5b833567ffffffffffffffff811115611a07575f5ffd5b8401601f81018613611a17575f5ffd5b8035611a2561199282611952565b8082825260208201915060208360051b850101925088831115611a46575f5ffd5b6020840193505b82841015611a71578335611a60816118bd565b825260209384019390910190611a4d565b9550505050602084013567ffffffffffffffff811115611a8f575f5ffd5b611a9b86828701611975565b93969395505050506040919091013590565b5f5f60408385031215611abe575f5ffd5b50508035926020909101359150565b5f5f60408385031215611ade575f5ffd5b8235611ae9816118bd565b946020939093013593505050565b63ffffffff811681146118d1575f5ffd5b5f82601f830112611b17575f5ffd5b8135611b2561199282611952565b8082825260208201915060208360051b860101925085831115611b46575f5ffd5b602085015b838110156119d5578035611b5e81611af7565b835260209283019201611b4b565b5f5f5f60608486031215611b7e575f5ffd5b8335611b89816118bd565b925060208401359150604084013567ffffffffffffffff811115611bab575f5ffd5b611bb786828701611b08565b9150509250925092565b5f5f5f5f60808587031215611bd4575f5ffd5b843593506020850135611be6816118bd565b9250604085013567ffffffffffffffff811115611c01575f5ffd5b611c0d87828801611b08565b925050606085013567ffffffffffffffff811115611c29575f5ffd5b611c3587828801611975565b91505092959194509250565b5f60208284031215611c51575f5ffd5b81516118ef816118bd565b5f5f5f5f5f5f5f60e0888a031215611c72575f5ffd5b87516001600160601b0381168114611c88575f5ffd5b6020890151909750611c99816118bd565b604089015160608a01519197509550611cb181611af7565b6080890151909450611cc281611af7565b60a0890151909350611cd381611af7565b60c089015190925060ff81168114611ce9575f5ffd5b8091505092959891949750929550565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115611d3457611d34611d0d565b92915050565b81810381811115611d3457611d34611d0d565b5f60208284031215611d5d575f5ffd5b505191905056fea26469706673582212201cf065724aecdad4a24ff271e061ee3eb243de2d8e61ee3359e66c1e686e6d2464736f6c634300081c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/abis/0.8.28/StakingActivityChecker.json b/abis/0.8.28/StakingActivityChecker.json new file mode 100644 index 00000000..b2530742 --- /dev/null +++ b/abis/0.8.28/StakingActivityChecker.json @@ -0,0 +1,88 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "StakingActivityChecker", + "sourceName": "contracts/staking/StakingActivityChecker.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "_livenessRatio", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "ZeroValue", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "multisig", + "type": "address" + } + ], + "name": "getMultisigNonces", + "outputs": [ + { + "internalType": "uint256[]", + "name": "nonces", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "curNonces", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "lastNonces", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "ts", + "type": "uint256" + } + ], + "name": "isRatioPass", + "outputs": [ + { + "internalType": "bool", + "name": "ratioPass", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "livenessRatio", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60a0604052348015600e575f5ffd5b5060405161051e38038061051e833981016040819052602b916051565b805f03604a57604051637c946ed760e01b815260040160405180910390fd5b6080526067565b5f602082840312156060575f5ffd5b5051919050565b6080516104996100855f395f81816070015261016401526104995ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c8063184023a514610043578063592cf3fb1461006b578063d564c4bf146100a0575b5f5ffd5b6100566100513660046102f2565b6100c0565b60405190151581526020015b60405180910390f35b6100927f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610062565b6100b36100ae366004610360565b610190565b6040516100629190610393565b5f5f821180156101015750825f815181106100dd576100dd6103d5565b6020026020010151845f815181106100f7576100f76103d5565b6020026020010151115b15610189575f82845f8151811061011a5761011a6103d5565b6020026020010151865f81518110610134576101346103d5565b602002602001015161014691906103fd565b61015890670de0b6b3a7640000610416565b610162919061042d565b7f000000000000000000000000000000000000000000000000000000000000000011159150505b9392505050565b604080516001808252818301909252606091602080830190803683370190505090508173ffffffffffffffffffffffffffffffffffffffff1663affed0e06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101fb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061021f919061044c565b815f81518110610231576102316103d5565b602002602001018181525050919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610265575f5ffd5b813567ffffffffffffffff81111561027f5761027f610242565b8060051b604051601f19603f830116810181811067ffffffffffffffff821117156102ac576102ac610242565b6040529182526020818501810192908101868411156102c9575f5ffd5b6020860192505b838310156102e85782358152602092830192016102d0565b5095945050505050565b5f5f5f60608486031215610304575f5ffd5b833567ffffffffffffffff81111561031a575f5ffd5b61032686828701610256565b935050602084013567ffffffffffffffff811115610342575f5ffd5b61034e86828701610256565b93969395505050506040919091013590565b5f60208284031215610370575f5ffd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610189575f5ffd5b602080825282518282018190525f918401906040840190835b818110156103ca5783518352602093840193909201916001016103ac565b509095945050505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610410576104106103e9565b92915050565b8082028115828204841417610410576104106103e9565b5f8261044757634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121561045c575f5ffd5b505191905056fea2646970667358221220d8c23bca9c569abae8f76bbdcf3c2b81f59ba0475bf084332147c55ec642262164736f6c634300081c0033", + "deployedBytecode": "0x608060405234801561000f575f5ffd5b506004361061003f575f3560e01c8063184023a514610043578063592cf3fb1461006b578063d564c4bf146100a0575b5f5ffd5b6100566100513660046102f2565b6100c0565b60405190151581526020015b60405180910390f35b6100927f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610062565b6100b36100ae366004610360565b610190565b6040516100629190610393565b5f5f821180156101015750825f815181106100dd576100dd6103d5565b6020026020010151845f815181106100f7576100f76103d5565b6020026020010151115b15610189575f82845f8151811061011a5761011a6103d5565b6020026020010151865f81518110610134576101346103d5565b602002602001015161014691906103fd565b61015890670de0b6b3a7640000610416565b610162919061042d565b7f000000000000000000000000000000000000000000000000000000000000000011159150505b9392505050565b604080516001808252818301909252606091602080830190803683370190505090508173ffffffffffffffffffffffffffffffffffffffff1663affed0e06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101fb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061021f919061044c565b815f81518110610231576102316103d5565b602002602001018181525050919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610265575f5ffd5b813567ffffffffffffffff81111561027f5761027f610242565b8060051b604051601f19603f830116810181811067ffffffffffffffff821117156102ac576102ac610242565b6040529182526020818501810192908101868411156102c9575f5ffd5b6020860192505b838310156102e85782358152602092830192016102d0565b5095945050505050565b5f5f5f60608486031215610304575f5ffd5b833567ffffffffffffffff81111561031a575f5ffd5b61032686828701610256565b935050602084013567ffffffffffffffff811115610342575f5ffd5b61034e86828701610256565b93969395505050506040919091013590565b5f60208284031215610370575f5ffd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610189575f5ffd5b602080825282518282018190525f918401906040840190835b818110156103ca5783518352602093840193909201916001016103ac565b509095945050505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610410576104106103e9565b92915050565b8082028115828204841417610410576104106103e9565b5f8261044757634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121561045c575f5ffd5b505191905056fea2646970667358221220d8c23bca9c569abae8f76bbdcf3c2b81f59ba0475bf084332147c55ec642262164736f6c634300081c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/abis/0.8.28/StakingFactory.json b/abis/0.8.28/StakingFactory.json new file mode 100644 index 00000000..51db6216 --- /dev/null +++ b/abis/0.8.28/StakingFactory.json @@ -0,0 +1,445 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "StakingFactory", + "sourceName": "contracts/staking/StakingFactory.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_verifier", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ContractOnly", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "provided", + "type": "uint256" + } + ], + "name": "IncorrectDataLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "instance", + "type": "address" + } + ], + "name": "InitializationFailed", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnerOnly", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ProxyCreationFailed", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuard", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "UnverifiedImplementation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "instance", + "type": "address" + } + ], + "name": "UnverifiedProxy", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddress", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "instance", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "InstanceCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "instance", + "type": "address" + } + ], + "name": "InstanceRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "instance", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "isEnabled", + "type": "bool" + } + ], + "name": "InstanceStatusChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnerUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "verifier", + "type": "address" + } + ], + "name": "VerifierUpdated", + "type": "event" + }, + { + "inputs": [], + "name": "SELECTOR_DATA_LENGTH", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "changeOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newVerifier", + "type": "address" + } + ], + "name": "changeVerifier", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "initPayload", + "type": "bytes" + } + ], + "name": "createStakingInstance", + "outputs": [ + { + "internalType": "address payable", + "name": "instance", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "getProxyAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + }, + { + "internalType": "uint256", + "name": "localNonce", + "type": "uint256" + } + ], + "name": "getProxyAddressWithNonce", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "mapInstanceParams", + "outputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + }, + { + "internalType": "address", + "name": "deployer", + "type": "address" + }, + { + "internalType": "bool", + "name": "isEnabled", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nonce", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "instance", + "type": "address" + } + ], + "name": "removeInstance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "instance", + "type": "address" + }, + { + "internalType": "bool", + "name": "isEnabled", + "type": "bool" + } + ], + "name": "setInstanceStatus", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "verifier", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "instance", + "type": "address" + } + ], + "name": "verifyInstance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "instance", + "type": "address" + } + ], + "name": "verifyInstanceAndGetEmissionsAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405260016003553480156013575f5ffd5b5060405161118b38038061118b8339810160408190526030916062565b60018054336001600160a01b031991821617909155600280549091166001600160a01b0392909216919091179055608d565b5f602082840312156071575f5ffd5b81516001600160a01b03811681146086575f5ffd5b9392505050565b6110f18061009a5f395ff3fe608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c80638da5cb5b11610088578063cf04fb9411610063578063cf04fb94146101ce578063e8dc705a146101e1578063ec2ee1f614610248578063fa2a5b011461025b575f5ffd5b80638da5cb5b146101a0578063a6f9dae1146101b3578063affed0e0146101c6575f5ffd5b80633ce3778c116100c35780633ce3778c1461014f578063479e372e14610157578063555b8adb1461017a578063830a322a1461018d575f5ffd5b8063118e24bd146100e95780631eda94d7146100fe5780632b7ac3f314610124575b5f5ffd5b6100fc6100f7366004610ce1565b61026e565b005b61011161010c366004610d16565b610347565b6040519081526020015b60405180910390f35b600254610137906001600160a01b031681565b6040516001600160a01b03909116815260200161011b565b610111600481565b61016a610165366004610d16565b61045e565b604051901515815260200161011b565b610137610188366004610d36565b61052b565b6100fc61019b366004610d16565b6105ff565b600154610137906001600160a01b031681565b6100fc6101c1366004610d16565b6106e8565b6101115f5481565b6100fc6101dc366004610d16565b610798565b6102206101ef366004610d16565b60046020525f9081526040902080546001909101546001600160a01b0391821691811690600160a01b900460ff1683565b604080516001600160a01b03948516815293909216602084015215159082015260600161011b565b610137610256366004610d72565b610821565b610137610269366004610d16565b610c42565b6001600160a01b038083165f90815260046020526040902060018101549091163381146102c45760405163521eb56d60e11b81523360048201526001600160a01b03821660248201526044015b60405180910390fd5b600182018054841515600160a01b027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9091161790556040516001600160a01b038516907f11126b4c1d3b69d7dd553c2f8b2be5f8fabfe22552ceffc3240126fdc087eca09061033990861515815260200190565b60405180910390a250505050565b6001600160a01b0381165f90815260046020526040812060010154600160a01b900460ff168015610458576002546001600160a01b031680156103f357604051630e1e19e160e21b81526001600160a01b038581166004830152821690633878678490602401602060405180830381865afa1580156103c8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103ec9190610e36565b9250610456565b836001600160a01b031663957323616040518163ffffffff1660e01b8152600401602060405180830381865afa15801561042f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104539190610e36565b92505b505b50919050565b6001600160a01b0381165f9081526004602052604081206001810154600160a01b900460ff168061049257505f9392505050565b6002546001600160a01b031680156105205782546040516369be670b60e01b81526001600160a01b0387811660048301529182166024820152908216906369be670b90604401602060405180830381865afa1580156104f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105179190610e4d565b95945050505050565b506001949350505050565b5f5f61053683610c4e565b90505f6040518060200161054990610ca9565b601f1982820381018352601f90910116604081905261057691906001600160a01b03881690602001610e7f565b60408051808303601f1901815282825280516020918201207fff00000000000000000000000000000000000000000000000000000000000000828501523060601b6bffffffffffffffffffffffff191660218501526035840195909552605580840195909552815180840390950185526075909201905282519201919091209150505b92915050565b6001546001600160a01b0316331461063f5760015460405163521eb56d60e11b81523360048201526001600160a01b0390911660248201526044016102bb565b6001600160a01b038082165f90815260046020526040902060010154168061067a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0382165f8181526004602052604080822080546001600160a01b0319168155600101805474ffffffffffffffffffffffffffffffffffffffffff19169055517f5e8652b9d1a24d82bfe7a9bfae71e26899d688827382d41f69b1c79342c586aa9190a25050565b6001546001600160a01b031633146107285760015460405163521eb56d60e11b81523360048201526001600160a01b0390911660248201526044016102bb565b6001600160a01b03811661074f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040517f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b905f90a250565b6001546001600160a01b031633146107d85760015460405163521eb56d60e11b81523360048201526001600160a01b0390911660248201526044016102bb565b600280546001600160a01b0319166001600160a01b0383169081179091556040517fd24015cc99cc1700cafca3042840a1d8ac1e3964fd2e0e37ea29c654056ee327905f90a250565b5f60016003541115610846576040516345f5ce8b60e11b815260040160405180910390fd5b60026003556001600160a01b0383166108725760405163d92e233d60e01b815260040160405180910390fd5b826001600160a01b03163b5f036108a75760405163601c0c2160e01b81526001600160a01b03841660048201526024016102bb565b6004825110156108d95781516004604051631a64813d60e11b81526004016102bb929190918252602082015260400190565b6002546001600160a01b031680158015906109595750604051634b19276b60e11b81526001600160a01b0385811660048301528216906396324ed690602401602060405180830381865afa158015610933573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109579190610e4d565b155b1561098257604051633df7a39d60e21b81526001600160a01b03851660048201526024016102bb565b5f80549061098f82610c4e565b90505f604051806020016109a290610ca9565b601f1982820381018352601f9091011660408190526109cf91906001600160a01b038a1690602001610e7f565b6040516020818303038152906040529050818151826020015ff594506001600160a01b038516610a1d576040516329c25ebd60e11b81526001600160a01b03881660048201526024016102bb565b5f5f866001600160a01b031688604051610a379190610e97565b5f604051808303815f865af19150503d805f8114610a70576040519150601f19603f3d011682016040523d82523d5f602084013e610a75565b606091505b509150915081610ab357805115610a8f5780518082602001fd5b604051633c4c93c960e21b81526001600160a01b03881660048201526024016102bb565b6001600160a01b03861615801590610b3857506040516369be670b60e01b81526001600160a01b0388811660048301528a811660248301528716906369be670b90604401602060405180830381865afa158015610b12573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b369190610e4d565b155b15610b6157604051630a7f26af60e21b81526001600160a01b03881660048201526024016102bb565b604080516060810182526001600160a01b038b8116825233602080840191825260018486018181528d85165f908152600490935295909120845181546001600160a01b0319169085161781559151918101805495519290931674ffffffffffffffffffffffffffffffffffffffffff1990951694909417600160a01b9115159190910217905590610bf3908790610eb6565b5f9081556040516001600160a01b03808d1692908b169133917fc88bd7cfbe8bae024ebb6f3cf291adfd7db2588a07e1c78768ea3c81b992496b91a45050600160035550939695505050505050565b5f6105f9825f5461052b565b5f468233610c5d600143610ec9565b6040805160208101959095528401929092526001600160a01b031660608301524060808201524260a082015260c001604051602081830303815290604052805190602001209050919050565b6101df80610edd83390190565b80356001600160a01b0381168114610ccc575f5ffd5b919050565b8015158114610cde575f5ffd5b50565b5f5f60408385031215610cf2575f5ffd5b610cfb83610cb6565b91506020830135610d0b81610cd1565b809150509250929050565b5f60208284031215610d26575f5ffd5b610d2f82610cb6565b9392505050565b5f5f60408385031215610d47575f5ffd5b610d5083610cb6565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215610d83575f5ffd5b610d8c83610cb6565b9150602083013567ffffffffffffffff811115610da7575f5ffd5b8301601f81018513610db7575f5ffd5b803567ffffffffffffffff811115610dd157610dd1610d5e565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610e0057610e00610d5e565b604052818152828201602001871015610e17575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215610e46575f5ffd5b5051919050565b5f60208284031215610e5d575f5ffd5b8151610d2f81610cd1565b5f81518060208401855e5f93019283525090919050565b5f610e8a8285610e68565b9283525050602001919050565b5f610d2f8284610e68565b634e487b7160e01b5f52601160045260245ffd5b808201808211156105f9576105f9610ea2565b818103818111156105f9576105f9610ea256fe6080604052348015600e575f5ffd5b506040516101df3803806101df833981016040819052602b916077565b6001600160a01b03811660515760405163d02c623d60e01b815260040160405180910390fd5b7f9e5e169c1098011e4e5940a3ec1797686b2a8294a9b77a4c676b121bdc0ebb5e5560a2565b5f602082840312156086575f5ffd5b81516001600160a01b0381168114609b575f5ffd5b9392505050565b610130806100af5f395ff3fe6080604052600436106025575f3560e01c806346032dbc146065578063aaf10f421460a9575b7f9e5e169c1098011e4e5940a3ec1797686b2a8294a9b77a4c676b121bdc0ebb5e54365f5f375f5f365f845af490503d5f5f3e806060573d5ffd5b503d5ff35b348015606f575f5ffd5b5060967f9e5e169c1098011e4e5940a3ec1797686b2a8294a9b77a4c676b121bdc0ebb5e81565b6040519081526020015b60405180910390f35b34801560b3575f5ffd5b507f9e5e169c1098011e4e5940a3ec1797686b2a8294a9b77a4c676b121bdc0ebb5e5460405173ffffffffffffffffffffffffffffffffffffffff909116815260200160a056fea264697066735822122015c0152d531e0910aea21746663e2c6a58c949de3d6cc7bb9b1eb07c8a6505c064736f6c634300081c0033a26469706673582212203f3a33cae80f36d3b1f9839192a6eb2cba3d8fd0927503d85310ae686b3d91f064736f6c634300081c0033", + "deployedBytecode": "0x608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c80638da5cb5b11610088578063cf04fb9411610063578063cf04fb94146101ce578063e8dc705a146101e1578063ec2ee1f614610248578063fa2a5b011461025b575f5ffd5b80638da5cb5b146101a0578063a6f9dae1146101b3578063affed0e0146101c6575f5ffd5b80633ce3778c116100c35780633ce3778c1461014f578063479e372e14610157578063555b8adb1461017a578063830a322a1461018d575f5ffd5b8063118e24bd146100e95780631eda94d7146100fe5780632b7ac3f314610124575b5f5ffd5b6100fc6100f7366004610ce1565b61026e565b005b61011161010c366004610d16565b610347565b6040519081526020015b60405180910390f35b600254610137906001600160a01b031681565b6040516001600160a01b03909116815260200161011b565b610111600481565b61016a610165366004610d16565b61045e565b604051901515815260200161011b565b610137610188366004610d36565b61052b565b6100fc61019b366004610d16565b6105ff565b600154610137906001600160a01b031681565b6100fc6101c1366004610d16565b6106e8565b6101115f5481565b6100fc6101dc366004610d16565b610798565b6102206101ef366004610d16565b60046020525f9081526040902080546001909101546001600160a01b0391821691811690600160a01b900460ff1683565b604080516001600160a01b03948516815293909216602084015215159082015260600161011b565b610137610256366004610d72565b610821565b610137610269366004610d16565b610c42565b6001600160a01b038083165f90815260046020526040902060018101549091163381146102c45760405163521eb56d60e11b81523360048201526001600160a01b03821660248201526044015b60405180910390fd5b600182018054841515600160a01b027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9091161790556040516001600160a01b038516907f11126b4c1d3b69d7dd553c2f8b2be5f8fabfe22552ceffc3240126fdc087eca09061033990861515815260200190565b60405180910390a250505050565b6001600160a01b0381165f90815260046020526040812060010154600160a01b900460ff168015610458576002546001600160a01b031680156103f357604051630e1e19e160e21b81526001600160a01b038581166004830152821690633878678490602401602060405180830381865afa1580156103c8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103ec9190610e36565b9250610456565b836001600160a01b031663957323616040518163ffffffff1660e01b8152600401602060405180830381865afa15801561042f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104539190610e36565b92505b505b50919050565b6001600160a01b0381165f9081526004602052604081206001810154600160a01b900460ff168061049257505f9392505050565b6002546001600160a01b031680156105205782546040516369be670b60e01b81526001600160a01b0387811660048301529182166024820152908216906369be670b90604401602060405180830381865afa1580156104f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105179190610e4d565b95945050505050565b506001949350505050565b5f5f61053683610c4e565b90505f6040518060200161054990610ca9565b601f1982820381018352601f90910116604081905261057691906001600160a01b03881690602001610e7f565b60408051808303601f1901815282825280516020918201207fff00000000000000000000000000000000000000000000000000000000000000828501523060601b6bffffffffffffffffffffffff191660218501526035840195909552605580840195909552815180840390950185526075909201905282519201919091209150505b92915050565b6001546001600160a01b0316331461063f5760015460405163521eb56d60e11b81523360048201526001600160a01b0390911660248201526044016102bb565b6001600160a01b038082165f90815260046020526040902060010154168061067a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0382165f8181526004602052604080822080546001600160a01b0319168155600101805474ffffffffffffffffffffffffffffffffffffffffff19169055517f5e8652b9d1a24d82bfe7a9bfae71e26899d688827382d41f69b1c79342c586aa9190a25050565b6001546001600160a01b031633146107285760015460405163521eb56d60e11b81523360048201526001600160a01b0390911660248201526044016102bb565b6001600160a01b03811661074f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040517f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b905f90a250565b6001546001600160a01b031633146107d85760015460405163521eb56d60e11b81523360048201526001600160a01b0390911660248201526044016102bb565b600280546001600160a01b0319166001600160a01b0383169081179091556040517fd24015cc99cc1700cafca3042840a1d8ac1e3964fd2e0e37ea29c654056ee327905f90a250565b5f60016003541115610846576040516345f5ce8b60e11b815260040160405180910390fd5b60026003556001600160a01b0383166108725760405163d92e233d60e01b815260040160405180910390fd5b826001600160a01b03163b5f036108a75760405163601c0c2160e01b81526001600160a01b03841660048201526024016102bb565b6004825110156108d95781516004604051631a64813d60e11b81526004016102bb929190918252602082015260400190565b6002546001600160a01b031680158015906109595750604051634b19276b60e11b81526001600160a01b0385811660048301528216906396324ed690602401602060405180830381865afa158015610933573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109579190610e4d565b155b1561098257604051633df7a39d60e21b81526001600160a01b03851660048201526024016102bb565b5f80549061098f82610c4e565b90505f604051806020016109a290610ca9565b601f1982820381018352601f9091011660408190526109cf91906001600160a01b038a1690602001610e7f565b6040516020818303038152906040529050818151826020015ff594506001600160a01b038516610a1d576040516329c25ebd60e11b81526001600160a01b03881660048201526024016102bb565b5f5f866001600160a01b031688604051610a379190610e97565b5f604051808303815f865af19150503d805f8114610a70576040519150601f19603f3d011682016040523d82523d5f602084013e610a75565b606091505b509150915081610ab357805115610a8f5780518082602001fd5b604051633c4c93c960e21b81526001600160a01b03881660048201526024016102bb565b6001600160a01b03861615801590610b3857506040516369be670b60e01b81526001600160a01b0388811660048301528a811660248301528716906369be670b90604401602060405180830381865afa158015610b12573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b369190610e4d565b155b15610b6157604051630a7f26af60e21b81526001600160a01b03881660048201526024016102bb565b604080516060810182526001600160a01b038b8116825233602080840191825260018486018181528d85165f908152600490935295909120845181546001600160a01b0319169085161781559151918101805495519290931674ffffffffffffffffffffffffffffffffffffffffff1990951694909417600160a01b9115159190910217905590610bf3908790610eb6565b5f9081556040516001600160a01b03808d1692908b169133917fc88bd7cfbe8bae024ebb6f3cf291adfd7db2588a07e1c78768ea3c81b992496b91a45050600160035550939695505050505050565b5f6105f9825f5461052b565b5f468233610c5d600143610ec9565b6040805160208101959095528401929092526001600160a01b031660608301524060808201524260a082015260c001604051602081830303815290604052805190602001209050919050565b6101df80610edd83390190565b80356001600160a01b0381168114610ccc575f5ffd5b919050565b8015158114610cde575f5ffd5b50565b5f5f60408385031215610cf2575f5ffd5b610cfb83610cb6565b91506020830135610d0b81610cd1565b809150509250929050565b5f60208284031215610d26575f5ffd5b610d2f82610cb6565b9392505050565b5f5f60408385031215610d47575f5ffd5b610d5083610cb6565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215610d83575f5ffd5b610d8c83610cb6565b9150602083013567ffffffffffffffff811115610da7575f5ffd5b8301601f81018513610db7575f5ffd5b803567ffffffffffffffff811115610dd157610dd1610d5e565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610e0057610e00610d5e565b604052818152828201602001871015610e17575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215610e46575f5ffd5b5051919050565b5f60208284031215610e5d575f5ffd5b8151610d2f81610cd1565b5f81518060208401855e5f93019283525090919050565b5f610e8a8285610e68565b9283525050602001919050565b5f610d2f8284610e68565b634e487b7160e01b5f52601160045260245ffd5b808201808211156105f9576105f9610ea2565b818103818111156105f9576105f9610ea256fe6080604052348015600e575f5ffd5b506040516101df3803806101df833981016040819052602b916077565b6001600160a01b03811660515760405163d02c623d60e01b815260040160405180910390fd5b7f9e5e169c1098011e4e5940a3ec1797686b2a8294a9b77a4c676b121bdc0ebb5e5560a2565b5f602082840312156086575f5ffd5b81516001600160a01b0381168114609b575f5ffd5b9392505050565b610130806100af5f395ff3fe6080604052600436106025575f3560e01c806346032dbc146065578063aaf10f421460a9575b7f9e5e169c1098011e4e5940a3ec1797686b2a8294a9b77a4c676b121bdc0ebb5e54365f5f375f5f365f845af490503d5f5f3e806060573d5ffd5b503d5ff35b348015606f575f5ffd5b5060967f9e5e169c1098011e4e5940a3ec1797686b2a8294a9b77a4c676b121bdc0ebb5e81565b6040519081526020015b60405180910390f35b34801560b3575f5ffd5b507f9e5e169c1098011e4e5940a3ec1797686b2a8294a9b77a4c676b121bdc0ebb5e5460405173ffffffffffffffffffffffffffffffffffffffff909116815260200160a056fea264697066735822122015c0152d531e0910aea21746663e2c6a58c949de3d6cc7bb9b1eb07c8a6505c064736f6c634300081c0033a26469706673582212203f3a33cae80f36d3b1f9839192a6eb2cba3d8fd0927503d85310ae686b3d91f064736f6c634300081c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/abis/0.8.28/StakingNativeToken.json b/abis/0.8.28/StakingNativeToken.json new file mode 100644 index 00000000..3869351e --- /dev/null +++ b/abis/0.8.28/StakingNativeToken.json @@ -0,0 +1,1255 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "StakingNativeToken", + "sourceName": "contracts/staking/StakingNativeToken.sol", + "abi": [ + { + "inputs": [], + "name": "AlreadyInitialized", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "activityChecker", + "type": "address" + } + ], + "name": "ContractOnly", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "provided", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + } + ], + "name": "LowerThan", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "maxNumServices", + "type": "uint256" + } + ], + "name": "MaxNumServicesReached", + "type": "error" + }, + { + "inputs": [], + "name": "NoRewardsAvailable", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tsProvided", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tsExpected", + "type": "uint256" + } + ], + "name": "NotEnoughTimeStaked", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnerOnly", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "ServiceNotUnstaked", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TransferFailed", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "multisig", + "type": "address" + } + ], + "name": "UnauthorizedMultisig", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + } + ], + "name": "WrongAgentId", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "WrongServiceConfiguration", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "state", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "WrongServiceState", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddress", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroValue", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "epoch", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "availableRewards", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "serviceIds", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "rewards", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "epochLength", + "type": "uint256" + } + ], + "name": "Checkpoint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "availableRewards", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "epoch", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "multisig", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "nonces", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reward", + "type": "uint256" + } + ], + "name": "RewardClaimed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "epoch", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "multisig", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "nonces", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reward", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "availableRewards", + "type": "uint256" + } + ], + "name": "ServiceForceUnstaked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "epoch", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "serviceInactivity", + "type": "uint256" + } + ], + "name": "ServiceInactivityWarning", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "epoch", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "multisig", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "nonces", + "type": "uint256[]" + } + ], + "name": "ServiceStaked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "epoch", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "multisig", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "nonces", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reward", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "availableRewards", + "type": "uint256" + } + ], + "name": "ServiceUnstaked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "epoch", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "serviceIds", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "owners", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "multisigs", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "serviceInactivity", + "type": "uint256[]" + } + ], + "name": "ServicesEvicted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Withdraw", + "type": "event" + }, + { + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "activityChecker", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "agentIds", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "availableRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "balance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "calculateStakingLastReward", + "outputs": [ + { + "internalType": "uint256", + "name": "reward", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "calculateStakingReward", + "outputs": [ + { + "internalType": "uint256", + "name": "reward", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "checkpoint", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "evictServiceIds", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "checkpointAndClaim", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "claim", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "configHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "emissionsAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "epochCounter", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "forcedUnstake", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getAgentIds", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getNextRewardCheckpointTimestamp", + "outputs": [ + { + "internalType": "uint256", + "name": "tsNext", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getServiceIds", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "getServiceInfo", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "multisig", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "nonces", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "tsStart", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reward", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "inactivity", + "type": "uint256" + } + ], + "internalType": "struct ServiceInfo", + "name": "sInfo", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "getStakingState", + "outputs": [ + { + "internalType": "enum StakingBase.StakingState", + "name": "stakingState", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "metadataHash", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "maxNumServices", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rewardsPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minStakingDeposit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minNumStakingPeriods", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxNumInactivityPeriods", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "livenessPeriod", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timeForEmissions", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "numAgentInstances", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "agentIds", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "threshold", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "configHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "proxyHash", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "serviceRegistry", + "type": "address" + }, + { + "internalType": "address", + "name": "activityChecker", + "type": "address" + } + ], + "internalType": "struct StakingBase.StakingParams", + "name": "_stakingParams", + "type": "tuple" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "livenessPeriod", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapServiceInfo", + "outputs": [ + { + "internalType": "address", + "name": "multisig", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tsStart", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reward", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "inactivity", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxInactivityDuration", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxNumInactivityPeriods", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxNumServices", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "metadataHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minStakingDeposit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minStakingDuration", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "numAgentInstances", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "proxyHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardsPerSecond", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "serviceRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "setServiceIds", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "stake", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "threshold", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "timeForEmissions", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "tsCheckpoint", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "unstake", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x6080604052348015600e575f5ffd5b506136a98061001c5f395ff3fe608060405260043610610294575f3560e01c80638f9e0a6211610165578063cbcf252a116100c6578063f189e85a1161007c578063f86ad2b611610062578063f86ad2b614610790578063fd0bba8c146107a5578063ffa1ad74146107d1575f5ffd5b8063f189e85a14610768578063f4dce7141461077c575f5ffd5b8063e77cdcc9116100ac578063e77cdcc91461071f578063eacdaabc14610734578063eb338c9614610749575f5ffd5b8063cbcf252a146106eb578063e1f1176d1461070a575f5ffd5b8063a74466ad1161011b578063b69ef8a811610101578063b69ef8a81461069e578063c2c4c5c1146106b3578063c5a1d7f0146106d7575f5ffd5b8063a74466ad146105f6578063b15087601461067d575f5ffd5b8063957323611161014b57806395732361146105ad578063a0ed60e0146105c2578063a694fc3a146105d7575f5ffd5b80638f9e0a621461055757806393ac752f1461058e575f5ffd5b806342cde4e81161020f5780637fbe2833116101c557806382a8ea58116101ab57806382a8ea58146104f757806383f9eb2214610523578063879d909014610542575f5ffd5b80637fbe2833146104c3578063809cee2f146104e2575f5ffd5b8063546af2e0116101f5578063546af2e01461047057806356e760581461048f5780635829c5ec146104ae575f5ffd5b806342cde4e81461044657806352c824f51461045b575f5ffd5b806316a75172116102645780632e17de781161024a5780632e17de78146103f3578063379607f5146104125780633e73299714610431575f5ffd5b806316a75172146103c95780631f779408146103de575f5ffd5b806308ae7e541461030f5780630a07dc301461033757806314b19c5a14610358578063150b7a021461036d575f5ffd5b3661030b575f346010546102a89190612c2c565b90505f346011546102b99190612c2c565b60108390556011819055604080513481526020810185905290810182905290915033907f36af321ec8d3c75236829c5317affd40ddb308863a1236d2d277a4025cccee1e9060600160405180910390a2005b5f5ffd5b34801561031a575f5ffd5b50610324600d5481565b6040519081526020015b60405180910390f35b348015610342575f5ffd5b50610356610351366004612da6565b61080e565b005b348015610363575f5ffd5b50610324600f5481565b348015610378575f5ffd5b50610398610387366004612eb7565b630a85bd0160e11b95945050505050565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161032e565b3480156103d4575f5ffd5b5061032460015481565b3480156103e9575f5ffd5b5061032460065481565b3480156103fe575f5ffd5b5061032461040d366004612f50565b61081a565b34801561041d575f5ffd5b5061032461042c366004612f50565b61082b565b34801561043c575f5ffd5b5061032460135481565b348015610451575f5ffd5b5061032460085481565b348015610466575f5ffd5b5061032460055481565b34801561047b575f5ffd5b5061032461048a366004612f50565b610836565b34801561049a575f5ffd5b506103246104a9366004612f50565b610842565b3480156104b9575f5ffd5b5061032460075481565b3480156104ce575f5ffd5b506103246104dd366004612f50565b610861565b3480156104ed575f5ffd5b50610324600a5481565b348015610502575f5ffd5b50610516610511366004612f50565b610928565b60405161032e9190612f67565b34801561052e575f5ffd5b5061032461053d366004612f50565b610a17565b34801561054d575f5ffd5b5061032460115481565b348015610562575f5ffd5b50600c54610576906001600160a01b031681565b6040516001600160a01b03909116815260200161032e565b348015610599575f5ffd5b506103566105a8366004612f50565b610ad2565b3480156105b8575f5ffd5b5061032460125481565b3480156105cd575f5ffd5b5061032460045481565b3480156105e2575f5ffd5b506103566105f1366004612f50565b610ae1565b348015610601575f5ffd5b5061064a610610366004612f50565b60156020525f9081526040902080546001820154600383015460048401546005909401546001600160a01b03938416949390921692909185565b604080516001600160a01b039687168152959094166020860152928401919091526060830152608082015260a00161032e565b348015610688575f5ffd5b50610691610fde565b60405161032e919061303e565b3480156106a9575f5ffd5b5061032460105481565b3480156106be575f5ffd5b506106c7611034565b60405161032e9493929190613050565b3480156106e2575f5ffd5b506103245f5481565b3480156106f6575f5ffd5b50600b54610576906001600160a01b031681565b348015610715575f5ffd5b5061032460095481565b34801561072a575f5ffd5b5061032460035481565b34801561073f575f5ffd5b5061032460025481565b348015610754575f5ffd5b50610324610763366004612f50565b6116c8565b348015610773575f5ffd5b506106916116d7565b348015610787575f5ffd5b5061032461172b565b34801561079b575f5ffd5b50610324600e5481565b3480156107b0575f5ffd5b506107c46107bf366004612f50565b611741565b60405161032e91906130bb565b3480156107dc575f5ffd5b50610801604051806040016040528060058152602001640302e322e360dc1b81525081565b60405161032e91906130e1565b61081781611813565b50565b5f610825825f611b9e565b92915050565b5f610825825f611f32565b5f610825826001611f32565b60148181548110610851575f80fd5b5f91825260209091200154905081565b5f818152601560209081526040808320815160c08101835281546001600160a01b03908116825260018301541681850152600282018054845181870281018701865281815287969395860193909291908301828280156108de57602002820191905f5260205f20905b8154815260200190600101908083116108ca575b50505050508152602001600382015481526020016004820154815260200160058201548152505090508060800151915061091783610a17565b6109219083612c2c565b9392505050565b61096e6040518060c001604052805f6001600160a01b031681526020015f6001600160a01b03168152602001606081526020015f81526020015f81526020015f81525090565b5f82815260156020908152604091829020825160c08101845281546001600160a01b03908116825260018301541681840152600282018054855181860281018601875281815292959394938601938301828280156109e957602002820191905f5260205f20905b8154815260200190600101908083116109d5575b5050505050815260200160038201548152602001600482015481526020016005820154815250509050919050565b5f5f5f5f5f5f610a25612035565b505050945094509450945094505f5f90505b84811015610ac75787838281518110610a5257610a52613116565b602002602001015103610abf5785841115610a9e578386838381518110610a7b57610a7b613116565b6020026020010151610a8d919061312a565b610a979190613155565b9650610ac7565b818181518110610ab057610ab0613116565b60200260200101519650610ac7565b600101610a37565b505050505050919050565b610add816001611b9e565b5050565b610ae9611034565b505050506011545f03610b0f5760405163afb0be3360e01b815260040160405180910390fd5b5f818152601560205260409020600381015415610b475760405163b4817ce760e01b8152600481018390526024015b60405180910390fd5b6016546001548103610b725760015460405163fd20861560e01b8152600401610b3e91815260200190565b600b5460405163ef0e239b60e01b8152600481018590525f916001600160a01b03169063ef0e239b906024015f60405180830381865afa158015610bb8573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610bdf9190810190613211565b9050806080015163ffffffff1660075414610c1057604051637ad404bf60e11b815260048101859052602401610b3e565b60095415801590610c275750806040015160095414155b15610c4857604051637ad404bf60e11b815260048101859052602401610b3e565b5f600854118015610c655750806060015163ffffffff1660085414155b15610c8657604051637ad404bf60e11b815260048101859052602401610b3e565b60048160c001516005811115610c9e57610c9e6130a7565b14610cdd578060c001516005811115610cb957610cb96130a7565b604051633c053f9d60e21b8152600481019190915260248101859052604401610b3e565b5f81602001516001600160a01b0316803b806020016040519081016040528181525f908060200190933c80519060200120905080600a5414610d4257602082015160405162a2307960e51b81526001600160a01b039091166004820152602401610b3e565b6014548015610e065760e083015151818114610d7457604051637ad404bf60e11b815260048101889052602401610b3e565b5f5b81811015610e03578460e001518181518110610d9457610d94613116565b602002602001015163ffffffff1660148281548110610db557610db5613116565b905f5260205f20015414610dfb5760148181548110610dd657610dd6613116565b905f5260205f200154604051632ab10b0b60e21b8152600401610b3e91815260200190565b600101610d76565b50505b610e2686845f01516bffffffffffffffffffffffff168560e001516123d5565b602083015185546001600160a01b0391821673ffffffffffffffffffffffffffffffffffffffff19918216811788556001880180549092163317909155600c5460405163d564c4bf60e01b815260048101929092525f92169063d564c4bf906024015f60405180830381865afa158015610ea2573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610ec991908101906132ee565b8051909150610ee19060028801906020840190612ba4565b50426003870155601680546001810182555f919091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428901879055600b54604051632142170760e11b8152336004820152306024820152604481018990526001600160a01b03909116906342842e0e906064015f604051808303815f87803b158015610f6b575f5ffd5b505af1158015610f7d573d5f5f3e3d5ffd5b5050505083602001516001600160a01b0316336001600160a01b0316887faa6b005b4958114a0c90492461c24af6525ae0178db7fbf44125ae9217c69ccb600f5485604051610fcd92919061337f565b60405180910390a450505050505050565b6060601480548060200260200160405190810160405280929190818152602001828054801561102a57602002820191905f5260205f20905b815481526020019060010190808311611016575b5050505050905090565b6060806060805f5f5f5f5f5f5f5f61104a612035565b97509750975097509750975097509750606080845167ffffffffffffffff81111561107757611077612c3f565b6040519080825280602002602001820160405280156110a0578160200160208202803683370190505b509a505f8915611421578967ffffffffffffffff8111156110c3576110c3612c3f565b6040519080825280602002602001820160405280156110ec578160200160208202803683370190505b5092508967ffffffffffffffff81111561110857611108612c3f565b604051908082528060200260200182016040528015611131578160200160208202803683370190505b5091508a89111561132e575f8060015b8c81101561122a578b8e8b838151811061115d5761115d613116565b602002602001015161116f919061312a565b6111799190613155565b92506111858383612c2c565b91508a818151811061119957611199613116565b602002602001015193508a81815181106111b5576111b5613116565b60200260200101518682815181106111cf576111cf613116565b602002602001018181525050828582815181106111ee576111ee613116565b6020026020010181815250508260155f8681526020019081526020015f206004015f82825461121d9190612c2c565b9091555050600101611141565b508a8d8a5f8151811061123f5761123f613116565b6020026020010151611251919061312a565b61125b9190613155565b91506112678282612c2c565b9050895f8151811061127b5761127b613116565b60200260200101519250895f8151811061129757611297613116565b6020026020010151855f815181106112b1576112b1613116565b602002602001018181525050808d11156112dc576112cf818e61339f565b6112d99083612c2c565b91505b81845f815181106112ef576112ef613116565b6020026020010181815250508160155f8581526020019081526020015f206004015f82825461131e9190612c2c565b909155505f9d5061141b92505050565b5f5b8a81101561140d5788818151811061134a5761134a613116565b6020026020010151915088818151811061136657611366613116565b602002602001015184828151811061138057611380613116565b60200260200101818152505087818151811061139e5761139e613116565b60200260200101518382815181106113b8576113b8613116565b6020026020010181815250508781815181106113d6576113d6613116565b602002602001015160155f8481526020019081526020015f206004015f8282546114009190612c2c565b9091555050600101611330565b50611418898c61339f565b9a505b60118b90555b85511561169457600f545f9a508a5b875181101561160f5787818151811061144b5761144b613116565b6020026020010151925086818151811061146757611467613116565b602002602001015160155f8581526020019081526020015f206002019080519060200190611496929190612ba4565b505f8682815181106114aa576114aa613116565b602002602001015111156115f5578581815181106114ca576114ca613116565b602002602001015160155f8581526020019081526020015f20600501546114f19190612c2c565b86828151811061150357611503613116565b60200260200101818152505085818151811061152157611521613116565b602002602001015160155f8581526020019081526020015f2060050181905550600e5486828151811061155657611556613116565b6020026020010151111561159457828e828151811061157757611577613116565b60209081029190910101528b61158c816133b2565b9c5050611607565b827f33dc5cdf1e035de8a7fe16ad7a30a441d30ee51719d3f07703ee35d4348f0779838884815181106115c9576115c9613116565b60200260200101516040516115e8929190918252602082015260400190565b60405180910390a2611607565b5f838152601560205260408120600501555b600101611430565b508a15611628576116218d868d61251a565b9c5061162d565b60609c505b5f6013544261163c919061339f565b42601355905061164d826001612c2c565b600f81905550817f48b735a18ed32318d316214e41387be29c52e29df4598f2b8e40fa843be3f9408e87878560405161168994939291906133ca565b60405180910390a250505b855115806116a257505f8c51115b156116b2576116af6116d7565b95505b50939c509a509198505050505050505090919293565b60168181548110610851575f80fd5b6060601680548060200260200160405190810160405280929190818152602001828054801561102a57602002820191905f5260205f2090815481526020019060010190808311611016575050505050905090565b5f60055460135461173c9190612c2c565b905090565b5f818152601560209081526040808320815160c08101835281546001600160a01b03908116825260018301541681850152600282018054845181870281018701865281815287969395860193909291908301828280156117be57602002820191905f5260205f20905b8154815260200190600101908083116117aa575b5050505050815260200160038201548152602001600482015481526020016005820154815250509050600e548160a0015111156117fe576002915061180d565b60608101511561180d57600191505b50919050565b600b546001600160a01b03161561183c5760405162dc149f60e41b815260040160405180910390fd5b8051158061184c57506020810151155b8061185957506040810151155b80611866575060c0810151155b806118745750610100810151155b80611881575060e0810151155b8061188e57506080810151155b8061189b575060a0810151155b156118b957604051637c946ed760e01b815260040160405180910390fd5b8060a00151816080015110156118f557608081015160a082015160405163491a2bb160e01b815260048101929092526024820152604401610b3e565b60028160600151101561192b57606081015160405163491a2bb160e01b8152600481019190915260026024820152604401610b3e565b6101a08101516001600160a01b0316158061195257506101c08101516001600160a01b0316155b156119705760405163d92e233d60e01b815260040160405180910390fd5b806101c001516001600160a01b03163b5f036119b1576101c081015160405163601c0c2160e01b81526001600160a01b039091166004820152602401610b3e565b80515f90815560208201516001556040820151600255606082015160035560a082015160045560c082015160055560e08201516006556101008201516007556101a0820151600b80546001600160a01b0392831673ffffffffffffffffffffffffffffffffffffffff19918216179091556101c0840151600c8054919093169116179055610140820151600855610160820151600955805b82610120015151811015611b1757818361012001518281518110611a6f57611a6f613116565b602002602001015111611ab7578261012001518181518110611a9357611a93613116565b6020026020010151604051632ab10b0b60e21b8152600401610b3e91815260200190565b8261012001518181518110611ace57611ace613116565b602090810291909101015160148054600181810183555f929092527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0182905590925001611a49565b506101808201515f03611b3d57604051637c946ed760e01b815260040160405180910390fd5b610180820151600a556005546080830151611b58919061312a565b600d5560055460a0830151611b6d919061312a565b600e5560e082015160208301516040840151611b89919061312a565b611b93919061312a565b601255505042601355565b5f82815260156020526040812060018101546001600160a01b03163314611bef57600181015460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610b3e565b5f611bf8611034565b505050600483015460115460038501549195509192505f90611c1a904261339f565b9050600d548111158015611c2d57505f82115b15611c6057600d5460405163ba2bbc6b60e01b815260048101899052602481018390526044810191909152606401610b3e565b5f5f5b8451821015611c9f5788858381518110611c7f57611c7f613116565b602002602001015103611c9457506001611c9f565b816001019150611c63565b5f86600201805480602002602001604051908101604052809291908181526020018280548015611cec57602002820191905f5260205f20905b815481526020019060010190808311611cd8575b50508a545f8f8152601560205260408120805473ffffffffffffffffffffffffffffffffffffffff19908116825560018201805490911690559596506001600160a01b039091169493509150611d4790506002830182612bed565b505f60038201819055600482018190556005909101558215611ddd576016545f90611d749060019061339f565b90508015611db75760168181548110611d8f57611d8f613116565b905f5260205f20015460168681548110611dab57611dab613116565b5f918252602090912001555b6016805480611dc857611dc8613406565b600190038181905f5260205f20015f90559055505b600b546040516323b872dd60e01b8152306004820152336024820152604481018d90526001600160a01b03909116906323b872dd906064015f604051808303815f87803b158015611e2c575f5ffd5b505af1158015611e3e573d5f5f3e3d5ffd5b505050505f891115611e70578915611e6657611e5a8987612c2c565b60118190559550611e70565b611e70818a6128d2565b8915611ecf57806001600160a01b0316336001600160a01b03168c7f91c9f7c7f307bcc0ae02ba613bd8d07c29e94952f0a28803ded176fcd7d96d64600f54868e8c604051611ec2949392919061341a565b60405180910390a4611f24565b806001600160a01b0316336001600160a01b03168c7f6d789d063e079a4c156e77a20008529fc448dca2cd7e5e7a20abf969fffb9226600f54868e8c604051611f1b949392919061341a565b60405180910390a45b505050505050505092915050565b5f82815260156020526040812060018101546001600160a01b03163314611f8357600181015460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610b3e565b8215611f9657611f91611034565b505050505b80600401549150815f03611fbd57604051637c946ed760e01b815260040160405180910390fd5b5f600482015580546001600160a01b0316611fd881846128d2565b806001600160a01b0316336001600160a01b0316867f31add0166dae59ea66bbc180e4fae85b72fc9b7b5fc7b0f7257e4721a840c96e600f54866002018860405161202593929190613445565b60405180910390a4505092915050565b60135460115460165490915f918291606091829182918291829180158015906120695750600554612066834261339f565b10155b801561207457505f8a115b156123c9578067ffffffffffffffff81111561209257612092612c3f565b6040519080825280602002602001820160405280156120bb578160200160208202803683370190505b5094508067ffffffffffffffff8111156120d7576120d7612c3f565b604051908082528060200260200182016040528015612100578160200160208202803683370190505b5096508067ffffffffffffffff81111561211c5761211c612c3f565b604051908082528060200260200182016040528015612145578160200160208202803683370190505b5095508067ffffffffffffffff81111561216157612161612c3f565b60405190808252806020026020018201604052801561219457816020015b606081526020019060019003908161217f5790505b5093508067ffffffffffffffff8111156121b0576121b0612c3f565b6040519080825280602002602001820160405280156121d9578160200160208202803683370190505b5092505f5b818110156123c757601681815481106121f9576121f9613116565b905f5260205f20015486828151811061221457612214613116565b6020026020010181815250505f60155f88848151811061223657612236613116565b602002602001015181526020019081526020015f2090505f8490505f8260030154905081811115612265578091505b61226f824261339f565b8354600285018054604080516020808402820181019092528281529495505f946122d9946001600160a01b031693909290918301828280156122ce57602002820191905f5260205f20905b8154815260200190600101908083116122ba575b5050505050846129bd565b8a87815181106122eb576122eb613116565b602090810291909101015290508015612398578160025461230c919061312a565b8b8f8151811061231e5761231e613116565b6020026020010181815250508a8e8151811061233c5761233c613116565b60200260200101518d61234f9190612c2c565b9c5089858151811061236357612363613116565b60200260200101518c8f8151811061237d5761237d613116565b60209081029190910101526123918e6133b2565b9d506123b8565b818886815181106123ab576123ab613116565b6020026020010181815250505b505050508060010190506121de565b505b50509091929394959697565b600354808310156124035760405163491a2bb160e01b81526004810184905260248101829052604401610b3e565b600b54604051630ef1435d60e11b8152600481018690525f9182916001600160a01b0390911690631de286ba906024015f60405180830381865afa15801561244d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612474919081019061349d565b90925090505f5b82811015612511578382828151811061249657612496613116565b6020026020010151602001516bffffffffffffffffffffffff161015612509578181815181106124c8576124c8613116565b6020026020010151602001518460405163491a2bb160e01b8152600401610b3e9291906bffffffffffffffffffffffff929092168252602082015260400190565b60010161247b565b50505050505050565b82516060908267ffffffffffffffff81111561253857612538612c3f565b604051908082528060200260200182016040528015612561578160200160208202803683370190505b5091505f8367ffffffffffffffff81111561257e5761257e612c3f565b6040519080825280602002602001820160405280156125a7578160200160208202803683370190505b5090505f8467ffffffffffffffff8111156125c4576125c4612c3f565b6040519080825280602002602001820160405280156125ed578160200160208202803683370190505b5090505f8567ffffffffffffffff81111561260a5761260a612c3f565b604051908082528060200260200182016040528015612633578160200160208202803683370190505b5090505f8667ffffffffffffffff81111561265057612650612c3f565b604051908082528060200260200182016040528015612679578160200160208202803683370190505b5090505f80805b878110156127d5575f8c828151811061269b5761269b613116565b602002602001015111156127cd578b81815181106126bb576126bb613116565b60200260200101519150818984815181106126d8576126d8613116565b6020908102919091018101919091525f838152601590915260409020600181015488516001600160a01b039091169089908690811061271957612719613116565b6001600160a01b0392831660209182029290920101528154885191169088908690811061274857612748613116565b60200260200101906001600160a01b031690816001600160a01b0316815250508b828151811061277a5761277a613116565b602002602001015186858151811061279457612794613116565b602002602001018181525050818585815181106127b3576127b3613116565b6020908102919091010152836127c8816133b2565b945050505b600101612680565b50885b801561288357876127e881613570565b98505f9050846127f960018461339f565b8151811061280957612809613116565b602002602001015190506016898154811061282657612826613116565b905f5260205f2001546016828154811061284257612842613116565b5f91825260209091200155601680548061285e5761285e613406565b600190038181905f5260205f20015f90559055508061287c90613570565b90506127d8565b50600f547fd19a3d42ed383465e4058c322d9411aeac76ddb8454d22e139fc99808bd56952898888886040516128bc94939291906135be565b60405180910390a2505050505050509392505050565b8060105f8282546128e3919061339f565b90915550506040515f906001600160a01b0384169083908381818185875af1925050503d805f8114612930576040519150601f19603f3d011682016040523d82523d5f602084013e612935565b606091505b50509050806129755760405163cd3f165960e01b81525f60048201523060248201526001600160a01b038416604482015260648101839052608401610b3e565b826001600160a01b03167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364836040516129b091815260200190565b60405180910390a2505050565b6040516001600160a01b03841660248201525f90606090829060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663d564c4bf60e01b179052600c5490519192505f9182916001600160a01b031690612a399085906135f6565b5f60405180830381855afa9150503d805f8114612a71576040519150601f19603f3d011682016040523d82523d5f602084013e612a76565b606091505b5091509150818015612a895750603f8151115b8015612aa0575060208151612a9e919061360c565b155b15612b995780806020019051810190612ab991906132ee565b9350838787604051602401612ad09392919061361f565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663184023a560e01b179052600c5490519194506001600160a01b031690612b2c9085906135f6565b5f60405180830381855afa9150503d805f8114612b64576040519150601f19603f3d011682016040523d82523d5f602084013e612b69565b606091505b509092509050818015612b7d575080516020145b15612b995780806020019051810190612b969190613654565b94505b505050935093915050565b828054828255905f5260205f20908101928215612bdd579160200282015b82811115612bdd578251825591602001919060010190612bc2565b50612be9929150612c04565b5090565b5080545f8255905f5260205f209081019061081791905b5b80821115612be9575f8155600101612c05565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561082557610825612c18565b634e487b7160e01b5f52604160045260245ffd5b6040516101e0810167ffffffffffffffff81118282101715612c7757612c77612c3f565b60405290565b604051610100810167ffffffffffffffff81118282101715612c7757612c77612c3f565b6040805190810167ffffffffffffffff81118282101715612c7757612c77612c3f565b604051601f8201601f1916810167ffffffffffffffff81118282101715612ced57612ced612c3f565b604052919050565b5f67ffffffffffffffff821115612d0e57612d0e612c3f565b5060051b60200190565b5f82601f830112612d27575f5ffd5b8135612d3a612d3582612cf5565b612cc4565b8082825260208201915060208360051b860101925085831115612d5b575f5ffd5b602085015b83811015612d78578035835260209283019201612d60565b5095945050505050565b6001600160a01b0381168114610817575f5ffd5b8035612da181612d82565b919050565b5f60208284031215612db6575f5ffd5b813567ffffffffffffffff811115612dcc575f5ffd5b82016101e08185031215612dde575f5ffd5b612de6612c53565b813581526020808301359082015260408083013590820152606080830135908201526080808301359082015260a0808301359082015260c0808301359082015260e08083013590820152610100808301359082015261012082013567ffffffffffffffff811115612e55575f5ffd5b612e6186828501612d18565b61012083015250610140828101359082015261016080830135908201526101808083013590820152612e966101a08301612d96565b6101a0820152612ea96101c08301612d96565b6101c0820152949350505050565b5f5f5f5f5f60808688031215612ecb575f5ffd5b8535612ed681612d82565b94506020860135612ee681612d82565b935060408601359250606086013567ffffffffffffffff811115612f08575f5ffd5b8601601f81018813612f18575f5ffd5b803567ffffffffffffffff811115612f2e575f5ffd5b886020828401011115612f3f575f5ffd5b959894975092955050506020019190565b5f60208284031215612f60575f5ffd5b5035919050565b602081525f60e082016001600160a01b0384511660208401526001600160a01b036020850151166040840152604084015160c06060850152818151808452610100860191506020830193505f92505b80831015612fd95783518252602082019150602084019350600183019250612fb6565b5060608601516080860152608086015160a086015260a086015160c086015280935050505092915050565b5f8151808452602084019350602083015f5b82811015613034578151865260209586019590910190600101613016565b5093949350505050565b602081525f6109216020830184613004565b608081525f6130626080830187613004565b82810360208401526130748187613004565b905082810360408401526130888186613004565b9050828103606084015261309c8185613004565b979650505050505050565b634e487b7160e01b5f52602160045260245ffd5b60208101600383106130db57634e487b7160e01b5f52602160045260245ffd5b91905290565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b634e487b7160e01b5f52603260045260245ffd5b808202811582820484141761082557610825612c18565b634e487b7160e01b5f52601260045260245ffd5b5f8261316357613163613141565b500490565b80516bffffffffffffffffffffffff81168114612da1575f5ffd5b8051612da181612d82565b805163ffffffff81168114612da1575f5ffd5b805160068110612da1575f5ffd5b5f82601f8301126131be575f5ffd5b81516131cc612d3582612cf5565b8082825260208201915060208360051b8601019250858311156131ed575f5ffd5b602085015b83811015612d78576132038161318e565b8352602092830192016131f2565b5f60208284031215613221575f5ffd5b815167ffffffffffffffff811115613237575f5ffd5b82016101008185031215613249575f5ffd5b613251612c7d565b61325a82613168565b815261326860208301613183565b6020820152604082810151908201526132836060830161318e565b60608201526132946080830161318e565b60808201526132a560a0830161318e565b60a08201526132b660c083016131a1565b60c082015260e082015167ffffffffffffffff8111156132d4575f5ffd5b6132e0868285016131af565b60e083015250949350505050565b5f602082840312156132fe575f5ffd5b815167ffffffffffffffff811115613314575f5ffd5b8201601f81018413613324575f5ffd5b8051613332612d3582612cf5565b8082825260208201915060208360051b850101925086831115613353575f5ffd5b6020840193505b8284101561337557835182526020938401939091019061335a565b9695505050505050565b828152604060208201525f6133976040830184613004565b949350505050565b8181038181111561082557610825612c18565b5f600182016133c3576133c3612c18565b5060010190565b848152608060208201525f6133e26080830186613004565b82810360408401526133f48186613004565b91505082606083015295945050505050565b634e487b7160e01b5f52603160045260245ffd5b848152608060208201525f6134326080830186613004565b6040830194909452506060015292915050565b5f6060820185835260606020840152808554808352608085019150865f5260205f2092505f5b8181101561348957835483526001938401936020909301920161346b565b505060409390930193909352509392505050565b5f5f604083850312156134ae575f5ffd5b8251602084015190925067ffffffffffffffff8111156134cc575f5ffd5b8301601f810185136134dc575f5ffd5b80516134ea612d3582612cf5565b8082825260208201915060208360061b85010192508783111561350b575f5ffd5b6020840193505b828410156135625760408489031215613529575f5ffd5b613531612ca1565b61353a8561318e565b815261354860208601613168565b602082015280835250602082019150604084019350613512565b809450505050509250929050565b5f8161357e5761357e612c18565b505f190190565b5f8151808452602084019350602083015f5b828110156130345781516001600160a01b0316865260209586019590910190600101613597565b608081525f6135d06080830187613004565b82810360208401526135e28187613585565b905082810360408401526130888186613585565b5f82518060208501845e5f920191825250919050565b5f8261361a5761361a613141565b500690565b606081525f6136316060830186613004565b82810360208401526136438186613004565b915050826040830152949350505050565b5f60208284031215613664575f5ffd5b81518015158114610921575f5ffdfea26469706673582212205f6754346215747de8d09e7753fc09f0a0309144f47e8d3af42d512ea212f71e64736f6c634300081c0033", + "deployedBytecode": "0x608060405260043610610294575f3560e01c80638f9e0a6211610165578063cbcf252a116100c6578063f189e85a1161007c578063f86ad2b611610062578063f86ad2b614610790578063fd0bba8c146107a5578063ffa1ad74146107d1575f5ffd5b8063f189e85a14610768578063f4dce7141461077c575f5ffd5b8063e77cdcc9116100ac578063e77cdcc91461071f578063eacdaabc14610734578063eb338c9614610749575f5ffd5b8063cbcf252a146106eb578063e1f1176d1461070a575f5ffd5b8063a74466ad1161011b578063b69ef8a811610101578063b69ef8a81461069e578063c2c4c5c1146106b3578063c5a1d7f0146106d7575f5ffd5b8063a74466ad146105f6578063b15087601461067d575f5ffd5b8063957323611161014b57806395732361146105ad578063a0ed60e0146105c2578063a694fc3a146105d7575f5ffd5b80638f9e0a621461055757806393ac752f1461058e575f5ffd5b806342cde4e81161020f5780637fbe2833116101c557806382a8ea58116101ab57806382a8ea58146104f757806383f9eb2214610523578063879d909014610542575f5ffd5b80637fbe2833146104c3578063809cee2f146104e2575f5ffd5b8063546af2e0116101f5578063546af2e01461047057806356e760581461048f5780635829c5ec146104ae575f5ffd5b806342cde4e81461044657806352c824f51461045b575f5ffd5b806316a75172116102645780632e17de781161024a5780632e17de78146103f3578063379607f5146104125780633e73299714610431575f5ffd5b806316a75172146103c95780631f779408146103de575f5ffd5b806308ae7e541461030f5780630a07dc301461033757806314b19c5a14610358578063150b7a021461036d575f5ffd5b3661030b575f346010546102a89190612c2c565b90505f346011546102b99190612c2c565b60108390556011819055604080513481526020810185905290810182905290915033907f36af321ec8d3c75236829c5317affd40ddb308863a1236d2d277a4025cccee1e9060600160405180910390a2005b5f5ffd5b34801561031a575f5ffd5b50610324600d5481565b6040519081526020015b60405180910390f35b348015610342575f5ffd5b50610356610351366004612da6565b61080e565b005b348015610363575f5ffd5b50610324600f5481565b348015610378575f5ffd5b50610398610387366004612eb7565b630a85bd0160e11b95945050505050565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161032e565b3480156103d4575f5ffd5b5061032460015481565b3480156103e9575f5ffd5b5061032460065481565b3480156103fe575f5ffd5b5061032461040d366004612f50565b61081a565b34801561041d575f5ffd5b5061032461042c366004612f50565b61082b565b34801561043c575f5ffd5b5061032460135481565b348015610451575f5ffd5b5061032460085481565b348015610466575f5ffd5b5061032460055481565b34801561047b575f5ffd5b5061032461048a366004612f50565b610836565b34801561049a575f5ffd5b506103246104a9366004612f50565b610842565b3480156104b9575f5ffd5b5061032460075481565b3480156104ce575f5ffd5b506103246104dd366004612f50565b610861565b3480156104ed575f5ffd5b50610324600a5481565b348015610502575f5ffd5b50610516610511366004612f50565b610928565b60405161032e9190612f67565b34801561052e575f5ffd5b5061032461053d366004612f50565b610a17565b34801561054d575f5ffd5b5061032460115481565b348015610562575f5ffd5b50600c54610576906001600160a01b031681565b6040516001600160a01b03909116815260200161032e565b348015610599575f5ffd5b506103566105a8366004612f50565b610ad2565b3480156105b8575f5ffd5b5061032460125481565b3480156105cd575f5ffd5b5061032460045481565b3480156105e2575f5ffd5b506103566105f1366004612f50565b610ae1565b348015610601575f5ffd5b5061064a610610366004612f50565b60156020525f9081526040902080546001820154600383015460048401546005909401546001600160a01b03938416949390921692909185565b604080516001600160a01b039687168152959094166020860152928401919091526060830152608082015260a00161032e565b348015610688575f5ffd5b50610691610fde565b60405161032e919061303e565b3480156106a9575f5ffd5b5061032460105481565b3480156106be575f5ffd5b506106c7611034565b60405161032e9493929190613050565b3480156106e2575f5ffd5b506103245f5481565b3480156106f6575f5ffd5b50600b54610576906001600160a01b031681565b348015610715575f5ffd5b5061032460095481565b34801561072a575f5ffd5b5061032460035481565b34801561073f575f5ffd5b5061032460025481565b348015610754575f5ffd5b50610324610763366004612f50565b6116c8565b348015610773575f5ffd5b506106916116d7565b348015610787575f5ffd5b5061032461172b565b34801561079b575f5ffd5b50610324600e5481565b3480156107b0575f5ffd5b506107c46107bf366004612f50565b611741565b60405161032e91906130bb565b3480156107dc575f5ffd5b50610801604051806040016040528060058152602001640302e322e360dc1b81525081565b60405161032e91906130e1565b61081781611813565b50565b5f610825825f611b9e565b92915050565b5f610825825f611f32565b5f610825826001611f32565b60148181548110610851575f80fd5b5f91825260209091200154905081565b5f818152601560209081526040808320815160c08101835281546001600160a01b03908116825260018301541681850152600282018054845181870281018701865281815287969395860193909291908301828280156108de57602002820191905f5260205f20905b8154815260200190600101908083116108ca575b50505050508152602001600382015481526020016004820154815260200160058201548152505090508060800151915061091783610a17565b6109219083612c2c565b9392505050565b61096e6040518060c001604052805f6001600160a01b031681526020015f6001600160a01b03168152602001606081526020015f81526020015f81526020015f81525090565b5f82815260156020908152604091829020825160c08101845281546001600160a01b03908116825260018301541681840152600282018054855181860281018601875281815292959394938601938301828280156109e957602002820191905f5260205f20905b8154815260200190600101908083116109d5575b5050505050815260200160038201548152602001600482015481526020016005820154815250509050919050565b5f5f5f5f5f5f610a25612035565b505050945094509450945094505f5f90505b84811015610ac75787838281518110610a5257610a52613116565b602002602001015103610abf5785841115610a9e578386838381518110610a7b57610a7b613116565b6020026020010151610a8d919061312a565b610a979190613155565b9650610ac7565b818181518110610ab057610ab0613116565b60200260200101519650610ac7565b600101610a37565b505050505050919050565b610add816001611b9e565b5050565b610ae9611034565b505050506011545f03610b0f5760405163afb0be3360e01b815260040160405180910390fd5b5f818152601560205260409020600381015415610b475760405163b4817ce760e01b8152600481018390526024015b60405180910390fd5b6016546001548103610b725760015460405163fd20861560e01b8152600401610b3e91815260200190565b600b5460405163ef0e239b60e01b8152600481018590525f916001600160a01b03169063ef0e239b906024015f60405180830381865afa158015610bb8573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610bdf9190810190613211565b9050806080015163ffffffff1660075414610c1057604051637ad404bf60e11b815260048101859052602401610b3e565b60095415801590610c275750806040015160095414155b15610c4857604051637ad404bf60e11b815260048101859052602401610b3e565b5f600854118015610c655750806060015163ffffffff1660085414155b15610c8657604051637ad404bf60e11b815260048101859052602401610b3e565b60048160c001516005811115610c9e57610c9e6130a7565b14610cdd578060c001516005811115610cb957610cb96130a7565b604051633c053f9d60e21b8152600481019190915260248101859052604401610b3e565b5f81602001516001600160a01b0316803b806020016040519081016040528181525f908060200190933c80519060200120905080600a5414610d4257602082015160405162a2307960e51b81526001600160a01b039091166004820152602401610b3e565b6014548015610e065760e083015151818114610d7457604051637ad404bf60e11b815260048101889052602401610b3e565b5f5b81811015610e03578460e001518181518110610d9457610d94613116565b602002602001015163ffffffff1660148281548110610db557610db5613116565b905f5260205f20015414610dfb5760148181548110610dd657610dd6613116565b905f5260205f200154604051632ab10b0b60e21b8152600401610b3e91815260200190565b600101610d76565b50505b610e2686845f01516bffffffffffffffffffffffff168560e001516123d5565b602083015185546001600160a01b0391821673ffffffffffffffffffffffffffffffffffffffff19918216811788556001880180549092163317909155600c5460405163d564c4bf60e01b815260048101929092525f92169063d564c4bf906024015f60405180830381865afa158015610ea2573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610ec991908101906132ee565b8051909150610ee19060028801906020840190612ba4565b50426003870155601680546001810182555f919091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428901879055600b54604051632142170760e11b8152336004820152306024820152604481018990526001600160a01b03909116906342842e0e906064015f604051808303815f87803b158015610f6b575f5ffd5b505af1158015610f7d573d5f5f3e3d5ffd5b5050505083602001516001600160a01b0316336001600160a01b0316887faa6b005b4958114a0c90492461c24af6525ae0178db7fbf44125ae9217c69ccb600f5485604051610fcd92919061337f565b60405180910390a450505050505050565b6060601480548060200260200160405190810160405280929190818152602001828054801561102a57602002820191905f5260205f20905b815481526020019060010190808311611016575b5050505050905090565b6060806060805f5f5f5f5f5f5f5f61104a612035565b97509750975097509750975097509750606080845167ffffffffffffffff81111561107757611077612c3f565b6040519080825280602002602001820160405280156110a0578160200160208202803683370190505b509a505f8915611421578967ffffffffffffffff8111156110c3576110c3612c3f565b6040519080825280602002602001820160405280156110ec578160200160208202803683370190505b5092508967ffffffffffffffff81111561110857611108612c3f565b604051908082528060200260200182016040528015611131578160200160208202803683370190505b5091508a89111561132e575f8060015b8c81101561122a578b8e8b838151811061115d5761115d613116565b602002602001015161116f919061312a565b6111799190613155565b92506111858383612c2c565b91508a818151811061119957611199613116565b602002602001015193508a81815181106111b5576111b5613116565b60200260200101518682815181106111cf576111cf613116565b602002602001018181525050828582815181106111ee576111ee613116565b6020026020010181815250508260155f8681526020019081526020015f206004015f82825461121d9190612c2c565b9091555050600101611141565b508a8d8a5f8151811061123f5761123f613116565b6020026020010151611251919061312a565b61125b9190613155565b91506112678282612c2c565b9050895f8151811061127b5761127b613116565b60200260200101519250895f8151811061129757611297613116565b6020026020010151855f815181106112b1576112b1613116565b602002602001018181525050808d11156112dc576112cf818e61339f565b6112d99083612c2c565b91505b81845f815181106112ef576112ef613116565b6020026020010181815250508160155f8581526020019081526020015f206004015f82825461131e9190612c2c565b909155505f9d5061141b92505050565b5f5b8a81101561140d5788818151811061134a5761134a613116565b6020026020010151915088818151811061136657611366613116565b602002602001015184828151811061138057611380613116565b60200260200101818152505087818151811061139e5761139e613116565b60200260200101518382815181106113b8576113b8613116565b6020026020010181815250508781815181106113d6576113d6613116565b602002602001015160155f8481526020019081526020015f206004015f8282546114009190612c2c565b9091555050600101611330565b50611418898c61339f565b9a505b60118b90555b85511561169457600f545f9a508a5b875181101561160f5787818151811061144b5761144b613116565b6020026020010151925086818151811061146757611467613116565b602002602001015160155f8581526020019081526020015f206002019080519060200190611496929190612ba4565b505f8682815181106114aa576114aa613116565b602002602001015111156115f5578581815181106114ca576114ca613116565b602002602001015160155f8581526020019081526020015f20600501546114f19190612c2c565b86828151811061150357611503613116565b60200260200101818152505085818151811061152157611521613116565b602002602001015160155f8581526020019081526020015f2060050181905550600e5486828151811061155657611556613116565b6020026020010151111561159457828e828151811061157757611577613116565b60209081029190910101528b61158c816133b2565b9c5050611607565b827f33dc5cdf1e035de8a7fe16ad7a30a441d30ee51719d3f07703ee35d4348f0779838884815181106115c9576115c9613116565b60200260200101516040516115e8929190918252602082015260400190565b60405180910390a2611607565b5f838152601560205260408120600501555b600101611430565b508a15611628576116218d868d61251a565b9c5061162d565b60609c505b5f6013544261163c919061339f565b42601355905061164d826001612c2c565b600f81905550817f48b735a18ed32318d316214e41387be29c52e29df4598f2b8e40fa843be3f9408e87878560405161168994939291906133ca565b60405180910390a250505b855115806116a257505f8c51115b156116b2576116af6116d7565b95505b50939c509a509198505050505050505090919293565b60168181548110610851575f80fd5b6060601680548060200260200160405190810160405280929190818152602001828054801561102a57602002820191905f5260205f2090815481526020019060010190808311611016575050505050905090565b5f60055460135461173c9190612c2c565b905090565b5f818152601560209081526040808320815160c08101835281546001600160a01b03908116825260018301541681850152600282018054845181870281018701865281815287969395860193909291908301828280156117be57602002820191905f5260205f20905b8154815260200190600101908083116117aa575b5050505050815260200160038201548152602001600482015481526020016005820154815250509050600e548160a0015111156117fe576002915061180d565b60608101511561180d57600191505b50919050565b600b546001600160a01b03161561183c5760405162dc149f60e41b815260040160405180910390fd5b8051158061184c57506020810151155b8061185957506040810151155b80611866575060c0810151155b806118745750610100810151155b80611881575060e0810151155b8061188e57506080810151155b8061189b575060a0810151155b156118b957604051637c946ed760e01b815260040160405180910390fd5b8060a00151816080015110156118f557608081015160a082015160405163491a2bb160e01b815260048101929092526024820152604401610b3e565b60028160600151101561192b57606081015160405163491a2bb160e01b8152600481019190915260026024820152604401610b3e565b6101a08101516001600160a01b0316158061195257506101c08101516001600160a01b0316155b156119705760405163d92e233d60e01b815260040160405180910390fd5b806101c001516001600160a01b03163b5f036119b1576101c081015160405163601c0c2160e01b81526001600160a01b039091166004820152602401610b3e565b80515f90815560208201516001556040820151600255606082015160035560a082015160045560c082015160055560e08201516006556101008201516007556101a0820151600b80546001600160a01b0392831673ffffffffffffffffffffffffffffffffffffffff19918216179091556101c0840151600c8054919093169116179055610140820151600855610160820151600955805b82610120015151811015611b1757818361012001518281518110611a6f57611a6f613116565b602002602001015111611ab7578261012001518181518110611a9357611a93613116565b6020026020010151604051632ab10b0b60e21b8152600401610b3e91815260200190565b8261012001518181518110611ace57611ace613116565b602090810291909101015160148054600181810183555f929092527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0182905590925001611a49565b506101808201515f03611b3d57604051637c946ed760e01b815260040160405180910390fd5b610180820151600a556005546080830151611b58919061312a565b600d5560055460a0830151611b6d919061312a565b600e5560e082015160208301516040840151611b89919061312a565b611b93919061312a565b601255505042601355565b5f82815260156020526040812060018101546001600160a01b03163314611bef57600181015460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610b3e565b5f611bf8611034565b505050600483015460115460038501549195509192505f90611c1a904261339f565b9050600d548111158015611c2d57505f82115b15611c6057600d5460405163ba2bbc6b60e01b815260048101899052602481018390526044810191909152606401610b3e565b5f5f5b8451821015611c9f5788858381518110611c7f57611c7f613116565b602002602001015103611c9457506001611c9f565b816001019150611c63565b5f86600201805480602002602001604051908101604052809291908181526020018280548015611cec57602002820191905f5260205f20905b815481526020019060010190808311611cd8575b50508a545f8f8152601560205260408120805473ffffffffffffffffffffffffffffffffffffffff19908116825560018201805490911690559596506001600160a01b039091169493509150611d4790506002830182612bed565b505f60038201819055600482018190556005909101558215611ddd576016545f90611d749060019061339f565b90508015611db75760168181548110611d8f57611d8f613116565b905f5260205f20015460168681548110611dab57611dab613116565b5f918252602090912001555b6016805480611dc857611dc8613406565b600190038181905f5260205f20015f90559055505b600b546040516323b872dd60e01b8152306004820152336024820152604481018d90526001600160a01b03909116906323b872dd906064015f604051808303815f87803b158015611e2c575f5ffd5b505af1158015611e3e573d5f5f3e3d5ffd5b505050505f891115611e70578915611e6657611e5a8987612c2c565b60118190559550611e70565b611e70818a6128d2565b8915611ecf57806001600160a01b0316336001600160a01b03168c7f91c9f7c7f307bcc0ae02ba613bd8d07c29e94952f0a28803ded176fcd7d96d64600f54868e8c604051611ec2949392919061341a565b60405180910390a4611f24565b806001600160a01b0316336001600160a01b03168c7f6d789d063e079a4c156e77a20008529fc448dca2cd7e5e7a20abf969fffb9226600f54868e8c604051611f1b949392919061341a565b60405180910390a45b505050505050505092915050565b5f82815260156020526040812060018101546001600160a01b03163314611f8357600181015460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610b3e565b8215611f9657611f91611034565b505050505b80600401549150815f03611fbd57604051637c946ed760e01b815260040160405180910390fd5b5f600482015580546001600160a01b0316611fd881846128d2565b806001600160a01b0316336001600160a01b0316867f31add0166dae59ea66bbc180e4fae85b72fc9b7b5fc7b0f7257e4721a840c96e600f54866002018860405161202593929190613445565b60405180910390a4505092915050565b60135460115460165490915f918291606091829182918291829180158015906120695750600554612066834261339f565b10155b801561207457505f8a115b156123c9578067ffffffffffffffff81111561209257612092612c3f565b6040519080825280602002602001820160405280156120bb578160200160208202803683370190505b5094508067ffffffffffffffff8111156120d7576120d7612c3f565b604051908082528060200260200182016040528015612100578160200160208202803683370190505b5096508067ffffffffffffffff81111561211c5761211c612c3f565b604051908082528060200260200182016040528015612145578160200160208202803683370190505b5095508067ffffffffffffffff81111561216157612161612c3f565b60405190808252806020026020018201604052801561219457816020015b606081526020019060019003908161217f5790505b5093508067ffffffffffffffff8111156121b0576121b0612c3f565b6040519080825280602002602001820160405280156121d9578160200160208202803683370190505b5092505f5b818110156123c757601681815481106121f9576121f9613116565b905f5260205f20015486828151811061221457612214613116565b6020026020010181815250505f60155f88848151811061223657612236613116565b602002602001015181526020019081526020015f2090505f8490505f8260030154905081811115612265578091505b61226f824261339f565b8354600285018054604080516020808402820181019092528281529495505f946122d9946001600160a01b031693909290918301828280156122ce57602002820191905f5260205f20905b8154815260200190600101908083116122ba575b5050505050846129bd565b8a87815181106122eb576122eb613116565b602090810291909101015290508015612398578160025461230c919061312a565b8b8f8151811061231e5761231e613116565b6020026020010181815250508a8e8151811061233c5761233c613116565b60200260200101518d61234f9190612c2c565b9c5089858151811061236357612363613116565b60200260200101518c8f8151811061237d5761237d613116565b60209081029190910101526123918e6133b2565b9d506123b8565b818886815181106123ab576123ab613116565b6020026020010181815250505b505050508060010190506121de565b505b50509091929394959697565b600354808310156124035760405163491a2bb160e01b81526004810184905260248101829052604401610b3e565b600b54604051630ef1435d60e11b8152600481018690525f9182916001600160a01b0390911690631de286ba906024015f60405180830381865afa15801561244d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612474919081019061349d565b90925090505f5b82811015612511578382828151811061249657612496613116565b6020026020010151602001516bffffffffffffffffffffffff161015612509578181815181106124c8576124c8613116565b6020026020010151602001518460405163491a2bb160e01b8152600401610b3e9291906bffffffffffffffffffffffff929092168252602082015260400190565b60010161247b565b50505050505050565b82516060908267ffffffffffffffff81111561253857612538612c3f565b604051908082528060200260200182016040528015612561578160200160208202803683370190505b5091505f8367ffffffffffffffff81111561257e5761257e612c3f565b6040519080825280602002602001820160405280156125a7578160200160208202803683370190505b5090505f8467ffffffffffffffff8111156125c4576125c4612c3f565b6040519080825280602002602001820160405280156125ed578160200160208202803683370190505b5090505f8567ffffffffffffffff81111561260a5761260a612c3f565b604051908082528060200260200182016040528015612633578160200160208202803683370190505b5090505f8667ffffffffffffffff81111561265057612650612c3f565b604051908082528060200260200182016040528015612679578160200160208202803683370190505b5090505f80805b878110156127d5575f8c828151811061269b5761269b613116565b602002602001015111156127cd578b81815181106126bb576126bb613116565b60200260200101519150818984815181106126d8576126d8613116565b6020908102919091018101919091525f838152601590915260409020600181015488516001600160a01b039091169089908690811061271957612719613116565b6001600160a01b0392831660209182029290920101528154885191169088908690811061274857612748613116565b60200260200101906001600160a01b031690816001600160a01b0316815250508b828151811061277a5761277a613116565b602002602001015186858151811061279457612794613116565b602002602001018181525050818585815181106127b3576127b3613116565b6020908102919091010152836127c8816133b2565b945050505b600101612680565b50885b801561288357876127e881613570565b98505f9050846127f960018461339f565b8151811061280957612809613116565b602002602001015190506016898154811061282657612826613116565b905f5260205f2001546016828154811061284257612842613116565b5f91825260209091200155601680548061285e5761285e613406565b600190038181905f5260205f20015f90559055508061287c90613570565b90506127d8565b50600f547fd19a3d42ed383465e4058c322d9411aeac76ddb8454d22e139fc99808bd56952898888886040516128bc94939291906135be565b60405180910390a2505050505050509392505050565b8060105f8282546128e3919061339f565b90915550506040515f906001600160a01b0384169083908381818185875af1925050503d805f8114612930576040519150601f19603f3d011682016040523d82523d5f602084013e612935565b606091505b50509050806129755760405163cd3f165960e01b81525f60048201523060248201526001600160a01b038416604482015260648101839052608401610b3e565b826001600160a01b03167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364836040516129b091815260200190565b60405180910390a2505050565b6040516001600160a01b03841660248201525f90606090829060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663d564c4bf60e01b179052600c5490519192505f9182916001600160a01b031690612a399085906135f6565b5f60405180830381855afa9150503d805f8114612a71576040519150601f19603f3d011682016040523d82523d5f602084013e612a76565b606091505b5091509150818015612a895750603f8151115b8015612aa0575060208151612a9e919061360c565b155b15612b995780806020019051810190612ab991906132ee565b9350838787604051602401612ad09392919061361f565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663184023a560e01b179052600c5490519194506001600160a01b031690612b2c9085906135f6565b5f60405180830381855afa9150503d805f8114612b64576040519150601f19603f3d011682016040523d82523d5f602084013e612b69565b606091505b509092509050818015612b7d575080516020145b15612b995780806020019051810190612b969190613654565b94505b505050935093915050565b828054828255905f5260205f20908101928215612bdd579160200282015b82811115612bdd578251825591602001919060010190612bc2565b50612be9929150612c04565b5090565b5080545f8255905f5260205f209081019061081791905b5b80821115612be9575f8155600101612c05565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561082557610825612c18565b634e487b7160e01b5f52604160045260245ffd5b6040516101e0810167ffffffffffffffff81118282101715612c7757612c77612c3f565b60405290565b604051610100810167ffffffffffffffff81118282101715612c7757612c77612c3f565b6040805190810167ffffffffffffffff81118282101715612c7757612c77612c3f565b604051601f8201601f1916810167ffffffffffffffff81118282101715612ced57612ced612c3f565b604052919050565b5f67ffffffffffffffff821115612d0e57612d0e612c3f565b5060051b60200190565b5f82601f830112612d27575f5ffd5b8135612d3a612d3582612cf5565b612cc4565b8082825260208201915060208360051b860101925085831115612d5b575f5ffd5b602085015b83811015612d78578035835260209283019201612d60565b5095945050505050565b6001600160a01b0381168114610817575f5ffd5b8035612da181612d82565b919050565b5f60208284031215612db6575f5ffd5b813567ffffffffffffffff811115612dcc575f5ffd5b82016101e08185031215612dde575f5ffd5b612de6612c53565b813581526020808301359082015260408083013590820152606080830135908201526080808301359082015260a0808301359082015260c0808301359082015260e08083013590820152610100808301359082015261012082013567ffffffffffffffff811115612e55575f5ffd5b612e6186828501612d18565b61012083015250610140828101359082015261016080830135908201526101808083013590820152612e966101a08301612d96565b6101a0820152612ea96101c08301612d96565b6101c0820152949350505050565b5f5f5f5f5f60808688031215612ecb575f5ffd5b8535612ed681612d82565b94506020860135612ee681612d82565b935060408601359250606086013567ffffffffffffffff811115612f08575f5ffd5b8601601f81018813612f18575f5ffd5b803567ffffffffffffffff811115612f2e575f5ffd5b886020828401011115612f3f575f5ffd5b959894975092955050506020019190565b5f60208284031215612f60575f5ffd5b5035919050565b602081525f60e082016001600160a01b0384511660208401526001600160a01b036020850151166040840152604084015160c06060850152818151808452610100860191506020830193505f92505b80831015612fd95783518252602082019150602084019350600183019250612fb6565b5060608601516080860152608086015160a086015260a086015160c086015280935050505092915050565b5f8151808452602084019350602083015f5b82811015613034578151865260209586019590910190600101613016565b5093949350505050565b602081525f6109216020830184613004565b608081525f6130626080830187613004565b82810360208401526130748187613004565b905082810360408401526130888186613004565b9050828103606084015261309c8185613004565b979650505050505050565b634e487b7160e01b5f52602160045260245ffd5b60208101600383106130db57634e487b7160e01b5f52602160045260245ffd5b91905290565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b634e487b7160e01b5f52603260045260245ffd5b808202811582820484141761082557610825612c18565b634e487b7160e01b5f52601260045260245ffd5b5f8261316357613163613141565b500490565b80516bffffffffffffffffffffffff81168114612da1575f5ffd5b8051612da181612d82565b805163ffffffff81168114612da1575f5ffd5b805160068110612da1575f5ffd5b5f82601f8301126131be575f5ffd5b81516131cc612d3582612cf5565b8082825260208201915060208360051b8601019250858311156131ed575f5ffd5b602085015b83811015612d78576132038161318e565b8352602092830192016131f2565b5f60208284031215613221575f5ffd5b815167ffffffffffffffff811115613237575f5ffd5b82016101008185031215613249575f5ffd5b613251612c7d565b61325a82613168565b815261326860208301613183565b6020820152604082810151908201526132836060830161318e565b60608201526132946080830161318e565b60808201526132a560a0830161318e565b60a08201526132b660c083016131a1565b60c082015260e082015167ffffffffffffffff8111156132d4575f5ffd5b6132e0868285016131af565b60e083015250949350505050565b5f602082840312156132fe575f5ffd5b815167ffffffffffffffff811115613314575f5ffd5b8201601f81018413613324575f5ffd5b8051613332612d3582612cf5565b8082825260208201915060208360051b850101925086831115613353575f5ffd5b6020840193505b8284101561337557835182526020938401939091019061335a565b9695505050505050565b828152604060208201525f6133976040830184613004565b949350505050565b8181038181111561082557610825612c18565b5f600182016133c3576133c3612c18565b5060010190565b848152608060208201525f6133e26080830186613004565b82810360408401526133f48186613004565b91505082606083015295945050505050565b634e487b7160e01b5f52603160045260245ffd5b848152608060208201525f6134326080830186613004565b6040830194909452506060015292915050565b5f6060820185835260606020840152808554808352608085019150865f5260205f2092505f5b8181101561348957835483526001938401936020909301920161346b565b505060409390930193909352509392505050565b5f5f604083850312156134ae575f5ffd5b8251602084015190925067ffffffffffffffff8111156134cc575f5ffd5b8301601f810185136134dc575f5ffd5b80516134ea612d3582612cf5565b8082825260208201915060208360061b85010192508783111561350b575f5ffd5b6020840193505b828410156135625760408489031215613529575f5ffd5b613531612ca1565b61353a8561318e565b815261354860208601613168565b602082015280835250602082019150604084019350613512565b809450505050509250929050565b5f8161357e5761357e612c18565b505f190190565b5f8151808452602084019350602083015f5b828110156130345781516001600160a01b0316865260209586019590910190600101613597565b608081525f6135d06080830187613004565b82810360208401526135e28187613585565b905082810360408401526130888186613585565b5f82518060208501845e5f920191825250919050565b5f8261361a5761361a613141565b500690565b606081525f6136316060830186613004565b82810360208401526136438186613004565b915050826040830152949350505050565b5f60208284031215613664575f5ffd5b81518015158114610921575f5ffdfea26469706673582212205f6754346215747de8d09e7753fc09f0a0309144f47e8d3af42d512ea212f71e64736f6c634300081c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/abis/0.8.28/StakingToken.json b/abis/0.8.28/StakingToken.json new file mode 100644 index 00000000..cab86d05 --- /dev/null +++ b/abis/0.8.28/StakingToken.json @@ -0,0 +1,1337 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "StakingToken", + "sourceName": "contracts/staking/StakingToken.sol", + "abi": [ + { + "inputs": [], + "name": "AlreadyInitialized", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "activityChecker", + "type": "address" + } + ], + "name": "ContractOnly", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "provided", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + } + ], + "name": "LowerThan", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "maxNumServices", + "type": "uint256" + } + ], + "name": "MaxNumServicesReached", + "type": "error" + }, + { + "inputs": [], + "name": "NoRewardsAvailable", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tsProvided", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tsExpected", + "type": "uint256" + } + ], + "name": "NotEnoughTimeStaked", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnerOnly", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "ServiceNotUnstaked", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TokenTransferFailed", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "multisig", + "type": "address" + } + ], + "name": "UnauthorizedMultisig", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "provided", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + } + ], + "name": "ValueLowerThan", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + } + ], + "name": "WrongAgentId", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "WrongServiceConfiguration", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "state", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "WrongServiceState", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "expected", + "type": "address" + }, + { + "internalType": "address", + "name": "provided", + "type": "address" + } + ], + "name": "WrongStakingToken", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddress", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroTokenAddress", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroValue", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "epoch", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "availableRewards", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "serviceIds", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "rewards", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "epochLength", + "type": "uint256" + } + ], + "name": "Checkpoint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "availableRewards", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "epoch", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "multisig", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "nonces", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reward", + "type": "uint256" + } + ], + "name": "RewardClaimed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "epoch", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "multisig", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "nonces", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reward", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "availableRewards", + "type": "uint256" + } + ], + "name": "ServiceForceUnstaked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "epoch", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "serviceInactivity", + "type": "uint256" + } + ], + "name": "ServiceInactivityWarning", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "epoch", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "multisig", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "nonces", + "type": "uint256[]" + } + ], + "name": "ServiceStaked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "epoch", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "multisig", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "nonces", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reward", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "availableRewards", + "type": "uint256" + } + ], + "name": "ServiceUnstaked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "epoch", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "serviceIds", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "owners", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "multisigs", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "serviceInactivity", + "type": "uint256[]" + } + ], + "name": "ServicesEvicted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Withdraw", + "type": "event" + }, + { + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "activityChecker", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "agentIds", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "availableRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "balance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "calculateStakingLastReward", + "outputs": [ + { + "internalType": "uint256", + "name": "reward", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "calculateStakingReward", + "outputs": [ + { + "internalType": "uint256", + "name": "reward", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "checkpoint", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "evictServiceIds", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "checkpointAndClaim", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "claim", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "configHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "emissionsAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "epochCounter", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "forcedUnstake", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getAgentIds", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getNextRewardCheckpointTimestamp", + "outputs": [ + { + "internalType": "uint256", + "name": "tsNext", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getServiceIds", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "getServiceInfo", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "multisig", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "nonces", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "tsStart", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reward", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "inactivity", + "type": "uint256" + } + ], + "internalType": "struct ServiceInfo", + "name": "sInfo", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "getStakingState", + "outputs": [ + { + "internalType": "enum StakingBase.StakingState", + "name": "stakingState", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "metadataHash", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "maxNumServices", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rewardsPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minStakingDeposit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minNumStakingPeriods", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxNumInactivityPeriods", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "livenessPeriod", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timeForEmissions", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "numAgentInstances", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "agentIds", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "threshold", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "configHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "proxyHash", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "serviceRegistry", + "type": "address" + }, + { + "internalType": "address", + "name": "activityChecker", + "type": "address" + } + ], + "internalType": "struct StakingBase.StakingParams", + "name": "_stakingParams", + "type": "tuple" + }, + { + "internalType": "address", + "name": "_serviceRegistryTokenUtility", + "type": "address" + }, + { + "internalType": "address", + "name": "_stakingToken", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "livenessPeriod", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapServiceInfo", + "outputs": [ + { + "internalType": "address", + "name": "multisig", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tsStart", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reward", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "inactivity", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxInactivityDuration", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxNumInactivityPeriods", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxNumServices", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "metadataHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minStakingDeposit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minStakingDuration", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "numAgentInstances", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "proxyHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardsPerSecond", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "serviceRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "serviceRegistryTokenUtility", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "setServiceIds", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "stake", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "stakingToken", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "threshold", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "timeForEmissions", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "tsCheckpoint", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "unstake", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6080604052348015600e575f5ffd5b5061364a8061001c5f395ff3fe608060405234801561000f575f5ffd5b50600436106102cd575f3560e01c806393ac752f1161017c578063c5a1d7f0116100dd578063eb338c9611610093578063f86ad2b61161006e578063f86ad2b6146105db578063fd0bba8c146105e4578063ffa1ad7414610604575f5ffd5b8063eb338c96146105b8578063f189e85a146105cb578063f4dce714146105d3575f5ffd5b8063e1f1176d116100c3578063e1f1176d1461059d578063e77cdcc9146105a6578063eacdaabc146105af575f5ffd5b8063c5a1d7f014610582578063cbcf252a1461058a575f5ffd5b8063b150876011610132578063b69ef8a811610118578063b69ef8a81461054e578063b6b55f2514610557578063c2c4c5c11461056a575f5ffd5b8063b150876014610526578063b267c67b1461053b575f5ffd5b8063a0ed60e011610162578063a0ed60e01461048f578063a694fc3a14610498578063a74466ad146104ab575f5ffd5b806393ac752f146104715780639573236114610486575f5ffd5b806352c824f5116102315780637fbe2833116101e757806383f9eb22116101c257806383f9eb2214610442578063879d9090146104555780638f9e0a621461045e575f5ffd5b80637fbe283314610406578063809cee2f1461041957806382a8ea5814610422575f5ffd5b806356e760581161021757806356e76058146103d75780635829c5ec146103ea57806372f702f3146103f3575f5ffd5b806352c824f5146103bb578063546af2e0146103c4575f5ffd5b80632871405111610286578063379607f51161026c578063379607f5146103965780633e732997146103a957806342cde4e8146103b2575f5ffd5b806328714051146103585780632e17de7814610383575f5ffd5b8063150b7a02116102b6578063150b7a02146102f657806316a75172146103465780631f7794081461034f575f5ffd5b806308ae7e54146102d157806314b19c5a146102ed575b5f5ffd5b6102da600d5481565b6040519081526020015b60405180910390f35b6102da600f5481565b610315610304366004612c68565b630a85bd0160e11b95945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016102e4565b6102da60015481565b6102da60065481565b60175461036b906001600160a01b031681565b6040516001600160a01b0390911681526020016102e4565b6102da610391366004612d01565b610635565b6102da6103a4366004612d01565b610646565b6102da60135481565b6102da60085481565b6102da60055481565b6102da6103d2366004612d01565b610651565b6102da6103e5366004612d01565b61065d565b6102da60075481565b60185461036b906001600160a01b031681565b6102da610414366004612d01565b61067c565b6102da600a5481565b610435610430366004612d01565b610743565b6040516102e49190612d18565b6102da610450366004612d01565b610832565b6102da60115481565b600c5461036b906001600160a01b031681565b61048461047f366004612d01565b6108ed565b005b6102da60125481565b6102da60045481565b6104846104a6366004612d01565b6108fc565b6104f36104b9366004612d01565b60156020525f9081526040902080546001820154600383015460048401546005909401546001600160a01b03938416949390921692909185565b604080516001600160a01b039687168152959094166020860152928401919091526060830152608082015260a0016102e4565b61052e610dec565b6040516102e49190612def565b610484610549366004612f21565b610e42565b6102da60105481565b610484610565366004612d01565b610eb8565b610572610f45565b6040516102e49493929190613053565b6102da5f5481565b600b5461036b906001600160a01b031681565b6102da60095481565b6102da60035481565b6102da60025481565b6102da6105c6366004612d01565b6115d9565b61052e6115e8565b6102da61163c565b6102da600e5481565b6105f76105f2366004612d01565b611652565b6040516102e491906130be565b610628604051806040016040528060058152602001640302e322e360dc1b81525081565b6040516102e491906130e4565b5f610640825f611724565b92915050565b5f610640825f611aab565b5f610640826001611aab565b6014818154811061066c575f80fd5b5f91825260209091200154905081565b5f818152601560209081526040808320815160c08101835281546001600160a01b03908116825260018301541681850152600282018054845181870281018701865281815287969395860193909291908301828280156106f957602002820191905f5260205f20905b8154815260200190600101908083116106e5575b50505050508152602001600382015481526020016004820154815260200160058201548152505090508060800151915061073283610832565b61073c908361312d565b9392505050565b6107896040518060c001604052805f6001600160a01b031681526020015f6001600160a01b03168152602001606081526020015f81526020015f81526020015f81525090565b5f82815260156020908152604091829020825160c08101845281546001600160a01b039081168252600183015416818401526002820180548551818602810186018752818152929593949386019383018282801561080457602002820191905f5260205f20905b8154815260200190600101908083116107f0575b5050505050815260200160038201548152602001600482015481526020016005820154815250509050919050565b5f5f5f5f5f5f610840611bae565b505050945094509450945094505f5f90505b848110156108e2578783828151811061086d5761086d613140565b6020026020010151036108da57858411156108b957838683838151811061089657610896613140565b60200260200101516108a89190613154565b6108b2919061317f565b96506108e2565b8181815181106108cb576108cb613140565b602002602001015196506108e2565b600101610852565b505050505050919050565b6108f8816001611724565b5050565b610904610f45565b505050506011545f0361092a5760405163afb0be3360e01b815260040160405180910390fd5b5f8181526015602052604090206003810154156109625760405163b4817ce760e01b8152600481018390526024015b60405180910390fd5b601654600154810361098d5760015460405163fd20861560e01b815260040161095991815260200190565b600b5460405163ef0e239b60e01b8152600481018590525f916001600160a01b03169063ef0e239b906024015f60405180830381865afa1580156109d3573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526109fa919081019061323b565b9050806080015163ffffffff1660075414610a2b57604051637ad404bf60e11b815260048101859052602401610959565b60095415801590610a425750806040015160095414155b15610a6357604051637ad404bf60e11b815260048101859052602401610959565b5f600854118015610a805750806060015163ffffffff1660085414155b15610aa157604051637ad404bf60e11b815260048101859052602401610959565b60048160c001516005811115610ab957610ab96130aa565b14610af8578060c001516005811115610ad457610ad46130aa565b604051633c053f9d60e21b8152600481019190915260248101859052604401610959565b5f81602001516001600160a01b0316803b806020016040519081016040528181525f908060200190933c80519060200120905080600a5414610b5d57602082015160405162a2307960e51b81526001600160a01b039091166004820152602401610959565b6014548015610c215760e083015151818114610b8f57604051637ad404bf60e11b815260048101889052602401610959565b5f5b81811015610c1e578460e001518181518110610baf57610baf613140565b602002602001015163ffffffff1660148281548110610bd057610bd0613140565b905f5260205f20015414610c165760148181548110610bf157610bf1613140565b905f5260205f200154604051632ab10b0b60e21b815260040161095991815260200190565b600101610b91565b50505b610c4186845f01516bffffffffffffffffffffffff168560e00151611f4e565b602083015185546001600160a01b039182166001600160a01b0319918216811788556001880180549092163317909155600c5460405163d564c4bf60e01b815260048101929092525f92169063d564c4bf906024015f60405180830381865afa158015610cb0573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610cd79190810190613318565b8051909150610cef9060028801906020840190612bc9565b50426003870155601680546001810182555f919091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428901879055600b54604051632142170760e11b8152336004820152306024820152604481018990526001600160a01b03909116906342842e0e906064015f604051808303815f87803b158015610d79575f5ffd5b505af1158015610d8b573d5f5f3e3d5ffd5b5050505083602001516001600160a01b0316336001600160a01b0316887faa6b005b4958114a0c90492461c24af6525ae0178db7fbf44125ae9217c69ccb600f5485604051610ddb9291906133a9565b60405180910390a450505050505050565b60606014805480602002602001604051908101604052809291908181526020018280548015610e3857602002820191905f5260205f20905b815481526020019060010190808311610e24575b5050505050905090565b610e4b83612137565b6001600160a01b0381161580610e6857506001600160a01b038216155b15610e8657604051636b093aad60e01b815260040160405180910390fd5b601880546001600160a01b039283166001600160a01b0319918216179091556017805493909216921691909117905550565b5f81601054610ec7919061312d565b90505f82601154610ed8919061312d565b60108390556011819055601854909150610efd906001600160a01b03163330866124b5565b604080518481526020810184905290810182905233907f36af321ec8d3c75236829c5317affd40ddb308863a1236d2d277a4025cccee1e9060600160405180910390a2505050565b6060806060805f5f5f5f5f5f5f5f610f5b611bae565b97509750975097509750975097509750606080845167ffffffffffffffff811115610f8857610f88612e01565b604051908082528060200260200182016040528015610fb1578160200160208202803683370190505b509a505f8915611332578967ffffffffffffffff811115610fd457610fd4612e01565b604051908082528060200260200182016040528015610ffd578160200160208202803683370190505b5092508967ffffffffffffffff81111561101957611019612e01565b604051908082528060200260200182016040528015611042578160200160208202803683370190505b5091508a89111561123f575f8060015b8c81101561113b578b8e8b838151811061106e5761106e613140565b60200260200101516110809190613154565b61108a919061317f565b9250611096838361312d565b91508a81815181106110aa576110aa613140565b602002602001015193508a81815181106110c6576110c6613140565b60200260200101518682815181106110e0576110e0613140565b602002602001018181525050828582815181106110ff576110ff613140565b6020026020010181815250508260155f8681526020019081526020015f206004015f82825461112e919061312d565b9091555050600101611052565b508a8d8a5f8151811061115057611150613140565b60200260200101516111629190613154565b61116c919061317f565b9150611178828261312d565b9050895f8151811061118c5761118c613140565b60200260200101519250895f815181106111a8576111a8613140565b6020026020010151855f815181106111c2576111c2613140565b602002602001018181525050808d11156111ed576111e0818e6133c9565b6111ea908361312d565b91505b81845f8151811061120057611200613140565b6020026020010181815250508160155f8581526020019081526020015f206004015f82825461122f919061312d565b909155505f9d5061132c92505050565b5f5b8a81101561131e5788818151811061125b5761125b613140565b6020026020010151915088818151811061127757611277613140565b602002602001015184828151811061129157611291613140565b6020026020010181815250508781815181106112af576112af613140565b60200260200101518382815181106112c9576112c9613140565b6020026020010181815250508781815181106112e7576112e7613140565b602002602001015160155f8481526020019081526020015f206004015f828254611311919061312d565b9091555050600101611241565b50611329898c6133c9565b9a505b60118b90555b8551156115a557600f545f9a508a5b87518110156115205787818151811061135c5761135c613140565b6020026020010151925086818151811061137857611378613140565b602002602001015160155f8581526020019081526020015f2060020190805190602001906113a7929190612bc9565b505f8682815181106113bb576113bb613140565b60200260200101511115611506578581815181106113db576113db613140565b602002602001015160155f8581526020019081526020015f2060050154611402919061312d565b86828151811061141457611414613140565b60200260200101818152505085818151811061143257611432613140565b602002602001015160155f8581526020019081526020015f2060050181905550600e5486828151811061146757611467613140565b602002602001015111156114a557828e828151811061148857611488613140565b60209081029190910101528b61149d816133dc565b9c5050611518565b827f33dc5cdf1e035de8a7fe16ad7a30a441d30ee51719d3f07703ee35d4348f0779838884815181106114da576114da613140565b60200260200101516040516114f9929190918252602082015260400190565b60405180910390a2611518565b5f838152601560205260408120600501555b600101611341565b508a15611539576115328d868d612539565b9c5061153e565b60609c505b5f6013544261154d91906133c9565b42601355905061155e82600161312d565b600f81905550817f48b735a18ed32318d316214e41387be29c52e29df4598f2b8e40fa843be3f9408e87878560405161159a94939291906133f4565b60405180910390a250505b855115806115b357505f8c51115b156115c3576115c06115e8565b95505b50939c509a509198505050505050505090919293565b6016818154811061066c575f80fd5b60606016805480602002602001604051908101604052809291908181526020018280548015610e3857602002820191905f5260205f2090815481526020019060010190808311610e24575050505050905090565b5f60055460135461164d919061312d565b905090565b5f818152601560209081526040808320815160c08101835281546001600160a01b03908116825260018301541681850152600282018054845181870281018701865281815287969395860193909291908301828280156116cf57602002820191905f5260205f20905b8154815260200190600101908083116116bb575b5050505050815260200160038201548152602001600482015481526020016005820154815250509050600e548160a00151111561170f576002915061171e565b60608101511561171e57600191505b50919050565b5f82815260156020526040812060018101546001600160a01b0316331461177557600181015460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610959565b5f61177e610f45565b505050600483015460115460038501549195509192505f906117a090426133c9565b9050600d5481111580156117b357505f82115b156117e657600d5460405163ba2bbc6b60e01b815260048101899052602481018390526044810191909152606401610959565b5f5f5b8451821015611825578885838151811061180557611805613140565b60200260200101510361181a57506001611825565b8160010191506117e9565b5f8660020180548060200260200160405190810160405280929190818152602001828054801561187257602002820191905f5260205f20905b81548152602001906001019080831161185e575b50508a545f8f815260156020526040812080546001600160a01b0319908116825560018201805490911690559596506001600160a01b0390911694935091506118c090506002830182612c12565b505f60038201819055600482018190556005909101558215611956576016545f906118ed906001906133c9565b90508015611930576016818154811061190857611908613140565b905f5260205f2001546016868154811061192457611924613140565b5f918252602090912001555b601680548061194157611941613430565b600190038181905f5260205f20015f90559055505b600b546040516323b872dd60e01b8152306004820152336024820152604481018d90526001600160a01b03909116906323b872dd906064015f604051808303815f87803b1580156119a5575f5ffd5b505af11580156119b7573d5f5f3e3d5ffd5b505050505f8911156119e95789156119df576119d3898761312d565b601181905595506119e9565b6119e9818a6128f1565b8915611a4857806001600160a01b0316336001600160a01b03168c7f91c9f7c7f307bcc0ae02ba613bd8d07c29e94952f0a28803ded176fcd7d96d64600f54868e8c604051611a3b9493929190613444565b60405180910390a4611a9d565b806001600160a01b0316336001600160a01b03168c7f6d789d063e079a4c156e77a20008529fc448dca2cd7e5e7a20abf969fffb9226600f54868e8c604051611a949493929190613444565b60405180910390a45b505050505050505092915050565b5f82815260156020526040812060018101546001600160a01b03163314611afc57600181015460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610959565b8215611b0f57611b0a610f45565b505050505b80600401549150815f03611b3657604051637c946ed760e01b815260040160405180910390fd5b5f600482015580546001600160a01b0316611b5181846128f1565b806001600160a01b0316336001600160a01b0316867f31add0166dae59ea66bbc180e4fae85b72fc9b7b5fc7b0f7257e4721a840c96e600f548660020188604051611b9e9392919061346f565b60405180910390a4505092915050565b60135460115460165490915f91829160609182918291829182918015801590611be25750600554611bdf83426133c9565b10155b8015611bed57505f8a115b15611f42578067ffffffffffffffff811115611c0b57611c0b612e01565b604051908082528060200260200182016040528015611c34578160200160208202803683370190505b5094508067ffffffffffffffff811115611c5057611c50612e01565b604051908082528060200260200182016040528015611c79578160200160208202803683370190505b5096508067ffffffffffffffff811115611c9557611c95612e01565b604051908082528060200260200182016040528015611cbe578160200160208202803683370190505b5095508067ffffffffffffffff811115611cda57611cda612e01565b604051908082528060200260200182016040528015611d0d57816020015b6060815260200190600190039081611cf85790505b5093508067ffffffffffffffff811115611d2957611d29612e01565b604051908082528060200260200182016040528015611d52578160200160208202803683370190505b5092505f5b81811015611f405760168181548110611d7257611d72613140565b905f5260205f200154868281518110611d8d57611d8d613140565b6020026020010181815250505f60155f888481518110611daf57611daf613140565b602002602001015181526020019081526020015f2090505f8490505f8260030154905081811115611dde578091505b611de882426133c9565b8354600285018054604080516020808402820181019092528281529495505f94611e52946001600160a01b03169390929091830182828015611e4757602002820191905f5260205f20905b815481526020019060010190808311611e33575b505050505084612965565b8a8781518110611e6457611e64613140565b602090810291909101015290508015611f115781600254611e859190613154565b8b8f81518110611e9757611e97613140565b6020026020010181815250508a8e81518110611eb557611eb5613140565b60200260200101518d611ec8919061312d565b9c50898581518110611edc57611edc613140565b60200260200101518c8f81518110611ef657611ef6613140565b6020908102919091010152611f0a8e6133dc565b9d50611f31565b81888681518110611f2457611f24613140565b6020026020010181815250505b50505050806001019050611d57565b505b50509091929394959697565b601754604051633cebfa4f60e01b8152600481018590525f9182916001600160a01b0390911690633cebfa4f906024016040805180830381865afa158015611f98573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fbc91906134c7565b60185491935091506001600160a01b0380841691161461200657601854604051630b80380d60e31b81526001600160a01b0391821660048201529083166024820152604401610959565b6003546bffffffffffffffffffffffff821681111561204f57604051632b30b24760e21b81526bffffffffffffffffffffffff8316600482015260248101829052604401610959565b5f5b845181101561212e5760175485515f916001600160a01b0316906375c1f934908a9089908690811061208557612085613140565b60200260200101516040518363ffffffff1660e01b81526004016120b992919091825263ffffffff16602082015260400190565b602060405180830381865afa1580156120d4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120f891906134fa565b90508281101561212557604051632b30b24760e21b81526004810182905260248101849052604401610959565b50600101612051565b50505050505050565b600b546001600160a01b0316156121605760405162dc149f60e41b815260040160405180910390fd5b8051158061217057506020810151155b8061217d57506040810151155b8061218a575060c0810151155b806121985750610100810151155b806121a5575060e0810151155b806121b257506080810151155b806121bf575060a0810151155b156121dd57604051637c946ed760e01b815260040160405180910390fd5b8060a001518160800151101561221957608081015160a082015160405163491a2bb160e01b815260048101929092526024820152604401610959565b60028160600151101561224f57606081015160405163491a2bb160e01b8152600481019190915260026024820152604401610959565b6101a08101516001600160a01b0316158061227657506101c08101516001600160a01b0316155b156122945760405163d92e233d60e01b815260040160405180910390fd5b806101c001516001600160a01b03163b5f036122d5576101c081015160405163601c0c2160e01b81526001600160a01b039091166004820152602401610959565b80515f90815560208201516001556040820151600255606082015160035560a082015160045560c082015160055560e08201516006556101008201516007556101a0820151600b80546001600160a01b039283166001600160a01b0319918216179091556101c0840151600c8054919093169116179055610140820151600855610160820151600955805b8261012001515181101561242e5781836101200151828151811061238657612386613140565b6020026020010151116123ce5782610120015181815181106123aa576123aa613140565b6020026020010151604051632ab10b0b60e21b815260040161095991815260200190565b82610120015181815181106123e5576123e5613140565b602090810291909101015160148054600181810183555f929092527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0182905590925001612360565b506101808201515f0361245457604051637c946ed760e01b815260040160405180910390fd5b610180820151600a55600554608083015161246f9190613154565b600d5560055460a08301516124849190613154565b600e5560e0820151602083015160408401516124a09190613154565b6124aa9190613154565b601255505042601355565b5f6040516323b872dd60e01b5f5284600452836024528260445260205f60645f5f8a5af13d15601f3d1160015f511416171691505f6060528060405250806125325760405163abae3d6d60e01b81526001600160a01b03808716600483015280861660248301528416604482015260648101839052608401610959565b5050505050565b82516060908267ffffffffffffffff81111561255757612557612e01565b604051908082528060200260200182016040528015612580578160200160208202803683370190505b5091505f8367ffffffffffffffff81111561259d5761259d612e01565b6040519080825280602002602001820160405280156125c6578160200160208202803683370190505b5090505f8467ffffffffffffffff8111156125e3576125e3612e01565b60405190808252806020026020018201604052801561260c578160200160208202803683370190505b5090505f8567ffffffffffffffff81111561262957612629612e01565b604051908082528060200260200182016040528015612652578160200160208202803683370190505b5090505f8667ffffffffffffffff81111561266f5761266f612e01565b604051908082528060200260200182016040528015612698578160200160208202803683370190505b5090505f80805b878110156127f4575f8c82815181106126ba576126ba613140565b602002602001015111156127ec578b81815181106126da576126da613140565b60200260200101519150818984815181106126f7576126f7613140565b6020908102919091018101919091525f838152601590915260409020600181015488516001600160a01b039091169089908690811061273857612738613140565b6001600160a01b0392831660209182029290920101528154885191169088908690811061276757612767613140565b60200260200101906001600160a01b031690816001600160a01b0316815250508b828151811061279957612799613140565b60200260200101518685815181106127b3576127b3613140565b602002602001018181525050818585815181106127d2576127d2613140565b6020908102919091010152836127e7816133dc565b945050505b60010161269f565b50885b80156128a2578761280781613511565b98505f9050846128186001846133c9565b8151811061282857612828613140565b602002602001015190506016898154811061284557612845613140565b905f5260205f2001546016828154811061286157612861613140565b5f91825260209091200155601680548061287d5761287d613430565b600190038181905f5260205f20015f90559055508061289b90613511565b90506127f7565b50600f547fd19a3d42ed383465e4058c322d9411aeac76ddb8454d22e139fc99808bd56952898888886040516128db949392919061355f565b60405180910390a2505050505050509392505050565b8060105f82825461290291906133c9565b909155505060185461291e906001600160a01b03168383612b4c565b816001600160a01b03167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648260405161295991815260200190565b60405180910390a25050565b6040516001600160a01b03841660248201525f90606090829060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663d564c4bf60e01b179052600c5490519192505f9182916001600160a01b0316906129e1908590613597565b5f60405180830381855afa9150503d805f8114612a19576040519150601f19603f3d011682016040523d82523d5f602084013e612a1e565b606091505b5091509150818015612a315750603f8151115b8015612a48575060208151612a4691906135ad565b155b15612b415780806020019051810190612a619190613318565b9350838787604051602401612a78939291906135c0565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663184023a560e01b179052600c5490519194506001600160a01b031690612ad4908590613597565b5f60405180830381855afa9150503d805f8114612b0c576040519150601f19603f3d011682016040523d82523d5f602084013e612b11565b606091505b509092509050818015612b25575080516020145b15612b415780806020019051810190612b3e91906135f5565b94505b505050935093915050565b5f60405163a9059cbb60e01b5f52836004528260245260205f60445f5f895af13d15601f3d1160015f511416171691505f606052806040525080612bc35760405163abae3d6d60e01b81526001600160a01b0380861660048301523060248301528416604482015260648101839052608401610959565b50505050565b828054828255905f5260205f20908101928215612c02579160200282015b82811115612c02578251825591602001919060010190612be7565b50612c0e929150612c30565b5090565b5080545f8255905f5260205f2090810190612c2d9190612c30565b50565b5b80821115612c0e575f8155600101612c31565b6001600160a01b0381168114612c2d575f5ffd5b8035612c6381612c44565b919050565b5f5f5f5f5f60808688031215612c7c575f5ffd5b8535612c8781612c44565b94506020860135612c9781612c44565b935060408601359250606086013567ffffffffffffffff811115612cb9575f5ffd5b8601601f81018813612cc9575f5ffd5b803567ffffffffffffffff811115612cdf575f5ffd5b886020828401011115612cf0575f5ffd5b959894975092955050506020019190565b5f60208284031215612d11575f5ffd5b5035919050565b602081525f60e082016001600160a01b0384511660208401526001600160a01b036020850151166040840152604084015160c06060850152818151808452610100860191506020830193505f92505b80831015612d8a5783518252602082019150602084019350600183019250612d67565b5060608601516080860152608086015160a086015260a086015160c086015280935050505092915050565b5f8151808452602084019350602083015f5b82811015612de5578151865260209586019590910190600101612dc7565b5093949350505050565b602081525f61073c6020830184612db5565b634e487b7160e01b5f52604160045260245ffd5b6040516101e0810167ffffffffffffffff81118282101715612e3957612e39612e01565b60405290565b604051610100810167ffffffffffffffff81118282101715612e3957612e39612e01565b604051601f8201601f1916810167ffffffffffffffff81118282101715612e8c57612e8c612e01565b604052919050565b5f67ffffffffffffffff821115612ead57612ead612e01565b5060051b60200190565b5f82601f830112612ec6575f5ffd5b8135612ed9612ed482612e94565b612e63565b8082825260208201915060208360051b860101925085831115612efa575f5ffd5b602085015b83811015612f17578035835260209283019201612eff565b5095945050505050565b5f5f5f60608486031215612f33575f5ffd5b833567ffffffffffffffff811115612f49575f5ffd5b84016101e08187031215612f5b575f5ffd5b612f63612e15565b813581526020808301359082015260408083013590820152606080830135908201526080808301359082015260a0808301359082015260c0808301359082015260e08083013590820152610100808301359082015261012082013567ffffffffffffffff811115612fd2575f5ffd5b612fde88828501612eb7565b610120830152506101408281013590820152610160808301359082015261018080830135908201526130136101a08301612c58565b6101a08201526130266101c08301612c58565b6101c0820152935061303c905060208501612c58565b915061304a60408501612c58565b90509250925092565b608081525f6130656080830187612db5565b82810360208401526130778187612db5565b9050828103604084015261308b8186612db5565b9050828103606084015261309f8185612db5565b979650505050505050565b634e487b7160e01b5f52602160045260245ffd5b60208101600383106130de57634e487b7160e01b5f52602160045260245ffd5b91905290565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561064057610640613119565b634e487b7160e01b5f52603260045260245ffd5b808202811582820484141761064057610640613119565b634e487b7160e01b5f52601260045260245ffd5b5f8261318d5761318d61316b565b500490565b80516bffffffffffffffffffffffff81168114612c63575f5ffd5b8051612c6381612c44565b805163ffffffff81168114612c63575f5ffd5b805160068110612c63575f5ffd5b5f82601f8301126131e8575f5ffd5b81516131f6612ed482612e94565b8082825260208201915060208360051b860101925085831115613217575f5ffd5b602085015b83811015612f175761322d816131b8565b83526020928301920161321c565b5f6020828403121561324b575f5ffd5b815167ffffffffffffffff811115613261575f5ffd5b82016101008185031215613273575f5ffd5b61327b612e3f565b61328482613192565b8152613292602083016131ad565b6020820152604082810151908201526132ad606083016131b8565b60608201526132be608083016131b8565b60808201526132cf60a083016131b8565b60a08201526132e060c083016131cb565b60c082015260e082015167ffffffffffffffff8111156132fe575f5ffd5b61330a868285016131d9565b60e083015250949350505050565b5f60208284031215613328575f5ffd5b815167ffffffffffffffff81111561333e575f5ffd5b8201601f8101841361334e575f5ffd5b805161335c612ed482612e94565b8082825260208201915060208360051b85010192508683111561337d575f5ffd5b6020840193505b8284101561339f578351825260209384019390910190613384565b9695505050505050565b828152604060208201525f6133c16040830184612db5565b949350505050565b8181038181111561064057610640613119565b5f600182016133ed576133ed613119565b5060010190565b848152608060208201525f61340c6080830186612db5565b828103604084015261341e8186612db5565b91505082606083015295945050505050565b634e487b7160e01b5f52603160045260245ffd5b848152608060208201525f61345c6080830186612db5565b6040830194909452506060015292915050565b5f6060820185835260606020840152808554808352608085019150865f5260205f2092505f5b818110156134b3578354835260019384019360209093019201613495565b505060409390930193909352509392505050565b5f5f604083850312156134d8575f5ffd5b82516134e381612c44565b91506134f160208401613192565b90509250929050565b5f6020828403121561350a575f5ffd5b5051919050565b5f8161351f5761351f613119565b505f190190565b5f8151808452602084019350602083015f5b82811015612de55781516001600160a01b0316865260209586019590910190600101613538565b608081525f6135716080830187612db5565b82810360208401526135838187613526565b9050828103604084015261308b8186613526565b5f82518060208501845e5f920191825250919050565b5f826135bb576135bb61316b565b500690565b606081525f6135d26060830186612db5565b82810360208401526135e48186612db5565b915050826040830152949350505050565b5f60208284031215613605575f5ffd5b8151801515811461073c575f5ffdfea264697066735822122076ca9236caf562ccf29669afec12761e99f88ff89303222afe7042633f0f8a3e64736f6c634300081c0033", + "deployedBytecode": "0x608060405234801561000f575f5ffd5b50600436106102cd575f3560e01c806393ac752f1161017c578063c5a1d7f0116100dd578063eb338c9611610093578063f86ad2b61161006e578063f86ad2b6146105db578063fd0bba8c146105e4578063ffa1ad7414610604575f5ffd5b8063eb338c96146105b8578063f189e85a146105cb578063f4dce714146105d3575f5ffd5b8063e1f1176d116100c3578063e1f1176d1461059d578063e77cdcc9146105a6578063eacdaabc146105af575f5ffd5b8063c5a1d7f014610582578063cbcf252a1461058a575f5ffd5b8063b150876011610132578063b69ef8a811610118578063b69ef8a81461054e578063b6b55f2514610557578063c2c4c5c11461056a575f5ffd5b8063b150876014610526578063b267c67b1461053b575f5ffd5b8063a0ed60e011610162578063a0ed60e01461048f578063a694fc3a14610498578063a74466ad146104ab575f5ffd5b806393ac752f146104715780639573236114610486575f5ffd5b806352c824f5116102315780637fbe2833116101e757806383f9eb22116101c257806383f9eb2214610442578063879d9090146104555780638f9e0a621461045e575f5ffd5b80637fbe283314610406578063809cee2f1461041957806382a8ea5814610422575f5ffd5b806356e760581161021757806356e76058146103d75780635829c5ec146103ea57806372f702f3146103f3575f5ffd5b806352c824f5146103bb578063546af2e0146103c4575f5ffd5b80632871405111610286578063379607f51161026c578063379607f5146103965780633e732997146103a957806342cde4e8146103b2575f5ffd5b806328714051146103585780632e17de7814610383575f5ffd5b8063150b7a02116102b6578063150b7a02146102f657806316a75172146103465780631f7794081461034f575f5ffd5b806308ae7e54146102d157806314b19c5a146102ed575b5f5ffd5b6102da600d5481565b6040519081526020015b60405180910390f35b6102da600f5481565b610315610304366004612c68565b630a85bd0160e11b95945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016102e4565b6102da60015481565b6102da60065481565b60175461036b906001600160a01b031681565b6040516001600160a01b0390911681526020016102e4565b6102da610391366004612d01565b610635565b6102da6103a4366004612d01565b610646565b6102da60135481565b6102da60085481565b6102da60055481565b6102da6103d2366004612d01565b610651565b6102da6103e5366004612d01565b61065d565b6102da60075481565b60185461036b906001600160a01b031681565b6102da610414366004612d01565b61067c565b6102da600a5481565b610435610430366004612d01565b610743565b6040516102e49190612d18565b6102da610450366004612d01565b610832565b6102da60115481565b600c5461036b906001600160a01b031681565b61048461047f366004612d01565b6108ed565b005b6102da60125481565b6102da60045481565b6104846104a6366004612d01565b6108fc565b6104f36104b9366004612d01565b60156020525f9081526040902080546001820154600383015460048401546005909401546001600160a01b03938416949390921692909185565b604080516001600160a01b039687168152959094166020860152928401919091526060830152608082015260a0016102e4565b61052e610dec565b6040516102e49190612def565b610484610549366004612f21565b610e42565b6102da60105481565b610484610565366004612d01565b610eb8565b610572610f45565b6040516102e49493929190613053565b6102da5f5481565b600b5461036b906001600160a01b031681565b6102da60095481565b6102da60035481565b6102da60025481565b6102da6105c6366004612d01565b6115d9565b61052e6115e8565b6102da61163c565b6102da600e5481565b6105f76105f2366004612d01565b611652565b6040516102e491906130be565b610628604051806040016040528060058152602001640302e322e360dc1b81525081565b6040516102e491906130e4565b5f610640825f611724565b92915050565b5f610640825f611aab565b5f610640826001611aab565b6014818154811061066c575f80fd5b5f91825260209091200154905081565b5f818152601560209081526040808320815160c08101835281546001600160a01b03908116825260018301541681850152600282018054845181870281018701865281815287969395860193909291908301828280156106f957602002820191905f5260205f20905b8154815260200190600101908083116106e5575b50505050508152602001600382015481526020016004820154815260200160058201548152505090508060800151915061073283610832565b61073c908361312d565b9392505050565b6107896040518060c001604052805f6001600160a01b031681526020015f6001600160a01b03168152602001606081526020015f81526020015f81526020015f81525090565b5f82815260156020908152604091829020825160c08101845281546001600160a01b039081168252600183015416818401526002820180548551818602810186018752818152929593949386019383018282801561080457602002820191905f5260205f20905b8154815260200190600101908083116107f0575b5050505050815260200160038201548152602001600482015481526020016005820154815250509050919050565b5f5f5f5f5f5f610840611bae565b505050945094509450945094505f5f90505b848110156108e2578783828151811061086d5761086d613140565b6020026020010151036108da57858411156108b957838683838151811061089657610896613140565b60200260200101516108a89190613154565b6108b2919061317f565b96506108e2565b8181815181106108cb576108cb613140565b602002602001015196506108e2565b600101610852565b505050505050919050565b6108f8816001611724565b5050565b610904610f45565b505050506011545f0361092a5760405163afb0be3360e01b815260040160405180910390fd5b5f8181526015602052604090206003810154156109625760405163b4817ce760e01b8152600481018390526024015b60405180910390fd5b601654600154810361098d5760015460405163fd20861560e01b815260040161095991815260200190565b600b5460405163ef0e239b60e01b8152600481018590525f916001600160a01b03169063ef0e239b906024015f60405180830381865afa1580156109d3573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526109fa919081019061323b565b9050806080015163ffffffff1660075414610a2b57604051637ad404bf60e11b815260048101859052602401610959565b60095415801590610a425750806040015160095414155b15610a6357604051637ad404bf60e11b815260048101859052602401610959565b5f600854118015610a805750806060015163ffffffff1660085414155b15610aa157604051637ad404bf60e11b815260048101859052602401610959565b60048160c001516005811115610ab957610ab96130aa565b14610af8578060c001516005811115610ad457610ad46130aa565b604051633c053f9d60e21b8152600481019190915260248101859052604401610959565b5f81602001516001600160a01b0316803b806020016040519081016040528181525f908060200190933c80519060200120905080600a5414610b5d57602082015160405162a2307960e51b81526001600160a01b039091166004820152602401610959565b6014548015610c215760e083015151818114610b8f57604051637ad404bf60e11b815260048101889052602401610959565b5f5b81811015610c1e578460e001518181518110610baf57610baf613140565b602002602001015163ffffffff1660148281548110610bd057610bd0613140565b905f5260205f20015414610c165760148181548110610bf157610bf1613140565b905f5260205f200154604051632ab10b0b60e21b815260040161095991815260200190565b600101610b91565b50505b610c4186845f01516bffffffffffffffffffffffff168560e00151611f4e565b602083015185546001600160a01b039182166001600160a01b0319918216811788556001880180549092163317909155600c5460405163d564c4bf60e01b815260048101929092525f92169063d564c4bf906024015f60405180830381865afa158015610cb0573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610cd79190810190613318565b8051909150610cef9060028801906020840190612bc9565b50426003870155601680546001810182555f919091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428901879055600b54604051632142170760e11b8152336004820152306024820152604481018990526001600160a01b03909116906342842e0e906064015f604051808303815f87803b158015610d79575f5ffd5b505af1158015610d8b573d5f5f3e3d5ffd5b5050505083602001516001600160a01b0316336001600160a01b0316887faa6b005b4958114a0c90492461c24af6525ae0178db7fbf44125ae9217c69ccb600f5485604051610ddb9291906133a9565b60405180910390a450505050505050565b60606014805480602002602001604051908101604052809291908181526020018280548015610e3857602002820191905f5260205f20905b815481526020019060010190808311610e24575b5050505050905090565b610e4b83612137565b6001600160a01b0381161580610e6857506001600160a01b038216155b15610e8657604051636b093aad60e01b815260040160405180910390fd5b601880546001600160a01b039283166001600160a01b0319918216179091556017805493909216921691909117905550565b5f81601054610ec7919061312d565b90505f82601154610ed8919061312d565b60108390556011819055601854909150610efd906001600160a01b03163330866124b5565b604080518481526020810184905290810182905233907f36af321ec8d3c75236829c5317affd40ddb308863a1236d2d277a4025cccee1e9060600160405180910390a2505050565b6060806060805f5f5f5f5f5f5f5f610f5b611bae565b97509750975097509750975097509750606080845167ffffffffffffffff811115610f8857610f88612e01565b604051908082528060200260200182016040528015610fb1578160200160208202803683370190505b509a505f8915611332578967ffffffffffffffff811115610fd457610fd4612e01565b604051908082528060200260200182016040528015610ffd578160200160208202803683370190505b5092508967ffffffffffffffff81111561101957611019612e01565b604051908082528060200260200182016040528015611042578160200160208202803683370190505b5091508a89111561123f575f8060015b8c81101561113b578b8e8b838151811061106e5761106e613140565b60200260200101516110809190613154565b61108a919061317f565b9250611096838361312d565b91508a81815181106110aa576110aa613140565b602002602001015193508a81815181106110c6576110c6613140565b60200260200101518682815181106110e0576110e0613140565b602002602001018181525050828582815181106110ff576110ff613140565b6020026020010181815250508260155f8681526020019081526020015f206004015f82825461112e919061312d565b9091555050600101611052565b508a8d8a5f8151811061115057611150613140565b60200260200101516111629190613154565b61116c919061317f565b9150611178828261312d565b9050895f8151811061118c5761118c613140565b60200260200101519250895f815181106111a8576111a8613140565b6020026020010151855f815181106111c2576111c2613140565b602002602001018181525050808d11156111ed576111e0818e6133c9565b6111ea908361312d565b91505b81845f8151811061120057611200613140565b6020026020010181815250508160155f8581526020019081526020015f206004015f82825461122f919061312d565b909155505f9d5061132c92505050565b5f5b8a81101561131e5788818151811061125b5761125b613140565b6020026020010151915088818151811061127757611277613140565b602002602001015184828151811061129157611291613140565b6020026020010181815250508781815181106112af576112af613140565b60200260200101518382815181106112c9576112c9613140565b6020026020010181815250508781815181106112e7576112e7613140565b602002602001015160155f8481526020019081526020015f206004015f828254611311919061312d565b9091555050600101611241565b50611329898c6133c9565b9a505b60118b90555b8551156115a557600f545f9a508a5b87518110156115205787818151811061135c5761135c613140565b6020026020010151925086818151811061137857611378613140565b602002602001015160155f8581526020019081526020015f2060020190805190602001906113a7929190612bc9565b505f8682815181106113bb576113bb613140565b60200260200101511115611506578581815181106113db576113db613140565b602002602001015160155f8581526020019081526020015f2060050154611402919061312d565b86828151811061141457611414613140565b60200260200101818152505085818151811061143257611432613140565b602002602001015160155f8581526020019081526020015f2060050181905550600e5486828151811061146757611467613140565b602002602001015111156114a557828e828151811061148857611488613140565b60209081029190910101528b61149d816133dc565b9c5050611518565b827f33dc5cdf1e035de8a7fe16ad7a30a441d30ee51719d3f07703ee35d4348f0779838884815181106114da576114da613140565b60200260200101516040516114f9929190918252602082015260400190565b60405180910390a2611518565b5f838152601560205260408120600501555b600101611341565b508a15611539576115328d868d612539565b9c5061153e565b60609c505b5f6013544261154d91906133c9565b42601355905061155e82600161312d565b600f81905550817f48b735a18ed32318d316214e41387be29c52e29df4598f2b8e40fa843be3f9408e87878560405161159a94939291906133f4565b60405180910390a250505b855115806115b357505f8c51115b156115c3576115c06115e8565b95505b50939c509a509198505050505050505090919293565b6016818154811061066c575f80fd5b60606016805480602002602001604051908101604052809291908181526020018280548015610e3857602002820191905f5260205f2090815481526020019060010190808311610e24575050505050905090565b5f60055460135461164d919061312d565b905090565b5f818152601560209081526040808320815160c08101835281546001600160a01b03908116825260018301541681850152600282018054845181870281018701865281815287969395860193909291908301828280156116cf57602002820191905f5260205f20905b8154815260200190600101908083116116bb575b5050505050815260200160038201548152602001600482015481526020016005820154815250509050600e548160a00151111561170f576002915061171e565b60608101511561171e57600191505b50919050565b5f82815260156020526040812060018101546001600160a01b0316331461177557600181015460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610959565b5f61177e610f45565b505050600483015460115460038501549195509192505f906117a090426133c9565b9050600d5481111580156117b357505f82115b156117e657600d5460405163ba2bbc6b60e01b815260048101899052602481018390526044810191909152606401610959565b5f5f5b8451821015611825578885838151811061180557611805613140565b60200260200101510361181a57506001611825565b8160010191506117e9565b5f8660020180548060200260200160405190810160405280929190818152602001828054801561187257602002820191905f5260205f20905b81548152602001906001019080831161185e575b50508a545f8f815260156020526040812080546001600160a01b0319908116825560018201805490911690559596506001600160a01b0390911694935091506118c090506002830182612c12565b505f60038201819055600482018190556005909101558215611956576016545f906118ed906001906133c9565b90508015611930576016818154811061190857611908613140565b905f5260205f2001546016868154811061192457611924613140565b5f918252602090912001555b601680548061194157611941613430565b600190038181905f5260205f20015f90559055505b600b546040516323b872dd60e01b8152306004820152336024820152604481018d90526001600160a01b03909116906323b872dd906064015f604051808303815f87803b1580156119a5575f5ffd5b505af11580156119b7573d5f5f3e3d5ffd5b505050505f8911156119e95789156119df576119d3898761312d565b601181905595506119e9565b6119e9818a6128f1565b8915611a4857806001600160a01b0316336001600160a01b03168c7f91c9f7c7f307bcc0ae02ba613bd8d07c29e94952f0a28803ded176fcd7d96d64600f54868e8c604051611a3b9493929190613444565b60405180910390a4611a9d565b806001600160a01b0316336001600160a01b03168c7f6d789d063e079a4c156e77a20008529fc448dca2cd7e5e7a20abf969fffb9226600f54868e8c604051611a949493929190613444565b60405180910390a45b505050505050505092915050565b5f82815260156020526040812060018101546001600160a01b03163314611afc57600181015460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610959565b8215611b0f57611b0a610f45565b505050505b80600401549150815f03611b3657604051637c946ed760e01b815260040160405180910390fd5b5f600482015580546001600160a01b0316611b5181846128f1565b806001600160a01b0316336001600160a01b0316867f31add0166dae59ea66bbc180e4fae85b72fc9b7b5fc7b0f7257e4721a840c96e600f548660020188604051611b9e9392919061346f565b60405180910390a4505092915050565b60135460115460165490915f91829160609182918291829182918015801590611be25750600554611bdf83426133c9565b10155b8015611bed57505f8a115b15611f42578067ffffffffffffffff811115611c0b57611c0b612e01565b604051908082528060200260200182016040528015611c34578160200160208202803683370190505b5094508067ffffffffffffffff811115611c5057611c50612e01565b604051908082528060200260200182016040528015611c79578160200160208202803683370190505b5096508067ffffffffffffffff811115611c9557611c95612e01565b604051908082528060200260200182016040528015611cbe578160200160208202803683370190505b5095508067ffffffffffffffff811115611cda57611cda612e01565b604051908082528060200260200182016040528015611d0d57816020015b6060815260200190600190039081611cf85790505b5093508067ffffffffffffffff811115611d2957611d29612e01565b604051908082528060200260200182016040528015611d52578160200160208202803683370190505b5092505f5b81811015611f405760168181548110611d7257611d72613140565b905f5260205f200154868281518110611d8d57611d8d613140565b6020026020010181815250505f60155f888481518110611daf57611daf613140565b602002602001015181526020019081526020015f2090505f8490505f8260030154905081811115611dde578091505b611de882426133c9565b8354600285018054604080516020808402820181019092528281529495505f94611e52946001600160a01b03169390929091830182828015611e4757602002820191905f5260205f20905b815481526020019060010190808311611e33575b505050505084612965565b8a8781518110611e6457611e64613140565b602090810291909101015290508015611f115781600254611e859190613154565b8b8f81518110611e9757611e97613140565b6020026020010181815250508a8e81518110611eb557611eb5613140565b60200260200101518d611ec8919061312d565b9c50898581518110611edc57611edc613140565b60200260200101518c8f81518110611ef657611ef6613140565b6020908102919091010152611f0a8e6133dc565b9d50611f31565b81888681518110611f2457611f24613140565b6020026020010181815250505b50505050806001019050611d57565b505b50509091929394959697565b601754604051633cebfa4f60e01b8152600481018590525f9182916001600160a01b0390911690633cebfa4f906024016040805180830381865afa158015611f98573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fbc91906134c7565b60185491935091506001600160a01b0380841691161461200657601854604051630b80380d60e31b81526001600160a01b0391821660048201529083166024820152604401610959565b6003546bffffffffffffffffffffffff821681111561204f57604051632b30b24760e21b81526bffffffffffffffffffffffff8316600482015260248101829052604401610959565b5f5b845181101561212e5760175485515f916001600160a01b0316906375c1f934908a9089908690811061208557612085613140565b60200260200101516040518363ffffffff1660e01b81526004016120b992919091825263ffffffff16602082015260400190565b602060405180830381865afa1580156120d4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120f891906134fa565b90508281101561212557604051632b30b24760e21b81526004810182905260248101849052604401610959565b50600101612051565b50505050505050565b600b546001600160a01b0316156121605760405162dc149f60e41b815260040160405180910390fd5b8051158061217057506020810151155b8061217d57506040810151155b8061218a575060c0810151155b806121985750610100810151155b806121a5575060e0810151155b806121b257506080810151155b806121bf575060a0810151155b156121dd57604051637c946ed760e01b815260040160405180910390fd5b8060a001518160800151101561221957608081015160a082015160405163491a2bb160e01b815260048101929092526024820152604401610959565b60028160600151101561224f57606081015160405163491a2bb160e01b8152600481019190915260026024820152604401610959565b6101a08101516001600160a01b0316158061227657506101c08101516001600160a01b0316155b156122945760405163d92e233d60e01b815260040160405180910390fd5b806101c001516001600160a01b03163b5f036122d5576101c081015160405163601c0c2160e01b81526001600160a01b039091166004820152602401610959565b80515f90815560208201516001556040820151600255606082015160035560a082015160045560c082015160055560e08201516006556101008201516007556101a0820151600b80546001600160a01b039283166001600160a01b0319918216179091556101c0840151600c8054919093169116179055610140820151600855610160820151600955805b8261012001515181101561242e5781836101200151828151811061238657612386613140565b6020026020010151116123ce5782610120015181815181106123aa576123aa613140565b6020026020010151604051632ab10b0b60e21b815260040161095991815260200190565b82610120015181815181106123e5576123e5613140565b602090810291909101015160148054600181810183555f929092527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0182905590925001612360565b506101808201515f0361245457604051637c946ed760e01b815260040160405180910390fd5b610180820151600a55600554608083015161246f9190613154565b600d5560055460a08301516124849190613154565b600e5560e0820151602083015160408401516124a09190613154565b6124aa9190613154565b601255505042601355565b5f6040516323b872dd60e01b5f5284600452836024528260445260205f60645f5f8a5af13d15601f3d1160015f511416171691505f6060528060405250806125325760405163abae3d6d60e01b81526001600160a01b03808716600483015280861660248301528416604482015260648101839052608401610959565b5050505050565b82516060908267ffffffffffffffff81111561255757612557612e01565b604051908082528060200260200182016040528015612580578160200160208202803683370190505b5091505f8367ffffffffffffffff81111561259d5761259d612e01565b6040519080825280602002602001820160405280156125c6578160200160208202803683370190505b5090505f8467ffffffffffffffff8111156125e3576125e3612e01565b60405190808252806020026020018201604052801561260c578160200160208202803683370190505b5090505f8567ffffffffffffffff81111561262957612629612e01565b604051908082528060200260200182016040528015612652578160200160208202803683370190505b5090505f8667ffffffffffffffff81111561266f5761266f612e01565b604051908082528060200260200182016040528015612698578160200160208202803683370190505b5090505f80805b878110156127f4575f8c82815181106126ba576126ba613140565b602002602001015111156127ec578b81815181106126da576126da613140565b60200260200101519150818984815181106126f7576126f7613140565b6020908102919091018101919091525f838152601590915260409020600181015488516001600160a01b039091169089908690811061273857612738613140565b6001600160a01b0392831660209182029290920101528154885191169088908690811061276757612767613140565b60200260200101906001600160a01b031690816001600160a01b0316815250508b828151811061279957612799613140565b60200260200101518685815181106127b3576127b3613140565b602002602001018181525050818585815181106127d2576127d2613140565b6020908102919091010152836127e7816133dc565b945050505b60010161269f565b50885b80156128a2578761280781613511565b98505f9050846128186001846133c9565b8151811061282857612828613140565b602002602001015190506016898154811061284557612845613140565b905f5260205f2001546016828154811061286157612861613140565b5f91825260209091200155601680548061287d5761287d613430565b600190038181905f5260205f20015f90559055508061289b90613511565b90506127f7565b50600f547fd19a3d42ed383465e4058c322d9411aeac76ddb8454d22e139fc99808bd56952898888886040516128db949392919061355f565b60405180910390a2505050505050509392505050565b8060105f82825461290291906133c9565b909155505060185461291e906001600160a01b03168383612b4c565b816001600160a01b03167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648260405161295991815260200190565b60405180910390a25050565b6040516001600160a01b03841660248201525f90606090829060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663d564c4bf60e01b179052600c5490519192505f9182916001600160a01b0316906129e1908590613597565b5f60405180830381855afa9150503d805f8114612a19576040519150601f19603f3d011682016040523d82523d5f602084013e612a1e565b606091505b5091509150818015612a315750603f8151115b8015612a48575060208151612a4691906135ad565b155b15612b415780806020019051810190612a619190613318565b9350838787604051602401612a78939291906135c0565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663184023a560e01b179052600c5490519194506001600160a01b031690612ad4908590613597565b5f60405180830381855afa9150503d805f8114612b0c576040519150601f19603f3d011682016040523d82523d5f602084013e612b11565b606091505b509092509050818015612b25575080516020145b15612b415780806020019051810190612b3e91906135f5565b94505b505050935093915050565b5f60405163a9059cbb60e01b5f52836004528260245260205f60445f5f895af13d15601f3d1160015f511416171691505f606052806040525080612bc35760405163abae3d6d60e01b81526001600160a01b0380861660048301523060248301528416604482015260648101839052608401610959565b50505050565b828054828255905f5260205f20908101928215612c02579160200282015b82811115612c02578251825591602001919060010190612be7565b50612c0e929150612c30565b5090565b5080545f8255905f5260205f2090810190612c2d9190612c30565b50565b5b80821115612c0e575f8155600101612c31565b6001600160a01b0381168114612c2d575f5ffd5b8035612c6381612c44565b919050565b5f5f5f5f5f60808688031215612c7c575f5ffd5b8535612c8781612c44565b94506020860135612c9781612c44565b935060408601359250606086013567ffffffffffffffff811115612cb9575f5ffd5b8601601f81018813612cc9575f5ffd5b803567ffffffffffffffff811115612cdf575f5ffd5b886020828401011115612cf0575f5ffd5b959894975092955050506020019190565b5f60208284031215612d11575f5ffd5b5035919050565b602081525f60e082016001600160a01b0384511660208401526001600160a01b036020850151166040840152604084015160c06060850152818151808452610100860191506020830193505f92505b80831015612d8a5783518252602082019150602084019350600183019250612d67565b5060608601516080860152608086015160a086015260a086015160c086015280935050505092915050565b5f8151808452602084019350602083015f5b82811015612de5578151865260209586019590910190600101612dc7565b5093949350505050565b602081525f61073c6020830184612db5565b634e487b7160e01b5f52604160045260245ffd5b6040516101e0810167ffffffffffffffff81118282101715612e3957612e39612e01565b60405290565b604051610100810167ffffffffffffffff81118282101715612e3957612e39612e01565b604051601f8201601f1916810167ffffffffffffffff81118282101715612e8c57612e8c612e01565b604052919050565b5f67ffffffffffffffff821115612ead57612ead612e01565b5060051b60200190565b5f82601f830112612ec6575f5ffd5b8135612ed9612ed482612e94565b612e63565b8082825260208201915060208360051b860101925085831115612efa575f5ffd5b602085015b83811015612f17578035835260209283019201612eff565b5095945050505050565b5f5f5f60608486031215612f33575f5ffd5b833567ffffffffffffffff811115612f49575f5ffd5b84016101e08187031215612f5b575f5ffd5b612f63612e15565b813581526020808301359082015260408083013590820152606080830135908201526080808301359082015260a0808301359082015260c0808301359082015260e08083013590820152610100808301359082015261012082013567ffffffffffffffff811115612fd2575f5ffd5b612fde88828501612eb7565b610120830152506101408281013590820152610160808301359082015261018080830135908201526130136101a08301612c58565b6101a08201526130266101c08301612c58565b6101c0820152935061303c905060208501612c58565b915061304a60408501612c58565b90509250925092565b608081525f6130656080830187612db5565b82810360208401526130778187612db5565b9050828103604084015261308b8186612db5565b9050828103606084015261309f8185612db5565b979650505050505050565b634e487b7160e01b5f52602160045260245ffd5b60208101600383106130de57634e487b7160e01b5f52602160045260245ffd5b91905290565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561064057610640613119565b634e487b7160e01b5f52603260045260245ffd5b808202811582820484141761064057610640613119565b634e487b7160e01b5f52601260045260245ffd5b5f8261318d5761318d61316b565b500490565b80516bffffffffffffffffffffffff81168114612c63575f5ffd5b8051612c6381612c44565b805163ffffffff81168114612c63575f5ffd5b805160068110612c63575f5ffd5b5f82601f8301126131e8575f5ffd5b81516131f6612ed482612e94565b8082825260208201915060208360051b860101925085831115613217575f5ffd5b602085015b83811015612f175761322d816131b8565b83526020928301920161321c565b5f6020828403121561324b575f5ffd5b815167ffffffffffffffff811115613261575f5ffd5b82016101008185031215613273575f5ffd5b61327b612e3f565b61328482613192565b8152613292602083016131ad565b6020820152604082810151908201526132ad606083016131b8565b60608201526132be608083016131b8565b60808201526132cf60a083016131b8565b60a08201526132e060c083016131cb565b60c082015260e082015167ffffffffffffffff8111156132fe575f5ffd5b61330a868285016131d9565b60e083015250949350505050565b5f60208284031215613328575f5ffd5b815167ffffffffffffffff81111561333e575f5ffd5b8201601f8101841361334e575f5ffd5b805161335c612ed482612e94565b8082825260208201915060208360051b85010192508683111561337d575f5ffd5b6020840193505b8284101561339f578351825260209384019390910190613384565b9695505050505050565b828152604060208201525f6133c16040830184612db5565b949350505050565b8181038181111561064057610640613119565b5f600182016133ed576133ed613119565b5060010190565b848152608060208201525f61340c6080830186612db5565b828103604084015261341e8186612db5565b91505082606083015295945050505050565b634e487b7160e01b5f52603160045260245ffd5b848152608060208201525f61345c6080830186612db5565b6040830194909452506060015292915050565b5f6060820185835260606020840152808554808352608085019150865f5260205f2092505f5b818110156134b3578354835260019384019360209093019201613495565b505060409390930193909352509392505050565b5f5f604083850312156134d8575f5ffd5b82516134e381612c44565b91506134f160208401613192565b90509250929050565b5f6020828403121561350a575f5ffd5b5051919050565b5f8161351f5761351f613119565b505f190190565b5f8151808452602084019350602083015f5b82811015612de55781516001600160a01b0316865260209586019590910190600101613538565b608081525f6135716080830187612db5565b82810360208401526135838187613526565b9050828103604084015261308b8186613526565b5f82518060208501845e5f920191825250919050565b5f826135bb576135bb61316b565b500690565b606081525f6135d26060830186612db5565b82810360208401526135e48186612db5565b915050826040830152949350505050565b5f60208284031215613605575f5ffd5b8151801515811461073c575f5ffdfea264697066735822122076ca9236caf562ccf29669afec12761e99f88ff89303222afe7042633f0f8a3e64736f6c634300081c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/abis/0.8.28/StakingVerifier.json b/abis/0.8.28/StakingVerifier.json new file mode 100644 index 00000000..ec3d198f --- /dev/null +++ b/abis/0.8.28/StakingVerifier.json @@ -0,0 +1,464 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "StakingVerifier", + "sourceName": "contracts/staking/StakingVerifier.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_olas", + "type": "address" + }, + { + "internalType": "address", + "name": "_serviceRegistry", + "type": "address" + }, + { + "internalType": "address", + "name": "_serviceRegistryTokenUtility", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_minStakingDepositLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_timeForEmissionsLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_numServicesLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_apyLimit", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnerOnly", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numValues1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "numValues2", + "type": "uint256" + } + ], + "name": "WrongArrayLength", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddress", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroValue", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "implementations", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "bool[]", + "name": "statuses", + "type": "bool[]" + }, + { + "indexed": false, + "internalType": "bool", + "name": "setCheck", + "type": "bool" + } + ], + "name": "ImplementationsWhitelistUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnerUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "setCheck", + "type": "bool" + } + ], + "name": "SetImplementationsCheck", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "minStakingDepositLimit", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timeForEmissionsLimit", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "numServicesLimit", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "apyLimit", + "type": "uint256" + } + ], + "name": "StakingLimitsUpdated", + "type": "event" + }, + { + "inputs": [], + "name": "ONE_YEAR", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "apyLimit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "changeOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_minStakingDepositLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_timeForEmissionsLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_numServicesLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_apyLimit", + "type": "uint256" + } + ], + "name": "changeStakingLimits", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "instance", + "type": "address" + } + ], + "name": "getEmissionsAmountLimit", + "outputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "implementationsCheck", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "mapImplementations", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minStakingDepositLimit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "numServicesLimit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "olas", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "serviceRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "serviceRegistryTokenUtility", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "setCheck", + "type": "bool" + } + ], + "name": "setImplementationsCheck", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "implementations", + "type": "address[]" + }, + { + "internalType": "bool[]", + "name": "statuses", + "type": "bool[]" + }, + { + "internalType": "bool", + "name": "setCheck", + "type": "bool" + } + ], + "name": "setImplementationsStatuses", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "timeForEmissionsLimit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "verifyImplementation", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "instance", + "type": "address" + }, + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "verifyInstance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60e060405234801561000f575f5ffd5b506040516112c83803806112c883398101604081905261002e91610102565b6001600160a01b038716158061004b57506001600160a01b038616155b156100695760405163d92e233d60e01b815260040160405180910390fd5b831580610074575082155b8061007d575081155b80610086575080155b156100a457604051637c946ed760e01b815260040160405180910390fd5b600480546001600160a01b031916331790556001600160a01b0396871660805294861660a0529290941660c0525f55600192909255600291909155600355610169565b80516001600160a01b03811681146100fd575f5ffd5b919050565b5f5f5f5f5f5f5f60e0888a031215610118575f5ffd5b610121886100e7565b965061012f602089016100e7565b955061013d604089016100e7565b606089015160808a015160a08b015160c0909b0151999c989b5091999098919790965090945092505050565b60805160a05160c0516111196101af5f395f81816101ee01528181610a590152610b3b01525f81816102aa01526106c801525f818161013701526109e401526111195ff3fe608060405234801561000f575f5ffd5b506004361061012e575f3560e01c806369be670b116100ad578063a3ba9aef1161007d578063c446841811610063578063c446841814610292578063cbcf252a146102a5578063fcf7684e146102cc575f5ffd5b8063a3ba9aef14610276578063a6f9dae11461027f575f5ffd5b806369be670b146102345780638da5cb5b1461024757806396324ed61461025a5780639ac28fa01461026d575f5ffd5b806316d3bfbb1161010257806330030a48116100e857806330030a48146102105780633878678414610218578063517c0a8f1461022b575f5ffd5b806316d3bfbb146101d057806328714051146101e9575f5ffd5b806231d1151461013257806305236024146101765780630bea55ed1461018b5780630d93650c1461019e575b5f5ffd5b6101597f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b610189610184366004610d38565b6102e0565b005b610189610199366004610e6b565b6103c4565b6101c06101ac366004610f3f565b60056020525f908152604090205460ff1681565b604051901515815260200161016d565b6101db6301e1338081565b60405190815260200161016d565b6101597f000000000000000000000000000000000000000000000000000000000000000081565b6101db5f5481565b6101db610226366004610f3f565b610558565b6101db60025481565b6101c0610242366004610f61565b6105bf565b600454610159906001600160a01b031681565b6101c0610268366004610f3f565b610b9a565b6101db60015481565b6101db60035481565b61018961028d366004610f3f565b610bd4565b6101896102a0366004610f98565b610c9d565b6101597f000000000000000000000000000000000000000000000000000000000000000081565b6004546101c090600160a01b900460ff1681565b6004546001600160a01b03163314610328576004805460405163521eb56d60e11b81526001600160a01b03909116918101919091523360248201526044015b60405180910390fd5b831580610333575082155b8061033c575081155b80610345575080155b1561036357604051637c946ed760e01b815260040160405180910390fd5b5f8490556001839055600282905560038190556040805185815260208101859052908101839052606081018290527faf40dfd820e3c4d9869867d01bef72bc7355b89f888bde8f0e24025202b0d7459060800160405180910390a150505050565b6004546001600160a01b03163314610407576004805460405163521eb56d60e11b81526001600160a01b039091169181019190915233602482015260440161031f565b8251158061041757508151835114155b1561044257825182516040516308151c1160e41b81526004810192909252602482015260440161031f565b6004805460ff60a01b1916600160a01b831515021790555f5b8351811015610517575f6001600160a01b031684828151811061048057610480610fb1565b60200260200101516001600160a01b0316036104af5760405163d92e233d60e01b815260040160405180910390fd5b8281815181106104c1576104c1610fb1565b602002602001015160055f8684815181106104de576104de610fb1565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905560010161045b565b507fa75993bdbe9ad771324babfee934d208587d3321632d15aa92547ee71226354183838360405161054b93929190610fc5565b60405180910390a1505050565b5f816001600160a01b031663957323616040518163ffffffff1660e01b8152600401602060405180830381865afa158015610595573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105b99190611059565b92915050565b6004545f90600160a01b900460ff1680156105f257506001600160a01b0382165f9081526005602052604090205460ff16155b156105fe57505f6105b9565b826001600160a01b03163b5f0361061657505f6105b9565b60408051600481526024810182526020810180516001600160e01b03166365e7929560e11b17905290515f9081906001600160a01b0387169061065a908590611070565b5f60405180830381855afa9150503d805f8114610692576040519150601f19603f3d011682016040523d82523d5f602084013e610697565b606091505b50915091508180156106aa575080516020145b15610711575f818060200190518101906106c49190611086565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b03161461070b575f9450505050506105b9565b5061071c565b5f93505050506105b9565b5f866001600160a01b031663e77cdcc96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610759573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061077d9190611059565b90505f54811115610794575f9450505050506105b9565b5f6301e13380886001600160a01b031663eacdaabc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107fa9190611059565b61080491906110a1565b90505f8261081a83670de0b6b3a76400006110a1565b61082491906110c4565b905060035481111561083e575f96505050505050506105b9565b5f896001600160a01b0316631f7794086040518163ffffffff1660e01b8152600401602060405180830381865afa15801561087b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061089f9190611059565b90506001548111156108ba575f9750505050505050506105b9565b5f8a6001600160a01b03166316a751726040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108f7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061091b9190611059565b9050600254811115610937575f985050505050505050506105b9565b60408051600481526024810182526020810180516001600160e01b03166372f702f360e01b17905290515f91906001600160a01b038e169061097a908390611070565b5f60405180830381855afa9150503d805f81146109b2576040519150601f19603f3d011682016040523d82523d5f602084013e6109b7565b606091505b5090995097508815610a44578751602003610a3257878060200190518101906109e09190611086565b91507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614610a2d575f9a50505050505050505050506105b9565b610a44565b5f9a50505050505050505050506105b9565b6001600160a01b03821615801590610a8457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615155b15610b875760408051600481526024810182526020810180516001600160e01b0316632871405160e01b1790529051909a506001600160a01b038e1690610acc908c90611070565b5f60405180830381855afa9150503d805f8114610b04576040519150601f19603f3d011682016040523d82523d5f602084013e610b09565b606091505b509099509750888015610b1d575087516020145b15610a32575f88806020019051810190610b379190611086565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031614610b85575f9b5050505050505050505050506105b9565b505b5060019c9b505050505050505050505050565b6004545f90600160a01b900460ff1615610bcc57506001600160a01b03165f9081526005602052604090205460ff1690565b506001919050565b6004546001600160a01b03163314610c15576004805460405163521eb56d60e11b815233928101929092526001600160a01b0316602482015260440161031f565b6001600160a01b038116610c3c5760405163d92e233d60e01b815260040160405180910390fd5b600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040517f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b905f90a250565b6004546001600160a01b03163314610ce0576004805460405163521eb56d60e11b81526001600160a01b039091169181019190915233602482015260440161031f565b60048054821515600160a01b0260ff60a01b199091161790556040517fdc17e046a4e55c5445deae0e2503d60b1ce5ecce83a0dc62c9066bbc7f39db5690610d2d90831515815260200190565b60405180910390a150565b5f5f5f5f60808587031215610d4b575f5ffd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610da457610da4610d67565b604052919050565b5f67ffffffffffffffff821115610dc557610dc5610d67565b5060051b60200190565b6001600160a01b0381168114610de3575f5ffd5b50565b80358015158114610df5575f5ffd5b919050565b5f82601f830112610e09575f5ffd5b8135610e1c610e1782610dac565b610d7b565b8082825260208201915060208360051b860101925085831115610e3d575f5ffd5b602085015b83811015610e6157610e5381610de6565b835260209283019201610e42565b5095945050505050565b5f5f5f60608486031215610e7d575f5ffd5b833567ffffffffffffffff811115610e93575f5ffd5b8401601f81018613610ea3575f5ffd5b8035610eb1610e1782610dac565b8082825260208201915060208360051b850101925088831115610ed2575f5ffd5b6020840193505b82841015610efd578335610eec81610dcf565b825260209384019390910190610ed9565b9550505050602084013567ffffffffffffffff811115610f1b575f5ffd5b610f2786828701610dfa565b925050610f3660408501610de6565b90509250925092565b5f60208284031215610f4f575f5ffd5b8135610f5a81610dcf565b9392505050565b5f5f60408385031215610f72575f5ffd5b8235610f7d81610dcf565b91506020830135610f8d81610dcf565b809150509250929050565b5f60208284031215610fa8575f5ffd5b610f5a82610de6565b634e487b7160e01b5f52603260045260245ffd5b606080825284519082018190525f9060208601906080840190835b818110156110075783516001600160a01b0316835260209384019390920191600101610fe0565b5050838103602080860191909152865180835291810192508601905f5b818110156110445782511515845260209384019390920191600101611024565b50505083151560408401529050949350505050565b5f60208284031215611069575f5ffd5b5051919050565b5f82518060208501845e5f920191825250919050565b5f60208284031215611096575f5ffd5b8151610f5a81610dcf565b80820281158282048414176105b957634e487b7160e01b5f52601160045260245ffd5b5f826110de57634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220649d5030035db94744f11ab0c6cacac89f3f877f85882ea8374786ea89b0d7ca64736f6c634300081c0033", + "deployedBytecode": "0x608060405234801561000f575f5ffd5b506004361061012e575f3560e01c806369be670b116100ad578063a3ba9aef1161007d578063c446841811610063578063c446841814610292578063cbcf252a146102a5578063fcf7684e146102cc575f5ffd5b8063a3ba9aef14610276578063a6f9dae11461027f575f5ffd5b806369be670b146102345780638da5cb5b1461024757806396324ed61461025a5780639ac28fa01461026d575f5ffd5b806316d3bfbb1161010257806330030a48116100e857806330030a48146102105780633878678414610218578063517c0a8f1461022b575f5ffd5b806316d3bfbb146101d057806328714051146101e9575f5ffd5b806231d1151461013257806305236024146101765780630bea55ed1461018b5780630d93650c1461019e575b5f5ffd5b6101597f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b610189610184366004610d38565b6102e0565b005b610189610199366004610e6b565b6103c4565b6101c06101ac366004610f3f565b60056020525f908152604090205460ff1681565b604051901515815260200161016d565b6101db6301e1338081565b60405190815260200161016d565b6101597f000000000000000000000000000000000000000000000000000000000000000081565b6101db5f5481565b6101db610226366004610f3f565b610558565b6101db60025481565b6101c0610242366004610f61565b6105bf565b600454610159906001600160a01b031681565b6101c0610268366004610f3f565b610b9a565b6101db60015481565b6101db60035481565b61018961028d366004610f3f565b610bd4565b6101896102a0366004610f98565b610c9d565b6101597f000000000000000000000000000000000000000000000000000000000000000081565b6004546101c090600160a01b900460ff1681565b6004546001600160a01b03163314610328576004805460405163521eb56d60e11b81526001600160a01b03909116918101919091523360248201526044015b60405180910390fd5b831580610333575082155b8061033c575081155b80610345575080155b1561036357604051637c946ed760e01b815260040160405180910390fd5b5f8490556001839055600282905560038190556040805185815260208101859052908101839052606081018290527faf40dfd820e3c4d9869867d01bef72bc7355b89f888bde8f0e24025202b0d7459060800160405180910390a150505050565b6004546001600160a01b03163314610407576004805460405163521eb56d60e11b81526001600160a01b039091169181019190915233602482015260440161031f565b8251158061041757508151835114155b1561044257825182516040516308151c1160e41b81526004810192909252602482015260440161031f565b6004805460ff60a01b1916600160a01b831515021790555f5b8351811015610517575f6001600160a01b031684828151811061048057610480610fb1565b60200260200101516001600160a01b0316036104af5760405163d92e233d60e01b815260040160405180910390fd5b8281815181106104c1576104c1610fb1565b602002602001015160055f8684815181106104de576104de610fb1565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905560010161045b565b507fa75993bdbe9ad771324babfee934d208587d3321632d15aa92547ee71226354183838360405161054b93929190610fc5565b60405180910390a1505050565b5f816001600160a01b031663957323616040518163ffffffff1660e01b8152600401602060405180830381865afa158015610595573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105b99190611059565b92915050565b6004545f90600160a01b900460ff1680156105f257506001600160a01b0382165f9081526005602052604090205460ff16155b156105fe57505f6105b9565b826001600160a01b03163b5f0361061657505f6105b9565b60408051600481526024810182526020810180516001600160e01b03166365e7929560e11b17905290515f9081906001600160a01b0387169061065a908590611070565b5f60405180830381855afa9150503d805f8114610692576040519150601f19603f3d011682016040523d82523d5f602084013e610697565b606091505b50915091508180156106aa575080516020145b15610711575f818060200190518101906106c49190611086565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b03161461070b575f9450505050506105b9565b5061071c565b5f93505050506105b9565b5f866001600160a01b031663e77cdcc96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610759573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061077d9190611059565b90505f54811115610794575f9450505050506105b9565b5f6301e13380886001600160a01b031663eacdaabc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107fa9190611059565b61080491906110a1565b90505f8261081a83670de0b6b3a76400006110a1565b61082491906110c4565b905060035481111561083e575f96505050505050506105b9565b5f896001600160a01b0316631f7794086040518163ffffffff1660e01b8152600401602060405180830381865afa15801561087b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061089f9190611059565b90506001548111156108ba575f9750505050505050506105b9565b5f8a6001600160a01b03166316a751726040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108f7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061091b9190611059565b9050600254811115610937575f985050505050505050506105b9565b60408051600481526024810182526020810180516001600160e01b03166372f702f360e01b17905290515f91906001600160a01b038e169061097a908390611070565b5f60405180830381855afa9150503d805f81146109b2576040519150601f19603f3d011682016040523d82523d5f602084013e6109b7565b606091505b5090995097508815610a44578751602003610a3257878060200190518101906109e09190611086565b91507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614610a2d575f9a50505050505050505050506105b9565b610a44565b5f9a50505050505050505050506105b9565b6001600160a01b03821615801590610a8457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615155b15610b875760408051600481526024810182526020810180516001600160e01b0316632871405160e01b1790529051909a506001600160a01b038e1690610acc908c90611070565b5f60405180830381855afa9150503d805f8114610b04576040519150601f19603f3d011682016040523d82523d5f602084013e610b09565b606091505b509099509750888015610b1d575087516020145b15610a32575f88806020019051810190610b379190611086565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031614610b85575f9b5050505050505050505050506105b9565b505b5060019c9b505050505050505050505050565b6004545f90600160a01b900460ff1615610bcc57506001600160a01b03165f9081526005602052604090205460ff1690565b506001919050565b6004546001600160a01b03163314610c15576004805460405163521eb56d60e11b815233928101929092526001600160a01b0316602482015260440161031f565b6001600160a01b038116610c3c5760405163d92e233d60e01b815260040160405180910390fd5b600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040517f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b905f90a250565b6004546001600160a01b03163314610ce0576004805460405163521eb56d60e11b81526001600160a01b039091169181019190915233602482015260440161031f565b60048054821515600160a01b0260ff60a01b199091161790556040517fdc17e046a4e55c5445deae0e2503d60b1ce5ecce83a0dc62c9066bbc7f39db5690610d2d90831515815260200190565b60405180910390a150565b5f5f5f5f60808587031215610d4b575f5ffd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610da457610da4610d67565b604052919050565b5f67ffffffffffffffff821115610dc557610dc5610d67565b5060051b60200190565b6001600160a01b0381168114610de3575f5ffd5b50565b80358015158114610df5575f5ffd5b919050565b5f82601f830112610e09575f5ffd5b8135610e1c610e1782610dac565b610d7b565b8082825260208201915060208360051b860101925085831115610e3d575f5ffd5b602085015b83811015610e6157610e5381610de6565b835260209283019201610e42565b5095945050505050565b5f5f5f60608486031215610e7d575f5ffd5b833567ffffffffffffffff811115610e93575f5ffd5b8401601f81018613610ea3575f5ffd5b8035610eb1610e1782610dac565b8082825260208201915060208360051b850101925088831115610ed2575f5ffd5b6020840193505b82841015610efd578335610eec81610dcf565b825260209384019390910190610ed9565b9550505050602084013567ffffffffffffffff811115610f1b575f5ffd5b610f2786828701610dfa565b925050610f3660408501610de6565b90509250925092565b5f60208284031215610f4f575f5ffd5b8135610f5a81610dcf565b9392505050565b5f5f60408385031215610f72575f5ffd5b8235610f7d81610dcf565b91506020830135610f8d81610dcf565b809150509250929050565b5f60208284031215610fa8575f5ffd5b610f5a82610de6565b634e487b7160e01b5f52603260045260245ffd5b606080825284519082018190525f9060208601906080840190835b818110156110075783516001600160a01b0316835260209384019390920191600101610fe0565b5050838103602080860191909152865180835291810192508601905f5b818110156110445782511515845260209384019390920191600101611024565b50505083151560408401529050949350505050565b5f60208284031215611069575f5ffd5b5051919050565b5f82518060208501845e5f920191825250919050565b5f60208284031215611096575f5ffd5b8151610f5a81610dcf565b80820281158282048414176105b957634e487b7160e01b5f52601160045260245ffd5b5f826110de57634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220649d5030035db94744f11ab0c6cacac89f3f877f85882ea8374786ea89b0d7ca64736f6c634300081c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/docs/configuration.json b/docs/configuration.json index 59869a8e..ce178871 100644 --- a/docs/configuration.json +++ b/docs/configuration.json @@ -647,5 +647,92 @@ "address": "0x10100e74b7F706222F8A7C0be9FC7Ae1717Ad8B2" } ] + }, + { + "name": "mode", + "chainId": "34443", + "contracts": [ + { + "name": "ServiceRegistryL2", + "artifact": "abis/0.8.28/ServiceRegistryL2.json", + "address": "" + }, + { + "name": "ServiceRegistryTokenUtility", + "artifact": "abis/0.8.28/ServiceRegistryTokenUtility.json", + "address": "" + }, + { + "name": "ServiceManagerToken", + "artifact": "abis/0.8.28/ServiceManagerToken.json", + "address": "" + }, + { + "name": "OperatorWhitelist", + "artifact": "abis/0.8.28/OperatorWhitelist.json", + "address": "" + }, + { + "name": "GnosisSafeMultisig", + "artifact": "abis/0.8.28/GnosisSafeMultisig.json", + "address": "" + }, + { + "name": "GnosisSafeSameAddressMultisig", + "artifact": "abis/0.8.28/GnosisSafeSameAddressMultisig.json", + "address": "" + }, + { + "name": "StakingToken", + "artifact": "abis/0.8.25/StakingToken.json", + "address": "" + }, + { + "name": "StakingVerifier", + "artifact": "abis/0.8.25/StakingVerifier.json", + "address": "" + }, + { + "name": "StakingFactory", + "artifact": "abis/0.8.25/StakingFactory.json", + "address": "" + } + ] + }, + { + "name": "modeSepolia", + "chainId": "919", + "contracts": [ + { + "name": "ServiceRegistryL2", + "artifact": "abis/0.8.28/ServiceRegistryL2.json", + "address": "0x5BA58970c2Ae16Cf6218783018100aF2dCcFc915" + }, + { + "name": "ServiceRegistryTokenUtility", + "artifact": "abis/0.8.28/ServiceRegistryTokenUtility.json", + "address": "0x10100e74b7F706222F8A7C0be9FC7Ae1717Ad8B2" + }, + { + "name": "ServiceManagerToken", + "artifact": "abis/0.8.28/ServiceManagerToken.json", + "address": "0x7bedCA17D29e53C8062d10902a6219F8d1E3B9B5" + }, + { + "name": "OperatorWhitelist", + "artifact": "abis/0.8.28/OperatorWhitelist.json", + "address": "0x19936159B528C66750992C3cBcEd2e71cF4E4824" + }, + { + "name": "GnosisSafeMultisig", + "artifact": "abis/0.8.28/GnosisSafeMultisig.json", + "address": "0x0a50009D55Ed5700ac8FF713709d5Ad5fa843896" + }, + { + "name": "GnosisSafeSameAddressMultisig", + "artifact": "abis/0.8.28/GnosisSafeSameAddressMultisig.json", + "address": "0x77290FF625fc576f465D0256F6a12Ce4480a5b8a" + } + ] } ] \ No newline at end of file diff --git a/hardhat.config.js b/hardhat.config.js index 6dd839bd..d24fb4f5 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -77,6 +77,11 @@ module.exports = { accounts: accounts, chainId: 42220, }, + mode: { + url: "https://mainnet.mode.network", + accounts: accounts, + chainId: 34443, + }, sepolia: { url: "https://eth-sepolia.g.alchemy.com/v2/" + ALCHEMY_API_KEY_SEPOLIA, accounts: accounts, @@ -112,6 +117,11 @@ module.exports = { accounts: accounts, chainId: 44787, }, + modeSepolia: { + url: "https://sepolia.mode.network", + accounts: accounts, + chainId: 919, + }, hardhat: { allowUnlimitedContractSize: true }, @@ -198,6 +208,22 @@ module.exports = { browserURL: "https://alfajores-blockscout.celo-testnet.org/" }, }, + { + network: "mode", + chainId: 34443, + urls: { + apiURL: "https://explorer.mode.network/api", + browserURL: "https://explorer.mode.network" + }, + }, + { + network: "modeSepolia", + chainId: 919, + urls: { + apiURL: "https://sepolia.explorer.mode.network/api", + browserURL: "https://sepolia.explorer.mode.network" + }, + }, ], apiKey: { mainnet: ETHERSCAN_API_KEY, @@ -213,13 +239,15 @@ module.exports = { arbitrumSepolia: ARBISCAN_API_KEY, optimisticSepolia: OPSCAN_API_KEY, baseSepolia: OPSCAN_API_KEY, - celoAlfajores: CELOSCAN_API_KEY + celoAlfajores: CELOSCAN_API_KEY, + mode: OPSCAN_API_KEY, + modeSepolia: OPSCAN_API_KEY, } }, solidity: { compilers: [ { - version: "0.8.25", + version: "0.8.28", settings: { optimizer: { enabled: true, diff --git a/package.json b/package.json index 93f5a4a1..53954044 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "chai": "^4.3.10", "eslint": "^8.52.0", "ethers": "^5.7.2", - "hardhat": "^2.22.6", + "hardhat": "^2.22.13", "hardhat-contract-sizer": "^2.10.0", "hardhat-deploy": "^0.11.43", "hardhat-deploy-ethers": "^0.3.0-beta.13", diff --git a/scripts/deployment/l2/globals_mode_mainnet.json b/scripts/deployment/l2/globals_mode_mainnet.json new file mode 100644 index 00000000..32cd687f --- /dev/null +++ b/scripts/deployment/l2/globals_mode_mainnet.json @@ -0,0 +1 @@ +{"contractVerification":true,"useLedger":true,"derivationPath":"m/44'/60'/2'/0/0","providerName":"base","networkURL":"https://mainnet.mode.network","gasPriceInGwei":"1","gnosisSafeAddress":"0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552","gnosisSafeProxyFactoryAddress":"0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2","baseURI":"https://gateway.autonolas.tech/ipfs/","serviceRegistryName":"Service Registry L2","serviceRegistrySymbol":"AUTONOLAS-SERVICE-L2-V1","bridgeMediatorAddress":"","olasAddress":"","multisigProxyHash130":"0xb89c1b3bdf2cf8827818646bce9a8f6e372885f8c55e5c07acbd307cb133b000","serviceRegistryAddress":"","operatorWhitelistAddress":"","serviceRegistryTokenUtilityAddress":"","serviceManagerTokenAddress":"","gnosisSafeMultisigImplementationAddress":"","gnosisSafeSameAddressMultisigImplementationAddress":"","stakingTokenAddress":"","stakingNativeTokenAddress":"","minStakingDepositLimit":"10000000000000000000000","timeForEmissionsLimit":"2592000","numServicesLimit":"100","apyLimit":"3000000000000000000","stakingVerifierAddress":"","stakingFactoryAddress":"","L1CrossDomainMessengerProxyAddress":"0x95bDCA6c8EdEB69C98Bd5bd17660BaCef1298A6f"} \ No newline at end of file diff --git a/scripts/deployment/l2/globals_mode_sepolia.json b/scripts/deployment/l2/globals_mode_sepolia.json new file mode 100644 index 00000000..649655bc --- /dev/null +++ b/scripts/deployment/l2/globals_mode_sepolia.json @@ -0,0 +1 @@ +{"contractVerification":true,"useLedger":false,"derivationPath":"m/44'/60'/2'/0/0","providerName":"modeSepolia","networkURL":"https://sepolia.mode.network","gasPriceInGwei":"1","gnosisSafeAddress":"0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552","gnosisSafeProxyFactoryAddress":"0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2","baseURI":"https://gateway.autonolas.tech/ipfs/","serviceRegistryName":"Service Registry L2","serviceRegistrySymbol":"AUTONOLAS-SERVICE-V1","bridgeMediatorAddress":"0xeDd71796B90eaCc56B074C39BAC90ED2Ca6D93Ee","olasAddress":"","multisigProxyHash130":"0xb89c1b3bdf2cf8827818646bce9a8f6e372885f8c55e5c07acbd307cb133b000","serviceRegistryAddress":"0x5BA58970c2Ae16Cf6218783018100aF2dCcFc915","operatorWhitelistAddress":"0x19936159B528C66750992C3cBcEd2e71cF4E4824","serviceRegistryTokenUtilityAddress":"0x10100e74b7F706222F8A7C0be9FC7Ae1717Ad8B2","serviceManagerTokenAddress":"0x7bedCA17D29e53C8062d10902a6219F8d1E3B9B5","gnosisSafeMultisigImplementationAddress":"0x0a50009D55Ed5700ac8FF713709d5Ad5fa843896","gnosisSafeSameAddressMultisigImplementationAddress":"0x77290FF625fc576f465D0256F6a12Ce4480a5b8a"} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index b66c7aa7..9afbb251 100644 --- a/yarn.lock +++ b/yarn.lock @@ -686,53 +686,53 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@nomicfoundation/edr-darwin-arm64@0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.4.2.tgz#2ff98535f272c9f2a7d06eeda93fe7b207a348a4" - integrity sha512-S+hhepupfqpBvMa9M1PVS08sVjGXsLnjyAsjhrrsjsNuTHVLhKzhkguvBD5g4If5skrwgOaVqpag4wnQbd15kQ== +"@nomicfoundation/edr-darwin-arm64@0.6.3": + version "0.6.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.6.3.tgz#7f94f80f25bbf8f15421aca0626b1e243c5b6fba" + integrity sha512-hqtI7tYDqKG5PDmZ//Z65EH5cgH8VL/SAAu50rpHP7WAVfJWkOCcYbecywwF6nhHdonJbRTDGAeG1/+VOy6zew== -"@nomicfoundation/edr-darwin-x64@0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.4.2.tgz#001dcd0e7fa4c52046d283b0dc61e63a60c614dd" - integrity sha512-/zM94AUrXz6CmcsecRNHJ50jABDUFafmGc4iBmkfX/mTp4tVZj7XTyIogrQIt0FnTaeb4CgZoLap2+8tW/Uldg== +"@nomicfoundation/edr-darwin-x64@0.6.3": + version "0.6.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.6.3.tgz#57cbbe09c70480e7eb79273ba5a497327d72347b" + integrity sha512-4fGi79/lyOlRUORhCYsYb3sWqRHuHT7qqzyZfZuNOn8llaxmT1k36xNmvpyg37R8SzjnhT/DzoukSJrs23Ip9Q== -"@nomicfoundation/edr-linux-arm64-gnu@0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.4.2.tgz#6d19f8265c8ffb22e29bc5bbbb5d1913fe4b306b" - integrity sha512-TV3Pr2tFvvmCfPCi9PaCGLtqn+oLaPKfL2NWpnoCeFFdzDQXi2L930yP1oUPY5RXd78NLdVHMkEkbhb2b6Wuvg== +"@nomicfoundation/edr-linux-arm64-gnu@0.6.3": + version "0.6.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.6.3.tgz#122f5ec8b00297e9ed0111405c8779a3c3ba26f3" + integrity sha512-yFFTvGFMhfAvQ1Z2itUh1jpoUA+mVROyVELcaxjIq8fyg602lQmbS+NXkhQ+oaeDgJ+06mSENrHBg4fcfRf9cw== -"@nomicfoundation/edr-linux-arm64-musl@0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.4.2.tgz#0b01aa405fdc8048c7a8e95c737f29b437536a30" - integrity sha512-PALwrLBk1M9rolXyhSX8xdhe5jL0qf/PgiCIF7W7lUyVKrI/I0oiU0EHDk/Xw7yi2UJg4WRyhhZoHYa0g4g8Qg== +"@nomicfoundation/edr-linux-arm64-musl@0.6.3": + version "0.6.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.6.3.tgz#2b0371371540373b10521ead4ffa70a2d9e6ac8e" + integrity sha512-pOKmd0Fa3a6BHg5qbjbl/jMRELVi9oazbfiuU7Bvgn/dpTK+ID3jwT0SXiuC2zxjmPByWgXL6G9XRf5BPAM2rQ== -"@nomicfoundation/edr-linux-x64-gnu@0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.4.2.tgz#10959fd4db9b333d3e0559cb893e109611889af0" - integrity sha512-5svkftypDjAZ1LxV1onojlaqPRxrTEjJLkrUwLL+Fao5ZMe7aTnk5QQ1Jv76gW6WYZnMXNgjPhRcnw3oSNrqFA== +"@nomicfoundation/edr-linux-x64-gnu@0.6.3": + version "0.6.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.6.3.tgz#63849575eddbcd7a5da581d401fba6f5f9347644" + integrity sha512-3AUferhkLIXtLV63w5GjpHttzdxZ36i656XMy+pkBZbbiqnzIVeKWg6DJv1A94fQY16gB4gqj9CLq4CWvbNN6w== -"@nomicfoundation/edr-linux-x64-musl@0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.4.2.tgz#8de64a2dfd869dad930dd0eb9572a0593d382379" - integrity sha512-qiMlXQTggdH9zfOB4Eil4rQ95z8s7QdLJcOfz5Aym12qJNkCyF9hi4cc4dDCWA0CdI3x3oLbuf8qb81SF8R45w== +"@nomicfoundation/edr-linux-x64-musl@0.6.3": + version "0.6.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.6.3.tgz#3b5e6462f47b40cde81bafc6da003c58b2eb9839" + integrity sha512-fr6bD872WIBXe9YnTDi0CzYepMcYRgSnkVqn0yK4wRnIvKrloWhxXNVY45GVIl51aNZguBnvoA4WEt6HIazs3A== -"@nomicfoundation/edr-win32-x64-msvc@0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.4.2.tgz#13ad4bab9fd68853930e1a3d87c78d69d1d0e2ef" - integrity sha512-hDkAb0iaMmGYwBY/rA1oCX8VpsezfQcHPEPIEGXEcWC3WbnOgIZo0Qkpu/g0OMtFOJSQlWLXvKZuV7blhnrQag== +"@nomicfoundation/edr-win32-x64-msvc@0.6.3": + version "0.6.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.6.3.tgz#45be7ba94b950e78e862cb3af0c320e070e0e452" + integrity sha512-sn34MvN1ajw2Oq1+Drpxej78Z0HfIzI4p4WlolupAV9dOZKzp2JAIQeLVfZpjIFbF3zuyxLPP4dUBrQoFPEqhA== -"@nomicfoundation/edr@^0.4.1": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/edr/-/edr-0.4.2.tgz#9d7550182d4f75d7510e265ebd3474c4f6fcb62a" - integrity sha512-U7v0HuZHfrsl/5FpUzuB2FYA0+FUglHHwiO6NhvLtNYKMZcPzdS6iUriMp/7GWs0SVxW3bAht9GinZPxdhVwWg== +"@nomicfoundation/edr@^0.6.3": + version "0.6.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr/-/edr-0.6.3.tgz#47f1b217ce5eb09aef419d76a8488bb77cd88b94" + integrity sha512-hThe5ORR75WFYTXKL0K2AyLDxkTMrG+VQ1yL9BhQYsuh3OIH+3yNDxMz2LjfvrpOrMmJ4kk5NKdFewpqDojjXQ== dependencies: - "@nomicfoundation/edr-darwin-arm64" "0.4.2" - "@nomicfoundation/edr-darwin-x64" "0.4.2" - "@nomicfoundation/edr-linux-arm64-gnu" "0.4.2" - "@nomicfoundation/edr-linux-arm64-musl" "0.4.2" - "@nomicfoundation/edr-linux-x64-gnu" "0.4.2" - "@nomicfoundation/edr-linux-x64-musl" "0.4.2" - "@nomicfoundation/edr-win32-x64-msvc" "0.4.2" + "@nomicfoundation/edr-darwin-arm64" "0.6.3" + "@nomicfoundation/edr-darwin-x64" "0.6.3" + "@nomicfoundation/edr-linux-arm64-gnu" "0.6.3" + "@nomicfoundation/edr-linux-arm64-musl" "0.6.3" + "@nomicfoundation/edr-linux-x64-gnu" "0.6.3" + "@nomicfoundation/edr-linux-x64-musl" "0.6.3" + "@nomicfoundation/edr-win32-x64-msvc" "0.6.3" "@nomicfoundation/ethereumjs-common@4.0.4": version "4.0.4" @@ -1592,7 +1592,7 @@ check-error@^1.0.2, check-error@^1.0.3: dependencies: get-func-name "^2.0.2" -chokidar@3.5.3, chokidar@^3.4.0, chokidar@^3.5.2: +chokidar@3.5.3, chokidar@^3.5.2: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -1607,6 +1607,13 @@ chokidar@3.5.3, chokidar@^3.4.0, chokidar@^3.5.2: optionalDependencies: fsevents "~2.3.2" +chokidar@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.1.tgz#4a6dff66798fb0f72a94f616abbd7e1a19f31d41" + integrity sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA== + dependencies: + readdirp "^4.0.1" + chownr@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" @@ -2693,14 +2700,14 @@ hardhat-tracer@^2.6.0: debug "^4.3.4" ethers "^5.6.1" -hardhat@^2.22.6: - version "2.22.6" - resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.22.6.tgz#d73caece246cd8219a1815554dabc31d400fa035" - integrity sha512-abFEnd9QACwEtSvZZGSmzvw7N3zhQN1cDKz5SLHAupfG24qTHofCjqvD5kT5Wwsq5XOL0ON1Mq5rr4v0XX5ciw== +hardhat@^2.22.13: + version "2.22.13" + resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.22.13.tgz#1d2c7c4b640d060ae0f5b04757322118a003955a" + integrity sha512-psVJX4FSXDpSXwsU8OcKTJN04pQEj9cFBMX5OPko+OFwbIoiOpvRmafa954/UaA1934npTj8sV3gaTSdx9bPbA== dependencies: "@ethersproject/abi" "^5.1.2" "@metamask/eth-sig-util" "^4.0.0" - "@nomicfoundation/edr" "^0.4.1" + "@nomicfoundation/edr" "^0.6.3" "@nomicfoundation/ethereumjs-common" "4.0.4" "@nomicfoundation/ethereumjs-tx" "5.0.4" "@nomicfoundation/ethereumjs-util" "9.0.4" @@ -2713,7 +2720,7 @@ hardhat@^2.22.6: ansi-escapes "^4.3.0" boxen "^5.1.2" chalk "^2.4.2" - chokidar "^3.4.0" + chokidar "^4.0.0" ci-info "^2.0.0" debug "^4.1.1" enquirer "^2.3.0" @@ -2726,6 +2733,7 @@ hardhat@^2.22.6: glob "7.2.0" immutable "^4.0.0-rc.12" io-ts "1.10.4" + json-stream-stringify "^3.1.4" keccak "^3.0.2" lodash "^4.17.11" mnemonist "^0.38.0" @@ -3061,6 +3069,11 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== +json-stream-stringify@^3.1.4: + version "3.1.6" + resolved "https://registry.yarnpkg.com/json-stream-stringify/-/json-stream-stringify-3.1.6.tgz#ebe32193876fb99d4ec9f612389a8d8e2b5d54d4" + integrity sha512-x7fpwxOkbhFCaJDJ8vb1fBY3DdSa4AlITaz+HHILQJzdPMnHEFjxPwVUi1ALIbcIxDE0PNe/0i7frnY8QnBQog== + jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -3786,6 +3799,11 @@ readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readdirp@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.0.2.tgz#388fccb8b75665da3abffe2d8f8ed59fe74c230a" + integrity sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA== + readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"