ETH Price: $3,072.99 (+3.43%)
Gas: 9 Gwei

Token

ButtCoin (0xBUTT)
 

Overview

Max Total Supply

23,186,459.13413525 0xBUTT

Holders

5,335

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
98 0xBUTT

Value
$0.00
0x59c0ed446898f0152f569a62f23261d7c8a72eee
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
ZERO_X_BUTTv5

Compiler Version
v0.5.10+commit.5a6ea5b1

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-07-28
*/

/**
 *Submitted for verification at Etherscan.io on 2019-07-26
*/

pragma solidity ^ 0.5 .10;

// ----------------------------------------------------------------------------
//'ButtCoin' contract, version 2.5
// Symbol      : 0xBUTT
// Name        : ButtCoin
// Total supply: Dynamic
// Decimals    : 8
// ----------------------------------------------------------------------------

// ----------------------------------------------------------------------------
// Safe maths
// ----------------------------------------------------------------------------

library SafeMath {

//addition
    function add(uint a, uint b) internal pure returns(uint c) {
        c = a + b;
        require(c >= a);
    }

//subtraction
    function sub(uint a, uint b) internal pure returns(uint c) {
        require(b <= a);
        c = a - b;
    }

//multiplication
    function mul(uint a, uint b) internal pure returns(uint c) {
        c = a * b;
        require(a == 0 || c / a == b);
    }

//division
    function div(uint a, uint b) internal pure returns(uint c) {
        require(b > 0);
        c = a / b;
    }

    //ceil
    function ceil(uint a, uint m) internal pure returns(uint) {
        uint c = add(a, m);
        uint d = sub(c, 1);
        return mul(div(d, m), m);
    }

}

 

// ----------------------------------------------------------------------------
// ERC Token Standard #20 Interface
// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md
// ----------------------------------------------------------------------------

contract ERC20Interface {

    function totalSupply() public view returns(uint);
    function balanceOf(address tokenOwner) public view returns(uint balance);
    function allowance(address tokenOwner, address spender) public view returns(uint remaining);
    function transfer(address to, uint tokens) public returns(bool success);
    function approve(address spender, uint tokens) public returns(bool success);
    function transferFrom(address from, address to, uint tokens) public returns(bool success);
    function getDifficultyExponent() public view returns(uint); 
    function getMiningDifficulty() public view returns(uint);
    function getMiningTarget() public view returns(uint);
    function getNextAward() public view returns(uint);
    function getChallengeNumber() public view returns(bytes32);
    
    event Transfer(address indexed from, address indexed to, uint tokens);
    event Approval(address indexed tokenOwner, address indexed spender, uint tokens);
}

// ----------------------------------------------------------------------------
// Contract function to receive approval and execute function in one call
// ----------------------------------------------------------------------------
    contract ApproveAndCallFallBack {
      function receiveApproval(address from, uint256 tokens, address token, bytes memory data) public;
    }

// ----------------------------------------------------------------------------
// Owned contract
// ----------------------------------------------------------------------------

    contract Owned {
    
      address public owner;
      address public newOwner;
    
      event OwnershipTransferred(address indexed _from, address indexed _to);
    
      constructor() public {
        owner = msg.sender;
      }
    
      modifier onlyOwner {
        require(msg.sender == owner);
        _;
      }
    
      function transferOwnership(address _newOwner) public onlyOwner {
        newOwner = _newOwner;
      }
    
      function acceptOwnership() public {
        require(msg.sender == newOwner);
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
        newOwner = address(0);
      }
    }

// ----------------------------------------------------------------------------
// ERC20 Token, with the addition of symbol, name and decimals and an
// initial fixed supply
// ----------------------------------------------------------------------------

