Source Code
Latest 7 from a total of 7 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Submit Transacti... | 7546005 | 2517 days ago | IN | 0 ETH | 0.00325224 | ||||
| Submit Transacti... | 7546003 | 2517 days ago | IN | 0 ETH | 0.00296938 | ||||
| Submit Transacti... | 7321938 | 2552 days ago | IN | 0 ETH | 0.0013357 | ||||
| Submit Transacti... | 6962856 | 2622 days ago | IN | 0 ETH | 0.0004579 | ||||
| Submit Transacti... | 6962853 | 2622 days ago | IN | 0 ETH | 0.00046722 | ||||
| Submit Transacti... | 6962841 | 2622 days ago | IN | 0 ETH | 0.00041824 | ||||
| Transfer | 6944129 | 2625 days ago | IN | 0.01 ETH | 0.00006726 |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x36d3F1c3...176618805 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
IvtMultiSigWallet
Compiler Version
v0.4.24-nightly.2018.5.9+commit.1e953355
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2018-12-06
*/
pragma solidity ^0.4.21;
library RLPEncode {
uint8 constant STRING_SHORT_PREFIX = 0x80;
uint8 constant STRING_LONG_PREFIX = 0xb7;
uint8 constant LIST_SHORT_PREFIX = 0xc0;
uint8 constant LIST_LONG_PREFIX = 0xf7;
/// @dev Rlp encodes a bytes
/// @param self The bytes to be encoded
/// @return The rlp encoded bytes
function encodeBytes(bytes memory self) internal constant returns (bytes) {
bytes memory encoded;
if(self.length == 1 && uint(self[0]) < 0x80) {
encoded = new bytes(1);
encoded = self;
} else {
encoded = encode(self, STRING_SHORT_PREFIX, STRING_LONG_PREFIX);
}
return encoded;
}
/// @dev Rlp encodes a bytes[]. Note that the items in the bytes[] will not automatically be rlp encoded.
/// @param self The bytes[] to be encoded
/// @return The rlp encoded bytes[]
function encodeList(bytes[] memory self) internal constant returns (bytes) {
bytes memory list = flatten(self);
bytes memory encoded = encode(list, LIST_SHORT_PREFIX, LIST_LONG_PREFIX);
return encoded;
}
function encode(bytes memory self, uint8 prefix1, uint8 prefix2) private constant returns (bytes) {
uint selfPtr;
assembly { selfPtr := add(self, 0x20) }
bytes memory encoded;
uint encodedPtr;
uint len = self.length;
uint lenLen;
uint i = 0x1;
while(len/i != 0) {
lenLen++;
i *= 0x100;
}
if(len <= 55) {
encoded = new bytes(len+1);
// length encoding byte
encoded[0] = byte(prefix1+len);
// string/list contents
assembly { encodedPtr := add(encoded, 0x21) }
memcpy(encodedPtr, selfPtr, len);
} else {
// 1 is the length of the length of the length
encoded = new bytes(1+lenLen+len);
// length of the length encoding byte
encoded[0] = byte(prefix2+lenLen);
// length bytes
for(i=1; i<=lenLen; i++) {
encoded[i] = byte((len/(0x100**(lenLen-i)))%0x100);
}
// string/list contents
assembly { encodedPtr := add(add(encoded, 0x21), lenLen) }
memcpy(encodedPtr, selfPtr, len);
}
return encoded;
}
function flatten(bytes[] memory self) private constant returns (bytes) {
if(self.length == 0) {
return new bytes(0);
}
uint len;
for(uint i=0; i<self.length; i++) {
len += self[i].length;
}
bytes memory flattened = new bytes(len);
uint flattenedPtr;
assembly { flattenedPtr := add(flattened, 0x20) }
for(i=0; i<self.length; i++) {
bytes memory item = self[i];
uint selfPtr;
assembly { selfPtr := add(item, 0x20)}
memcpy(flattenedPtr, selfPtr, item.length);
flattenedPtr += self[i].length;
}
return flattened;
}
/// This function is from Nick Johnson's string utils library
function memcpy(uint dest, uint src, uint len) private {
// Copy word-length chunks while possible
for(; len >= 32; len -= 32) {
assembly {
mstore(dest, mload(src))
}
dest += 32;
src += 32;
}
// Copy remaining bytes
uint mask = 256 ** (32 - len) - 1;
assembly {
let srcpart := and(mload(src), not(mask))
let destpart := and(mload(dest), mask)
mstore(dest, or(destpart, srcpart))
}
}
function strToBytes(string data)internal pure returns (bytes){
uint _ascii_0 = 48;
uint _ascii_A = 65;
uint _ascii_a = 97;
bytes memory a = bytes(data);
uint[] memory b = new uint[](a.length);
for (uint i = 0; i < a.length; i++) {
uint _a = uint(a[i]);
if (_a > 96) {
b[i] = _a - 97 + 10;
}
else if (_a > 66) {
b[i] = _a - 65 + 10;
}
else {
b[i] = _a - 48;
}
}
bytes memory c = new bytes(b.length / 2);
for (uint _i = 0; _i < b.length; _i += 2) {
c[_i / 2] = byte(b[_i] * 16 + b[_i + 1]);
}
return c;
}
function bytesToUint(bytes b) internal pure returns (uint256){
uint256 number;
for(uint i=0;i<b.length;i++){
number = number + uint(b[i])*(2**(8*(b.length-(i+1))));
}
return number;
}
function addressToBytes(address a) internal pure returns (bytes b){
assembly {
let m := mload(0x40)
mstore(add(m, 20), xor(0x140000000000000000000000000000000000000000, a))
mstore(0x40, add(m, 52))
b := m
}
}
function stringToUint(string s) internal pure returns (uint) {
bytes memory b = bytes(s);
uint result = 0;
for (uint i = 0; i < b.length; i++) {
if (b[i] >= 48 && b[i] <= 57){
result = result * 16 + (uint(b[i]) - 48); // bytes and int are not compatible with the operator -.
}
else if(b[i] >= 97 && b[i] <= 122)
{
result = result * 16 + (uint(b[i]) - 87);
}
}
return result;
}
function subString(string str, uint startIndex, uint endIndex) internal pure returns (string) {
bytes memory strBytes = bytes(str);
if(strBytes.length !=48){revert();}
bytes memory result = new bytes(endIndex-startIndex);
for(uint i = startIndex; i < endIndex; i++) {
result[i-startIndex] = strBytes[i];
}
return string(result);
}
function strConcat(string _a, string _b) internal pure returns (string){
bytes memory _ba = bytes(_a);
bytes memory _bb = bytes(_b);
string memory ab = new string(_ba.length + _bb.length);
bytes memory bab = bytes(ab);
uint k = 0;
for (uint i = 0; i < _ba.length; i++) bab[k++] = _ba[i];
for (i = 0; i < _bb.length; i++) bab[k++] = _bb[i];
return string(bab);
}
function stringToAddr(string _input) internal pure returns (address){
string memory _a = strConcat("0x",_input);
bytes memory tmp = bytes(_a);
uint160 iaddr = 0;
uint160 b1;
uint160 b2;
for (uint i=2; i<2+2*20; i+=2){
iaddr *= 256;
b1 = uint160(tmp[i]);
b2 = uint160(tmp[i+1]);
if ((b1 >= 97)&&(b1 <= 102)) b1 -= 87;
else if ((b1 >= 48)&&(b1 <= 57)) b1 -= 48;
if ((b2 >= 97)&&(b2 <= 102)) b2 -= 87;
else if ((b2 >= 48)&&(b2 <= 57)) b2 -= 48;
iaddr += (b1*16+b2);
}
return address(iaddr);
}
}
contract IvtMultiSigWallet {
event Deposit(address _sender, uint256 _value);
event Transacted(address _to, address _tokenContractAddress, uint256 _value);
event SafeModeActivated(address _sender);
event Kill(address _safeAddress, uint256 _value);
event Debuglog(address _address,bool _flag0,bool _flag1);
mapping (address => bool) private signers;
mapping (uint256 => bool) private transactions;
mapping (address => bool) private signedAddresses;
address private owner;
bool private safeMode;
uint8 private required;
uint8 private safeModeConfirmed;
address private safeAddress;
modifier onlyOwner {
require(owner == msg.sender);
_;
}
constructor(address[] _signers, uint8 _required) public{
require(_required <= _signers.length && _required > 0 && _signers.length > 0);
for (uint8 i = 0; i < _signers.length; i++){
require(_signers[i] != address(0));
signers[_signers[i]] = true;
}
required = _required;
owner = msg.sender;
safeMode = false;
safeModeConfirmed = 0;
safeAddress = 0;
}
function() payable public{
if (msg.value > 0)
emit Deposit(msg.sender, msg.value);
}
function submitTransaction(address _destination, string _value, string _strTransactionData, uint8[] _v, bytes32[] _r, bytes32[] _s) onlyOwner public{
processAndCheckParam(_destination, _strTransactionData, _v, _r, _s);
uint256 transactionValue = RLPEncode.stringToUint(_value);
bytes32 _msgHash = getMsgHash(_destination, _value, _strTransactionData);
verifySignatures(_msgHash, _v, _r, _s);
_destination.transfer(transactionValue);
emit Transacted(_destination, 0, transactionValue);
}
function submitTransactionToken(address _destination, address _tokenContractAddress, string _value, string _strTransactionData, uint8[] _v, bytes32[] _r,bytes32[] _s) onlyOwner public{
processAndCheckParam(_destination, _strTransactionData, _v, _r, _s);
uint256 transactionValue = RLPEncode.stringToUint(_value);
bytes32 _msgHash = getMsgHash(_destination, _value, _strTransactionData);
verifySignatures(_msgHash, _v, _r, _s);
ERC20Interface instance = ERC20Interface(_tokenContractAddress);
require(instance.transfer(_destination, transactionValue));
emit Transacted(_destination, _tokenContractAddress, transactionValue);
}
function confirmTransaction(address _safeAddress) public{
require(safeMode && signers[msg.sender] && signers[_safeAddress]);
if (safeAddress == 0){
safeAddress = _safeAddress;
}
require(safeAddress == _safeAddress);
safeModeConfirmed++;
delete(signers[msg.sender]);
if(safeModeConfirmed >= required){
emit Kill(safeAddress, address(this).balance);
selfdestruct(safeAddress);
}
}
function activateSafeMode() onlyOwner public {
safeMode = true;
emit SafeModeActivated(msg.sender);
}
function getMsgHash(address _destination, string _value, string _strTransactionData) constant internal returns (bytes32){
bytes[] memory rawTx = new bytes[](9);
bytes[] memory bytesArray = new bytes[](9);
rawTx[0] = hex"09";
rawTx[1] = hex"09502f9000";
rawTx[2] = hex"5208";
rawTx[3] = RLPEncode.addressToBytes(_destination);
rawTx[4] = RLPEncode.strToBytes(_value);
rawTx[5] = RLPEncode.strToBytes(_strTransactionData);
rawTx[6] = hex"01"; //03=testnet,01=mainnet
for(uint8 i = 0; i < 9; i++){
bytesArray[i] = RLPEncode.encodeBytes(rawTx[i]);
}
bytes memory bytesList = RLPEncode.encodeList(bytesArray);
return keccak256(bytesList);
}
function processAndCheckParam(address _destination, string _strTransactionData, uint8[] _v, bytes32[] _r, bytes32[] _s) internal{
require(!safeMode && _destination != 0 && _destination != address(this) && _v.length == _r.length && _v.length == _s.length && _v.length > 0);
string memory strTransactionTime = RLPEncode.subString(_strTransactionData, 40, 48);
uint256 transactionTime = RLPEncode.stringToUint(strTransactionTime);
require(!transactions[transactionTime]);
string memory strTransactionAddress = RLPEncode.subString(_strTransactionData, 0, 40);
address contractAddress = RLPEncode.stringToAddr(strTransactionAddress);
require(contractAddress == address(this));
transactions[transactionTime] = true;
}
function verifySignatures(bytes32 _msgHash, uint8[] _v, bytes32[] _r,bytes32[] _s) internal{
uint8 hasConfirmed = 0;
address[] memory tempAddresses = new address[](_v.length);
address tempAddress;
for (uint8 i = 0; i < _v.length; i++){
tempAddress = ecrecover(_msgHash, _v[i], _r[i], _s[i]);
tempAddresses[i] = tempAddress;
require(signers[tempAddress] && (!signedAddresses[tempAddress]));
emit Debuglog(tempAddresses[i],signers[tempAddress],!signedAddresses[tempAddress]);
signedAddresses[tempAddress] = true;
hasConfirmed++;
}
for (uint8 j = 0; j < _v.length; j++){
delete signedAddresses[tempAddresses[j]];
}
require(hasConfirmed >= required);
}
}
contract ERC20Interface {
function transfer(address _to, uint256 _value) public returns (bool success);
function balanceOf(address _owner) public constant returns (uint256 balance);
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":false,"inputs":[{"name":"_safeAddress","type":"address"}],"name":"confirmTransaction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_destination","type":"address"},{"name":"_tokenContractAddress","type":"address"},{"name":"_value","type":"string"},{"name":"_strTransactionData","type":"string"},{"name":"_v","type":"uint8[]"},{"name":"_r","type":"bytes32[]"},{"name":"_s","type":"bytes32[]"}],"name":"submitTransactionToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_destination","type":"address"},{"name":"_value","type":"string"},{"name":"_strTransactionData","type":"string"},{"name":"_v","type":"uint8[]"},{"name":"_r","type":"bytes32[]"},{"name":"_s","type":"bytes32[]"}],"name":"submitTransaction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"activateSafeMode","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_signers","type":"address[]"},{"name":"_required","type":"uint8"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_sender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_to","type":"address"},{"indexed":false,"name":"_tokenContractAddress","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transacted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_sender","type":"address"}],"name":"SafeModeActivated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_safeAddress","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Kill","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_address","type":"address"},{"indexed":false,"name":"_flag0","type":"bool"},{"indexed":false,"name":"_flag1","type":"bool"}],"name":"Debuglog","type":"event"}]Contract Creation Code
0x60806040523480156200001157600080fd5b50604051620028b9380380620028b98339810180604052810190808051820192919060200180519060200190929190505050600082518260ff16111580156200005d575060008260ff16115b80156200006b575060008351115b15156200007757600080fd5b600090505b82518160ff1610156200016157600073ffffffffffffffffffffffffffffffffffffffff16838260ff16815181101515620000b357fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614151515620000e157600080fd5b6001600080858460ff16815181101515620000f857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806001019150506200007c565b81600360156101000a81548160ff021916908360ff16021790555033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360146101000a81548160ff0219169083151502179055506000600360166101000a81548160ff021916908360ff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505061267080620002496000396000f300608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634b7b2ed1146100d957806396fef3f11461011c578063fc09ff9e146102d4578063fc0f392d1461046c575b60003411156100d7577fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c3334604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b005b3480156100e557600080fd5b5061011a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610483565b005b34801561012857600080fd5b506102d2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506107b4565b005b3480156102e057600080fd5b5061046a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506109dd565b005b34801561047857600080fd5b50610481610b48565b005b600360149054906101000a900460ff1680156104e757506000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561053b57506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b151561054657600080fd5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156105c95780600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561062557600080fd5b6003601681819054906101000a900460ff168092919060010191906101000a81548160ff021916908360ff160217905550506000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055600360159054906101000a900460ff1660ff16600360169054906101000a900460ff1660ff161015156107b1577f81cefddd1e92b9503b5e7278f343418c2e6b39262d42dd97531b7828363adfeb600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1631604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b50565b60008060003373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561081557600080fd5b6108228a88888888610c24565b61082b88610d9b565b92506108388a8989611180565b91506108468287878761148a565b8890508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8b856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156108ec57600080fd5b505af1158015610900573d6000803e3d6000fd5b505050506040513d602081101561091657600080fd5b8101908080519060200190929190505050151561093257600080fd5b7f13d158990ef9ffe9e1dd9aebb7d0500ff5ca2ee1b5ce46f5f668877376374cd28a8a85604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a150505050505050505050565b6000803373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610a3c57600080fd5b610a498887878787610c24565b610a5287610d9b565b9150610a5f888888611180565b9050610a6d8186868661148a565b8773ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015610ab3573d6000803e3d6000fd5b507f13d158990ef9ffe9e1dd9aebb7d0500ff5ca2ee1b5ce46f5f668877376374cd288600084604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a15050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610ba457600080fd5b6001600360146101000a81548160ff0219169083151502179055507f0909e8f76a4fd3e970f2eaef56c0ee6dfaf8b87c5b8d3f56ffce78e825a9115733604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6060600060606000600360149054906101000a900460ff16158015610c60575060008973ffffffffffffffffffffffffffffffffffffffff1614155b8015610c9857503073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b8015610ca5575085518751145b8015610cb2575084518751145b8015610cbf575060008751115b1515610cca57600080fd5b610cd788602860306118f6565b9350610ce284610d9b565b92506001600084815260200190815260200160002060009054906101000a900460ff16151515610d1157600080fd5b610d1e88600060286118f6565b9150610d2982611a07565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610d6557600080fd5b600180600085815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050505050565b6000606060008084925060009150600090505b82518110156111755760307f0100000000000000000000000000000000000000000000000000000000000000028382815181101515610de957fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191610158015610f01575060397f0100000000000000000000000000000000000000000000000000000000000000028382815181101515610e9157fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191611155b15610f915760308382815181101515610f1657fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f010000000000000000000000000000000000000000000000000000000000000090040360108302019150611168565b60617f0100000000000000000000000000000000000000000000000000000000000000028382815181101515610fc357fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916101580156110db5750607a7f010000000000000000000000000000000000000000000000000000000000000002838281518110151561106b57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191611155b1561116757605783828151811015156110f057fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900403601083020191505b5b8080600101915050610dae565b819350505050919050565b60006060806000606060096040519080825280602002602001820160405280156111be57816020015b60608152602001906001900390816111a95790505b50935060096040519080825280602002602001820160405280156111f657816020015b60608152602001906001900390816111e15790505b5092506040805190810160405280600181526020017f090000000000000000000000000000000000000000000000000000000000000081525084600081518110151561123e57fe5b906020019060200201819052506040805190810160405280600581526020017f09502f900000000000000000000000000000000000000000000000000000000081525084600181518110151561129057fe5b906020019060200201819052506040805190810160405280600281526020017f52080000000000000000000000000000000000000000000000000000000000008152508460028151811015156112e257fe5b906020019060200201819052506112f888611cc3565b84600381518110151561130757fe5b9060200190602002018190525061131d87611cf5565b84600481518110151561132c57fe5b9060200190602002018190525061134286611cf5565b84600581518110151561135157fe5b906020019060200201819052506040805190810160405280600181526020017f01000000000000000000000000000000000000000000000000000000000000008152508460068151811015156113a357fe5b90602001906020020181905250600091505b60098260ff16101561140f576113e4848360ff168151811015156113d557fe5b90602001906020020151611f75565b838360ff168151811015156113f557fe5b9060200190602002018190525081806001019250506113b5565b61141883612062565b9050806040518082805190602001908083835b602083101515611450578051825260208201915060208101905060208303925061142b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209450505050509392505050565b60006060600080600080945087516040519080825280602002602001820160405280156114c65781602001602082028038833980820191505090505b509350600091505b87518260ff16101561184057600189898460ff168151811015156114ee57fe5b90602001906020020151898560ff1681518110151561150957fe5b90602001906020020151898660ff1681518110151561152457fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af115801561159f573d6000803e3d6000fd5b50505060206040510351925082848360ff168151811015156115bd57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561169b5750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15156116a657600080fd5b7fda5a683a17117300c8b699f080dfb94d637712e8c949639fbf139c0953a05428848360ff168151811015156116d857fe5b906020019060200201516000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018315151515815260200182151515158152602001935050505060405180910390a16001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550848060010195505081806001019250506114ce565b600090505b87518160ff1610156118c75760026000858360ff1681518110151561186657fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558080600101915050611845565b600360159054906101000a900460ff1660ff168560ff16101515156118eb57600080fd5b505050505050505050565b606080606060008692506030835114151561191057600080fd5b8585036040519080825280601f01601f1916602001820160405280156119455781602001602082028038833980820191505090505b5091508590505b848110156119fa57828181518110151561196257fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002828783038151811015156119bd57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808060010191505061194c565b8193505050509392505050565b6000606080600080600080611a516040805190810160405280600281526020017f30780000000000000000000000000000000000000000000000000000000000008152508961208b565b955085945060009350600290505b602a811015611cb557610100840293508481815181101515611a7d57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900492508460018201815181101515611afe57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f01000000000000000000000000000000000000000000000000000000000000009004915060618373ffffffffffffffffffffffffffffffffffffffff1610158015611bac575060668373ffffffffffffffffffffffffffffffffffffffff1611155b15611bbc57605783039250611c07565b60308373ffffffffffffffffffffffffffffffffffffffff1610158015611bfa575060398373ffffffffffffffffffffffffffffffffffffffff1611155b15611c06576030830392505b5b60618273ffffffffffffffffffffffffffffffffffffffff1610158015611c45575060668273ffffffffffffffffffffffffffffffffffffffff1611155b15611c5557605782039150611ca0565b60308273ffffffffffffffffffffffffffffffffffffffff1610158015611c93575060398273ffffffffffffffffffffffffffffffffffffffff1611155b15611c9f576030820391505b5b81601084020184019350600281019050611a5f565b839650505050505050919050565b606060405182741400000000000000000000000000000000000000001860148201526034810160405280915050919050565b60606000806000606080600080606060006030985060419750606196508a95508551604051908082528060200260200182016040528015611d455781602001602082028038833980820191505090505b509450600093505b8551841015611e65578584815181101515611d6457fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900492506060831115611e0557600a60618403018585815181101515611df257fe5b9060200190602002018181525050611e58565b6042831115611e3657600a60418403018585815181101515611e2357fe5b9060200190602002018181525050611e57565b603083038585815181101515611e4857fe5b90602001906020020181815250505b5b8380600101945050611d4d565b60028551811515611e7257fe5b046040519080825280601f01601f191660200182016040528015611ea55781602001602082028038833980820191505090505b509150600090505b8451811015611f64578460018201815181101515611ec757fe5b9060200190602002015160108683815181101515611ee157fe5b9060200190602002015102017f01000000000000000000000000000000000000000000000000000000000000000282600283811515611f1c57fe5b04815181101515611f2957fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600281019050611ead565b819950505050505050505050919050565b6060806001835114801561200557506080836000815181101515611f9557fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f01000000000000000000000000000000000000000000000000000000000000009004105b156120495760016040519080825280601f01601f19166020018201604052801561203e5781602001602082028038833980820191505090505b509050829050612059565b61205683608060b761225c565b90505b80915050919050565b6060806060612070846124c0565b915061207f8260c060f761225c565b90508092505050919050565b606080606080606060008088955087945084518651016040519080825280601f01601f1916602001820160405280156120d35781602001602082028038833980820191505090505b50935083925060009150600090505b85518110156121955785818151811015156120f957fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838380600101945081518110151561215857fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806001019150506120e2565b600090505b845181101561224d5784818151811015156121b157fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838380600101945081518110151561221057fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808060010191505061219a565b82965050505050505092915050565b60606000606060008060008060208a01955089519250600190505b6000818481151561228457fe5b041415156122a057818060010192505061010081029050612277565b60378311151561236057600183016040519080825280601f01601f1916602001820160405280156122e05781602001602082028038833980820191505090505b509450828960ff16017f01000000000000000000000000000000000000000000000000000000000000000285600081518110151561231a57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060218501935061235b8487856125f9565b6124b0565b8282600101016040519080825280601f01601f1916602001820160405280156123985781602001602082028038833980820191505090505b509450818860ff16017f0100000000000000000000000000000000000000000000000000000000000000028560008151811015156123d257fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190505b818111151561249c576101008183036101000a8481151561242457fe5b0481151561242e57fe5b067f010000000000000000000000000000000000000000000000000000000000000002858281518110151561245f57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050612407565b81602186010193506124af8487856125f9565b5b8496505050505050509392505050565b6060600080606060006060600080885114156125125760006040519080825280601f01601f19166020018201604052801561250a5781602001602082028038833980820191505090505b5096506125ee565b600094505b875185101561254a57878581518110151561252e57fe5b9060200190602002015151860195508480600101955050612517565b856040519080825280601f01601f19166020018201604052801561257d5781602001602082028038833980820191505090505b509350602084019250600094505b87518510156125ea5787858151811015156125a257fe5b9060200190602002015191506020820190506125c0838284516125f9565b87858151811015156125ce57fe5b906020019060200201515183019250848060010195505061258b565b8396505b505050505050919050565b60005b60208210151561262157825184526020840193506020830192506020820391506125fc565b6001826020036101000a03905080198351168185511681811786525050505050505600a165627a7a7230582062f203c9be28a50511f39febde6a79ce75ca48693b9b8a46086f9e3ffba3ad1500290000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000002ee2556e93839bdf917b8b3f546395c2bcecf36800000000000000000000000072bb5a87e3005305d6268178abe70376edb16fd0
Deployed Bytecode
0x608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634b7b2ed1146100d957806396fef3f11461011c578063fc09ff9e146102d4578063fc0f392d1461046c575b60003411156100d7577fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c3334604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b005b3480156100e557600080fd5b5061011a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610483565b005b34801561012857600080fd5b506102d2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506107b4565b005b3480156102e057600080fd5b5061046a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506109dd565b005b34801561047857600080fd5b50610481610b48565b005b600360149054906101000a900460ff1680156104e757506000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561053b57506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b151561054657600080fd5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156105c95780600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561062557600080fd5b6003601681819054906101000a900460ff168092919060010191906101000a81548160ff021916908360ff160217905550506000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055600360159054906101000a900460ff1660ff16600360169054906101000a900460ff1660ff161015156107b1577f81cefddd1e92b9503b5e7278f343418c2e6b39262d42dd97531b7828363adfeb600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1631604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b50565b60008060003373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561081557600080fd5b6108228a88888888610c24565b61082b88610d9b565b92506108388a8989611180565b91506108468287878761148a565b8890508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8b856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156108ec57600080fd5b505af1158015610900573d6000803e3d6000fd5b505050506040513d602081101561091657600080fd5b8101908080519060200190929190505050151561093257600080fd5b7f13d158990ef9ffe9e1dd9aebb7d0500ff5ca2ee1b5ce46f5f668877376374cd28a8a85604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a150505050505050505050565b6000803373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610a3c57600080fd5b610a498887878787610c24565b610a5287610d9b565b9150610a5f888888611180565b9050610a6d8186868661148a565b8773ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015610ab3573d6000803e3d6000fd5b507f13d158990ef9ffe9e1dd9aebb7d0500ff5ca2ee1b5ce46f5f668877376374cd288600084604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a15050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610ba457600080fd5b6001600360146101000a81548160ff0219169083151502179055507f0909e8f76a4fd3e970f2eaef56c0ee6dfaf8b87c5b8d3f56ffce78e825a9115733604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6060600060606000600360149054906101000a900460ff16158015610c60575060008973ffffffffffffffffffffffffffffffffffffffff1614155b8015610c9857503073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b8015610ca5575085518751145b8015610cb2575084518751145b8015610cbf575060008751115b1515610cca57600080fd5b610cd788602860306118f6565b9350610ce284610d9b565b92506001600084815260200190815260200160002060009054906101000a900460ff16151515610d1157600080fd5b610d1e88600060286118f6565b9150610d2982611a07565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610d6557600080fd5b600180600085815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050505050565b6000606060008084925060009150600090505b82518110156111755760307f0100000000000000000000000000000000000000000000000000000000000000028382815181101515610de957fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191610158015610f01575060397f0100000000000000000000000000000000000000000000000000000000000000028382815181101515610e9157fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191611155b15610f915760308382815181101515610f1657fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f010000000000000000000000000000000000000000000000000000000000000090040360108302019150611168565b60617f0100000000000000000000000000000000000000000000000000000000000000028382815181101515610fc357fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916101580156110db5750607a7f010000000000000000000000000000000000000000000000000000000000000002838281518110151561106b57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191611155b1561116757605783828151811015156110f057fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900403601083020191505b5b8080600101915050610dae565b819350505050919050565b60006060806000606060096040519080825280602002602001820160405280156111be57816020015b60608152602001906001900390816111a95790505b50935060096040519080825280602002602001820160405280156111f657816020015b60608152602001906001900390816111e15790505b5092506040805190810160405280600181526020017f090000000000000000000000000000000000000000000000000000000000000081525084600081518110151561123e57fe5b906020019060200201819052506040805190810160405280600581526020017f09502f900000000000000000000000000000000000000000000000000000000081525084600181518110151561129057fe5b906020019060200201819052506040805190810160405280600281526020017f52080000000000000000000000000000000000000000000000000000000000008152508460028151811015156112e257fe5b906020019060200201819052506112f888611cc3565b84600381518110151561130757fe5b9060200190602002018190525061131d87611cf5565b84600481518110151561132c57fe5b9060200190602002018190525061134286611cf5565b84600581518110151561135157fe5b906020019060200201819052506040805190810160405280600181526020017f01000000000000000000000000000000000000000000000000000000000000008152508460068151811015156113a357fe5b90602001906020020181905250600091505b60098260ff16101561140f576113e4848360ff168151811015156113d557fe5b90602001906020020151611f75565b838360ff168151811015156113f557fe5b9060200190602002018190525081806001019250506113b5565b61141883612062565b9050806040518082805190602001908083835b602083101515611450578051825260208201915060208101905060208303925061142b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209450505050509392505050565b60006060600080600080945087516040519080825280602002602001820160405280156114c65781602001602082028038833980820191505090505b509350600091505b87518260ff16101561184057600189898460ff168151811015156114ee57fe5b90602001906020020151898560ff1681518110151561150957fe5b90602001906020020151898660ff1681518110151561152457fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af115801561159f573d6000803e3d6000fd5b50505060206040510351925082848360ff168151811015156115bd57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561169b5750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15156116a657600080fd5b7fda5a683a17117300c8b699f080dfb94d637712e8c949639fbf139c0953a05428848360ff168151811015156116d857fe5b906020019060200201516000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018315151515815260200182151515158152602001935050505060405180910390a16001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550848060010195505081806001019250506114ce565b600090505b87518160ff1610156118c75760026000858360ff1681518110151561186657fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558080600101915050611845565b600360159054906101000a900460ff1660ff168560ff16101515156118eb57600080fd5b505050505050505050565b606080606060008692506030835114151561191057600080fd5b8585036040519080825280601f01601f1916602001820160405280156119455781602001602082028038833980820191505090505b5091508590505b848110156119fa57828181518110151561196257fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002828783038151811015156119bd57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808060010191505061194c565b8193505050509392505050565b6000606080600080600080611a516040805190810160405280600281526020017f30780000000000000000000000000000000000000000000000000000000000008152508961208b565b955085945060009350600290505b602a811015611cb557610100840293508481815181101515611a7d57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900492508460018201815181101515611afe57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f01000000000000000000000000000000000000000000000000000000000000009004915060618373ffffffffffffffffffffffffffffffffffffffff1610158015611bac575060668373ffffffffffffffffffffffffffffffffffffffff1611155b15611bbc57605783039250611c07565b60308373ffffffffffffffffffffffffffffffffffffffff1610158015611bfa575060398373ffffffffffffffffffffffffffffffffffffffff1611155b15611c06576030830392505b5b60618273ffffffffffffffffffffffffffffffffffffffff1610158015611c45575060668273ffffffffffffffffffffffffffffffffffffffff1611155b15611c5557605782039150611ca0565b60308273ffffffffffffffffffffffffffffffffffffffff1610158015611c93575060398273ffffffffffffffffffffffffffffffffffffffff1611155b15611c9f576030820391505b5b81601084020184019350600281019050611a5f565b839650505050505050919050565b606060405182741400000000000000000000000000000000000000001860148201526034810160405280915050919050565b60606000806000606080600080606060006030985060419750606196508a95508551604051908082528060200260200182016040528015611d455781602001602082028038833980820191505090505b509450600093505b8551841015611e65578584815181101515611d6457fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900492506060831115611e0557600a60618403018585815181101515611df257fe5b9060200190602002018181525050611e58565b6042831115611e3657600a60418403018585815181101515611e2357fe5b9060200190602002018181525050611e57565b603083038585815181101515611e4857fe5b90602001906020020181815250505b5b8380600101945050611d4d565b60028551811515611e7257fe5b046040519080825280601f01601f191660200182016040528015611ea55781602001602082028038833980820191505090505b509150600090505b8451811015611f64578460018201815181101515611ec757fe5b9060200190602002015160108683815181101515611ee157fe5b9060200190602002015102017f01000000000000000000000000000000000000000000000000000000000000000282600283811515611f1c57fe5b04815181101515611f2957fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600281019050611ead565b819950505050505050505050919050565b6060806001835114801561200557506080836000815181101515611f9557fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f01000000000000000000000000000000000000000000000000000000000000009004105b156120495760016040519080825280601f01601f19166020018201604052801561203e5781602001602082028038833980820191505090505b509050829050612059565b61205683608060b761225c565b90505b80915050919050565b6060806060612070846124c0565b915061207f8260c060f761225c565b90508092505050919050565b606080606080606060008088955087945084518651016040519080825280601f01601f1916602001820160405280156120d35781602001602082028038833980820191505090505b50935083925060009150600090505b85518110156121955785818151811015156120f957fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838380600101945081518110151561215857fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806001019150506120e2565b600090505b845181101561224d5784818151811015156121b157fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838380600101945081518110151561221057fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808060010191505061219a565b82965050505050505092915050565b60606000606060008060008060208a01955089519250600190505b6000818481151561228457fe5b041415156122a057818060010192505061010081029050612277565b60378311151561236057600183016040519080825280601f01601f1916602001820160405280156122e05781602001602082028038833980820191505090505b509450828960ff16017f01000000000000000000000000000000000000000000000000000000000000000285600081518110151561231a57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060218501935061235b8487856125f9565b6124b0565b8282600101016040519080825280601f01601f1916602001820160405280156123985781602001602082028038833980820191505090505b509450818860ff16017f0100000000000000000000000000000000000000000000000000000000000000028560008151811015156123d257fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190505b818111151561249c576101008183036101000a8481151561242457fe5b0481151561242e57fe5b067f010000000000000000000000000000000000000000000000000000000000000002858281518110151561245f57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050612407565b81602186010193506124af8487856125f9565b5b8496505050505050509392505050565b6060600080606060006060600080885114156125125760006040519080825280601f01601f19166020018201604052801561250a5781602001602082028038833980820191505090505b5096506125ee565b600094505b875185101561254a57878581518110151561252e57fe5b9060200190602002015151860195508480600101955050612517565b856040519080825280601f01601f19166020018201604052801561257d5781602001602082028038833980820191505090505b509350602084019250600094505b87518510156125ea5787858151811015156125a257fe5b9060200190602002015191506020820190506125c0838284516125f9565b87858151811015156125ce57fe5b906020019060200201515183019250848060010195505061258b565b8396505b505050505050919050565b60005b60208210151561262157825184526020840193506020830192506020820391506125fc565b6001826020036101000a03905080198351168185511681811786525050505050505600a165627a7a7230582062f203c9be28a50511f39febde6a79ce75ca48693b9b8a46086f9e3ffba3ad150029
Swarm Source
bzzr://62f203c9be28a50511f39febde6a79ce75ca48693b9b8a46086f9e3ffba3ad15
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ 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.