ETH Price: $2,173.26 (-6.68%)

Contract

0x993bfef7C9989DB29fB2d2bD656D75E03e44b6cc
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Funded By

N/A

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Kill53677052018-04-02 15:19:192907 days ago1522682359IN
0x993bfef7...03e44b6cc
0 ETH0.000040693
Change Owner53676842018-04-02 15:14:482907 days ago1522682088IN
0x993bfef7...03e44b6cc
0 ETH0.000086633
Change Owner53663402018-04-02 9:50:142907 days ago1522662614IN
0x993bfef7...03e44b6cc
0 ETH0.000144385
Change Owner53487092018-03-30 11:46:592910 days ago1522410419IN
0x993bfef7...03e44b6cc
0 ETH0.0011839541

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer53677052018-04-02 15:19:192907 days ago1522682359
0x993bfef7...03e44b6cc
0 ETH
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
Contract Self Destruct called at Txn Hash 0xc5c9d45760d0869bb9bf8444e9bb462debcf7fa63af701f55cff5c5b5a661366


Contract Source Code Verified (Exact Match)

Contract Name:
KickToken

Compiler Version
v0.4.18+commit.9cf6e910

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-03-30
*/

pragma solidity ^0.4.2;


contract KickOwned {
	address public owner;

	function KickOwned() {
		owner = msg.sender;
	}

	function changeOwner(address newOwner) onlyOwner {
		owner = newOwner;
	}

	modifier onlyOwner {
		require(msg.sender == owner);
		_;
	}
}




contract KickUtils {
	/**
		constructor
	*/
	function Utils() {
	}

	// validates an address - currently only checks that it isn't null
	modifier validAddress(address _address) {
		require(_address != 0x0);
		_;
	}

	// verifies that the address is different than this contract address
	modifier notThis(address _address) {
		require(_address != address(this));
		_;
	}

	// Overflow protected math functions

	/**
		@dev returns the sum of _x and _y, asserts if the calculation overflows

		@param _x   value 1
		@param _y   value 2

		@return sum
	*/
	function safeAdd(uint256 _x, uint256 _y) internal returns (uint256) {
		uint256 z = _x + _y;
		assert(z >= _x);
		return z;
	}

	/**
		@dev returns the difference of _x minus _y, asserts if the subtraction results in a negative number

		@param _x   minuend
		@param _y   subtrahend

		@return difference
	*/
	function safeSub(uint256 _x, uint256 _y) internal returns (uint256) {
		assert(_x >= _y);
		return _x - _y;
	}
}


interface tokenRecipient {function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData);}