contract ZERO_X_BUTTv5 is ERC20Interface, Owned {

    using SafeMath for uint;
    
    string public symbol;
    string public name;
    
    uint8 public decimals;
    
    uint256 public _totalSupply;
    uint256 public _burned;
    
    uint private n;
    uint public nFutureTime;
    uint public _MAXIMUM_TARGET;
    uint public rewardEra;
    uint public lastRewardAmount;
    uint public lastRewardEthBlockNumber;
    uint public tokensMinted;
    
    address public lastRewardTo;
    address public previousSender = address(0); //the previous user of a contract
    
    bytes32 public challengeNumber; //generate a new one when a new reward is minted

    mapping(bytes32 => bytes32) solutionForChallenge;
    mapping(address => uint) balances;
    mapping(address => mapping(address => uint)) allowed;

    uint private miningTarget;
    uint private basePercent;
    
    bool internal locked = false;
    
    event Mint(address indexed from, uint reward_amount, uint epochCount, bytes32 newChallengeNumber);

  // ------------------------------------------------------------------------
  // Constructor
  // ------------------------------------------------------------------------
    constructor() public {
        if (locked) revert();
            symbol = "0xBUTT";
            name = "ButtCoin";
            decimals = 8;
            basePercent = 100;
            n = 234; //the maxiumum target exponent
            _MAXIMUM_TARGET = 2 ** n;
            
            uint toMint = 33554467 * 10 ** uint(decimals); //This is an assumption and a kick-start, which resets when 75% is burned.
            premine(msg.sender, toMint);
            
            tokensMinted = toMint;
            _totalSupply = toMint;
            rewardEra = 1;
            miningTarget = _MAXIMUM_TARGET;
            _startNewMiningEpoch();
            
            nFutureTime = now + 92275199; // about 3 years in the future
            
            locked = true;
    }

//===================================================================================
//---------------------------------------PUBLIC--------------------------------------
//===================================================================================

// -------------------------------------------------------------------------------
// This is a recent ethereum block hash, used to prevent pre-mining future blocks.
// -------------------------------------------------------------------------------
    function getChallengeNumber() public view returns(bytes32) {
        return challengeNumber;
    }

// ------------------------------------------------------------------------
// Minting of tokens during the mining.
// ------------------------------------------------------------------------
    function mint(uint256 nonce, bytes32 challenge_digest) public returns(bool success) {
        //the PoW must contain work that includes a recent ethereum block hash (challenge number) and the msg.sender's address to prevent MITM attacks
        bytes32 digest = keccak256(abi.encodePacked(challengeNumber, msg.sender, nonce));
        
        //the challenge digest must match the expected
        if (digest != challenge_digest) revert();
        
        //the digest must be smaller than the target
        if (uint256(digest) > miningTarget) revert();
        
        //only allow one reward for each challenge
        bytes32 solution = solutionForChallenge[challengeNumber];
        solutionForChallenge[challengeNumber] = digest;
        if (solution != 0x0) revert(); //prevent the same answer from awarding twice
        
        uint reward_amount = getMiningReward();
        balances[msg.sender] = balances[msg.sender].add(reward_amount);
        tokensMinted = tokensMinted.add(reward_amount);
        _totalSupply = _totalSupply.add(reward_amount);
        
        //set readonly diagnostics data
        lastRewardTo = msg.sender;
        lastRewardAmount = reward_amount;
        lastRewardEthBlockNumber = block.number;
        
        _startNewMiningEpoch();
        emit Mint(msg.sender, reward_amount, rewardEra, challengeNumber);
        
        return true;
    }

// ------------------------------------------------------------------------
// Transfer `tokens` from the current account to the `to` account
// ------------------------------------------------------------------------

    function transfer(address to, uint tokens) public returns(bool success) {
        pulseCheck(); 
        
        uint256 tokensToBurn = findTwoPercent(tokens);
        uint256 toZeroAddress = tokensToBurn.div(2);
        uint256 toPreviousAddress = tokensToBurn.sub(toZeroAddress);
        uint256 tokensToTransfer = tokens.sub(toZeroAddress.add(toPreviousAddress));
        
         sendTo(msg.sender, to, tokensToTransfer);
         sendTo(msg.sender, address(0), toZeroAddress);
        if (previousSender != to) { //Don't send the tokens to yourself
         sendTo(msg.sender, previousSender, toPreviousAddress);
          if (previousSender == address(0)) {
            _burned = _burned.add(toPreviousAddress);
          }
        }
        if (to == address(0)) {
          _burned = _burned.add(tokensToTransfer);
        }
        
        _burned = _burned.add(toZeroAddress);
        
        _totalSupply = totalSupply();
        previousSender = msg.sender;
        return true;
    }
  
// ------------------------------------------------------------------------
// Transfer `tokens` from the `from` account to the `to` account
// ------------------------------------------------------------------------

    function transferFrom(address from, address to, uint tokens) public returns(bool success) {
        pulseCheck();
        
        uint256 tokensToBurn = findTwoPercent(tokens);
        uint256 toZeroAddress = tokensToBurn.div(2);
        uint256 toPreviousAddress = tokensToBurn - toZeroAddress;
        uint256 tokensToTransfer = tokens.sub(toZeroAddress).sub(toPreviousAddress);
        
        sendTo(from, to, tokensToTransfer);
        sendTo(from, address(0), toZeroAddress);
        if (previousSender != to) { //Don't send tokens to yourself
          sendTo(from, previousSender, toPreviousAddress);
          if (previousSender == address(0)) {
            _burned = _burned.add(toPreviousAddress);
          }
        }
        if (to == address(0)) {
          _burned = _burned.add(tokensToTransfer);
        }
        
        _burned = _burned.add(toZeroAddress);
        _totalSupply = totalSupply();
        previousSender = from;
        
        return true;
  }
  

// ------------------------------------------------------------------------
// Transfers to multiple accounts
// ------------------------------------------------------------------------
    function multiTransfer(address[] memory receivers, uint256[] memory amounts) public {
        for (uint256 i = 0; i < receivers.length; i++) {
          transfer(receivers[i], amounts[i]);
        }
    }

// ------------------------------------------------------------------------
// Token owner can approve for `spender` to transferFrom(...) `tokens`
// from the token owner's account
// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md
// recommends that there are no checks for the approval double-spend attack
// as this should be implemented in user interfaces
// ------------------------------------------------------------------------
    function approve(address spender, uint tokens) public returns(bool success) {
        allowed[msg.sender][spender] = tokens;
        emit Approval(msg.sender, spender, tokens);
        return true;
    }

// ------------------------------------------------------------------------
// Token owner can approve for `spender` to transferFrom(...) `tokens`
// from the token owner's account. The `spender` contract function
// `receiveApproval(...)` is then executed
// ------------------------------------------------------------------------
  function approveAndCall(address spender, uint tokens, bytes memory data) public returns(bool success) {
    allowed[msg.sender][spender] = tokens;
    emit Approval(msg.sender, spender, tokens);
    ApproveAndCallFallBack(spender).receiveApproval(msg.sender, tokens, address(this), data);
    return true;
  }
  
// ------------------------------------------------------------------------
// Owner can transfer out any accidentally sent ERC20 tokens
// ------------------------------------------------------------------------
  function transferAnyERC20Token(address tokenAddress, uint tokens) public onlyOwner returns(bool success) {
    return ERC20Interface(tokenAddress).transfer(owner, tokens);
  }  





//===================================================================================
//---------------------------------------INTERNAL------------------------------------
//===================================================================================

// ------------------------------------------------------------------------
// Minting tokens before the mining.
// ------------------------------------------------------------------------
    function premine(address account, uint256 amount) internal {
        if (locked) revert();
        require(amount != 0);
        balances[account] = balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

// ------------------------------------------------------------------------
// Starts new mining epoch, a new 'block' to be mined.
// ------------------------------------------------------------------------
    function _startNewMiningEpoch() internal {
        rewardEra = rewardEra + 1; //increment the rewardEra
        _reAdjustDifficulty();
        challengeNumber = blockhash(block.number - 1);
    }

 

// ------------------------------------------------------------------------
// Readjust difficulty
// ------------------------------------------------------------------------
    function _reAdjustDifficulty() internal {
        n = n - 1;
        miningTarget = (2 ** n);
        nFutureTime = now + 92275199;
        
        //if difficulty level became too much for the miners and coins are running out of a supply, we need to lower a difficulty to mint new coins...
        //this way, the coin does not become store of a value. Nevertheless, it may be required for the miners to do some extra work to lower a difficulty.
        uint treshold = (tokensMinted.mul(95)).div(100);
        if(_burned>=treshold){
            //lower difficulty to significant levels
            n = (n.mul(105)).div(100);
          if(n>=234){
              n=234;
          }
            miningTarget = (2 ** n);
        }
    }

// ------------------------------------------------------------------------
// Checks if mining is alive
// ------------------------------------------------------------------------
    function pulseCheck() internal{
    //if either the coin is dead or the mining is stuck  
        if(nFutureTime<=now){
          n = (n.div(2)).add(n); 
          if(n>=234){
              n=234;
          }
          miningTarget = (2 ** n);
          _startNewMiningEpoch();
        }  
    }

// ------------------------------------------------------------------------
// Gives miners their earned reward, zero if everything is mined.
// ------------------------------------------------------------------------
    function getMiningReward() internal returns(uint) {
        return ((234 - n) ** 3) * 10 ** uint(decimals);
    }

// ------------------------------------------------------------------------
// Makes a transfer with the 
// ------------------------------------------------------------------------
    function sendTo(address from, address to, uint tokens) internal returns(bool success) {
        balances[from] = balances[from].sub(tokens);
        balances[to] = balances[to].add(tokens);
        emit Transfer(from, to, tokens);
        return true;
    }
    
// ------------------------------------------------------------------------
// Calculates 2% for burning
// ------------------------------------------------------------------------
    function findTwoPercent(uint256 value) internal returns(uint256) {
        uint256 roundValue = value.ceil(basePercent);
        uint256 onePercent = roundValue.mul(basePercent).div(10000);
        return onePercent.mul(2);
    }
    
    
//===================================================================================
//---------------------------------------VIEWS---------------------------------------
//===================================================================================

// ------------------------------------------------------------------------
// Returns the amount of tokens approved by the owner that can be
// transferred to the spender's account
// ------------------------------------------------------------------------
  function allowance(address tokenOwner, address spender) public view returns(uint remaining) {
    return allowed[tokenOwner][spender];
  }

// -------------------------------------------------------------------------------
// Gets difficulty exponent n from the 2^n
// -------------------------------------------------------------------------------
    function getDifficultyExponent() public view returns(uint) {
        return n;
    }     
 
   
// -------------------------------------------------------------------------------
// Auto adjusts the number of zeroes the digest of the PoW solution requires.  
// -------------------------------------------------------------------------------
    function getMiningDifficulty() public view returns(uint) {
        return _MAXIMUM_TARGET.div(miningTarget);
    }

// -------------------------------------------------------------------------------
// Returns the mining target.
// -------------------------------------------------------------------------------
    function getMiningTarget() public view returns(uint) {
        return miningTarget;
    }

// -------------------------------------------------------------------------------
// Returns the next mining award
// -------------------------------------------------------------------------------
    function getNextAward() public view returns(uint) {
        return ((234 - n) ** 3) * 10 ** uint(decimals);
    }    
    
// ------------------------------------------------------------------------
// Used to help debugging the mining software.
// ------------------------------------------------------------------------
    function getMintDigest(uint256 nonce, bytes32 challenge_digest, bytes32 challenge_number) public view returns(bytes32 digesttest) {
        bytes32 digest = keccak256(abi.encodePacked(challenge_number, msg.sender, nonce));
        return digest;
    }

// ------------------------------------------------------------------------
// Used to help debugging the mining software.
// ------------------------------------------------------------------------
    function checkMintSolution(uint256 nonce, bytes32 challenge_digest, bytes32 challenge_number, uint testTarget) public view returns(bool success) {
        bytes32 digest = keccak256(abi.encodePacked(challenge_number, msg.sender, nonce));
        if (uint256(digest) > testTarget) revert();
        return (digest == challenge_digest);
    }

// ------------------------------------------------------------------------
// Actual supply
// ------------------------------------------------------------------------
    function totalSupply() public view returns(uint) {
        return tokensMinted.sub(_burned);
    }



// ------------------------------------------------------------------------
// Get the token balance for account `tokenOwner`
// ------------------------------------------------------------------------
  function balanceOf(address tokenOwner) public view returns(uint balance) {
    return balances[tokenOwner];
  }
    
//===================================================================================
//---------------------------------------EXTERNAL------------------------------------
//===================================================================================  
 
// ------------------------------------------------------------------------
// Do not accept ETH
// ------------------------------------------------------------------------
  function () external payable {
    revert();
  }  

}

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":"tokens","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"lastRewardEthBlockNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getMiningDifficulty","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"nonce","type":"uint256"},{"name":"challenge_digest","type":"bytes32"}],"name":"mint","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"receivers","type":"address[]"},{"name":"amounts","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rewardEra","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getMiningTarget","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_burned","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getChallengeNumber","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokensMinted","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastRewardTo","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"nFutureTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"nonce","type":"uint256"},{"name":"challenge_digest","type":"bytes32"},{"name":"challenge_number","type":"bytes32"},{"name":"testTarget","type":"uint256"}],"name":"checkMintSolution","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_MAXIMUM_TARGET","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"challengeNumber","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","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":true,"inputs":[{"name":"nonce","type":"uint256"},{"name":"challenge_digest","type":"bytes32"},{"name":"challenge_number","type":"bytes32"}],"name":"getMintDigest","outputs":[{"name":"digesttest","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"lastRewardAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getDifficultyExponent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"tokens","type":"uint256"},{"name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"previousSender","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transferAnyERC20Token","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getNextAward","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"reward_amount","type":"uint256"},{"indexed":false,"name":"epochCount","type":"uint256"},{"indexed":false,"name":"newChallengeNumber","type":"bytes32"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tokenOwner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Approval","type":"event"}]

