ETH Price: $3,235.59 (+1.29%)

Token

ALE (ALE)
 

Overview

Max Total Supply

8,800,200 ALE

Holders

16,367

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
30 ALE

Value
$0.00
0x76c032a82B73269651d1CD752B7EB55b18502A18
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x0b87BDF9...16A2C7cf8
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
managedToken

Compiler Version
v0.4.25+commit.59dbf8f1

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-12-13
*/

pragma solidity ^0.4.25;

// Project: token ALE, http://alehub.io
// v1, 2018-12-13
// Full compatibility with ERC20.
// Token with special add. properties: division into privileged (default, for all) and usual tokens (for team).

// Authors: Ivan Fedorov and Dmitry Borodin (CryptoB2B)
// Copying in whole or in part is prohibited.
// This code is the property of CryptoB2B.io

contract IRightAndRoles {
    address[][] public wallets;
    mapping(address => uint16) public roles;

    event WalletChanged(address indexed newWallet, address indexed oldWallet, uint8 indexed role);
    event CloneChanged(address indexed wallet, uint8 indexed role, bool indexed mod);

    function changeWallet(address _wallet, uint8 _role) external;
    function onlyRoles(address _sender, uint16 _roleMask) view external returns(bool);
}

contract RightAndRoles is IRightAndRoles {
    constructor (address[] _roles) public {
        uint8 len = uint8(_roles.length);
        require(len > 0 &&len <16);
        wallets.length = len;

        for(uint8 i = 0; i < len; i++){
            wallets[i].push(_roles[i]);
            roles[_roles[i]] += uint16(2)**i;
            emit WalletChanged(_roles[i], address(0),i);
        }
        
    }

    function changeClons(address _clon, uint8 _role, bool _mod) external {
        require(wallets[_role][0] == msg.sender&&_clon != msg.sender);
        emit CloneChanged(_clon,_role,_mod);
        uint16 roleMask = uint16(2)**_role;
        if(_mod){
            require(roles[_clon]&roleMask == 0);
            wallets[_role].push(_clon);
        }else{
            address[] storage tmp = wallets[_role];
            uint8 i = 1;
            for(i; i < tmp.length; i++){
                if(tmp[i] == _clon) break;
            }
            require(i > tmp.length);
            tmp[i] = tmp[tmp.length];
            delete tmp[tmp.length];
        }
        roles[_clon] = _mod?roles[_clon]|roleMask:roles[_clon]&~roleMask;
    }

    function changeWallet(address _wallet, uint8 _role) external {
        require(wallets[_role][0] == msg.sender || wallets[0][0] == msg.sender || (wallets[2][0] == msg.sender && _role == 0));
        emit WalletChanged(wallets[_role][0],_wallet,_role);
        uint16 roleMask = uint16(2)**_role;
        address[] storage tmp = wallets[_role];
        for(uint8 i = 0; i < tmp.length; i++){
            roles[tmp[i]] = roles[tmp[i]]&~roleMask;
        }
        delete  wallets[_role];
        tmp.push(_wallet);
        roles[_wallet] = roles[_wallet]|roleMask;
    }

    function onlyRoles(address _sender, uint16 _roleMask) view external returns(bool) {
        return roles[_sender]&_roleMask != 0;
    }

    function getMainWallets() view external returns(address[]){
        address[] memory _wallets = new address[](wallets.length);
        for(uint8 i = 0; i<wallets.length; i++){
            _wallets[i] = wallets[i][0];
        }
        return _wallets;
    }

    function getCloneWallets(uint8 _role) view external returns(address[]){
        return wallets[_role];
    }
}



contract GuidedByRoles {
    IRightAndRoles public rightAndRoles;
    constructor(IRightAndRoles _rightAndRoles) public {
        rightAndRoles = _rightAndRoles;
    }
}