contract KickToken is KickOwned, KickUtils {
	struct Dividend {uint256 time; uint256 tenThousandth; uint256 countComplete;}

	/* Public variables of the token */
	string public standard = 'Token 0.1';

	string public name = 'Experimental KickCoin';

	string public symbol = 'EKICK';

	uint8 public decimals = 8;

	uint256 _totalSupply = 0;

	/* Is allowed to burn tokens */
	bool public allowManuallyBurnTokens = true;

	/* This creates an array with all balances */
	mapping (address => uint256) balances;

	mapping (address => mapping (uint256 => uint256)) public agingBalanceOf;

	uint[] agingTimes;

	Dividend[] dividends;

	mapping (address => mapping (address => uint256)) allowed;
	/* This generates a public event on the blockchain that will notify clients */
	event Transfer(address indexed from, address indexed to, uint256 value);

	event AgingTransfer(address indexed from, address indexed to, uint256 value, uint256 agingTime);

	event Approval(address indexed _owner, address indexed _spender, uint256 _value);
	// triggered when the total supply is increased
	event Issuance(uint256 _amount);
	// triggered when the total supply is decreased
	event Destruction(uint256 _amount);
	// This notifies clients about the amount burnt
	event Burn(address indexed from, uint256 value);

	address[] public addressByIndex;

	mapping (address => bool) addressAddedToIndex;

	mapping (address => uint) agingTimesForPools;

	uint16 currentDividendIndex = 1;

	mapping (address => uint) calculatedDividendsIndex;

	bool public transfersEnabled = true;

	event NewSmartToken(address _token);

	/* Initializes contract with initial supply tokens to the creator of the contract */
	function KickToken() {
		owner = msg.sender;
		// So that the index starts with 1
		dividends.push(Dividend(0, 0, 0));
		// 31.10.2017 09:00:00
		dividends.push(Dividend(1509440400, 30, 0));
		// 30.11.2017 09:00:00
		dividends.push(Dividend(1512032400, 20, 0));
		// 31.12.2017 09:00:00
		dividends.push(Dividend(1514710800, 10, 0));
		// 31.01.2018 09:00:00
		dividends.push(Dividend(1517389200, 5, 0));
		// 28.02.2018 09:00:00
		dividends.push(Dividend(1519808400, 10, 0));
		// 31.03.2018 09:00:00
		dividends.push(Dividend(1522486800, 20, 0));
		// 30.04.2018 09:00:00
		dividends.push(Dividend(1525078800, 30, 0));
		// 31.05.2018 09:00:00
		dividends.push(Dividend(1527757200, 50, 0));
		// 30.06.2018 09:00:00
		dividends.push(Dividend(1530349200, 30, 0));
		// 31.07.2018 09:00:00
		dividends.push(Dividend(1533027600, 20, 0));
		// 31.08.2018 09:00:00
		dividends.push(Dividend(1535706000, 10, 0));
		// 30.09.2018 09:00:00
		dividends.push(Dividend(1538298000, 5, 0));
		// 31.10.2018 09:00:00
		dividends.push(Dividend(1540976400, 10, 0));
		// 30.11.2018 09:00:00
		dividends.push(Dividend(1543568400, 20, 0));
		// 31.12.2018 09:00:00
		dividends.push(Dividend(1546246800, 30, 0));
		// 31.01.2019 09:00:00
		dividends.push(Dividend(1548925200, 60, 0));
		// 28.02.2019 09:00:00
		dividends.push(Dividend(1551344400, 30, 0));
		// 31.03.2019 09:00:00
		dividends.push(Dividend(1554022800, 20, 0));
		// 30.04.2019 09:00:00
		dividends.push(Dividend(1556614800, 10, 0));
		// 31.05.2019 09:00:00
		dividends.push(Dividend(1559307600, 20, 0));
		// 30.06.2019 09:00:00
		dividends.push(Dividend(1561885200, 30, 0));
		// 31.07.2019 09:00:00
		dividends.push(Dividend(1564563600, 20, 0));
		// 31.08.2019 09:00:00
		dividends.push(Dividend(1567242000, 10, 0));
		// 30.09.2019 09:00:00
		dividends.push(Dividend(1569834000, 5, 0));

		NewSmartToken(address(this));
	}

	modifier transfersAllowed {
		assert(transfersEnabled);
		_;
	}

	function totalSupply() constant returns (uint256 totalSupply) {
		totalSupply = _totalSupply;
	}

	function balanceOf(address _owner) constant returns (uint256 balance) {
		return balances[_owner];
	}

	function allowance(address _owner, address _spender) constant returns (uint256 remaining) {
		return allowed[_owner][_spender];
	}

	bool allAgingTimesHasBeenAdded = false;
	function addAgingTime(uint256 time) onlyOwner {
		require(!allAgingTimesHasBeenAdded);
		agingTimes.push(time);
	}

	function allAgingTimesAdded() onlyOwner {
		allAgingTimesHasBeenAdded = true;
	}

	function calculateDividends(uint256 limit) {
		require(now >= dividends[currentDividendIndex].time);
		require(limit > 0);

		limit = safeAdd(dividends[currentDividendIndex].countComplete, limit);

		if (limit > addressByIndex.length) {
			limit = addressByIndex.length;
		}

		for (uint256 i = dividends[currentDividendIndex].countComplete; i < limit; i++) {
			_addDividendsForAddress(addressByIndex[i]);
		}
		if (limit == addressByIndex.length) {
			currentDividendIndex++;
		}
		else {
			dividends[currentDividendIndex].countComplete = limit;
		}
	}

	/* User can himself receive dividends without waiting for a global accruals */
	function receiveDividends() public {
		require(now >= dividends[currentDividendIndex].time);
		assert(_addDividendsForAddress(msg.sender));
	}

	function _addDividendsForAddress(address _address) internal returns (bool success) {
		// skip calculating dividends, if already calculated for this address
		if (calculatedDividendsIndex[_address] >= currentDividendIndex) return false;

		uint256 add = balances[_address] * dividends[currentDividendIndex].tenThousandth / 1000;
		balances[_address] = safeAdd(balances[_address], add);
		Transfer(this, _address, add);
		Issuance(add);
		_totalSupply = safeAdd(_totalSupply, add);

		if (agingBalanceOf[_address][0] > 0) {
			agingBalanceOf[_address][0] = safeAdd(agingBalanceOf[_address][0], agingBalanceOf[_address][0] * dividends[currentDividendIndex].tenThousandth / 1000);
			for (uint256 k = 0; k < agingTimes.length; k++) {
				agingBalanceOf[_address][agingTimes[k]] = safeAdd(agingBalanceOf[_address][agingTimes[k]], agingBalanceOf[_address][agingTimes[k]] * dividends[currentDividendIndex].tenThousandth / 1000);
			}
		}
		calculatedDividendsIndex[_address] = currentDividendIndex;
		return true;
	}

	/* Send coins */
	function transfer(address _to, uint256 _value) transfersAllowed returns (bool success) {
		_checkMyAging(msg.sender);
		if (currentDividendIndex < dividends.length && now >= dividends[currentDividendIndex].time) {
			_addDividendsForAddress(msg.sender);
			_addDividendsForAddress(_to);
		}

		require(accountBalance(msg.sender) >= _value);

		// Subtract from the sender
		balances[msg.sender] = safeSub(balances[msg.sender], _value);

		if (agingTimesForPools[msg.sender] > 0 && agingTimesForPools[msg.sender] > now) {
			_addToAging(msg.sender, _to, agingTimesForPools[msg.sender], _value);
		}

		balances[_to] = safeAdd(balances[_to], _value);

		_addIndex(_to);
		Transfer(msg.sender, _to, _value);
		return true;
	}

	function mintToken(address target, uint256 mintedAmount, uint256 agingTime) onlyOwner {
		if (agingTime > now) {
			_addToAging(owner, target, agingTime, mintedAmount);
		}

		balances[target] = safeAdd(balances[target], mintedAmount);

		_totalSupply = safeAdd(_totalSupply, mintedAmount);
		Issuance(mintedAmount);
		_addIndex(target);
		Transfer(this, target, mintedAmount);
	}

	function _addIndex(address _address) internal {
		if (!addressAddedToIndex[_address]) {
			addressAddedToIndex[_address] = true;
			addressByIndex.push(_address);
		}
	}

	function _addToAging(address from, address target, uint256 agingTime, uint256 amount) internal {
		agingBalanceOf[target][0] = safeAdd(agingBalanceOf[target][0], amount);
		agingBalanceOf[target][agingTime] = safeAdd(agingBalanceOf[target][agingTime], amount);
		AgingTransfer(from, target, amount, agingTime);
	}

	/* Allow another contract to spend some tokens in your behalf */
	function approve(address _spender, uint256 _value) returns (bool success) {
		allowed[msg.sender][_spender] = _value;
		Approval(msg.sender, _spender, _value);
		return true;
	}

	/* Approve and then communicate the approved contract in a single tx */
	function approveAndCall(address _spender, uint256 _value, bytes _extraData) returns (bool success) {
		tokenRecipient spender = tokenRecipient(_spender);
		if (approve(_spender, _value)) {
			spender.receiveApproval(msg.sender, _value, this, _extraData);
			return true;
		}
	}

	/* A contract attempts to get the coins */
	function transferFrom(address _from, address _to, uint256 _value) transfersAllowed returns (bool success) {
		_checkMyAging(_from);
		if (currentDividendIndex < dividends.length && now >= dividends[currentDividendIndex].time) {
			_addDividendsForAddress(_from);
			_addDividendsForAddress(_to);
		}
		// Check if the sender has enough
		require(accountBalance(_from) >= _value);

		// Check allowed
		require(_value <= allowed[_from][msg.sender]);

		// Subtract from the sender
		balances[_from] = safeSub(balances[_from], _value);
		// Add the same to the recipient
		balances[_to] = safeAdd(balances[_to], _value);

		allowed[_from][msg.sender] = safeSub(allowed[_from][msg.sender], _value);

		if (agingTimesForPools[_from] > 0 && agingTimesForPools[_from] > now) {
			_addToAging(_from, _to, agingTimesForPools[_from], _value);
		}

		_addIndex(_to);
		Transfer(_from, _to, _value);
		return true;
	}

	/* This unnamed function is called whenever someone tries to send ether to it */
	function() {
		revert();
		// Prevents accidental sending of ether
	}

	function _checkMyAging(address sender) internal {
		if (agingBalanceOf[sender][0] == 0) return;

		for (uint256 k = 0; k < agingTimes.length; k++) {
			if (agingTimes[k] < now) {
				agingBalanceOf[sender][0] = safeSub(agingBalanceOf[sender][0], agingBalanceOf[sender][agingTimes[k]]);
				agingBalanceOf[sender][agingTimes[k]] = 0;
			}
		}
	}

	function addAgingTimesForPool(address poolAddress, uint256 agingTime) onlyOwner {
		agingTimesForPools[poolAddress] = agingTime;
	}

	function countAddresses() constant returns (uint256 length) {
		return addressByIndex.length;
	}

	function accountBalance(address _address) constant returns (uint256 balance) {
		return safeSub(balances[_address], agingBalanceOf[_address][0]);
	}

	function disableTransfers(bool _disable) public onlyOwner {
		transfersEnabled = !_disable;
	}

	function issue(address _to, uint256 _amount) public onlyOwner validAddress(_to) notThis(_to) {
		_totalSupply = safeAdd(_totalSupply, _amount);
		balances[_to] = safeAdd(balances[_to], _amount);

		_addIndex(_to);
		Issuance(_amount);
		Transfer(this, _to, _amount);
	}

	/**
	 * Destroy tokens
	 * Remove `_value` tokens from the system irreversibly
	 * @param _value the amount of money to burn
	 */
	function burn(uint256 _value) returns (bool success) {
		destroy(msg.sender, _value);
		Burn(msg.sender, _value);
		return true;
	}

	/**
	 * Destroy tokens
	 * Remove `_amount` tokens from the system irreversibly
	 * @param _from the address from which tokens will be burnt
	 * @param _amount the amount of money to burn
	 */
	function destroy(address _from, uint256 _amount) public {
		_checkMyAging(_from);
		// validate input
		require((msg.sender == _from && allowManuallyBurnTokens) || msg.sender == owner);
		require(accountBalance(_from) >= _amount);

		balances[_from] = safeSub(balances[_from], _amount);
		_totalSupply = safeSub(_totalSupply, _amount);

		Transfer(_from, this, _amount);
		Destruction(_amount);
	}

	function disableManuallyBurnTokens(bool _disable) public onlyOwner {
		allowManuallyBurnTokens = !_disable;
	}

  function kill() public {
        require(msg.sender == owner);
        selfdestruct(owner);
    }

}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[],"name":"allAgingTimesAdded","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_disable","type":"bool"}],"name":"disableTransfers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"totalSupply","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"},{"name":"mintedAmount","type":"uint256"},{"name":"agingTime","type":"uint256"}],"name":"mintToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"limit","type":"uint256"}],"name":"calculateDividends","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"allowManuallyBurnTokens","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"kill","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"Utils","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"standard","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_disable","type":"bool"}],"name":"disableManuallyBurnTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"receiveDividends","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"issue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"time","type":"uint256"}],"name":"addAgingTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_amount","type":"uint256"}],"name":"destroy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"transfersEnabled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"accountBalance","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"addressByIndex","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"agingBalanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"poolAddress","type":"address"},{"name":"agingTime","type":"uint256"}],"name":"addAgingTimesForPool","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"countAddresses","outputs":[{"name":"length","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":false,"stateMutability":"nonpayable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"agingTime","type":"uint256"}],"name":"AgingTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_amount","type":"uint256"}],"name":"Issuance","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_amount","type":"uint256"}],"name":"Destruction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_token","type":"address"}],"name":"NewSmartToken","type":"event"}]