60806040526000600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601660006101000a81548160ff0219169083151502179055503480156200006e57600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601660009054906101000a900460ff1615620000ca57600080fd5b6040518060400160405280600681526020017f30784255545400000000000000000000000000000000000000000000000000008152506002908051906020019062000117929190620004bf565b506040518060400160405280600881526020017f42757474436f696e0000000000000000000000000000000000000000000000008152506003908051906020019062000165929190620004bf565b506008600460006101000a81548160ff021916908360ff160217905550606460158190555060ea60078190555060075460020a6009819055506000600460009054906101000a900460ff1660ff16600a0a6302000023029050620001d033826200022e60201b60201c565b80600d81905550806005819055506001600a81905550600954601481905550620001ff6200035e60201b60201c565b63058001ff42016008819055506001601660006101000a81548160ff021916908315150217905550506200056e565b601660009054906101000a900460ff16156200024957600080fd5b60008114156200025857600080fd5b620002b181601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200038760201b620020a31790919060201c565b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6001600a5401600a819055506200037a620003a260201b60201c565b6001430340601081905550565b60008183019050828110156200039c57600080fd5b92915050565b60016007540360078190555060075460020a60148190555063058001ff42016008819055506000620004006064620003ec605f600d546200046d60201b620024431790919060201c565b6200049d60201b6200205c1790919060201c565b905080600654106200046a576200044360646200042f60696007546200046d60201b620024431790919060201c565b6200049d60201b6200205c1790919060201c565b60078190555060ea600754106200045d5760ea6007819055505b60075460020a6014819055505b50565b6000818302905060008314806200048d5750818382816200048a57fe5b04145b6200049757600080fd5b92915050565b6000808211620004ac57600080fd5b818381620004b657fe5b04905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200050257805160ff191683800117855562000533565b8280016001018555821562000533579182015b828111156200053257825182559160200191906001019062000515565b5b50905062000542919062000546565b5090565b6200056b91905b80821115620005675760008160009055506001016200054d565b5090565b90565b6124a5806200057e6000396000f3fe6080604052600436106102045760003560e01c80637294753411610118578063bafedcaa116100a0578063db1b569f1161006f578063db1b569f14610c42578063dc39d06d14610c99578063dd62ed3e14610d0c578063f2fde38b14610d91578063f401452614610de257610204565b8063bafedcaa14610a8b578063c968642514610ab6578063cae9ca5114610ae1578063d4ee1d9014610beb57610204565b80638ae0368b116100e75780638ae0368b146108a35780638da5cb5b146108ce57806395d89b411461092557806397566aa0146109b5578063a9059cbb14610a1857610204565b806372947534146107c557806379ba5097146107f057806381269a561461080757806387a2a9d61461087857610204565b80632d38bf7a1161019b578063405e3cc11161016a578063405e3cc1146106885780634ef37628146106b35780636de9f32b146106de5780636fd396d61461070957806370a082311461076057610204565b80632d38bf7a146105d6578063313ce5671461060157806332e99708146106325780633eaaf86b1461065d57610204565b80631801fbe5116101d75780631801fbe51461036257806318160ddd146103bf5780631e89d545146103ea57806323b872dd1461054357610204565b806306fdde0314610209578063095ea7b314610299578063163aa00d1461030c57806317da485f14610337575b600080fd5b34801561021557600080fd5b5061021e610e0d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561025e578082015181840152602081019050610243565b50505050905090810190601f16801561028b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102a557600080fd5b506102f2600480360360408110156102bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610eab565b604051808215151515815260200191505060405180910390f35b34801561031857600080fd5b50610321610f9d565b6040518082815260200191505060405180910390f35b34801561034357600080fd5b5061034c610fa3565b6040518082815260200191505060405180910390f35b34801561036e57600080fd5b506103a56004803603604081101561038557600080fd5b810190808035906020019092919080359060200190929190505050610fc1565b604051808215151515815260200191505060405180910390f35b3480156103cb57600080fd5b506103d461122c565b6040518082815260200191505060405180910390f35b3480156103f657600080fd5b506105416004803603604081101561040d57600080fd5b810190808035906020019064010000000081111561042a57600080fd5b82018360208201111561043c57600080fd5b8035906020019184602083028401116401000000008311171561045e57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156104be57600080fd5b8201836020820111156104d057600080fd5b803590602001918460208302840111640100000000831117156104f257600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929050505061124a565b005b34801561054f57600080fd5b506105bc6004803603606081101561056657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061129c565b604051808215151515815260200191505060405180910390f35b3480156105e257600080fd5b506105eb6114d5565b6040518082815260200191505060405180910390f35b34801561060d57600080fd5b506106166114db565b604051808260ff1660ff16815260200191505060405180910390f35b34801561063e57600080fd5b506106476114ee565b6040518082815260200191505060405180910390f35b34801561066957600080fd5b506106726114f8565b6040518082815260200191505060405180910390f35b34801561069457600080fd5b5061069d6114fe565b6040518082815260200191505060405180910390f35b3480156106bf57600080fd5b506106c8611504565b6040518082815260200191505060405180910390f35b3480156106ea57600080fd5b506106f361150e565b6040518082815260200191505060405180910390f35b34801561071557600080fd5b5061071e611514565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561076c57600080fd5b506107af6004803603602081101561078357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061153a565b6040518082815260200191505060405180910390f35b3480156107d157600080fd5b506107da611583565b6040518082815260200191505060405180910390f35b3480156107fc57600080fd5b50610805611589565b005b34801561081357600080fd5b5061085e6004803603608081101561082a57600080fd5b8101908080359060200190929190803590602001909291908035906020019092919080359060200190929190505050611726565b604051808215151515815260200191505060405180910390f35b34801561088457600080fd5b5061088d6117af565b6040518082815260200191505060405180910390f35b3480156108af57600080fd5b506108b86117b5565b6040518082815260200191505060405180910390f35b3480156108da57600080fd5b506108e36117bb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561093157600080fd5b5061093a6117e0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561097a57808201518184015260208101905061095f565b50505050905090810190601f1680156109a75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156109c157600080fd5b50610a02600480360360608110156109d857600080fd5b8101908080359060200190929190803590602001909291908035906020019092919050505061187e565b6040518082815260200191505060405180910390f35b348015610a2457600080fd5b50610a7160048036036040811015610a3b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506118f4565b604051808215151515815260200191505060405180910390f35b348015610a9757600080fd5b50610aa0611b3c565b6040518082815260200191505060405180910390f35b348015610ac257600080fd5b50610acb611b42565b6040518082815260200191505060405180910390f35b348015610aed57600080fd5b50610bd160048036036060811015610b0457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610b4b57600080fd5b820183602082011115610b5d57600080fd5b80359060200191846001830284011164010000000083111715610b7f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611b4c565b604051808215151515815260200191505060405180910390f35b348015610bf757600080fd5b50610c00611d7f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c4e57600080fd5b50610c57611da5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ca557600080fd5b50610cf260048036036040811015610cbc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611dcb565b604051808215151515815260200191505060405180910390f35b348015610d1857600080fd5b50610d7b60048036036040811015610d2f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f11565b6040518082815260200191505060405180910390f35b348015610d9d57600080fd5b50610de060048036036020811015610db457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f98565b005b348015610dee57600080fd5b50610df7612035565b6040518082815260200191505060405180910390f35b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ea35780601f10610e7857610100808354040283529160200191610ea3565b820191906000526020600020905b815481529060010190602001808311610e8657829003601f168201915b505050505081565b600081601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600c5481565b6000610fbc60145460095461205c90919063ffffffff16565b905090565b6000806010543385604051602001808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b8152601401828152602001935050505060405160208183030381529060405280519060200120905082811461103a57600080fd5b6014548160001c111561104c57600080fd5b600060116000601054815260200190815260200160002054905081601160006010548152602001908152602001600020819055506000801b811461108f57600080fd5b600061109961207c565b90506110ed81601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120a390919063ffffffff16565b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061114581600d546120a390919063ffffffff16565b600d81905550611160816005546120a390919063ffffffff16565b60058190555033600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b8190555043600c819055506111bd6120bd565b3373ffffffffffffffffffffffffffffffffffffffff167fcf6fbb9dcea7d07263ab4f5c3a92f53af33dffc421d9d121e1c74b307e68189d82600a5460105460405180848152602001838152602001828152602001935050505060405180910390a26001935050505092915050565b6000611245600654600d546120de90919063ffffffff16565b905090565b60008090505b82518110156112975761128983828151811061126857fe5b602002602001015183838151811061127c57fe5b60200260200101516118f4565b508080600101915050611250565b505050565b60006112a66120f8565b60006112b18361215b565b905060006112c960028361205c90919063ffffffff16565b90506000818303905060006112f9826112eb85896120de90919063ffffffff16565b6120de90919063ffffffff16565b90506113068888836121bf565b50611313886000856121bf565b508673ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461140b5761139688600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846121bf565b50600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561140a57611403826006546120a390919063ffffffff16565b6006819055505b5b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141561145c57611455816006546120a390919063ffffffff16565b6006819055505b611471836006546120a390919063ffffffff16565b60068190555061147f61122c565b60058190555087600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019450505050509392505050565b600a5481565b600460009054906101000a900460ff1681565b6000601454905090565b60055481565b60065481565b6000601054905090565b600d5481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60085481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115e357600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080833387604051602001808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018281526020019350505050604051602081830303815290604052805190602001209050828160001c11156117a157600080fd5b848114915050949350505050565b60095481565b60105481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118765780601f1061184b57610100808354040283529160200191611876565b820191906000526020600020905b81548152906001019060200180831161185957829003601f168201915b505050505081565b600080823386604051602001808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018281526020019350505050604051602081830303815290604052805190602001209050809150509392505050565b60006118fe6120f8565b60006119098361215b565b9050600061192160028361205c90919063ffffffff16565b9050600061193882846120de90919063ffffffff16565b9050600061196161195283856120a390919063ffffffff16565b876120de90919063ffffffff16565b905061196e3388836121bf565b5061197b336000856121bf565b508673ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a73576119fe33600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846121bf565b50600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611a7257611a6b826006546120a390919063ffffffff16565b6006819055505b5b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415611ac457611abd816006546120a390919063ffffffff16565b6006819055505b611ad9836006546120a390919063ffffffff16565b600681905550611ae761122c565b60058190555033600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600194505050505092915050565b600b5481565b6000600754905090565b600082601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611d0d578082015181840152602081019050611cf2565b50505050905090810190601f168015611d3a5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611d5c57600080fd5b505af1158015611d70573d6000803e3d6000fd5b50505050600190509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e2657600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611ece57600080fd5b505af1158015611ee2573d6000803e3d6000fd5b505050506040513d6020811015611ef857600080fd5b8101908080519060200190929190505050905092915050565b6000601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ff157600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600460009054906101000a900460ff1660ff16600a0a600360075460ea030a02905090565b600080821161206a57600080fd5b81838161207357fe5b04905092915050565b6000600460009054906101000a900460ff1660ff16600a0a600360075460ea030a02905090565b60008183019050828110156120b757600080fd5b92915050565b6001600a5401600a819055506120d161235b565b6001430340601081905550565b6000828211156120ed57600080fd5b818303905092915050565b42600854116121595761212b60075461211d600260075461205c90919063ffffffff16565b6120a390919063ffffffff16565b60078190555060ea600754106121445760ea6007819055505b60075460020a6014819055506121586120bd565b5b565b6000806121736015548461240890919063ffffffff16565b905060006121a06127106121926015548561244390919063ffffffff16565b61205c90919063ffffffff16565b90506121b660028261244390919063ffffffff16565b92505050919050565b600061221382601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120de90919063ffffffff16565b601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122a882601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120a390919063ffffffff16565b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60016007540360078190555060075460020a60148190555063058001ff420160088190555060006123ab606461239d605f600d5461244390919063ffffffff16565b61205c90919063ffffffff16565b90508060065410612405576123df60646123d1606960075461244390919063ffffffff16565b61205c90919063ffffffff16565b60078190555060ea600754106123f85760ea6007819055505b60075460020a6014819055505b50565b60008061241584846120a3565b905060006124248260016120de565b9050612439612433828661205c565b85612443565b9250505092915050565b60008183029050600083148061246157508183828161245e57fe5b04145b61246a57600080fd5b9291505056fea265627a7a72305820ad04e9d02d326c7874bbfd4275e34761967bffdb1537ae67c9e2ed040be234f064736f6c634300050a0032