contract BaseIterableDubleToken{
    
    uint8 public withdrawPriority;
    uint8 public mixedType;
    
    uint256[2] public supply = [0,0];
    
    struct Item {
        uint256 index;
        uint256 value;
    }
    
    address[][] items = [[address(0)],[address(0)]];
    
    mapping (uint8 => mapping (address => Item)) balances;
    
    mapping (address => mapping (address => uint256)) allowed;
    
    event Transfer(address indexed from, address indexed to, uint256 value);
    
    event Mint(address indexed to, uint256 value);
    
    event Burn(address indexed from, uint256 value);
    
    event Approval(address indexed owner, address indexed spender, uint256 value);
    
    event changeBalance(uint8 indexed tokenType, address indexed owner, uint256 newValue);
    
    function totalSupply() view public returns(uint256){
        return supply[0] + supply[1];
    }
    
    function balanceOf(address _who) view public returns(uint256) {
        return getBalance(0,_who) + getBalance(1,_who);
    }
    
    function transfer(address _to, uint256 _value) public returns (bool){
        internalTransfer(msg.sender,_to,_value);
        return true;
    }
    
    function getBalance(uint8 _type ,address _addr) view public returns(uint256){
        return balances[_type][_addr].value;
    }
    
    function allowance(address _owner, address _spender) public view returns (uint256) {
        return allowed[_owner][_spender];
    }
    
    function approve(address _spender, uint256 _value) public returns (bool) {
        allowed[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }
    
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
        require(allowed[_from][msg.sender] >= _value);
        
        allowed[_from][msg.sender] = allowed[_from][msg.sender] - _value;
        internalTransfer(_from, _to, _value);
        emit Approval(_from, msg.sender, allowed[_from][msg.sender]);
        return true;
    }
    
    function increaseAllowance(address _spender, uint256 _addedValue) public returns (bool) {
        uint256 _tmpAllowed = allowed[msg.sender][_spender] + _addedValue;
        require(_tmpAllowed >= _addedValue);

        allowed[msg.sender][_spender] = _tmpAllowed;
        emit Approval(msg.sender, _spender, _tmpAllowed);
        return true;
    }
    
    function decreaseAllowance(address _spender, uint256 _subtractedValue) public returns (bool) {
        require(allowed[msg.sender][_spender] >= _subtractedValue);
        
        allowed[msg.sender][_spender] -= _subtractedValue;
        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }
    
    function internalMint(uint8 _type, address _account, uint256 _value) internal {
        require(totalSupply() + _value >= _value);
        supply[_type] += _value;
        uint256 _tmpBalance = getBalance(_type,_account) + _value;
        emit Mint(_account,_value);
        setBalance(_type,_account,_tmpBalance);
    }
    
    function internalBurn(uint8 _type, address _account, uint256 _value) internal {
        uint256 _tmpBalance = getBalance(_type,_account);
        require(_tmpBalance >= _value);
        _tmpBalance -= _value;
        emit Burn(_account,_value);
        setBalance(_type,_account,_tmpBalance);
    }
    
    function setBalance(uint8 _type ,address _addr, uint256 _value) internal {
        address[] storage _items = items[_type];
        Item storage _item = balances[_type][_addr];
        if(_item.value == _value) return;
        emit changeBalance(_type, _addr, _value);
        if(_value == 0){
            uint256 _index = _item.index;
            delete balances[_type][_addr];
            _items[_index] = _items[items.length - 1];
            balances[_type][_items[_index]].index = _index;
            _items.length = _items.length - 1;
        }else{
            if(_item.value == 0){
               _item.index = _items.length; 
               _items.push(_addr);
            }
            _item.value = _value;
        }
    }
    
    function internalSend(uint8 _type, address _to, uint256 _value) internal {
        uint8 _tmpType = (mixedType > 1) ? mixedType - 2 : _type;
        uint256 _tmpBalance = getBalance(_tmpType,_to);
        require(mixedType != 1 || _tmpBalance > 0);
        if(_tmpType != _type){
            supply[_type] -= _value;
            supply[_tmpType] += _value;
        }
        setBalance(_tmpType,_to,_tmpBalance + _value);
    }
    
    function internalTransfer(address _from, address _to, uint256 _value) internal {
        require(balanceOf(_from) >= _value);
        emit Transfer(_from,_to,_value);
        uint8 _tmpType = withdrawPriority;
        uint256 _tmpValue = _value;
        uint256 _tmpBalance = getBalance(_tmpType,_from);
        if(_tmpBalance < _value){
            setBalance(_tmpType,_from,0);
            internalSend(_tmpType,_to,_tmpBalance);
            _tmpType = (_tmpType == 0) ? 1 : 0;
            _tmpValue = _tmpValue - _tmpBalance;
            _tmpBalance = getBalance(_tmpType,_from);
        }
        setBalance(_tmpType,_from,_tmpBalance - _tmpValue);
        internalSend(_tmpType,_to,_tmpValue);
    }
    
    function getBalancesList(uint8 _type) view external returns(address[] _addreses, uint256[] _values){
        require(_type < 3);
        address[] storage _items = items[_type];
        uint256 _length = _items.length - 1;
        _addreses = new address[](_length);
        _values = new uint256[](_length);
        for(uint256 i = 0; i < _length; i++){
            _addreses[i] = _items[i + 1];
            _values[i] = getBalance(_type,_items[i + 1]);
        }
    }
}

contract FreezingToken is BaseIterableDubleToken, GuidedByRoles {
    struct freeze {
    uint256 amount;
    uint256 when;
    }

    mapping (address => freeze) freezedTokens;
    
    constructor(IRightAndRoles _rightAndRoles) GuidedByRoles(_rightAndRoles) public {}

    function freezedTokenOf(address _beneficiary) public view returns (uint256 amount){
        freeze storage _freeze = freezedTokens[_beneficiary];
        if(_freeze.when < now) return 0;
        return _freeze.amount;
    }

    function defrostDate(address _beneficiary) public view returns (uint256 Date) {
        freeze storage _freeze = freezedTokens[_beneficiary];
        if(_freeze.when < now) return 0;
        return _freeze.when;
    }

    function masFreezedTokens(address[] _beneficiary, uint256[] _amount, uint256[] _when) public {
        require(rightAndRoles.onlyRoles(msg.sender,3));
        require(_beneficiary.length == _amount.length && _beneficiary.length == _when.length);
        for(uint16 i = 0; i < _beneficiary.length; i++){
            freeze storage _freeze = freezedTokens[_beneficiary[i]];
            _freeze.amount = _amount[i];
            _freeze.when = _when[i];
        }
    }

    function transfer(address _to, uint256 _value) public returns (bool) {
        require(balanceOf(msg.sender) >= freezedTokenOf(msg.sender) + _value);
        return super.transfer(_to,_value);
    }

    function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
        require(balanceOf(_from) >= freezedTokenOf(_from) + _value);
        return super.transferFrom( _from,_to,_value);
    }
}

