Overview
S Balance
S Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 15 from a total of 15 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Confirm | 411183 | 86 days ago | IN | 0 S | 0.00025913 | ||||
Confirm | 411156 | 86 days ago | IN | 0 S | 0.00017098 | ||||
Confirm | 411151 | 86 days ago | IN | 0 S | 0.00026666 | ||||
Confirm | 411145 | 86 days ago | IN | 0 S | 0.00022528 | ||||
Create | 411098 | 86 days ago | IN | 0 S | 0.00019733 | ||||
Confirm | 410934 | 86 days ago | IN | 0 S | 0.00016812 | ||||
Create | 410926 | 86 days ago | IN | 0 S | 0.00019114 | ||||
Confirm | 410791 | 86 days ago | IN | 0 S | 0.00016601 | ||||
Create | 410765 | 86 days ago | IN | 0 S | 0.00018721 | ||||
Confirm | 410610 | 86 days ago | IN | 0 S | 0.00063508 | ||||
Confirm | 410557 | 86 days ago | IN | 0 S | 0.00018458 | ||||
Create | 410551 | 86 days ago | IN | 0 S | 0.00022508 | ||||
Confirm | 410479 | 86 days ago | IN | 0 S | 0.00028226 | ||||
Confirm | 410113 | 86 days ago | IN | 0 S | 0.00016455 | ||||
Create | 410105 | 86 days ago | IN | 0 S | 0.00018381 |
Latest 1 internal transaction
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
409803 | 86 days ago | Contract Creation | 0 S |
Loading...
Loading
Contract Name:
AvoMultisigAdmin
Compiler Version
v0.8.18+commit.87f61d96
Optimization Enabled:
Yes with 10000000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract AvoMultisigAdminStructs { /// @notice Transaction represents a executeable transaction and it's multisig status struct Transaction { /// @notice The hash of the transaction, keccak(encodePacked(target, data))) bytes30 hash; /// @notice The number of confirmations for the transaction uint8 confirmation; /// @notice The number of revokes for the transaction uint8 revoke; } } contract AvoMultisigAdminErrors { /// @notice Error if input params are invalid error AvoMultisigAdmin__InvalidParams(); /// @notice Error if msg.sender is not authorized error AvoMultisigAdmin__Unauthorized(); /// @notice Error if signer is not a signer error AvoMultisigAdmin__InvalidSigner(); /// @notice Error if transaction is already created error AvoMultisigAdmin__TransactionAlreadyCreated(); /// @notice Error if transaction is already confirmed by the signer error AvoMultisigAdmin__TransactionAlreadyConfirmed(); /// @notice Error if transaction is already revoked by the signer error AvoMultisigAdmin__TransactionAlreadyRevoked(); /// @notice Error if transaction is already confirmed or revoked error AvoMultisigAdmin__TransactionError(); /// @notice Error if transaction is not found error AvoMultisigAdmin__TransactionNotFoundError(); } abstract contract AvoMultisigAdminConstants is AvoMultisigAdminErrors { /// @notice The number of signers required to confirm a transaction uint256 public immutable REQUIRED_CONFIRMATIONS; /// @notice Addresses for the signers address public immutable SIGNER_1; address public immutable SIGNER_2; address public immutable SIGNER_3; address public immutable SIGNER_4; address public immutable SIGNER_5; address public immutable SIGNER_6; /// @notice sets up the immutable vars: signers and required confirmations. constructor( address signer1_, address signer2_, address signer3_, address signer4_, address signer5_, address signer6_, uint256 requiredConfirmations_ ) { if ( signer1_ == address(0) || signer2_ == address(0) || signer3_ == address(0) || signer4_ == address(0) || signer5_ == address(0) || signer6_ == address(0) ) { revert AvoMultisigAdmin__InvalidParams(); } if (requiredConfirmations_ == 0 || requiredConfirmations_ > 6) { revert AvoMultisigAdmin__InvalidParams(); } SIGNER_1 = signer1_; SIGNER_2 = signer2_; SIGNER_3 = signer3_; SIGNER_4 = signer4_; SIGNER_5 = signer5_; SIGNER_6 = signer6_; REQUIRED_CONFIRMATIONS = requiredConfirmations_; } } contract AvoMultisigAdminVariables { /// @notice The mapping of the hash of (targetAddress, data, salt) to the transaction mapping(bytes30 => AvoMultisigAdminStructs.Transaction) public hashToTransaction; /// @notice The mapping of signer to transaction hash to whether or not they've confirmed mapping(address => mapping(bytes30 => bool)) public signedTx; /// @notice The mapping of signer to transaction hash to whether or not they've revoked mapping(address => mapping(bytes30 => bool)) public revokeTx; } contract AvoMultisigAdminEvents { /// @notice Emitted when a transaction is created event TransactionCreated(bytes30 indexed hash, address indexed creator, address target, bytes data, bytes32 salt); /// @notice Emitted when a transaction is confirmed event TransactionConfirmed(bytes30 indexed hash, address indexed confirmator, uint8 newConfirmationCount); /// @notice Emitted when a transaction is revoked event TransactionRevoked(bytes30 indexed hash, address indexed revoker, uint8 newConfirmationCount); /// @notice Emitted when a transaction is executed event TransactionExecuted(bytes30 indexed hash, address indexed executor); /// @notice Emitted when a transaction fails event TransactionFailed(bytes30 indexed hash, address indexed executor, bytes returnData); } /// @title Static Multisignature Wallet Contract /// @notice This contract represents a multisignature wallet with a static configuration of hardcoded addresses for confirmation. /// Each address can confirm or revoke a transaction on-chain. contract AvoMultisigAdmin is AvoMultisigAdminStructs, AvoMultisigAdminErrors, AvoMultisigAdminConstants, AvoMultisigAdminVariables, AvoMultisigAdminEvents { modifier onlySigner() { if ( msg.sender != SIGNER_1 && msg.sender != SIGNER_2 && msg.sender != SIGNER_3 && msg.sender != SIGNER_4 && msg.sender != SIGNER_5 && msg.sender != SIGNER_6 ) revert AvoMultisigAdmin__InvalidSigner(); _; } /// @notice constructor sets up the immutable vars: signers and required confirmations. constructor( address signer1_, address signer2_, address signer3_, address signer4_, address signer5_, address signer6_, uint256 requiredConfirmations_ ) AvoMultisigAdminConstants(signer1_, signer2_, signer3_, signer4_, signer5_, signer6_, requiredConfirmations_) {} /// @notice Create a new transaction /// @param target_ The address of the target contract or account for the transaction /// @param data_ The data payload of the transaction /// @param salt_ The salt used to make the transaction hash unique function create(address target_, bytes memory data_, bytes32 salt_) external onlySigner { bytes30 txHash_ = hashTransactionData(target_, data_, salt_); if (hashToTransaction[txHash_].hash != bytes30(0)) revert AvoMultisigAdmin__TransactionAlreadyCreated(); hashToTransaction[txHash_] = Transaction(txHash_, 1, 0); signedTx[msg.sender][txHash_] = true; emit TransactionCreated(txHash_, msg.sender, target_, data_, salt_); } /// @notice Confirm a transaction /// @dev Confirming is not allowed if `confirmation` or `revoke` is already 3 (transaction executed or cancelled). /// @param target_ The address of the target contract or account for the transaction /// @param data_ The data payload of the transaction /// @param salt_ The salt used to make the transaction hash unique function confirm(address target_, bytes memory data_, bytes32 salt_) external onlySigner { bytes30 txHash_ = hashTransactionData(target_, data_, salt_); if (hashToTransaction[txHash_].hash == bytes30(0)) revert AvoMultisigAdmin__TransactionNotFoundError(); if (signedTx[msg.sender][txHash_]) revert AvoMultisigAdmin__TransactionAlreadyConfirmed(); Transaction memory txInfo_ = hashToTransaction[txHash_]; if (txInfo_.confirmation == REQUIRED_CONFIRMATIONS || txInfo_.revoke == REQUIRED_CONFIRMATIONS) revert AvoMultisigAdmin__TransactionError(); signedTx[msg.sender][txHash_] = true; hashToTransaction[txHash_].confirmation = ++txInfo_.confirmation; if (txInfo_.confirmation == REQUIRED_CONFIRMATIONS) { // Execute the transaction bool success_; bytes memory retData_; (success_, retData_) = target_.call(data_); if (success_) { emit TransactionExecuted(txHash_, msg.sender); } else { emit TransactionFailed(txHash_, msg.sender, retData_); } } emit TransactionConfirmed(txHash_, msg.sender, txInfo_.confirmation); } /// @notice Revoke a transaction confirmation. /// @dev Revoking is not allowed if `confirmation` or `revoke` is already 3 (transaction executed or cancelled). /// @param target_ The address of the target contract or account for the transaction /// @param data_ The data payload of the transaction /// @param salt_ The salt used to make the transaction hash unique function revoke(address target_, bytes memory data_, bytes32 salt_) external onlySigner { bytes30 txHash_ = hashTransactionData(target_, data_, salt_); if (hashToTransaction[txHash_].hash == bytes30(0)) revert AvoMultisigAdmin__TransactionNotFoundError(); Transaction memory txInfo_ = hashToTransaction[txHash_]; if (txInfo_.confirmation == REQUIRED_CONFIRMATIONS || txInfo_.revoke == REQUIRED_CONFIRMATIONS) revert AvoMultisigAdmin__TransactionError(); hashToTransaction[txHash_].revoke = ++txInfo_.revoke; if (revokeTx[msg.sender][txInfo_.hash] == false) { revokeTx[msg.sender][txInfo_.hash] = true; } else { revert AvoMultisigAdmin__TransactionAlreadyRevoked(); } emit TransactionRevoked(txHash_, msg.sender, txInfo_.revoke); } /// @notice Hashes the transaction data /// @param target_ The address of the target contract or account for the transaction /// @param data_ The data payload of the transaction /// @param salt_ The salt used to make the transaction hash unique /// @return hash_ The unique hash representing this transaction function hashTransactionData( address target_, bytes memory data_, bytes32 salt_ ) public pure returns (bytes30 hash_) { hash_ = bytes30(keccak256(abi.encodePacked(target_, data_, salt_))); } // Code for Multicall below directly taken from https://github.com/mds1/multicall/blob/main/src/Multicall3.sol#L98 // Copyright (c) 2023 Matt Solomon struct Call3 { address target; bool allowFailure; bytes callData; } struct Result { bool success; bytes returnData; } /// @notice Aggregate calls, ensuring each returns success if required. Can only be called by self. /// @param calls An array of Call3 structs /// @return returnData An array of Result structs function aggregate3(Call3[] calldata calls) public returns (Result[] memory returnData) { // @dev check for only self is added to original code if (msg.sender != address(this)) { revert AvoMultisigAdmin__Unauthorized(); } uint256 length = calls.length; returnData = new Result[](length); Call3 calldata calli; for (uint256 i = 0; i < length; ) { Result memory result = returnData[i]; calli = calls[i]; (result.success, result.returnData) = calli.target.call(calli.callData); assembly { // Revert if the call fails and failure is not allowed // `allowFailure := calldataload(add(calli, 0x20))` and `success := mload(result)` if iszero(or(calldataload(add(calli, 0x20)), mload(result))) { // set "Error(string)" signature: bytes32(bytes4(keccak256("Error(string)"))) mstore(0x00, 0x08c379a000000000000000000000000000000000000000000000000000000000) // set data offset mstore(0x04, 0x0000000000000000000000000000000000000000000000000000000000000020) // set length of revert string mstore(0x24, 0x0000000000000000000000000000000000000000000000000000000000000017) // set revert string: bytes32(abi.encodePacked("Multicall3: call failed")) mstore(0x44, 0x4d756c746963616c6c333a2063616c6c206661696c6564000000000000000000) revert(0x00, 0x64) } } unchecked { ++i; } } } }
{ "optimizer": { "enabled": true, "runs": 10000000 }, "libraries": {}, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"signer1_","type":"address"},{"internalType":"address","name":"signer2_","type":"address"},{"internalType":"address","name":"signer3_","type":"address"},{"internalType":"address","name":"signer4_","type":"address"},{"internalType":"address","name":"signer5_","type":"address"},{"internalType":"address","name":"signer6_","type":"address"},{"internalType":"uint256","name":"requiredConfirmations_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AvoMultisigAdmin__InvalidParams","type":"error"},{"inputs":[],"name":"AvoMultisigAdmin__InvalidSigner","type":"error"},{"inputs":[],"name":"AvoMultisigAdmin__TransactionAlreadyConfirmed","type":"error"},{"inputs":[],"name":"AvoMultisigAdmin__TransactionAlreadyCreated","type":"error"},{"inputs":[],"name":"AvoMultisigAdmin__TransactionAlreadyRevoked","type":"error"},{"inputs":[],"name":"AvoMultisigAdmin__TransactionError","type":"error"},{"inputs":[],"name":"AvoMultisigAdmin__TransactionNotFoundError","type":"error"},{"inputs":[],"name":"AvoMultisigAdmin__Unauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes30","name":"hash","type":"bytes30"},{"indexed":true,"internalType":"address","name":"confirmator","type":"address"},{"indexed":false,"internalType":"uint8","name":"newConfirmationCount","type":"uint8"}],"name":"TransactionConfirmed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes30","name":"hash","type":"bytes30"},{"indexed":true,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"TransactionCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes30","name":"hash","type":"bytes30"},{"indexed":true,"internalType":"address","name":"executor","type":"address"}],"name":"TransactionExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes30","name":"hash","type":"bytes30"},{"indexed":true,"internalType":"address","name":"executor","type":"address"},{"indexed":false,"internalType":"bytes","name":"returnData","type":"bytes"}],"name":"TransactionFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes30","name":"hash","type":"bytes30"},{"indexed":true,"internalType":"address","name":"revoker","type":"address"},{"indexed":false,"internalType":"uint8","name":"newConfirmationCount","type":"uint8"}],"name":"TransactionRevoked","type":"event"},{"inputs":[],"name":"REQUIRED_CONFIRMATIONS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SIGNER_1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SIGNER_2","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SIGNER_3","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SIGNER_4","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SIGNER_5","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SIGNER_6","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"allowFailure","type":"bool"},{"internalType":"bytes","name":"callData","type":"bytes"}],"internalType":"struct AvoMultisigAdmin.Call3[]","name":"calls","type":"tuple[]"}],"name":"aggregate3","outputs":[{"components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"internalType":"struct AvoMultisigAdmin.Result[]","name":"returnData","type":"tuple[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target_","type":"address"},{"internalType":"bytes","name":"data_","type":"bytes"},{"internalType":"bytes32","name":"salt_","type":"bytes32"}],"name":"confirm","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target_","type":"address"},{"internalType":"bytes","name":"data_","type":"bytes"},{"internalType":"bytes32","name":"salt_","type":"bytes32"}],"name":"create","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes30","name":"","type":"bytes30"}],"name":"hashToTransaction","outputs":[{"internalType":"bytes30","name":"hash","type":"bytes30"},{"internalType":"uint8","name":"confirmation","type":"uint8"},{"internalType":"uint8","name":"revoke","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target_","type":"address"},{"internalType":"bytes","name":"data_","type":"bytes"},{"internalType":"bytes32","name":"salt_","type":"bytes32"}],"name":"hashTransactionData","outputs":[{"internalType":"bytes30","name":"hash_","type":"bytes30"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"target_","type":"address"},{"internalType":"bytes","name":"data_","type":"bytes"},{"internalType":"bytes32","name":"salt_","type":"bytes32"}],"name":"revoke","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes30","name":"","type":"bytes30"}],"name":"revokeTx","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes30","name":"","type":"bytes30"}],"name":"signedTx","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6101606040523480156200001257600080fd5b5060405162001dd238038062001dd283398101604081905262000035916200014e565b868686868686866001600160a01b03871615806200005a57506001600160a01b038616155b806200006d57506001600160a01b038516155b806200008057506001600160a01b038416155b806200009357506001600160a01b038316155b80620000a657506001600160a01b038216155b15620000c55760405163c3da1bbb60e01b815260040160405180910390fd5b801580620000d35750600681115b15620000f25760405163c3da1bbb60e01b815260040160405180910390fd5b6001600160a01b0396871660a05294861660c05292851660e052908416610100528316610120529091166101405260805250620001da95505050505050565b80516001600160a01b03811681146200014957600080fd5b919050565b600080600080600080600060e0888a0312156200016a57600080fd5b620001758862000131565b9650620001856020890162000131565b9550620001956040890162000131565b9450620001a56060890162000131565b9350620001b56080890162000131565b9250620001c560a0890162000131565b915060c0880151905092959891949750929550565b60805160a05160c05160e051610100516101205161014051611afd620002d5600039600081816102ae0152818161075301528181610b0601526111cd01526000818160ff0152818161071101528181610ac4015261118b01526000818161023f015281816106cf01528181610a8201526111490152600081816101ea0152818161068d01528181610a4001526111070152600081816102d50152818161064b015281816109fe01526110c50152600081816101500152818161060a015281816109bd015261108401526000818161017701528181610cfb01528181610d2301528181610e840152818161134b01526113730152611afd6000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806382ad56cb11610097578063bd5da16811610066578063bd5da168146102d0578063e9d68520146102f7578063f74f19291461033b578063f8c401eb1461034e57600080fd5b806382ad56cb14610261578063998e323714610281578063aa16aa0314610296578063b009345a146102a957600080fd5b80636096e8fa116100d35780636096e8fa146101a757806363ecbd40146101e55780636f728fd11461020c5780636fef4db91461023a57600080fd5b80630da82f3d146100fa57806350901a891461014b578063587d812714610172575b600080fd5b6101217f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101217f000000000000000000000000000000000000000000000000000000000000000081565b6101997f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610142565b6101d56101b53660046115e3565b600160209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610142565b6101217f000000000000000000000000000000000000000000000000000000000000000081565b6101d561021a3660046115e3565b600260209081526000928352604080842090915290825290205460ff1681565b6101217f000000000000000000000000000000000000000000000000000000000000000081565b61027461026f366004611616565b610401565b60405161014291906116f9565b61029461028f3660046117bc565b6105f2565b005b6102946102a43660046117bc565b6109a5565b6101217f000000000000000000000000000000000000000000000000000000000000000081565b6101217f000000000000000000000000000000000000000000000000000000000000000081565b61030a6103053660046117bc565b611036565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009091168152602001610142565b6102946103493660046117bc565b61106c565b6103bf61035c3660046118a5565b600060208190529081526040902054601081901b9060ff7e0100000000000000000000000000000000000000000000000000000000000082048116917f010000000000000000000000000000000000000000000000000000000000000090041683565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000909416845260ff9283166020850152911690820152606001610142565b606033301461043c576040517f08a7543600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818067ffffffffffffffff8111156104565761045661178d565b60405190808252806020026020018201604052801561049c57816020015b6040805180820190915260008152606060208201528152602001906001900390816104745790505b5091503660005b828110156105e95760008482815181106104bf576104bf6118c7565b602002602001015190508686838181106104db576104db6118c7565b90506020028101906104ed91906118f6565b92506104fc6020840184611934565b73ffffffffffffffffffffffffffffffffffffffff1661051f604085018561194f565b60405161052d9291906119bb565b6000604051808303816000865af19150503d806000811461056a576040519150601f19603f3d011682016040523d82523d6000602084013e61056f565b606091505b5060208084019190915290151580835290840135176105e0577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260646000fd5b506001016104a3565b50505092915050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480159061066e57503373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614155b80156106b057503373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614155b80156106f257503373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614155b801561073457503373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614155b801561077657503373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614155b156107ad576040517fef4c5ee900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006107ba848484611036565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000080821660009081526020819052604090205491925060109190911b161561082e576040517f6c58f7cb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516060810182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00008316808252600160208084018281526000858701818152858252818452878220965187549351915160109190911c7fff00000000000000000000000000000000000000000000000000000000000000909416939093177e0100000000000000000000000000000000000000000000000000000000000060ff92831602177effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0100000000000000000000000000000000000000000000000000000000000000919093160291909117909455338085528282528585208486529091529284902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016909117905591519091907fa724cdca3f5a488f820d8dd1e6b7fe700fa485891df4a3fa4043c1182cb3be8b90610997908890889088906119cb565b60405180910390a350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614801590610a2157503373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614155b8015610a6357503373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614155b8015610aa557503373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614155b8015610ae757503373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614155b8015610b2957503373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614155b15610b60576040517fef4c5ee900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610b6d848484611036565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000080821660009081526020819052604090205491925060109190911b16610be0576040517fd528864400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526001602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00008516845290915290205460ff1615610c57576040517f44d7d3fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00008082166000908152602081815260409182902082516060810184529054601081901b909416815260ff7e01000000000000000000000000000000000000000000000000000000000000850481169282018390527f0100000000000000000000000000000000000000000000000000000000000000909404909316918301919091527f00000000000000000000000000000000000000000000000000000000000000001480610d4c57507f0000000000000000000000000000000000000000000000000000000000000000816040015160ff16145b15610d83576040517ff9ed57d500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526001602081815260408084207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000087168552825290922080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016909117905581018051610df590611a0a565b60ff908116918290527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000841660009081526020818152604090912080547fff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e0100000000000000000000000000000000000000000000000000000000000090940293909317909255908201517f0000000000000000000000000000000000000000000000000000000000000000911603610fcd57600060608673ffffffffffffffffffffffffffffffffffffffff1686604051610ed39190611a50565b6000604051808303816000865af19150503d8060008114610f10576040519150601f19603f3d011682016040523d82523d6000602084013e610f15565b606091505b5090925090508115610f755760405133907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00008616907f55a64b85796ea394dde2a8833e289d982ecca7f690a0154d4144980270a5251c90600090a3610fca565b3373ffffffffffffffffffffffffffffffffffffffff168461ffff19167ffdd0f27c4147583f33e21059b14f8d4be73b91944862f54cbf7359883a8fe63083604051610fc19190611a62565b60405180910390a35b50505b60208181015160405160ff909116815233917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00008516917f82d42e37c41a74cf8e0d9362307c07a49bf37f19417315df22b5daf3b8bfeb4f91015b60405180910390a35050505050565b600083838360405160200161104d93929190611a75565b6040516020818303038152906040528051906020012090509392505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016148015906110e857503373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614155b801561112a57503373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614155b801561116c57503373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614155b80156111ae57503373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614155b80156111f057503373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614155b15611227576040517fef4c5ee900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611234848484611036565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000080821660009081526020819052604090205491925060109190911b166112a7576040517fd528864400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00008082166000908152602081815260409182902082516060810184529054601081901b909416815260ff7e01000000000000000000000000000000000000000000000000000000000000850481169282018390527f0100000000000000000000000000000000000000000000000000000000000000909404909316918301919091527f0000000000000000000000000000000000000000000000000000000000000000148061139c57507f0000000000000000000000000000000000000000000000000000000000000000816040015160ff16145b156113d3576040517ff9ed57d500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060400180516113e290611a0a565b60ff908116918290527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000084811660009081526020818152604080832080547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0100000000000000000000000000000000000000000000000000000000000000909702969096179095553382526002815284822086519093168252919091529182205416151590036114f95733600090815260026020908152604080832084517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561152b565b6040517f8a1644dc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080820151905160ff909116815233907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00008416907fa3ecce907670135c6cae05217f61effd6e4f814d8237b08ec889c26696d79cb990602001611027565b803573ffffffffffffffffffffffffffffffffffffffff811681146115ae57600080fd5b919050565b80357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000811681146115ae57600080fd5b600080604083850312156115f657600080fd5b6115ff8361158a565b915061160d602084016115b3565b90509250929050565b6000806020838503121561162957600080fd5b823567ffffffffffffffff8082111561164157600080fd5b818501915085601f83011261165557600080fd5b81358181111561166457600080fd5b8660208260051b850101111561167957600080fd5b60209290920196919550909350505050565b60005b838110156116a657818101518382015260200161168e565b50506000910152565b600081518084526116c781602086016020860161168b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561177f578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018552815180511515845287015187840187905261176c878501826116af565b9588019593505090860190600101611720565b509098975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000606084860312156117d157600080fd5b6117da8461158a565b9250602084013567ffffffffffffffff808211156117f757600080fd5b818601915086601f83011261180b57600080fd5b81358181111561181d5761181d61178d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156118635761186361178d565b8160405282815289602084870101111561187c57600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b6000602082840312156118b757600080fd5b6118c0826115b3565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261192a57600080fd5b9190910192915050565b60006020828403121561194657600080fd5b6118c08261158a565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261198457600080fd5b83018035915067ffffffffffffffff82111561199f57600080fd5b6020019150368190038213156119b457600080fd5b9250929050565b8183823760009101908152919050565b73ffffffffffffffffffffffffffffffffffffffff841681526060602082015260006119fa60608301856116af565b9050826040830152949350505050565b600060ff821660ff8103611a47577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60010192915050565b6000825161192a81846020870161168b565b6020815260006118c060208301846116af565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008460601b16815260008351611ab281601485016020880161168b565b6014920191820192909252603401939250505056fea2646970667358221220396d0366b95dcfae28e5e8ad5f21a960766eb46bdf30717ed74985c3742ffcea64736f6c6343000812003300000000000000000000000046796a42be4184337d98f691d8fe2202f9347b23000000000000000000000000b1a98bf95f5e0829dc7c06c885d736dc2acce830000000000000000000000000c0c72156c4007b727d1ca4a583d06a2ff9e554f3000000000000000000000000a7615cd307f323172331865181dc8b80a28343240000000000000000000000007284a8451d9a0e7dc62b3a71c0593ea2ec5c5638000000000000000000000000e866ece4bbd0ac75577225ee2c464ef16dc8b1f30000000000000000000000000000000000000000000000000000000000000003
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806382ad56cb11610097578063bd5da16811610066578063bd5da168146102d0578063e9d68520146102f7578063f74f19291461033b578063f8c401eb1461034e57600080fd5b806382ad56cb14610261578063998e323714610281578063aa16aa0314610296578063b009345a146102a957600080fd5b80636096e8fa116100d35780636096e8fa146101a757806363ecbd40146101e55780636f728fd11461020c5780636fef4db91461023a57600080fd5b80630da82f3d146100fa57806350901a891461014b578063587d812714610172575b600080fd5b6101217f0000000000000000000000007284a8451d9a0e7dc62b3a71c0593ea2ec5c563881565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101217f00000000000000000000000046796a42be4184337d98f691d8fe2202f9347b2381565b6101997f000000000000000000000000000000000000000000000000000000000000000381565b604051908152602001610142565b6101d56101b53660046115e3565b600160209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610142565b6101217f000000000000000000000000c0c72156c4007b727d1ca4a583d06a2ff9e554f381565b6101d561021a3660046115e3565b600260209081526000928352604080842090915290825290205460ff1681565b6101217f000000000000000000000000a7615cd307f323172331865181dc8b80a283432481565b61027461026f366004611616565b610401565b60405161014291906116f9565b61029461028f3660046117bc565b6105f2565b005b6102946102a43660046117bc565b6109a5565b6101217f000000000000000000000000e866ece4bbd0ac75577225ee2c464ef16dc8b1f381565b6101217f000000000000000000000000b1a98bf95f5e0829dc7c06c885d736dc2acce83081565b61030a6103053660046117bc565b611036565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009091168152602001610142565b6102946103493660046117bc565b61106c565b6103bf61035c3660046118a5565b600060208190529081526040902054601081901b9060ff7e0100000000000000000000000000000000000000000000000000000000000082048116917f010000000000000000000000000000000000000000000000000000000000000090041683565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000909416845260ff9283166020850152911690820152606001610142565b606033301461043c576040517f08a7543600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818067ffffffffffffffff8111156104565761045661178d565b60405190808252806020026020018201604052801561049c57816020015b6040805180820190915260008152606060208201528152602001906001900390816104745790505b5091503660005b828110156105e95760008482815181106104bf576104bf6118c7565b602002602001015190508686838181106104db576104db6118c7565b90506020028101906104ed91906118f6565b92506104fc6020840184611934565b73ffffffffffffffffffffffffffffffffffffffff1661051f604085018561194f565b60405161052d9291906119bb565b6000604051808303816000865af19150503d806000811461056a576040519150601f19603f3d011682016040523d82523d6000602084013e61056f565b606091505b5060208084019190915290151580835290840135176105e0577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260646000fd5b506001016104a3565b50505092915050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000046796a42be4184337d98f691d8fe2202f9347b23161480159061066e57503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000b1a98bf95f5e0829dc7c06c885d736dc2acce8301614155b80156106b057503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000c0c72156c4007b727d1ca4a583d06a2ff9e554f31614155b80156106f257503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000a7615cd307f323172331865181dc8b80a28343241614155b801561073457503373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000007284a8451d9a0e7dc62b3a71c0593ea2ec5c56381614155b801561077657503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000e866ece4bbd0ac75577225ee2c464ef16dc8b1f31614155b156107ad576040517fef4c5ee900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006107ba848484611036565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000080821660009081526020819052604090205491925060109190911b161561082e576040517f6c58f7cb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516060810182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00008316808252600160208084018281526000858701818152858252818452878220965187549351915160109190911c7fff00000000000000000000000000000000000000000000000000000000000000909416939093177e0100000000000000000000000000000000000000000000000000000000000060ff92831602177effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0100000000000000000000000000000000000000000000000000000000000000919093160291909117909455338085528282528585208486529091529284902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016909117905591519091907fa724cdca3f5a488f820d8dd1e6b7fe700fa485891df4a3fa4043c1182cb3be8b90610997908890889088906119cb565b60405180910390a350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000046796a42be4184337d98f691d8fe2202f9347b231614801590610a2157503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000b1a98bf95f5e0829dc7c06c885d736dc2acce8301614155b8015610a6357503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000c0c72156c4007b727d1ca4a583d06a2ff9e554f31614155b8015610aa557503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000a7615cd307f323172331865181dc8b80a28343241614155b8015610ae757503373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000007284a8451d9a0e7dc62b3a71c0593ea2ec5c56381614155b8015610b2957503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000e866ece4bbd0ac75577225ee2c464ef16dc8b1f31614155b15610b60576040517fef4c5ee900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610b6d848484611036565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000080821660009081526020819052604090205491925060109190911b16610be0576040517fd528864400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526001602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00008516845290915290205460ff1615610c57576040517f44d7d3fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00008082166000908152602081815260409182902082516060810184529054601081901b909416815260ff7e01000000000000000000000000000000000000000000000000000000000000850481169282018390527f0100000000000000000000000000000000000000000000000000000000000000909404909316918301919091527f00000000000000000000000000000000000000000000000000000000000000031480610d4c57507f0000000000000000000000000000000000000000000000000000000000000003816040015160ff16145b15610d83576040517ff9ed57d500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526001602081815260408084207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000087168552825290922080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016909117905581018051610df590611a0a565b60ff908116918290527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000841660009081526020818152604090912080547fff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e0100000000000000000000000000000000000000000000000000000000000090940293909317909255908201517f0000000000000000000000000000000000000000000000000000000000000003911603610fcd57600060608673ffffffffffffffffffffffffffffffffffffffff1686604051610ed39190611a50565b6000604051808303816000865af19150503d8060008114610f10576040519150601f19603f3d011682016040523d82523d6000602084013e610f15565b606091505b5090925090508115610f755760405133907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00008616907f55a64b85796ea394dde2a8833e289d982ecca7f690a0154d4144980270a5251c90600090a3610fca565b3373ffffffffffffffffffffffffffffffffffffffff168461ffff19167ffdd0f27c4147583f33e21059b14f8d4be73b91944862f54cbf7359883a8fe63083604051610fc19190611a62565b60405180910390a35b50505b60208181015160405160ff909116815233917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00008516917f82d42e37c41a74cf8e0d9362307c07a49bf37f19417315df22b5daf3b8bfeb4f91015b60405180910390a35050505050565b600083838360405160200161104d93929190611a75565b6040516020818303038152906040528051906020012090509392505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000046796a42be4184337d98f691d8fe2202f9347b2316148015906110e857503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000b1a98bf95f5e0829dc7c06c885d736dc2acce8301614155b801561112a57503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000c0c72156c4007b727d1ca4a583d06a2ff9e554f31614155b801561116c57503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000a7615cd307f323172331865181dc8b80a28343241614155b80156111ae57503373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000007284a8451d9a0e7dc62b3a71c0593ea2ec5c56381614155b80156111f057503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000e866ece4bbd0ac75577225ee2c464ef16dc8b1f31614155b15611227576040517fef4c5ee900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611234848484611036565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000080821660009081526020819052604090205491925060109190911b166112a7576040517fd528864400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00008082166000908152602081815260409182902082516060810184529054601081901b909416815260ff7e01000000000000000000000000000000000000000000000000000000000000850481169282018390527f0100000000000000000000000000000000000000000000000000000000000000909404909316918301919091527f0000000000000000000000000000000000000000000000000000000000000003148061139c57507f0000000000000000000000000000000000000000000000000000000000000003816040015160ff16145b156113d3576040517ff9ed57d500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060400180516113e290611a0a565b60ff908116918290527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000084811660009081526020818152604080832080547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0100000000000000000000000000000000000000000000000000000000000000909702969096179095553382526002815284822086519093168252919091529182205416151590036114f95733600090815260026020908152604080832084517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561152b565b6040517f8a1644dc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080820151905160ff909116815233907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00008416907fa3ecce907670135c6cae05217f61effd6e4f814d8237b08ec889c26696d79cb990602001611027565b803573ffffffffffffffffffffffffffffffffffffffff811681146115ae57600080fd5b919050565b80357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000811681146115ae57600080fd5b600080604083850312156115f657600080fd5b6115ff8361158a565b915061160d602084016115b3565b90509250929050565b6000806020838503121561162957600080fd5b823567ffffffffffffffff8082111561164157600080fd5b818501915085601f83011261165557600080fd5b81358181111561166457600080fd5b8660208260051b850101111561167957600080fd5b60209290920196919550909350505050565b60005b838110156116a657818101518382015260200161168e565b50506000910152565b600081518084526116c781602086016020860161168b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561177f578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018552815180511515845287015187840187905261176c878501826116af565b9588019593505090860190600101611720565b509098975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000606084860312156117d157600080fd5b6117da8461158a565b9250602084013567ffffffffffffffff808211156117f757600080fd5b818601915086601f83011261180b57600080fd5b81358181111561181d5761181d61178d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156118635761186361178d565b8160405282815289602084870101111561187c57600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b6000602082840312156118b757600080fd5b6118c0826115b3565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261192a57600080fd5b9190910192915050565b60006020828403121561194657600080fd5b6118c08261158a565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261198457600080fd5b83018035915067ffffffffffffffff82111561199f57600080fd5b6020019150368190038213156119b457600080fd5b9250929050565b8183823760009101908152919050565b73ffffffffffffffffffffffffffffffffffffffff841681526060602082015260006119fa60608301856116af565b9050826040830152949350505050565b600060ff821660ff8103611a47577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60010192915050565b6000825161192a81846020870161168b565b6020815260006118c060208301846116af565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008460601b16815260008351611ab281601485016020880161168b565b6014920191820192909252603401939250505056fea2646970667358221220396d0366b95dcfae28e5e8ad5f21a960766eb46bdf30717ed74985c3742ffcea64736f6c63430008120033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000046796a42be4184337d98f691d8fe2202f9347b23000000000000000000000000b1a98bf95f5e0829dc7c06c885d736dc2acce830000000000000000000000000c0c72156c4007b727d1ca4a583d06a2ff9e554f3000000000000000000000000a7615cd307f323172331865181dc8b80a28343240000000000000000000000007284a8451d9a0e7dc62b3a71c0593ea2ec5c5638000000000000000000000000e866ece4bbd0ac75577225ee2c464ef16dc8b1f30000000000000000000000000000000000000000000000000000000000000003
-----Decoded View---------------
Arg [0] : signer1_ (address): 0x46796A42Be4184337d98f691D8FE2202f9347b23
Arg [1] : signer2_ (address): 0xb1a98BF95F5E0829Dc7c06C885d736dC2aCcE830
Arg [2] : signer3_ (address): 0xC0c72156C4007B727d1CA4A583d06A2fF9E554F3
Arg [3] : signer4_ (address): 0xa7615CD307F323172331865181DC8b80a2834324
Arg [4] : signer5_ (address): 0x7284a8451d9a0e7Dc62B3a71C0593eA2eC5c5638
Arg [5] : signer6_ (address): 0xe866ecE4bbD0Ac75577225Ee2C464ef16DC8b1F3
Arg [6] : requiredConfirmations_ (uint256): 3
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 00000000000000000000000046796a42be4184337d98f691d8fe2202f9347b23
Arg [1] : 000000000000000000000000b1a98bf95f5e0829dc7c06c885d736dc2acce830
Arg [2] : 000000000000000000000000c0c72156c4007b727d1ca4a583d06a2ff9e554f3
Arg [3] : 000000000000000000000000a7615cd307f323172331865181dc8b80a2834324
Arg [4] : 0000000000000000000000007284a8451d9a0e7dc62b3a71c0593ea2ec5c5638
Arg [5] : 000000000000000000000000e866ece4bbd0ac75577225ee2c464ef16dc8b1f3
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000003
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.