Deployed Bytecode

0x6080604052600436106102045760003560e01c80637294753411610118578063bafedcaa116100a0578063db1b569f1161006f578063db1b569f14610c42578063dc39d06d14610c99578063dd62ed3e14610d0c578063f2fde38b14610d91578063f401452614610de257610204565b8063bafedcaa14610a8b578063c968642514610ab6578063cae9ca5114610ae1578063d4ee1d9014610beb57610204565b80638ae0368b116100e75780638ae0368b146108a35780638da5cb5b146108ce57806395d89b411461092557806397566aa0146109b5578063a9059cbb14610a1857610204565b806372947534146107c557806379ba5097146107f057806381269a561461080757806387a2a9d61461087857610204565b80632d38bf7a1161019b578063405e3cc11161016a578063405e3cc1146106885780634ef37628146106b35780636de9f32b146106de5780636fd396d61461070957806370a082311461076057610204565b80632d38bf7a146105d6578063313ce5671461060157806332e99708146106325780633eaaf86b1461065d57610204565b80631801fbe5116101d75780631801fbe51461036257806318160ddd146103bf5780631e89d545146103ea57806323b872dd1461054357610204565b806306fdde0314610209578063095ea7b314610299578063163aa00d1461030c57806317da485f14610337575b600080fd5b34801561021557600080fd5b5061021e610e0d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561025e578082015181840152602081019050610243565b50505050905090810190601f16801561028b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102a557600080fd5b506102f2600480360360408110156102bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610eab565b604051808215151515815260200191505060405180910390f35b34801561031857600080fd5b50610321610f9d565b6040518082815260200191505060405180910390f35b34801561034357600080fd5b5061034c610fa3565b6040518082815260200191505060405180910390f35b34801561036e57600080fd5b506103a56004803603604081101561038557600080fd5b810190808035906020019092919080359060200190929190505050610fc1565b604051808215151515815260200191505060405180910390f35b3480156103cb57600080fd5b506103d461122c565b6040518082815260200191505060405180910390f35b3480156103f657600080fd5b506105416004803603604081101561040d57600080fd5b810190808035906020019064010000000081111561042a57600080fd5b82018360208201111561043c57600080fd5b8035906020019184602083028401116401000000008311171561045e57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156104be57600080fd5b8201836020820111156104d057600080fd5b803590602001918460208302840111640100000000831117156104f257600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929050505061124a565b005b34801561054f57600080fd5b506105bc6004803603606081101561056657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061129c565b604051808215151515815260200191505060405180910390f35b3480156105e257600080fd5b506105eb6114d5565b6040518082815260200191505060405180910390f35b34801561060d57600080fd5b506106166114db565b604051808260ff1660ff16815260200191505060405180910390f35b34801561063e57600080fd5b506106476114ee565b6040518082815260200191505060405180910390f35b34801561066957600080fd5b506106726114f8565b6040518082815260200191505060405180910390f35b34801561069457600080fd5b5061069d6114fe565b6040518082815260200191505060405180910390f35b3480156106bf57600080fd5b506106c8611504565b6040518082815260200191505060405180910390f35b3480156106ea57600080fd5b506106f361150e565b6040518082815260200191505060405180910390f35b34801561071557600080fd5b5061071e611514565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561076c57600080fd5b506107af6004803603602081101561078357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061153a565b6040518082815260200191505060405180910390f35b3480156107d157600080fd5b506107da611583565b6040518082815260200191505060405180910390f35b3480156107fc57600080fd5b50610805611589565b005b34801561081357600080fd5b5061085e6004803603608081101561082a57600080fd5b8101908080359060200190929190803590602001909291908035906020019092919080359060200190929190505050611726565b604051808215151515815260200191505060405180910390f35b34801561088457600080fd5b5061088d6117af565b6040518082815260200191505060405180910390f35b3480156108af57600080fd5b506108b86117b5565b6040518082815260200191505060405180910390f35b3480156108da57600080fd5b506108e36117bb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561093157600080fd5b5061093a6117e0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561097a57808201518184015260208101905061095f565b50505050905090810190601f1680156109a75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156109c157600080fd5b50610a02600480360360608110156109d857600080fd5b8101908080359060200190929190803590602001909291908035906020019092919050505061187e565b6040518082815260200191505060405180910390f35b348015610a2457600080fd5b50610a7160048036036040811015610a3b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506118f4565b604051808215151515815260200191505060405180910390f35b348015610a9757600080fd5b50610aa0611b3c565b6040518082815260200191505060405180910390f35b348015610ac257600080fd5b50610acb611b42565b6040518082815260200191505060405180910390f35b348015610aed57600080fd5b50610bd160048036036060811015610b0457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610b4b57600080fd5b820183602082011115610b5d57600080fd5b80359060200191846001830284011164010000000083111715610b7f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611b4c565b604051808215151515815260200191505060405180910390f35b348015610bf757600080fd5b50610c00611d7f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c4e57600080fd5b50610c57611da5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ca557600080fd5b50610cf260048036036040811015610cbc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611dcb565b604051808215151515815260200191505060405180910390f35b348015610d1857600080fd5b50610d7b60048036036040811015610d2f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f11565b6040518082815260200191505060405180910390f35b348015610d9d57600080fd5b50610de060048036036020811015610db457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f98565b005b348015610dee57600080fd5b50610df7612035565b6040518082815260200191505060405180910390f35b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ea35780601f10610e7857610100808354040283529160200191610ea3565b820191906000526020600020905b815481529060010190602001808311610e8657829003601f168201915b505050505081565b600081601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600c5481565b6000610fbc60145460095461205c90919063ffffffff16565b905090565b6000806010543385604051602001808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b8152601401828152602001935050505060405160208183030381529060405280519060200120905082811461103a57600080fd5b6014548160001c111561104c57600080fd5b600060116000601054815260200190815260200160002054905081601160006010548152602001908152602001600020819055506000801b811461108f57600080fd5b600061109961207c565b90506110ed81601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120a390919063ffffffff16565b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061114581600d546120a390919063ffffffff16565b600d81905550611160816005546120a390919063ffffffff16565b60058190555033600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b8190555043600c819055506111bd6120bd565b3373ffffffffffffffffffffffffffffffffffffffff167fcf6fbb9dcea7d07263ab4f5c3a92f53af33dffc421d9d121e1c74b307e68189d82600a5460105460405180848152602001838152602001828152602001935050505060405180910390a26001935050505092915050565b6000611245600654600d546120de90919063ffffffff16565b905090565b60008090505b82518110156112975761128983828151811061126857fe5b602002602001015183838151811061127c57fe5b60200260200101516118f4565b508080600101915050611250565b505050565b60006112a66120f8565b60006112b18361215b565b905060006112c960028361205c90919063ffffffff16565b90506000818303905060006112f9826112eb85896120de90919063ffffffff16565b6120de90919063ffffffff16565b90506113068888836121bf565b50611313886000856121bf565b508673ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461140b5761139688600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846121bf565b50600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561140a57611403826006546120a390919063ffffffff16565b6006819055505b5b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141561145c57611455816006546120a390919063ffffffff16565b6006819055505b611471836006546120a390919063ffffffff16565b60068190555061147f61122c565b60058190555087600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019450505050509392505050565b600a5481565b600460009054906101000a900460ff1681565b6000601454905090565b60055481565b60065481565b6000601054905090565b600d5481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60085481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115e357600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080833387604051602001808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018281526020019350505050604051602081830303815290604052805190602001209050828160001c11156117a157600080fd5b848114915050949350505050565b60095481565b60105481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118765780601f1061184b57610100808354040283529160200191611876565b820191906000526020600020905b81548152906001019060200180831161185957829003601f168201915b505050505081565b600080823386604051602001808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018281526020019350505050604051602081830303815290604052805190602001209050809150509392505050565b60006118fe6120f8565b60006119098361215b565b9050600061192160028361205c90919063ffffffff16565b9050600061193882846120de90919063ffffffff16565b9050600061196161195283856120a390919063ffffffff16565b876120de90919063ffffffff16565b905061196e3388836121bf565b5061197b336000856121bf565b508673ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a73576119fe33600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846121bf565b50600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611a7257611a6b826006546120a390919063ffffffff16565b6006819055505b5b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415611ac457611abd816006546120a390919063ffffffff16565b6006819055505b611ad9836006546120a390919063ffffffff16565b600681905550611ae761122c565b60058190555033600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600194505050505092915050565b600b5481565b6000600754905090565b600082601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611d0d578082015181840152602081019050611cf2565b50505050905090810190601f168015611d3a5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611d5c57600080fd5b505af1158015611d70573d6000803e3d6000fd5b50505050600190509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e2657600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611ece57600080fd5b505af1158015611ee2573d6000803e3d6000fd5b505050506040513d6020811015611ef857600080fd5b8101908080519060200190929190505050905092915050565b6000601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ff157600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600460009054906101000a900460ff1660ff16600a0a600360075460ea030a02905090565b600080821161206a57600080fd5b81838161207357fe5b04905092915050565b6000600460009054906101000a900460ff1660ff16600a0a600360075460ea030a02905090565b60008183019050828110156120b757600080fd5b92915050565b6001600a5401600a819055506120d161235b565b6001430340601081905550565b6000828211156120ed57600080fd5b818303905092915050565b42600854116121595761212b60075461211d600260075461205c90919063ffffffff16565b6120a390919063ffffffff16565b60078190555060ea600754106121445760ea6007819055505b60075460020a6014819055506121586120bd565b5b565b6000806121736015548461240890919063ffffffff16565b905060006121a06127106121926015548561244390919063ffffffff16565b61205c90919063ffffffff16565b90506121b660028261244390919063ffffffff16565b92505050919050565b600061221382601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120de90919063ffffffff16565b601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122a882601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120a390919063ffffffff16565b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60016007540360078190555060075460020a60148190555063058001ff420160088190555060006123ab606461239d605f600d5461244390919063ffffffff16565b61205c90919063ffffffff16565b90508060065410612405576123df60646123d1606960075461244390919063ffffffff16565b61205c90919063ffffffff16565b60078190555060ea600754106123f85760ea6007819055505b60075460020a6014819055505b50565b60008061241584846120a3565b905060006124248260016120de565b9050612439612433828661205c565b85612443565b9250505092915050565b60008183029050600083148061246157508183828161245e57fe5b04145b61246a57600080fd5b9291505056fea265627a7a72305820ad04e9d02d326c7874bbfd4275e34761967bffdb1537ae67c9e2ed040be234f064736f6c634300050a0032