contract managedToken is FreezingToken{
    uint256[2] public mintLimit = [101000000 ether, 9000000 ether]; // privileged, usual (total hardcap = 110M tokens)
    uint256[2] public totalMint = [0,0];
    string public constant name = "ALE";
    string public constant symbol = "ALE";
    uint8 public constant decimals = 18;
    
    constructor(IRightAndRoles _rightAndRoles) FreezingToken(_rightAndRoles) public {}
    
    function internalMint(uint8 _type, address _account, uint256 _value) internal {
        totalMint[_type] += _value;
        require(totalMint[_type] <= mintLimit[_type]);
        super.internalMint(_type,_account,_value);
    }
    // _withdrawPriority 
    // first use when sending:
    // 0 - privileged
    // 1 - usual
    // _mixedType
    // 0 - mixing enabled
    // 1 - mixing disabled
    // 2 - mixing disabled, forced conversion into privileged
    // 3 - mixing disabled, forced conversion into usual
    function setup(uint8 _withdrawPriority, uint8 _mixedType) public {
        require(rightAndRoles.onlyRoles(msg.sender,3));
        require(_withdrawPriority < 2 && _mixedType < 4);
        mixedType = _mixedType;
        withdrawPriority = _withdrawPriority;
    }
    function massMint(uint8[] _types, address[] _addreses, uint256[] _values) public {
        require(rightAndRoles.onlyRoles(msg.sender,3));
        require(_types.length == _addreses.length && _addreses.length == _values.length);
        for(uint256 i = 0; i < _types.length; i++){
            internalMint(_types[i], _addreses[i], _values[i]);
        }
    }
    function massBurn(uint8[] _types, address[] _addreses, uint256[] _values) public {
        require(rightAndRoles.onlyRoles(msg.sender,3));
        require(_types.length == _addreses.length && _addreses.length == _values.length);
        for(uint256 i = 0; i < _types.length; i++){
            internalBurn(_types[i], _addreses[i], _values[i]);
        }
    }
    
    function distribution(uint8 _type, address[] _addresses, uint256[] _values, uint256[] _when) public {
        require(rightAndRoles.onlyRoles(msg.sender,3));
        require(_addresses.length == _values.length && _values.length == _when.length);
        uint256 sumValue = 0;
        for(uint256 i = 0; i < _addresses.length; i++){
            sumValue += _values[i]; 
            uint256 _value = getBalance(_type,_addresses[i]) + _values[i];
            setBalance(_type,_addresses[i],_value);
            emit Transfer(msg.sender, _addresses[i], _values[i]);
            if(_when[i] > 0){
                _value = balanceOf(_addresses[i]);
                freeze storage _freeze = freezedTokens[_addresses[i]];
                _freeze.amount = _value;
                _freeze.when = _when[i];
            }
        }
        uint256 _balance = getBalance(_type, msg.sender);
        require(_balance >= sumValue);
        setBalance(_type,msg.sender,_balance-sumValue);
    }
}



contract Creator{

    IRightAndRoles public rightAndRoles;
    managedToken public token;

    constructor() public{
        address[] memory tmp = new address[](3);
        tmp[0] = address(this);
        tmp[1] = msg.sender;
        tmp[2] = 0x19557B8beb5cC065fe001dc466b3642b747DA62B;

        rightAndRoles = new RightAndRoles(tmp);

        token=new managedToken(rightAndRoles);
    }

}

Contract Security Audit

Contract ABI