60606040526040805190810160405280600981526020017f546f6b656e20302e310000000000000000000000000000000000000000000000815250600190805190602001906200005192919062000d2e565b506040805190810160405280601581526020017f4578706572696d656e74616c204b69636b436f696e0000000000000000000000815250600290805190602001906200009f92919062000d2e565b506040805190810160405280600581526020017f454b49434b00000000000000000000000000000000000000000000000000000081525060039080519060200190620000ed92919062000d2e565b506008600460006101000a81548160ff021916908360ff16021790555060006005556001600660006101000a81548160ff0219169083151502179055506001600f60006101000a81548161ffff021916908361ffff1602179055506001601160006101000a81548160ff0219169083151502179055506000601160016101000a81548160ff02191690831515021790555034156200018a57600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a805480600101828162000220919062000db5565b91600052602060002090600302016000606060405190810160405280600081526020016000815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a80548060010182816200028b919062000db5565b916000526020600020906003020160006060604051908101604052806359f83b908152602001601e815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a8054806001018281620002f9919062000db5565b91600052602060002090600302016000606060405190810160405280635a1fc89081526020016014815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a805480600101828162000367919062000db5565b91600052602060002090600302016000606060405190810160405280635a48a7108152602001600a815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a8054806001018281620003d5919062000db5565b91600052602060002090600302016000606060405190810160405280635a71859081526020016005815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a805480600101828162000443919062000db5565b91600052602060002090600302016000606060405190810160405280635a966f908152602001600a815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a8054806001018281620004b1919062000db5565b91600052602060002090600302016000606060405190810160405280635abf4e1081526020016014815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a80548060010182816200051f919062000db5565b91600052602060002090600302016000606060405190810160405280635ae6db108152602001601e815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a80548060010182816200058d919062000db5565b91600052602060002090600302016000606060405190810160405280635b0fb99081526020016032815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a8054806001018281620005fb919062000db5565b91600052602060002090600302016000606060405190810160405280635b3746908152602001601e815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a805480600101828162000669919062000db5565b91600052602060002090600302016000606060405190810160405280635b60251081526020016014815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a8054806001018281620006d7919062000db5565b91600052602060002090600302016000606060405190810160405280635b8903908152602001600a815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a805480600101828162000745919062000db5565b91600052602060002090600302016000606060405190810160405280635bb0909081526020016005815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a8054806001018281620007b3919062000db5565b91600052602060002090600302016000606060405190810160405280635bd96f108152602001600a815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a805480600101828162000821919062000db5565b91600052602060002090600302016000606060405190810160405280635c00fc1081526020016014815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a80548060010182816200088f919062000db5565b91600052602060002090600302016000606060405190810160405280635c29da908152602001601e815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a8054806001018281620008fd919062000db5565b91600052602060002090600302016000606060405190810160405280635c52b9108152602001603c815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a80548060010182816200096b919062000db5565b91600052602060002090600302016000606060405190810160405280635c77a3108152602001601e815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a8054806001018281620009d9919062000db5565b91600052602060002090600302016000606060405190810160405280635ca0819081526020016014815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a805480600101828162000a47919062000db5565b91600052602060002090600302016000606060405190810160405280635cc80e908152602001600a815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a805480600101828162000ab5919062000db5565b91600052602060002090600302016000606060405190810160405280635cf1255081526020016014815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a805480600101828162000b23919062000db5565b91600052602060002090600302016000606060405190810160405280635d187a108152602001601e815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a805480600101828162000b91919062000db5565b91600052602060002090600302016000606060405190810160405280635d41589081526020016014815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a805480600101828162000bff919062000db5565b91600052602060002090600302016000606060405190810160405280635d6a37108152602001600a815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a805480600101828162000c6d919062000db5565b91600052602060002090600302016000606060405190810160405280635d91c410815260200160058152602001600081525090919091506000820151816000015560208201518160010155604082015181600201555050507ff4cd1f8571e8d9c97ffcb81558807ab73f9803d54de5da6a0420593c82a4a9f030604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a162000e4c565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000d7157805160ff191683800117855562000da2565b8280016001018555821562000da2579182015b8281111562000da157825182559160200191906001019062000d84565b5b50905062000db1919062000dea565b5090565b81548183558181151162000de55760030281600302836000526020600020918201910162000de4919062000e12565b5b505050565b62000e0f91905b8082111562000e0b57600081600090555060010162000df1565b5090565b90565b62000e4991905b8082111562000e4557600080820160009055600182016000905560028201600090555060030162000e19565b5090565b90565b6130df8062000e5c6000396000f300606060405260043610610196576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063037ca6c4146101a657806306fdde03146101bb578063095ea7b3146102495780631608f18f146102a357806318160ddd146102c857806323a36d2b146102f157806323b872dd1461033c5780632cf86006146103b557806330762e2e146103d8578063313ce5671461040557806341c0e1b51461043457806342966c681461044957806354da5393146104845780635a3b7e421461049957806370a082311461052757806371766ae31461057457806379fc468714610599578063867904b4146105ae5780638d37f52c146105f05780638da5cb5b1461061357806395d89b4114610668578063a24835d1146106f6578063a6f9dae114610738578063a9059cbb14610771578063bef97c87146107cb578063cae9ca51146107f8578063d294cb0f14610895578063d8ab9208146108e2578063dd62ed3e14610945578063e27f0236146109b1578063ea6ca18214610a07578063ec530de614610a49575b34156101a157600080fd5b600080fd5b34156101b157600080fd5b6101b9610a72565b005b34156101c657600080fd5b6101ce610aea565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561020e5780820151818401526020810190506101f3565b50505050905090810190601f16801561023b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561025457600080fd5b610289600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610b88565b604051808215151515815260200191505060405180910390f35b34156102ae57600080fd5b6102c660048080351515906020019091905050610c7a565b005b34156102d357600080fd5b6102db610cf3565b6040518082815260200191505060405180910390f35b34156102fc57600080fd5b61033a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091908035906020019091905050610cfd565b005b341561034757600080fd5b61039b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610ed6565b604051808215151515815260200191505060405180910390f35b34156103c057600080fd5b6103d66004808035906020019091905050611386565b005b34156103e357600080fd5b6103eb611546565b604051808215151515815260200191505060405180910390f35b341561041057600080fd5b610418611559565b604051808260ff1660ff16815260200191505060405180910390f35b341561043f57600080fd5b61044761156c565b005b341561045457600080fd5b61046a6004808035906020019091905050611601565b604051808215151515815260200191505060405180910390f35b341561048f57600080fd5b610497611664565b005b34156104a457600080fd5b6104ac611666565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104ec5780820151818401526020810190506104d1565b50505050905090810190601f1680156105195780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561053257600080fd5b61055e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611704565b6040518082815260200191505060405180910390f35b341561057f57600080fd5b6105976004808035151590602001909190505061174d565b005b34156105a457600080fd5b6105ac6117c6565b005b34156105b957600080fd5b6105ee600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061181c565b005b34156105fb57600080fd5b6106116004808035906020019091905050611a23565b005b341561061e57600080fd5b610626611ac6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561067357600080fd5b61067b611aeb565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106bb5780820151818401526020810190506106a0565b50505050905090810190601f1680156106e85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561070157600080fd5b610736600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611b89565b005b341561074357600080fd5b61076f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611d90565b005b341561077c57600080fd5b6107b1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611e2e565b604051808215151515815260200191505060405180910390f35b34156107d657600080fd5b6107de61214c565b604051808215151515815260200191505060405180910390f35b341561080357600080fd5b61087b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061215f565b604051808215151515815260200191505060405180910390f35b34156108a057600080fd5b6108cc600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506122dd565b6040518082815260200191505060405180910390f35b34156108ed57600080fd5b610903600480803590602001909190505061237f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561095057600080fd5b61099b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506123be565b6040518082815260200191505060405180910390f35b34156109bc57600080fd5b6109f1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612445565b6040518082815260200191505060405180910390f35b3415610a1257600080fd5b610a47600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061246a565b005b3415610a5457600080fd5b610a5c61250d565b6040518082815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610acd57600080fd5b6001601160016101000a81548160ff021916908315150217905550565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b805780601f10610b5557610100808354040283529160200191610b80565b820191906000526020600020905b815481529060010190602001808311610b6357829003601f168201915b505050505081565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610cd557600080fd5b8015601160006101000a81548160ff02191690831515021790555050565b6000600554905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d5857600080fd5b42811115610d8e57610d8d6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684838561251a565b5b610dd7600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836126e9565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e26600554836126e9565b6005819055507f9386c90217c323f58030f9dadcbc938f807a940f4ff41cd4cead9562f5da7dc3826040518082815260200191505060405180910390a1610e6c83612707565b8273ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b6000601160009054906101000a900460ff161515610ef057fe5b610ef984612819565b600a80549050600f60009054906101000a900461ffff1661ffff16108015610f555750600a600f60009054906101000a900461ffff1661ffff16815481101515610f3f57fe5b9060005260206000209060030201600001544210155b15610f6f57610f6384612a47565b50610f6d83612a47565b505b81610f79856122dd565b10151515610f8657600080fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561101157600080fd5b61105a600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361301d565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110e6600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836126e9565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111af600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361301d565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180156112bc575042600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561130d5761130c8484600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548561251a565b5b61131683612707565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000600a600f60009054906101000a900461ffff1661ffff168154811015156113ab57fe5b90600052602060002090600302016000015442101515156113cb57600080fd5b6000821115156113da57600080fd5b611418600a600f60009054906101000a900461ffff1661ffff1681548110151561140057fe5b906000526020600020906003020160020154836126e9565b9150600c8054905082111561143057600c8054905091505b600a600f60009054906101000a900461ffff1661ffff1681548110151561145357fe5b90600052602060002090600302016002015490505b818110156114c1576114b3600c8281548110151561148257fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612a47565b508080600101915050611468565b600c8054905082141561150857600f600081819054906101000a900461ffff168092919060010191906101000a81548161ffff021916908361ffff16021790555050611542565b81600a600f60009054906101000a900461ffff1661ffff1681548110151561152c57fe5b9060005260206000209060030201600201819055505b5050565b600660009054906101000a900460ff1681565b600460009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115c757600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b600061160d3383611b89565b3373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a260019050919050565b565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116fc5780601f106116d1576101008083540402835291602001916116fc565b820191906000526020600020905b8154815290600101906020018083116116df57829003601f168201915b505050505081565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117a857600080fd5b8015600660006101000a81548160ff02191690831515021790555050565b600a600f60009054906101000a900461ffff1661ffff168154811015156117e957fe5b906000526020600020906003020160000154421015151561180957600080fd5b61181233612a47565b151561181a57fe5b565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561187757600080fd5b8160008173ffffffffffffffffffffffffffffffffffffffff161415151561189e57600080fd5b823073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156118da57600080fd5b6118e6600554846126e9565b600581905550611935600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846126e9565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061198184612707565b7f9386c90217c323f58030f9dadcbc938f807a940f4ff41cd4cead9562f5da7dc3836040518082815260200191505060405180910390a18373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a350505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a7e57600080fd5b601160019054906101000a900460ff16151515611a9a57600080fd5b60098054806001018281611aae9190613036565b91600052602060002090016000839091909150555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611b815780601f10611b5657610100808354040283529160200191611b81565b820191906000526020600020905b815481529060010190602001808311611b6457829003601f168201915b505050505081565b611b9282612819565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148015611bd95750600660009054906101000a900460ff165b80611c3057506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611c3b57600080fd5b80611c45836122dd565b10151515611c5257600080fd5b611c9b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261301d565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611cea6005548261301d565b6005819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a37f9a1b418bc061a5d80270261562e6986a35d995f8051145f277be16103abd3453816040518082815260200191505060405180910390a15050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611deb57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000601160009054906101000a900460ff161515611e4857fe5b611e5133612819565b600a80549050600f60009054906101000a900461ffff1661ffff16108015611ead5750600a600f60009054906101000a900461ffff1661ffff16815481101515611e9757fe5b9060005260206000209060030201600001544210155b15611ec757611ebb33612a47565b50611ec583612a47565b505b81611ed1336122dd565b10151515611ede57600080fd5b611f27600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361301d565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118015611ff7575042600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612048576120473384600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548561251a565b5b612091600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836126e9565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120dd83612707565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b601160009054906101000a900460ff1681565b60008084905061216f8585610b88565b156122d4578073ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338630876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561226957808201518184015260208101905061224e565b50505050905090810190601f1680156122965780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15156122b757600080fd5b6102c65a03f115156122c857600080fd5b505050600191506122d5565b5b509392505050565b6000612378600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008081526020019081526020016000205461301d565b9050919050565b600c8181548110151561238e57fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6008602052816000526040600020602052806000526040600020600091509150505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156124c557600080fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000600c80549050905090565b612574600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080815260200190815260200160002054826126e9565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080815260200190815260200160002081905550612622600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054826126e9565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f46a1749a7648b704d1ad3fe33741b13174a4b1641db362e808d00eab7250d1068385604051808381526020018281526020019250505060405180910390a350505050565b60008082840190508381101515156126fd57fe5b8091505092915050565b600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515612816576001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600c80548060010182816127c69190613062565b9160005260206000209001600083909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b50565b600080600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080815260200190815260200160002054141561287857612a43565b600090505b600980549050811015612a42574260098281548110151561289a57fe5b9060005260206000209001541015612a3557612970600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080815260200190815260200160002054600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060098581548110151561295057fe5b90600052602060002090015481526020019081526020016000205461301d565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808152602001908152602001600020819055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600984815481101515612a1657fe5b9060005260206000209001548152602001908152602001600020819055505b808060010191505061287d565b5b5050565b6000806000600f60009054906101000a900461ffff1661ffff16601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515612ab15760009250613016565b6103e8600a600f60009054906101000a900461ffff1661ffff16815481101515612ad757fe5b906000526020600020906003020160010154600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205402811515612b3357fe5b049150612b7f600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836126e9565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a37f9386c90217c323f58030f9dadcbc938f807a940f4ff41cd4cead9562f5da7dc3826040518082815260200191505060405180910390a1612c6a600554836126e9565b6005819055506000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808152602001908152602001600020541115612fb957612db6600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808152602001908152602001600020546103e8600a600f60009054906101000a900461ffff1661ffff16815481101515612d4357fe5b906000526020600020906003020160010154600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008081526020019081526020016000205402811515612db057fe5b046126e9565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080815260200190815260200160002081905550600090505b600980549050811015612fb857612f3d600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600984815481101515612e6f57fe5b9060005260206000209001548152602001908152602001600020546103e8600a600f60009054906101000a900461ffff1661ffff16815481101515612eb057fe5b906000526020600020906003020160010154600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600987815481101515612f1257fe5b90600052602060002090015481526020019081526020016000205402811515612f3757fe5b046126e9565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600984815481101515612f8d57fe5b9060005260206000209001548152602001908152602001600020819055508080600101915050612e0f565b5b600f60009054906101000a900461ffff1661ffff16601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600192505b5050919050565b600081831015151561302b57fe5b818303905092915050565b81548183558181151161305d5781836000526020600020918201910161305c919061308e565b5b505050565b81548183558181151161308957818360005260206000209182019101613088919061308e565b5b505050565b6130b091905b808211156130ac576000816000905550600101613094565b5090565b905600a165627a7a7230582087117159ae647689bd0b8791a5edd716d903bdd98c3fc7da8c096f0a027619840029