Deployed Bytecode Sourcemap

4136:16863:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20978:8;;;4256:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4256:18:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4256:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11797:207;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11797:207:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11797:207:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4538:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4538:36:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18117:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18117:116:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6995:1419;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6995:1419:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6995:1419:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;20062:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20062:100:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11111:208;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11111:208:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11111:208:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;11111:208:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11111:208:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11111:208:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;11111:208:0;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;11111:208:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11111:208:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11111:208:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;11111:208:0;;;;;;;;;;;;;;;:::i;:::-;;9902:1008;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9902:1008:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9902:1008:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4475:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4475:21:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4287;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4287:21:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18440:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18440:91:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4321:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4321:27:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4355:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4355:22:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6692:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6692:100:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4581:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4581:24:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4618:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4618:27:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;20377:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20377:113:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20377:113:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4411:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4411:23:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3667:198;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3667:198:0;;;:::i;:::-;;19538:344;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19538:344:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;19538:344:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4441:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4441:27:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4741:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4741:30:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3229:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3229:20:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4229;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4229:20:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4229:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19074:254;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19074:254:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19074:254:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8645:1025;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8645:1025:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8645:1025:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4503:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4503:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17763:86;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17763:86:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12348:314;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12348:314:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12348:314:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;12348:314:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;12348:314:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;12348:314:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;12348:314:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3258:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3258:23:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4652:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4652:42:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12886:177;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12886:177:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12886:177:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17403:140;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17403:140:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17403:140:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3549:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3549:104:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3549:104:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;18741:115;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18741:115:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4256:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11797:207::-;11859:12;11915:6;11884:7;:19;11892:10;11884:19;;;;;;;;;;;;;;;:28;11904:7;11884:28;;;;;;;;;;;;;;;:37;;;;11958:7;11937:37;;11946:10;11937:37;;;11967:6;11937:37;;;;;;;;;;;;;;;;;;11992:4;11985:11;;11797:207;;;;:::o;4538:36::-;;;;:::o;18117:116::-;18168:4;18192:33;18212:12;;18192:15;;:19;;:33;;;;:::i;:::-;18185:40;;18117:116;:::o;6995:1419::-;7065:12;7242:14;7286:15;;7303:10;7315:5;7269:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7269:52:0;;;7259:63;;;;;;7242:80;;7413:16;7403:6;:26;7399:40;;7431:8;;;7399:40;7536:12;;7526:6;7518:15;;:30;7514:44;;;7550:8;;;7514:44;7631:16;7650:20;:37;7671:15;;7650:37;;;;;;;;;;;;7631:56;;7738:6;7698:20;:37;7719:15;;7698:37;;;;;;;;;;;:46;;;;7771:3;7759:15;;:8;:15;7755:29;;7776:8;;;7755:29;7851:18;7872:17;:15;:17::i;:::-;7851:38;;7923:39;7948:13;7923:8;:20;7932:10;7923:20;;;;;;;;;;;;;;;;:24;;:39;;;;:::i;:::-;7900:8;:20;7909:10;7900:20;;;;;;;;;;;;;;;:62;;;;7988:31;8005:13;7988:12;;:16;;:31;;;;:::i;:::-;7973:12;:46;;;;8045:31;8062:13;8045:12;;:16;;:31;;;;:::i;:::-;8030:12;:46;;;;8153:10;8138:12;;:25;;;;;;;;;;;;;;;;;;8193:13;8174:16;:32;;;;8244:12;8217:24;:39;;;;8277:22;:20;:22::i;:::-;8320:10;8315:59;;;8332:13;8347:9;;8358:15;;8315:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8402:4;8395:11;;;;;6995:1419;;;;:::o;20062:100::-;20105:4;20129:25;20146:7;;20129:12;;:16;;:25;;;;:::i;:::-;20122:32;;20062:100;:::o;11111:208::-;11211:9;11223:1;11211:13;;11206:106;11230:9;:16;11226:1;:20;11206:106;;;11266:34;11275:9;11285:1;11275:12;;;;;;;;;;;;;;11289:7;11297:1;11289:10;;;;;;;;;;;;;;11266:8;:34::i;:::-;;11248:3;;;;;;;11206:106;;;;11111:208;;:::o;9902:1008::-;9978:12;10003;:10;:12::i;:::-;10036:20;10059:22;10074:6;10059:14;:22::i;:::-;10036:45;;10092:21;10116:19;10133:1;10116:12;:16;;:19;;;;:::i;:::-;10092:43;;10146:25;10189:13;10174:12;:28;10146:56;;10213:24;10240:48;10270:17;10240:25;10251:13;10240:6;:10;;:25;;;;:::i;:::-;:29;;:48;;;;:::i;:::-;10213:75;;10309:34;10316:4;10322:2;10326:16;10309:6;:34::i;:::-;;10354:39;10361:4;10375:1;10379:13;10354:6;:39::i;:::-;;10426:2;10408:20;;:14;;;;;;;;;;;:20;;;10404:245;;10475:47;10482:4;10488:14;;;;;;;;;;;10504:17;10475:6;:47::i;:::-;;10565:1;10539:28;;:14;;;;;;;;;;;:28;;;10535:103;;;10594:30;10606:17;10594:7;;:11;;:30;;;;:::i;:::-;10584:7;:40;;;;10535:103;10404:245;10677:1;10663:16;;:2;:16;;;10659:86;;;10704:29;10716:16;10704:7;;:11;;:29;;;;:::i;:::-;10694:7;:39;;;;10659:86;10775:26;10787:13;10775:7;;:11;;:26;;;;:::i;:::-;10765:7;:36;;;;10827:13;:11;:13::i;:::-;10812:12;:28;;;;10868:4;10851:14;;:21;;;;;;;;;;;;;;;;;;10900:4;10893:11;;;;;;9902:1008;;;;;:::o;4475:21::-;;;;:::o;4287:::-;;;;;;;;;;;;;:::o;18440:91::-;18487:4;18511:12;;18504:19;;18440:91;:::o;4321:27::-;;;;:::o;4355:22::-;;;;:::o;6692:100::-;6742:7;6769:15;;6762:22;;6692:100;:::o;4581:24::-;;;;:::o;4618:27::-;;;;;;;;;;;;;:::o;20377:113::-;20436:12;20464:8;:20;20473:10;20464:20;;;;;;;;;;;;;;;;20457:27;;20377:113;;;:::o;4411:23::-;;;;:::o;3667:198::-;3734:8;;;;;;;;;;;3720:22;;:10;:22;;;3712:31;;;;;;3787:8;;;;;;;;;;;3759:37;;3780:5;;;;;;;;;;;3759:37;;;;;;;;;;;;3815:8;;;;;;;;;;;3807:5;;:16;;;;;;;;;;;;;;;;;;3853:1;3834:8;;:21;;;;;;;;;;;;;;;;;;3667:198::o;19538:344::-;19669:12;19694:14;19738:16;19756:10;19768:5;19721:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;19721:53:0;;;19711:64;;;;;;19694:81;;19808:10;19798:6;19790:15;;:28;19786:42;;;19820:8;;;19786:42;19857:16;19847:6;:26;19839:35;;;19538:344;;;;;;:::o;4441:27::-;;;;:::o;4741:30::-;;;;:::o;3229:20::-;;;;;;;;;;;;;:::o;4229:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;19074:254::-;19184:18;19215:14;19259:16;19277:10;19289:5;19242:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;19242:53:0;;;19232:64;;;;;;19215:81;;19314:6;19307:13;;;19074:254;;;;;:::o;8645:1025::-;8703:12;8728;:10;:12::i;:::-;8762:20;8785:22;8800:6;8785:14;:22::i;:::-;8762:45;;8818:21;8842:19;8859:1;8842:12;:16;;:19;;;;:::i;:::-;8818:43;;8872:25;8900:31;8917:13;8900:12;:16;;:31;;;;:::i;:::-;8872:59;;8942:24;8969:48;8980:36;8998:17;8980:13;:17;;:36;;;;:::i;:::-;8969:6;:10;;:48;;;;:::i;:::-;8942:75;;9039:40;9046:10;9058:2;9062:16;9039:6;:40::i;:::-;;9091:45;9098:10;9118:1;9122:13;9091:6;:45::i;:::-;;9169:2;9151:20;;:14;;;;;;;;;;;:20;;;9147:254;;9221:53;9228:10;9240:14;;;;;;;;;;;9256:17;9221:6;:53::i;:::-;;9317:1;9291:28;;:14;;;;;;;;;;;:28;;;9287:103;;;9346:30;9358:17;9346:7;;:11;;:30;;;;:::i;:::-;9336:7;:40;;;;9287:103;9147:254;9429:1;9415:16;;:2;:16;;;9411:86;;;9456:29;9468:16;9456:7;;:11;;:29;;;;:::i;:::-;9446:7;:39;;;;9411:86;9527:26;9539:13;9527:7;;:11;;:26;;;;:::i;:::-;9517:7;:36;;;;9589:13;:11;:13::i;:::-;9574:12;:28;;;;9630:10;9613:14;;:27;;;;;;;;;;;;;;;;;;9658:4;9651:11;;;;;;8645:1025;;;;:::o;4503:28::-;;;;:::o;17763:86::-;17816:4;17840:1;;17833:8;;17763:86;:::o;12348:314::-;12436:12;12488:6;12457:7;:19;12465:10;12457:19;;;;;;;;;;;;;;;:28;12477:7;12457:28;;;;;;;;;;;;;;;:37;;;;12527:7;12506:37;;12515:10;12506:37;;;12536:6;12506:37;;;;;;;;;;;;;;;;;;12573:7;12550:47;;;12598:10;12610:6;12626:4;12633;12550:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;12550:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12550:88:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12550:88:0;;;;12652:4;12645:11;;12348:314;;;;;:::o;3258:23::-;;;;;;;;;;;;;:::o;4652:42::-;;;;;;;;;;;;;:::o;12886:177::-;12977:12;3507:5;;;;;;;;;;;3493:19;;:10;:19;;;3485:28;;;;;;13020:12;13005:37;;;13043:5;;;;;;;;;;;13050:6;13005:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13005:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13005:52:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13005:52:0;;;;;;;;;;;;;;;;12998:59;;12886:177;;;;:::o;17403:140::-;17479:14;17509:7;:19;17517:10;17509:19;;;;;;;;;;;;;;;:28;17529:7;17509:28;;;;;;;;;;;;;;;;17502:35;;17403:140;;;;:::o;3549:104::-;3507:5;;;;;;;;;;;3493:19;;:10;:19;;;3485:28;;;;;;3634:9;3623:8;;:20;;;;;;;;;;;;;;;;;;3549:104;:::o;18741:115::-;18785:4;18839:8;;;;;;;;;;;18834:14;;18828:2;:20;18823:1;18817;;18811:3;:7;18810:14;18809:39;18802:46;;18741:115;:::o;1038:112::-;1089:6;1120:1;1116;:5;1108:14;;;;;;1141:1;1137;:5;;;;;;1133:9;;1038:112;;;;:::o;15863:115::-;15907:4;15961:8;;;;;;;;;;;15956:14;;15950:2;:20;15945:1;15939;;15933:3;:7;15932:14;15931:39;15924:46;;15863:115;:::o;616:113::-;667:6;694:1;690;:5;686:9;;719:1;714;:6;;706:15;;;;;;616:113;;;;:::o;13996:199::-;14072:1;14060:9;;:13;14048:9;:25;;;;14110:21;:19;:21::i;:::-;14185:1;14170:12;:16;14160:27;14142:15;:45;;;;13996:199::o;752:113::-;803:6;835:1;830;:6;;822:15;;;;;;856:1;852;:5;848:9;;752:113;;;;:::o;15329:305::-;15445:3;15432:11;;:16;15429:196;;15466:17;15481:1;;15467:8;15473:1;15467;;:5;;:8;;;;:::i;:::-;15466:14;;:17;;;;:::i;:::-;15462:1;:21;;;;15503:3;15500:1;;:6;15497:46;;15526:3;15524:1;:5;;;;15497:46;15576:1;;15571;:6;15555:12;:23;;;;15591:22;:20;:22::i;:::-;15429:196;15329:305::o;16629:233::-;16685:7;16705:18;16726:23;16737:11;;16726:5;:10;;:23;;;;:::i;:::-;16705:44;;16760:18;16781:38;16813:5;16781:27;16796:11;;16781:10;:14;;:27;;;;:::i;:::-;:31;;:38;;;;:::i;:::-;16760:59;;16837:17;16852:1;16837:10;:14;;:17;;;;:::i;:::-;16830:24;;;;16629:233;;;:::o;16171:262::-;16243:12;16285:26;16304:6;16285:8;:14;16294:4;16285:14;;;;;;;;;;;;;;;;:18;;:26;;;;:::i;:::-;16268:8;:14;16277:4;16268:14;;;;;;;;;;;;;;;:43;;;;16337:24;16354:6;16337:8;:12;16346:2;16337:12;;;;;;;;;;;;;;;;:16;;:24;;;;:::i;:::-;16322:8;:12;16331:2;16322:12;;;;;;;;;;;;;;;:39;;;;16392:2;16377:26;;16386:4;16377:26;;;16396:6;16377:26;;;;;;;;;;;;;;;;;;16421:4;16414:11;;16171:262;;;;;:::o;14386:751::-;14445:1;14441;;:5;14437:1;:9;;;;14478:1;;14473;:6;14457:12;:23;;;;14511:8;14505:3;:14;14491:11;:28;;;;14849:13;14865:31;14892:3;14866:20;14883:2;14866:12;;:16;;:20;;;;:::i;:::-;14865:26;;:31;;;;:::i;:::-;14849:47;;14919:8;14910:7;;:17;14907:223;;15001:21;15018:3;15002:10;15008:3;15002:1;;:5;;:10;;;;:::i;:::-;15001:16;;:21;;;;:::i;:::-;14997:1;:25;;;;15041:3;15038:1;;:6;15035:46;;15064:3;15062:1;:5;;;;15035:46;15116:1;;15111;:6;15095:12;:23;;;;14907:223;14386:751;:::o;1170:159::-;1222:4;1239:6;1248:9;1252:1;1255;1248:3;:9::i;:::-;1239:18;;1268:6;1277:9;1281:1;1284;1277:3;:9::i;:::-;1268:18;;1304:17;1308:9;1312:1;1315;1308:3;:9::i;:::-;1319:1;1304:3;:17::i;:::-;1297:24;;;;1170:159;;;;:::o;891:127::-;942:6;969:1;965;:5;961:9;;994:1;989;:6;:20;;;;1008:1;1003;999;:5;;;;;;:10;989:20;981:29;;;;;;891:127;;;;:::o

Swarm Source

bzzr://ad04e9d02d326c7874bbfd4275e34761967bffdb1537ae67c9e2ed040be234f0
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.