[{"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":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"freezedTokenOf","outputs":[{"name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_type","type":"uint8"},{"name":"_addr","type":"address"}],"name":"getBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address[]"},{"name":"_amount","type":"uint256[]"},{"name":"_when","type":"uint256[]"}],"name":"masFreezedTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"supply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_types","type":"uint8[]"},{"name":"_addreses","type":"address[]"},{"name":"_values","type":"uint256[]"}],"name":"massMint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"defrostDate","outputs":[{"name":"Date","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rightAndRoles","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_type","type":"uint8"},{"name":"_addresses","type":"address[]"},{"name":"_values","type":"uint256[]"},{"name":"_when","type":"uint256[]"}],"name":"distribution","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_who","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"withdrawPriority","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_types","type":"uint8[]"},{"name":"_addreses","type":"address[]"},{"name":"_values","type":"uint256[]"}],"name":"massBurn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"totalMint","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_type","type":"uint8"}],"name":"getBalancesList","outputs":[{"name":"_addreses","type":"address[]"},{"name":"_values","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"mixedType","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_withdrawPriority","type":"uint8"},{"name":"_mixedType","type":"uint8"}],"name":"setup","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"mintLimit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_rightAndRoles","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"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":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Mint","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":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":true,"name":"tokenType","type":"uint8"},{"indexed":true,"name":"owner","type":"address"},{"indexed":false,"name":"newValue","type":"uint256"}],"name":"changeBalance","type":"event"}]

60c06040526000608081815260a09190915262000021906001906002620000ff565b50604080516060810182526000818301818152825282516020818101909452908152918101919091526200005a90600390600262000147565b50604080518082019091526a538b94f896d9c08500000081526a0771d2fa45345aa9000000602082015262000094906008906002620001a1565b506040805180820190915260008082526020820152620000b990600a906002620000ff565b50348015620000c757600080fd5b5060405160208062001cdf833981016040525160068054600160a060020a031916600160a060020a03909216919091179055620002d5565b826002810192821562000135579160200282015b8281111562000135578251829060ff1690559160200191906001019062000113565b5062000143929150620001dd565b5090565b82805482825590600052602060002090810192821562000193579160200282015b8281111562000193578251620001829083906001620001fd565b509160200191906001019062000168565b506200014392915062000263565b826002810192821562000135579160200282015b828111156200013557825182906001605860020a0316905591602001919060010190620001b5565b620001fa91905b80821115620001435760008155600101620001e4565b90565b82805482825590600052602060002090810192821562000255579160200282015b82811115620002555782518254600160a060020a031916600160a060020a039091161782556020909201916001909101906200021e565b50620001439291506200028b565b620001fa91905b8082111562000143576000620002818282620002b2565b506001016200026a565b620001fa91905b8082111562000143578054600160a060020a031916815560010162000292565b5080546000825590600052602060002090810190620002d29190620001dd565b50565b6119fa80620002e56000396000f3006080604052600436106101535763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610158578063095ea7b3146101e257806311cfb19d1461021a57806318160ddd1461024d57806323b872dd14610262578063246452541461028c57806324db1f50146102b3578063313ce5671461037c57806335403023146103a757806339509351146103bf578063461c89b3146103e357806350bb117a146104aa57806361cdd2dc146104cb5780636689e28b146104fc57806370a08231146105cb5780637251beba146105ec578063884a26da1461060157806395d89b41146101585780639dafa3e3146106c8578063a457c2d7146106e0578063a9059cbb14610704578063b0de0c4014610728578063c8d2c729146107dc578063d39ebe2c146107f1578063dd62ed3e14610812578063e521aa9414610839575b600080fd5b34801561016457600080fd5b5061016d610851565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101a757818101518382015260200161018f565b50505050905090810190601f1680156101d45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101ee57600080fd5b50610206600160a060020a0360043516602435610888565b604080519115158252519081900360200190f35b34801561022657600080fd5b5061023b600160a060020a03600435166108dc565b60408051918252519081900360200190f35b34801561025957600080fd5b5061023b610914565b34801561026e57600080fd5b50610206600160a060020a036004358116906024351660443561091f565b34801561029857600080fd5b5061023b60ff60043516600160a060020a0360243516610953565b3480156102bf57600080fd5b506040805160206004803580820135838102808601850190965280855261037a95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506109839650505050505050565b005b34801561038857600080fd5b50610391610adc565b6040805160ff9092168252519081900360200190f35b3480156103b357600080fd5b5061023b600435610ae1565b3480156103cb57600080fd5b50610206600160a060020a0360043516602435610af5565b3480156103ef57600080fd5b506040805160206004803580820135838102808601850190965280855261037a95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610b7e9650505050505050565b3480156104b657600080fd5b5061023b600160a060020a0360043516610c93565b3480156104d757600080fd5b506104e0610cca565b60408051600160a060020a039092168252519081900360200190f35b34801561050857600080fd5b5060408051602060046024803582810135848102808701860190975280865261037a96843560ff1696369660449591949091019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610cd99650505050505050565b3480156105d757600080fd5b5061023b600160a060020a0360043516610f69565b3480156105f857600080fd5b50610391610f88565b34801561060d57600080fd5b506040805160206004803580820135838102808601850190965280855261037a95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610f919650505050505050565b3480156106d457600080fd5b5061023b6004356110a0565b3480156106ec57600080fd5b50610206600160a060020a03600435166024356110ad565b34801561071057600080fd5b50610206600160a060020a0360043516602435611138565b34801561073457600080fd5b5061074360ff6004351661116a565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561078757818101518382015260200161076f565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156107c65781810151838201526020016107ae565b5050505090500194505050505060405180910390f35b3480156107e857600080fd5b506103916112b6565b3480156107fd57600080fd5b5061037a60ff600435811690602435166112c4565b34801561081e57600080fd5b5061023b600160a060020a0360043581169060243516611396565b34801561084557600080fd5b5061023b6004356113c1565b60408051808201909152600381527f414c450000000000000000000000000000000000000000000000000000000000602082015281565b336000818152600560209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390926000805160206119af833981519152928290030190a350600192915050565b600160a060020a03811660009081526007602052604081206001810154421115610909576000915061090e565b805491505b50919050565b600254600154015b90565b60008161092b856108dc565b0161093585610f69565b101561094057600080fd5b61094b8484846113ce565b949350505050565b60ff82166000908152600460209081526040808320600160a060020a038516845290915290206001015492915050565b6006546040805160e160020a6358bc917b0281523360048201526003602482015290516000928392600160a060020a039091169163b17922f69160448082019260209290919082900301818787803b1580156109de57600080fd5b505af11580156109f2573d6000803e3d6000fd5b505050506040513d6020811015610a0857600080fd5b50511515610a1557600080fd5b83518551148015610a27575082518551145b1515610a3257600080fd5b600091505b84518261ffff161015610ad55760076000868461ffff16815181101515610a5a57fe5b90602001906020020151600160a060020a0316600160a060020a031681526020019081526020016000209050838261ffff16815181101515610a9857fe5b6020908102909101015181558251839061ffff8416908110610ab657fe5b9060200190602002015181600101819055508180600101925050610a37565b5050505050565b601281565b60018160028110610aee57fe5b0154905081565b336000908152600560209081526040808320600160a060020a0386168452909152812054820182811015610b2857600080fd5b336000818152600560209081526040808320600160a060020a03891680855290835292819020859055805185815290519293926000805160206119af833981519152929181900390910190a35060019392505050565b6006546040805160e160020a6358bc917b028152336004820152600360248201529051600092600160a060020a03169163b17922f691604480830192602092919082900301818787803b158015610bd457600080fd5b505af1158015610be8573d6000803e3d6000fd5b505050506040513d6020811015610bfe57600080fd5b50511515610c0b57600080fd5b82518451148015610c1d575081518351145b1515610c2857600080fd5b5060005b8351811015610c8d57610c858482815181101515610c4657fe5b906020019060200201518483815181101515610c5e57fe5b906020019060200201518484815181101515610c7657fe5b90602001906020020151611487565b600101610c2c565b50505050565b600160a060020a03811660009081526007602052604081206001810154421115610cc0576000915061090e565b6001015492915050565b600654600160a060020a031681565b6006546040805160e160020a6358bc917b0281523360048201526003602482015290516000928392839283928392600160a060020a039091169163b17922f69160448082019260209290919082900301818787803b158015610d3a57600080fd5b505af1158015610d4e573d6000803e3d6000fd5b505050506040513d6020811015610d6457600080fd5b50511515610d7157600080fd5b86518851148015610d83575085518751145b1515610d8e57600080fd5b60009450600093505b8751841015610f38578684815181101515610dae57fe5b90602001906020020151850194508684815181101515610dca57fe5b90602001906020020151610df58a8a87815181101515610de657fe5b90602001906020020151610953565b019250610e1a898986815181101515610e0a57fe5b90602001906020020151856114df565b8784815181101515610e2857fe5b90602001906020020151600160a060020a031633600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8987815181101515610e7457fe5b906020019060200201516040518082815260200191505060405180910390a360008685815181101515610ea357fe5b906020019060200201511115610f2d57610ed38885815181101515610ec457fe5b90602001906020020151610f69565b9250600760008986815181101515610ee757fe5b6020908102909101810151600160a060020a031682528101919091526040016000208381558651909250869085908110610f1d57fe5b6020908102909101015160018301555b600190930192610d97565b610f428933610953565b905084811015610f5157600080fd5b610f5e89338784036114df565b505050505050505050565b6000610f76600183610953565b610f81600084610953565b0192915050565b60005460ff1681565b6006546040805160e160020a6358bc917b028152336004820152600360248201529051600092600160a060020a03169163b17922f691604480830192602092919082900301818787803b158015610fe757600080fd5b505af1158015610ffb573d6000803e3d6000fd5b505050506040513d602081101561101157600080fd5b5051151561101e57600080fd5b82518451148015611030575081518351145b151561103b57600080fd5b5060005b8351811015610c8d57611098848281518110151561105957fe5b90602001906020020151848381518110151561107157fe5b90602001906020020151848481518110151561108957fe5b906020019060200201516116d9565b60010161103f565b600a8160028110610aee57fe5b336000908152600560209081526040808320600160a060020a03861684529091528120548211156110dd57600080fd5b336000818152600560209081526040808320600160a060020a03881680855290835292819020805487900390819055815190815290519293926000805160206119af833981519152929181900390910190a350600192915050565b600081611144336108dc565b0161114e33610f69565b101561115957600080fd5b6111638383611743565b9392505050565b60608060008080600360ff87161061118157600080fd5b6003805460ff881690811061119257fe5b90600052602060002001925060018380549050039150816040519080825280602002602001820160405280156111d2578160200160208202803883390190505b509450816040519080825280602002602001820160405280156111ff578160200160208202803883390190505b509350600090505b818110156112ae57828160010181548110151561122057fe5b6000918252602090912001548551600160a060020a039091169086908390811061124657fe5b600160a060020a03909216602092830290910190910152825461128e90879085906001850190811061127457fe5b600091825260209091200154600160a060020a0316610953565b848281518110151561129c57fe5b60209081029091010152600101611207565b505050915091565b600054610100900460ff1681565b6006546040805160e160020a6358bc917b028152336004820152600360248201529051600160a060020a039092169163b17922f6916044808201926020929091908290030181600087803b15801561131b57600080fd5b505af115801561132f573d6000803e3d6000fd5b505050506040513d602081101561134557600080fd5b5051151561135257600080fd5b60028260ff16108015611368575060048160ff16105b151561137357600080fd5b6000805461ff00191661010060ff938416021760ff191692909116919091179055565b600160a060020a03918216600090815260056020908152604080832093909416825291909152205490565b60088160028110610aee57fe5b600160a060020a03831660009081526005602090815260408083203384529091528120548211156113fe57600080fd5b600160a060020a0384166000908152600560209081526040808320338452909152902080548390039055611433848484611759565b600160a060020a0384166000818152600560209081526040808320338085529083529281902054815190815290519293926000805160206119af833981519152929181900390910190a35060019392505050565b80600a60ff85166002811061149857fe5b0180549091019055600860ff8416600281106114b057fe5b0154600a60ff8516600281106114c257fe5b015411156114cf57600080fd5b6114da838383611833565b505050565b600080600060038660ff168154811015156114f657fe5b6000918252602080832060ff8a168452600482526040808520600160a060020a038b168652909252922060018101549290910194509250841415611539576116d1565b604080518581529051600160a060020a0387169160ff8916917f1cd78d1ff751466c0b9865d2c15ac404b691498f54893d3e7d745c306f8ffd879181900360200190a38315156116825750805460ff86166000908152600460209081526040808320600160a060020a038916845290915281208181556001015560035483548491600019019081106115c757fe5b6000918252602090912001548354600160a060020a03909116908490839081106115ed57fe5b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03949094169390931790925560ff88168152600490915260408120845483929086908490811061164757fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205582546000190161167c8482611971565b506116d1565b600182015415156116c957825480835560018101845560008481526020902001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0387161790555b600182018490555b505050505050565b60006116e58484610953565b9050818110156116f457600080fd5b6040805183815290519183900391600160a060020a038516917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a2610c8d8484836114df565b6000611750338484611759565b50600192915050565b60008060008361176887610f69565b101561177357600080fd5b84600160a060020a031686600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a360005460ff1692508391506117d38387610953565b90508381101561181b576117e9838760006114df565b6117f48386836118be565b60ff831615611804576000611807565b60015b925080820391506118188387610953565b90505b61182883878484036114df565b6116d18386846118be565b6000818261183f610914565b01101561184b57600080fd5b81600160ff86166002811061185c57fe5b01805490910190558161186f8585610953565b01905082600160a060020a03167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885836040518082815260200191505060405180910390a2610c8d8484836114df565b600080548190600161010090910460ff16116118da57846118ee565b6002600060019054906101000a900460ff16035b91506118fa8285610953565b60005490915060ff6101009091041660011415806119185750600081115b151561192357600080fd5b60ff828116908616146119645782600160ff87166002811061194157fe5b01805491909103905582600160ff84166002811061195b57fe5b01805490910190555b610ad582858584016114df565b8154818355818111156114da576000838152602090206114da91810190830161091c91905b808211156119aa5760008155600101611996565b509056008c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a165627a7a7230582079786cfcbbb9e8dbf74223bf696663c680209a9f0d5277a2739499dc1a0f174d0029000000000000000000000000a83fd108acdb3f04f16519fefc667b365b68e0c4

Deployed Bytecode

0x6080604052600436106101535763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610158578063095ea7b3146101e257806311cfb19d1461021a57806318160ddd1461024d57806323b872dd14610262578063246452541461028c57806324db1f50146102b3578063313ce5671461037c57806335403023146103a757806339509351146103bf578063461c89b3146103e357806350bb117a146104aa57806361cdd2dc146104cb5780636689e28b146104fc57806370a08231146105cb5780637251beba146105ec578063884a26da1461060157806395d89b41146101585780639dafa3e3146106c8578063a457c2d7146106e0578063a9059cbb14610704578063b0de0c4014610728578063c8d2c729146107dc578063d39ebe2c146107f1578063dd62ed3e14610812578063e521aa9414610839575b600080fd5b34801561016457600080fd5b5061016d610851565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101a757818101518382015260200161018f565b50505050905090810190601f1680156101d45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101ee57600080fd5b50610206600160a060020a0360043516602435610888565b604080519115158252519081900360200190f35b34801561022657600080fd5b5061023b600160a060020a03600435166108dc565b60408051918252519081900360200190f35b34801561025957600080fd5b5061023b610914565b34801561026e57600080fd5b50610206600160a060020a036004358116906024351660443561091f565b34801561029857600080fd5b5061023b60ff60043516600160a060020a0360243516610953565b3480156102bf57600080fd5b506040805160206004803580820135838102808601850190965280855261037a95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506109839650505050505050565b005b34801561038857600080fd5b50610391610adc565b6040805160ff9092168252519081900360200190f35b3480156103b357600080fd5b5061023b600435610ae1565b3480156103cb57600080fd5b50610206600160a060020a0360043516602435610af5565b3480156103ef57600080fd5b506040805160206004803580820135838102808601850190965280855261037a95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610b7e9650505050505050565b3480156104b657600080fd5b5061023b600160a060020a0360043516610c93565b3480156104d757600080fd5b506104e0610cca565b60408051600160a060020a039092168252519081900360200190f35b34801561050857600080fd5b5060408051602060046024803582810135848102808701860190975280865261037a96843560ff1696369660449591949091019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610cd99650505050505050565b3480156105d757600080fd5b5061023b600160a060020a0360043516610f69565b3480156105f857600080fd5b50610391610f88565b34801561060d57600080fd5b506040805160206004803580820135838102808601850190965280855261037a95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610f919650505050505050565b3480156106d457600080fd5b5061023b6004356110a0565b3480156106ec57600080fd5b50610206600160a060020a03600435166024356110ad565b34801561071057600080fd5b50610206600160a060020a0360043516602435611138565b34801561073457600080fd5b5061074360ff6004351661116a565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561078757818101518382015260200161076f565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156107c65781810151838201526020016107ae565b5050505090500194505050505060405180910390f35b3480156107e857600080fd5b506103916112b6565b3480156107fd57600080fd5b5061037a60ff600435811690602435166112c4565b34801561081e57600080fd5b5061023b600160a060020a0360043581169060243516611396565b34801561084557600080fd5b5061023b6004356113c1565b60408051808201909152600381527f414c450000000000000000000000000000000000000000000000000000000000602082015281565b336000818152600560209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390926000805160206119af833981519152928290030190a350600192915050565b600160a060020a03811660009081526007602052604081206001810154421115610909576000915061090e565b805491505b50919050565b600254600154015b90565b60008161092b856108dc565b0161093585610f69565b101561094057600080fd5b61094b8484846113ce565b949350505050565b60ff82166000908152600460209081526040808320600160a060020a038516845290915290206001015492915050565b6006546040805160e160020a6358bc917b0281523360048201526003602482015290516000928392600160a060020a039091169163b17922f69160448082019260209290919082900301818787803b1580156109de57600080fd5b505af11580156109f2573d6000803e3d6000fd5b505050506040513d6020811015610a0857600080fd5b50511515610a1557600080fd5b83518551148015610a27575082518551145b1515610a3257600080fd5b600091505b84518261ffff161015610ad55760076000868461ffff16815181101515610a5a57fe5b90602001906020020151600160a060020a0316600160a060020a031681526020019081526020016000209050838261ffff16815181101515610a9857fe5b6020908102909101015181558251839061ffff8416908110610ab657fe5b9060200190602002015181600101819055508180600101925050610a37565b5050505050565b601281565b60018160028110610aee57fe5b0154905081565b336000908152600560209081526040808320600160a060020a0386168452909152812054820182811015610b2857600080fd5b336000818152600560209081526040808320600160a060020a03891680855290835292819020859055805185815290519293926000805160206119af833981519152929181900390910190a35060019392505050565b6006546040805160e160020a6358bc917b028152336004820152600360248201529051600092600160a060020a03169163b17922f691604480830192602092919082900301818787803b158015610bd457600080fd5b505af1158015610be8573d6000803e3d6000fd5b505050506040513d6020811015610bfe57600080fd5b50511515610c0b57600080fd5b82518451148015610c1d575081518351145b1515610c2857600080fd5b5060005b8351811015610c8d57610c858482815181101515610c4657fe5b906020019060200201518483815181101515610c5e57fe5b906020019060200201518484815181101515610c7657fe5b90602001906020020151611487565b600101610c2c565b50505050565b600160a060020a03811660009081526007602052604081206001810154421115610cc0576000915061090e565b6001015492915050565b600654600160a060020a031681565b6006546040805160e160020a6358bc917b0281523360048201526003602482015290516000928392839283928392600160a060020a039091169163b17922f69160448082019260209290919082900301818787803b158015610d3a57600080fd5b505af1158015610d4e573d6000803e3d6000fd5b505050506040513d6020811015610d6457600080fd5b50511515610d7157600080fd5b86518851148015610d83575085518751145b1515610d8e57600080fd5b60009450600093505b8751841015610f38578684815181101515610dae57fe5b90602001906020020151850194508684815181101515610dca57fe5b90602001906020020151610df58a8a87815181101515610de657fe5b90602001906020020151610953565b019250610e1a898986815181101515610e0a57fe5b90602001906020020151856114df565b8784815181101515610e2857fe5b90602001906020020151600160a060020a031633600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8987815181101515610e7457fe5b906020019060200201516040518082815260200191505060405180910390a360008685815181101515610ea357fe5b906020019060200201511115610f2d57610ed38885815181101515610ec457fe5b90602001906020020151610f69565b9250600760008986815181101515610ee757fe5b6020908102909101810151600160a060020a031682528101919091526040016000208381558651909250869085908110610f1d57fe5b6020908102909101015160018301555b600190930192610d97565b610f428933610953565b905084811015610f5157600080fd5b610f5e89338784036114df565b505050505050505050565b6000610f76600183610953565b610f81600084610953565b0192915050565b60005460ff1681565b6006546040805160e160020a6358bc917b028152336004820152600360248201529051600092600160a060020a03169163b17922f691604480830192602092919082900301818787803b158015610fe757600080fd5b505af1158015610ffb573d6000803e3d6000fd5b505050506040513d602081101561101157600080fd5b5051151561101e57600080fd5b82518451148015611030575081518351145b151561103b57600080fd5b5060005b8351811015610c8d57611098848281518110151561105957fe5b90602001906020020151848381518110151561107157fe5b90602001906020020151848481518110151561108957fe5b906020019060200201516116d9565b60010161103f565b600a8160028110610aee57fe5b336000908152600560209081526040808320600160a060020a03861684529091528120548211156110dd57600080fd5b336000818152600560209081526040808320600160a060020a03881680855290835292819020805487900390819055815190815290519293926000805160206119af833981519152929181900390910190a350600192915050565b600081611144336108dc565b0161114e33610f69565b101561115957600080fd5b6111638383611743565b9392505050565b60608060008080600360ff87161061118157600080fd5b6003805460ff881690811061119257fe5b90600052602060002001925060018380549050039150816040519080825280602002602001820160405280156111d2578160200160208202803883390190505b509450816040519080825280602002602001820160405280156111ff578160200160208202803883390190505b509350600090505b818110156112ae57828160010181548110151561122057fe5b6000918252602090912001548551600160a060020a039091169086908390811061124657fe5b600160a060020a03909216602092830290910190910152825461128e90879085906001850190811061127457fe5b600091825260209091200154600160a060020a0316610953565b848281518110151561129c57fe5b60209081029091010152600101611207565b505050915091565b600054610100900460ff1681565b6006546040805160e160020a6358bc917b028152336004820152600360248201529051600160a060020a039092169163b17922f6916044808201926020929091908290030181600087803b15801561131b57600080fd5b505af115801561132f573d6000803e3d6000fd5b505050506040513d602081101561134557600080fd5b5051151561135257600080fd5b60028260ff16108015611368575060048160ff16105b151561137357600080fd5b6000805461ff00191661010060ff938416021760ff191692909116919091179055565b600160a060020a03918216600090815260056020908152604080832093909416825291909152205490565b60088160028110610aee57fe5b600160a060020a03831660009081526005602090815260408083203384529091528120548211156113fe57600080fd5b600160a060020a0384166000908152600560209081526040808320338452909152902080548390039055611433848484611759565b600160a060020a0384166000818152600560209081526040808320338085529083529281902054815190815290519293926000805160206119af833981519152929181900390910190a35060019392505050565b80600a60ff85166002811061149857fe5b0180549091019055600860ff8416600281106114b057fe5b0154600a60ff8516600281106114c257fe5b015411156114cf57600080fd5b6114da838383611833565b505050565b600080600060038660ff168154811015156114f657fe5b6000918252602080832060ff8a168452600482526040808520600160a060020a038b168652909252922060018101549290910194509250841415611539576116d1565b604080518581529051600160a060020a0387169160ff8916917f1cd78d1ff751466c0b9865d2c15ac404b691498f54893d3e7d745c306f8ffd879181900360200190a38315156116825750805460ff86166000908152600460209081526040808320600160a060020a038916845290915281208181556001015560035483548491600019019081106115c757fe5b6000918252602090912001548354600160a060020a03909116908490839081106115ed57fe5b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03949094169390931790925560ff88168152600490915260408120845483929086908490811061164757fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205582546000190161167c8482611971565b506116d1565b600182015415156116c957825480835560018101845560008481526020902001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0387161790555b600182018490555b505050505050565b60006116e58484610953565b9050818110156116f457600080fd5b6040805183815290519183900391600160a060020a038516917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a2610c8d8484836114df565b6000611750338484611759565b50600192915050565b60008060008361176887610f69565b101561177357600080fd5b84600160a060020a031686600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a360005460ff1692508391506117d38387610953565b90508381101561181b576117e9838760006114df565b6117f48386836118be565b60ff831615611804576000611807565b60015b925080820391506118188387610953565b90505b61182883878484036114df565b6116d18386846118be565b6000818261183f610914565b01101561184b57600080fd5b81600160ff86166002811061185c57fe5b01805490910190558161186f8585610953565b01905082600160a060020a03167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885836040518082815260200191505060405180910390a2610c8d8484836114df565b600080548190600161010090910460ff16116118da57846118ee565b6002600060019054906101000a900460ff16035b91506118fa8285610953565b60005490915060ff6101009091041660011415806119185750600081115b151561192357600080fd5b60ff828116908616146119645782600160ff87166002811061194157fe5b01805491909103905582600160ff84166002811061195b57fe5b01805490910190555b610ad582858584016114df565b8154818355818111156114da576000838152602090206114da91810190830161091c91905b808211156119aa5760008155600101611996565b509056008c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a165627a7a7230582079786cfcbbb9e8dbf74223bf696663c680209a9f0d5277a2739499dc1a0f174d0029

Swarm Source

bzzr://79786cfcbbb9e8dbf74223bf696663c680209a9f0d5277a2739499dc1a0f174d
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.