Deployed Bytecode

0x606060405260043610610196576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063037ca6c4146101a657806306fdde03146101bb578063095ea7b3146102495780631608f18f146102a357806318160ddd146102c857806323a36d2b146102f157806323b872dd1461033c5780632cf86006146103b557806330762e2e146103d8578063313ce5671461040557806341c0e1b51461043457806342966c681461044957806354da5393146104845780635a3b7e421461049957806370a082311461052757806371766ae31461057457806379fc468714610599578063867904b4146105ae5780638d37f52c146105f05780638da5cb5b1461061357806395d89b4114610668578063a24835d1146106f6578063a6f9dae114610738578063a9059cbb14610771578063bef97c87146107cb578063cae9ca51146107f8578063d294cb0f14610895578063d8ab9208146108e2578063dd62ed3e14610945578063e27f0236146109b1578063ea6ca18214610a07578063ec530de614610a49575b34156101a157600080fd5b600080fd5b34156101b157600080fd5b6101b9610a72565b005b34156101c657600080fd5b6101ce610aea565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561020e5780820151818401526020810190506101f3565b50505050905090810190601f16801561023b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561025457600080fd5b610289600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610b88565b604051808215151515815260200191505060405180910390f35b34156102ae57600080fd5b6102c660048080351515906020019091905050610c7a565b005b34156102d357600080fd5b6102db610cf3565b6040518082815260200191505060405180910390f35b34156102fc57600080fd5b61033a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091908035906020019091905050610cfd565b005b341561034757600080fd5b61039b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610ed6565b604051808215151515815260200191505060405180910390f35b34156103c057600080fd5b6103d66004808035906020019091905050611386565b005b34156103e357600080fd5b6103eb611546565b604051808215151515815260200191505060405180910390f35b341561041057600080fd5b610418611559565b604051808260ff1660ff16815260200191505060405180910390f35b341561043f57600080fd5b61044761156c565b005b341561045457600080fd5b61046a6004808035906020019091905050611601565b604051808215151515815260200191505060405180910390f35b341561048f57600080fd5b610497611664565b005b34156104a457600080fd5b6104ac611666565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104ec5780820151818401526020810190506104d1565b50505050905090810190601f1680156105195780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561053257600080fd5b61055e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611704565b6040518082815260200191505060405180910390f35b341561057f57600080fd5b6105976004808035151590602001909190505061174d565b005b34156105a457600080fd5b6105ac6117c6565b005b34156105b957600080fd5b6105ee600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061181c565b005b34156105fb57600080fd5b6106116004808035906020019091905050611a23565b005b341561061e57600080fd5b610626611ac6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561067357600080fd5b61067b611aeb565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106bb5780820151818401526020810190506106a0565b50505050905090810190601f1680156106e85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561070157600080fd5b610736600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611b89565b005b341561074357600080fd5b61076f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611d90565b005b341561077c57600080fd5b6107b1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611e2e565b604051808215151515815260200191505060405180910390f35b34156107d657600080fd5b6107de61214c565b604051808215151515815260200191505060405180910390f35b341561080357600080fd5b61087b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061215f565b604051808215151515815260200191505060405180910390f35b34156108a057600080fd5b6108cc600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506122dd565b6040518082815260200191505060405180910390f35b34156108ed57600080fd5b610903600480803590602001909190505061237f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561095057600080fd5b61099b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506123be565b6040518082815260200191505060405180910390f35b34156109bc57600080fd5b6109f1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612445565b6040518082815260200191505060405180910390f35b3415610a1257600080fd5b610a47600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061246a565b005b3415610a5457600080fd5b610a5c61250d565b6040518082815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610acd57600080fd5b6001601160016101000a81548160ff021916908315150217905550565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b805780601f10610b5557610100808354040283529160200191610b80565b820191906000526020600020905b815481529060010190602001808311610b6357829003601f168201915b505050505081565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610cd557600080fd5b8015601160006101000a81548160ff02191690831515021790555050565b6000600554905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d5857600080fd5b42811115610d8e57610d8d6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684838561251a565b5b610dd7600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836126e9565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e26600554836126e9565b6005819055507f9386c90217c323f58030f9dadcbc938f807a940f4ff41cd4cead9562f5da7dc3826040518082815260200191505060405180910390a1610e6c83612707565b8273ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b6000601160009054906101000a900460ff161515610ef057fe5b610ef984612819565b600a80549050600f60009054906101000a900461ffff1661ffff16108015610f555750600a600f60009054906101000a900461ffff1661ffff16815481101515610f3f57fe5b9060005260206000209060030201600001544210155b15610f6f57610f6384612a47565b50610f6d83612a47565b505b81610f79856122dd565b10151515610f8657600080fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561101157600080fd5b61105a600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361301d565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110e6600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836126e9565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111af600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361301d565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180156112bc575042600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561130d5761130c8484600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548561251a565b5b61131683612707565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000600a600f60009054906101000a900461ffff1661ffff168154811015156113ab57fe5b90600052602060002090600302016000015442101515156113cb57600080fd5b6000821115156113da57600080fd5b611418600a600f60009054906101000a900461ffff1661ffff1681548110151561140057fe5b906000526020600020906003020160020154836126e9565b9150600c8054905082111561143057600c8054905091505b600a600f60009054906101000a900461ffff1661ffff1681548110151561145357fe5b90600052602060002090600302016002015490505b818110156114c1576114b3600c8281548110151561148257fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612a47565b508080600101915050611468565b600c8054905082141561150857600f600081819054906101000a900461ffff168092919060010191906101000a81548161ffff021916908361ffff16021790555050611542565b81600a600f60009054906101000a900461ffff1661ffff1681548110151561152c57fe5b9060005260206000209060030201600201819055505b5050565b600660009054906101000a900460ff1681565b600460009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115c757600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b600061160d3383611b89565b3373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a260019050919050565b565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116fc5780601f106116d1576101008083540402835291602001916116fc565b820191906000526020600020905b8154815290600101906020018083116116df57829003601f168201915b505050505081565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117a857600080fd5b8015600660006101000a81548160ff02191690831515021790555050565b600a600f60009054906101000a900461ffff1661ffff168154811015156117e957fe5b906000526020600020906003020160000154421015151561180957600080fd5b61181233612a47565b151561181a57fe5b565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561187757600080fd5b8160008173ffffffffffffffffffffffffffffffffffffffff161415151561189e57600080fd5b823073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156118da57600080fd5b6118e6600554846126e9565b600581905550611935600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846126e9565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061198184612707565b7f9386c90217c323f58030f9dadcbc938f807a940f4ff41cd4cead9562f5da7dc3836040518082815260200191505060405180910390a18373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a350505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a7e57600080fd5b601160019054906101000a900460ff16151515611a9a57600080fd5b60098054806001018281611aae9190613036565b91600052602060002090016000839091909150555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611b815780601f10611b5657610100808354040283529160200191611b81565b820191906000526020600020905b815481529060010190602001808311611b6457829003601f168201915b505050505081565b611b9282612819565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148015611bd95750600660009054906101000a900460ff165b80611c3057506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611c3b57600080fd5b80611c45836122dd565b10151515611c5257600080fd5b611c9b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261301d565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611cea6005548261301d565b6005819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a37f9a1b418bc061a5d80270261562e6986a35d995f8051145f277be16103abd3453816040518082815260200191505060405180910390a15050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611deb57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000601160009054906101000a900460ff161515611e4857fe5b611e5133612819565b600a80549050600f60009054906101000a900461ffff1661ffff16108015611ead5750600a600f60009054906101000a900461ffff1661ffff16815481101515611e9757fe5b9060005260206000209060030201600001544210155b15611ec757611ebb33612a47565b50611ec583612a47565b505b81611ed1336122dd565b10151515611ede57600080fd5b611f27600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361301d565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118015611ff7575042600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612048576120473384600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548561251a565b5b612091600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836126e9565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120dd83612707565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b601160009054906101000a900460ff1681565b60008084905061216f8585610b88565b156122d4578073ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338630876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561226957808201518184015260208101905061224e565b50505050905090810190601f1680156122965780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15156122b757600080fd5b6102c65a03f115156122c857600080fd5b505050600191506122d5565b5b509392505050565b6000612378600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008081526020019081526020016000205461301d565b9050919050565b600c8181548110151561238e57fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6008602052816000526040600020602052806000526040600020600091509150505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156124c557600080fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000600c80549050905090565b612574600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080815260200190815260200160002054826126e9565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080815260200190815260200160002081905550612622600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054826126e9565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f46a1749a7648b704d1ad3fe33741b13174a4b1641db362e808d00eab7250d1068385604051808381526020018281526020019250505060405180910390a350505050565b60008082840190508381101515156126fd57fe5b8091505092915050565b600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515612816576001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600c80548060010182816127c69190613062565b9160005260206000209001600083909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b50565b600080600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080815260200190815260200160002054141561287857612a43565b600090505b600980549050811015612a42574260098281548110151561289a57fe5b9060005260206000209001541015612a3557612970600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080815260200190815260200160002054600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060098581548110151561295057fe5b90600052602060002090015481526020019081526020016000205461301d565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808152602001908152602001600020819055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600984815481101515612a1657fe5b9060005260206000209001548152602001908152602001600020819055505b808060010191505061287d565b5b5050565b6000806000600f60009054906101000a900461ffff1661ffff16601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515612ab15760009250613016565b6103e8600a600f60009054906101000a900461ffff1661ffff16815481101515612ad757fe5b906000526020600020906003020160010154600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205402811515612b3357fe5b049150612b7f600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836126e9565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a37f9386c90217c323f58030f9dadcbc938f807a940f4ff41cd4cead9562f5da7dc3826040518082815260200191505060405180910390a1612c6a600554836126e9565b6005819055506000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808152602001908152602001600020541115612fb957612db6600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808152602001908152602001600020546103e8600a600f60009054906101000a900461ffff1661ffff16815481101515612d4357fe5b906000526020600020906003020160010154600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008081526020019081526020016000205402811515612db057fe5b046126e9565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080815260200190815260200160002081905550600090505b600980549050811015612fb857612f3d600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600984815481101515612e6f57fe5b9060005260206000209001548152602001908152602001600020546103e8600a600f60009054906101000a900461ffff1661ffff16815481101515612eb057fe5b906000526020600020906003020160010154600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600987815481101515612f1257fe5b90600052602060002090015481526020019081526020016000205402811515612f3757fe5b046126e9565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600984815481101515612f8d57fe5b9060005260206000209001548152602001908152602001600020819055508080600101915050612e0f565b5b600f60009054906101000a900461ffff1661ffff16601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600192505b5050919050565b600081831015151561302b57fe5b818303905092915050565b81548183558181151161305d5781836000526020600020918201910161305c919061308e565b5b505050565b81548183558181151161308957818360005260206000209182019101613088919061308e565b5b505050565b6130b091905b808211156130ac576000816000905550600101613094565b5090565b905600a165627a7a7230582087117159ae647689bd0b8791a5edd716d903bdd98c3fc7da8c096f0a027619840029

Swarm Source

bzzr://87117159ae647689bd0b8791a5edd716d903bdd98c3fc7da8c096f0a02761984

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
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.