ETH Price: $2,465.62 (+4.22%)

Token

NULV2 (NUL)
 

Overview

Max Total Supply

998,859.999999999999905 NUL

Holders

37

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
4,500 NUL

Value
$0.00
0xc4705681d89aa0d84b3f23e382a3a4c0cd372b28
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:
NUL

Compiler Version
v0.5.8+commit.23d335f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-07-25
*/

pragma solidity 0.5.8;


/*
*
*   ******  **  **  **  **                                                      
*   **  *** **  **  **  **                 
*   **   ** **  **  **  **                                                 
*   **   ** **  **  **  **  
*   **   ** **  ******  ******   
*   **   *****  ******  ******   

* 
*/


interface IERC20 
{
    function totalSupply() external view returns (uint256);
    function balanceOf(address who) external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    function transfer(address to, uint256 value) external returns (bool);
    function approve(address spender, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 value) external returns (bool);
    
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract ApproveAndCallFallBack 
{
    function receiveApproval(address from, uint256 tokens, address token, bytes memory data) public returns (bool);
}

contract TransferAndCallFallBack 
{
    function receiveToken(address from, uint256 tokens, address token, bytes memory data) public returns (bool);
}

library SafeMath 
{
    function mul(uint256 a, uint256 b) internal pure returns (uint256) 
    {
        if (a == 0) 
        {
            return 0;
        }
        uint256 c = a * b;
        assert(c / a == b);
        return c;
    }
    
    function div(uint256 a, uint256 b) internal pure returns (uint256) 
    {
        uint256 c = a / b;
        return c;
    }
    
    function sub(uint256 a, uint256 b) internal pure returns (uint256) 
    {
        assert(b <= a);
        return a - b;
    }
    
    function add(uint256 a, uint256 b) internal pure returns (uint256) 
    {
        uint256 c = a + b;
        assert(c >= a);
        return c;
    }
    
    function ceil(uint256 a, uint256 m) internal pure returns (uint256) 
    {
        uint256 c = add(a,m);
        uint256 d = sub(c,1);
        return mul(div(d,m),m);
    }
}

contract ERC20Detailed is IERC20 
{
    string private _name;
    string private _symbol;
    uint8 private _decimals;
    
    constructor(string memory name, string memory symbol, uint8 decimals) public {
        _name = name;
        _symbol = symbol;
        _decimals = decimals;
    }
    
    function name() public view returns(string memory) {
        return _name;
    }
    
    function symbol() public view returns(string memory) {
        return _symbol;
    }
    
    function decimals() public view returns(uint8) {
        return _decimals;
    }
}

contract NUL is ERC20Detailed 
{
    using SafeMath for uint256;
    
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowed;
    
    string constant tokenName = "NULV2";//"NULV2";
    string constant tokenSymbol = "NUL";//"NUL"; 
    uint8  constant tokenDecimals = 18;
    uint256 _totalSupply = 0;
    
    // ------------------------------------------------------------------------
  
    address public contractOwner;

    uint256 public fullUnitsStaked_total = 0;
    mapping (address => bool) public isStaking; 
    
    //exchanges/other contracts will be excluded from staking

    uint256 _totalRewardsPerUnit = 0;
    mapping (address => uint256) private _totalRewardsPerUnit_positions;
    mapping (address => uint256) private _savedRewards;
    
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    // ---------whitelist of addresses----------------------------------------
     mapping(address => bool) public whitelistFrom;
    mapping(address => bool) public whitelistTo;
    event WhitelistFrom(address _addr, bool _whitelisted);
    event WhitelistTo(address _addr, bool _whitelisted);
    
    // ------------------------------------------------------------------------
    
    constructor() public ERC20Detailed(tokenName, tokenSymbol, tokenDecimals) 
    {
        contractOwner = msg.sender;
    
        _mint(msg.sender, 1000000 * (10**uint256(tokenDecimals)));
    }
    
    // ------------------------------------------------------------------------
         modifier onlyOwner() {
        require(msg.sender == contractOwner, "only owner");
        _;
    }
    
            //no fees if receiver is whitelisted
    function setWhitelistedTo(address _addr, bool _whitelisted) external onlyOwner {
        emit WhitelistTo(_addr, _whitelisted);
        whitelistTo[_addr] = _whitelisted;
    }

    //no fees if sender is whitelisted
    function setWhitelistedFrom(address _addr, bool _whitelisted) external onlyOwner {
        emit WhitelistFrom(_addr, _whitelisted);
        whitelistFrom[_addr] = _whitelisted;
    }
    // ------------------------------------------------------------------------
    function transferOwnership(address newOwner) public 
    {
        require(msg.sender == contractOwner);
        require(newOwner != address(0));
        emit OwnershipTransferred(contractOwner, newOwner);
        contractOwner = newOwner;
    }
    
    function totalSupply() public view returns (uint256) 
    {
        return _totalSupply;
    }
    
    function balanceOf(address owner) public view returns (uint256) 
    {
        return _balances[owner];
    }
    
    function fullUnitsStaked(address owner) external view returns (uint256) 
    {
        return isStaking[owner] ? toFullUnits(_balances[owner]) : 0;
    }
    
    function toFullUnits(uint256 valueWithDecimals) public pure returns (uint256) 
    {
        return valueWithDecimals.div(10**uint256(tokenDecimals));
    }
    
    function allowance(address owner, address spender) public view returns (uint256) 
    {
        return _allowed[owner][spender];
    }
    
    function transfer(address to, uint256 value) public returns (bool) 
    {
        _executeTransfer(msg.sender, to, value);
        return true;
    }
    
    function transferAndCall(address to, uint value, bytes memory data) public returns (bool) 
    {
        require(transfer(to, value));
        require(TransferAndCallFallBack(to).receiveToken(msg.sender, value, address(this), data));
        return true;
    }
    
    function multiTransfer(address[] memory receivers, uint256[] memory values) public
    {
        require(receivers.length == values.length);
        for(uint256 i = 0; i < receivers.length; i++)
            _executeTransfer(msg.sender, receivers[i], values[i]);
    }
    
    function transferFrom(address from, address to, uint256 value) public returns (bool) 
    {
        require(value <= _allowed[from][msg.sender]);
        _allowed[from][msg.sender] = _allowed[from][msg.sender].sub(value);
        _executeTransfer(from, to, value);
        return true;
    }
    
    function transferFromAndCall(address from, address to, uint value, bytes memory data) public returns (bool) 
    {
        require(transferFrom(from, to, value));
        require(TransferAndCallFallBack(to).receiveToken(from, value, address(this), data));
        return true;
    }
    
    function approve(address spender, uint256 value) public returns (bool) 
    {
        require(spender != address(0));
        _allowed[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);
        return true;
    }
    
    function approveAndCall(address spender, uint tokens, bytes memory data) public returns (bool success) 
    {
        require(approve(spender, tokens));
        require(ApproveAndCallFallBack(spender).receiveApproval(msg.sender, tokens, address(this), data));
        return true;
    }
    
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) 
    {
        require(spender != address(0));
        _allowed[msg.sender][spender] = (_allowed[msg.sender][spender].add(addedValue));
        emit Approval(msg.sender, spender, _allowed[msg.sender][spender]);
        return true;
    }
    
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) 
    {
        require(spender != address(0));
        _allowed[msg.sender][spender] = (_allowed[msg.sender][spender].sub(subtractedValue));
        emit Approval(msg.sender, spender, _allowed[msg.sender][spender]);
        return true;
    }
    
    function _mint(address account, uint256 value) internal 
    {
        require(value != 0);
        
        uint256 initalBalance = _balances[account];
        uint256 newBalance = initalBalance.add(value);
        
        _balances[account] = newBalance;
        _totalSupply = _totalSupply.add(value);
        
        //update full units staked
        if(isStaking[account])
        {
            uint256 fus_total = fullUnitsStaked_total;
            fus_total = fus_total.sub(toFullUnits(initalBalance));
            fus_total = fus_total.add(toFullUnits(newBalance));
            fullUnitsStaked_total = fus_total;
        }
        emit Transfer(address(0), account, value);
    }
    
    function burn(uint256 value) external 
    {
        _burn(msg.sender, value);
    }
    
    function burnFrom(address account, uint256 value) external 
    {
        require(value <= _allowed[account][msg.sender]);
        _allowed[account][msg.sender] = _allowed[account][msg.sender].sub(value);
        _burn(account, value);
    }
    
    function _burn(address account, uint256 value) internal 
    {
        require(value != 0);
        require(value <= _balances[account]);
        
        uint256 initalBalance = _balances[account];
        uint256 newBalance = initalBalance.sub(value);
        
        _balances[account] = newBalance;
        _totalSupply = _totalSupply.sub(value);
        
        //update full units staked
        if(isStaking[account])
        {
            uint256 fus_total = fullUnitsStaked_total;
            fus_total = fus_total.sub(toFullUnits(initalBalance));
            fus_total = fus_total.add(toFullUnits(newBalance));
            fullUnitsStaked_total = fus_total;
        }
        
        emit Transfer(account, address(0), value);
    }
    
    /*
    *   transfer with additional burn and stake rewards
    *   the receiver gets 96% of the sent value
    *   4% are split to be burnt and distributed to holders
    */
    function _executeTransfer(address from, address to, uint256 value) private
    {
        require(value <= _balances[from]);
        require(to != address(0) && to != address(this));

        //Update sender and receivers rewards - changing balances will change rewards shares
        updateRewardsFor(from);
        updateRewardsFor(to);
        
        uint256 fourPercent = 0;
        if(!whitelistFrom[from] && !whitelistTo[to])
        {
        	fourPercent = value.mul(4).div(100);
        //set a minimum burn rate to prevent no-burn-txs due to precision loss
        if(fourPercent == 0 && value > 0)
            fourPercent = 1;
		}
        
        uint256 initalBalance_from = _balances[from];
        uint256 newBalance_from = initalBalance_from.sub(value);
        
        value = value.sub(fourPercent);
        
          uint256 initalBalance_to = from != to ? _balances[to] : newBalance_from;
        uint256 newBalance_to = initalBalance_to.add(value);
        
        //transfer
        _balances[from] = newBalance_from;
        _balances[to] = newBalance_to;
        emit Transfer(from, to, value);
         
        //update full units staked
        uint256 fus_total = fullUnitsStaked_total;
        if(isStaking[from])
        {
            fus_total = fus_total.sub(toFullUnits(initalBalance_from));
            fus_total = fus_total.add(toFullUnits(newBalance_from));
        }
        if(isStaking[to])
        {
            fus_total = fus_total.sub(toFullUnits(initalBalance_to));
            fus_total = fus_total.add(toFullUnits(newBalance_to));
        }
        fullUnitsStaked_total = fus_total;
        
        uint256 amountToBurn = fourPercent;
        
        if(fus_total > 0)
        {
            uint256 stakingRewards = fourPercent.div(2);
            //split up to rewards per unit in stake
            uint256 rewardsPerUnit = stakingRewards.div(fus_total);
            
            //apply rewards
            
            _totalRewardsPerUnit = _totalRewardsPerUnit.add(rewardsPerUnit);
            _balances[address(this)] = _balances[address(this)].add(stakingRewards);
            if(stakingRewards > 0)
                emit Transfer(msg.sender, address(this), stakingRewards);
            amountToBurn = amountToBurn.sub(stakingRewards);
        }
        
        //update total supply
        _totalSupply = _totalSupply.sub(amountToBurn);
        if(amountToBurn > 0)
            emit Transfer(msg.sender, address(0), amountToBurn);
    }
    
    //catch up with the current total rewards. This needs to be done before an addresses balance is changed
    function updateRewardsFor(address staker) private
    {
        _savedRewards[staker] = viewUnpaidRewards(staker);
        _totalRewardsPerUnit_positions[staker] = _totalRewardsPerUnit;
    }
    
    //get all rewards that have not been claimed yet
    function viewUnpaidRewards(address staker) public view returns (uint256)
    {
        if(!isStaking[staker])
            return _savedRewards[staker];
        uint256 newRewardsPerUnit = _totalRewardsPerUnit.sub(_totalRewardsPerUnit_positions[staker]);
        
        uint256 newRewards = newRewardsPerUnit.mul(toFullUnits(_balances[staker]));
        return _savedRewards[staker].add(newRewards);
    }
    
    //pay out unclaimed rewards
    function payoutRewards() public
    {
        updateRewardsFor(msg.sender);
        uint256 rewards = _savedRewards[msg.sender];
        require(rewards > 0 && rewards <= _balances[address(this)]);
        
        _savedRewards[msg.sender] = 0;
        
        uint256 initalBalance_staker = _balances[msg.sender];
        uint256 newBalance_staker = initalBalance_staker.add(rewards);
        
        //update full units staked
        if(isStaking[msg.sender])
        {
            uint256 fus_total = fullUnitsStaked_total;
            fus_total = fus_total.sub(toFullUnits(initalBalance_staker));
            fus_total = fus_total.add(toFullUnits(newBalance_staker));
            fullUnitsStaked_total = fus_total;
        }
        
        //transfer
        _balances[address(this)] = _balances[address(this)].sub(rewards);
        _balances[msg.sender] = newBalance_staker;
        emit Transfer(address(this), msg.sender, rewards);
    }
    
    function enableStaking() public { _enableStaking(msg.sender);  }
    function disableStaking() public { _disableStaking(msg.sender); }
    
    function enableStakingFor(address staker) public onlyOwner { _enableStaking(staker); }
    function disableStakingFor(address staker) public onlyOwner { _disableStaking(staker); }

    
    //enable staking for target address
    function _enableStaking(address staker) private
    {
        require(!isStaking[staker]);
        updateRewardsFor(staker);
        isStaking[staker] = true;
        fullUnitsStaked_total = fullUnitsStaked_total.add(toFullUnits(_balances[staker]));
    }

    
    //disable staking for target address
    function _disableStaking(address staker) private
    {
        require(isStaking[staker]);
        updateRewardsFor(staker);
        isStaking[staker] = false;
        fullUnitsStaked_total = fullUnitsStaked_total.sub(toFullUnits(_balances[staker]));
    }

       
    //withdraw tokens that were sent to this contract by accident
   function withdrawERC20Tokens(address tokenAddress, uint256 amount) public onlyOwner
    {
        require(tokenAddress != address(this));
        IERC20(tokenAddress).transfer(msg.sender, amount);
    }
    

    
    
}

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":"","type":"address"}],"name":"whitelistTo","outputs":[{"name":"","type":"bool"}],"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":"receivers","type":"address[]"},{"name":"values","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"staker","type":"address"}],"name":"viewUnpaidRewards","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":false,"inputs":[],"name":"disableStaking","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"payoutRewards","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"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":"staker","type":"address"}],"name":"disableStakingFor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"}],"name":"transferAndCall","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelistFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fullUnitsStaked_total","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isStaking","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"},{"name":"value","type":"uint256"}],"name":"burnFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"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":"_addr","type":"address"},{"name":"_whitelisted","type":"bool"}],"name":"setWhitelistedTo","outputs":[],"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":"valueWithDecimals","type":"uint256"}],"name":"toFullUnits","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"}],"name":"transferFromAndCall","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","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":"contractOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"enableStaking","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":"owner","type":"address"}],"name":"fullUnitsStaked","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"amount","type":"uint256"}],"name":"withdrawERC20Tokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"staker","type":"address"}],"name":"enableStakingFor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_whitelisted","type":"bool"}],"name":"setWhitelistedFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_addr","type":"address"},{"indexed":false,"name":"_whitelisted","type":"bool"}],"name":"WhitelistFrom","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_addr","type":"address"},{"indexed":false,"name":"_whitelisted","type":"bool"}],"name":"WhitelistTo","type":"event"},{"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":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]

60806040526000600555600060075560006009553480156200002057600080fd5b506040518060400160405280600581526020017f4e554c56320000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4e554c000000000000000000000000000000000000000000000000000000000081525060128260009080519060200190620000a7929190620003bb565b508160019080519060200190620000c0929190620003bb565b5080600260006101000a81548160ff021916908360ff16021790555050505033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200013e33601260ff16600a0a620f4240026200014460201b60201c565b6200046a565b60008114156200015357600080fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000620001b383836200034260201b620034f41790919060201c565b905080600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000215836005546200034260201b620034f41790919060201c565b600581905550600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615620002d657600060075490506200029f6200028a846200035f60201b60201c565b826200038960201b620034a61790919060201c565b9050620002cb620002b6836200035f60201b60201c565b826200034260201b620034f41790919060201c565b905080600781905550505b8373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a350505050565b6000808284019050838110156200035557fe5b8091505092915050565b600062000382601260ff16600a0a83620003a160201b620038dd1790919060201c565b9050919050565b6000828211156200039657fe5b818303905092915050565b600080828481620003ae57fe5b0490508091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003fe57805160ff19168380011785556200042f565b828001600101855582156200042f579182015b828111156200042e57825182559160200191906001019062000411565b5b5090506200043e919062000442565b5090565b6200046791905b808211156200046357600081600090555060010162000449565b5090565b90565b613a3f806200047a6000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c806370a082311161011a578063cae9ca51116100ad578063e1eae0b41161007c578063e1eae0b414610de8578063e49cb2fb14610e40578063e7b7365114610e8e578063f2fde38b14610ed2578063ff12bbf414610f1657610206565b8063cae9ca5114610c1f578063ce606ee014610d1c578063d11aca6214610d66578063dd62ed3e14610d7057610206565b8063a486309d116100e9578063a486309d14610a0a578063a9059cbb14610a5a578063b1369e6a14610ac0578063c1d34b8914610b0257610206565b806370a082311461087b57806379cc6790146108d357806395d89b4114610921578063a457c2d7146109a457610206565b8063296130861161019d5780634000aea01161016c5780634000aea01461067a57806342966c681461077757806343684b21146107a55780634b56c39e146108015780636f49712b1461081f57610206565b806329613086146105a2578063313ce567146105ac57806339509351146105d05780633f9fe75a1461063657610206565b80631e89d545116101d95780631e89d5451461036e578063223d0417146104ba57806323b872dd1461051257806328696de21461059857610206565b806306fdde031461020b578063095ea7b31461028e57806316b627d1146102f457806318160ddd14610350575b600080fd5b610213610f66565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610253578082015181840152602081019050610238565b50505050905090810190601f1680156102805780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102da600480360360408110156102a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611008565b604051808215151515815260200191505060405180910390f35b6103366004803603602081101561030a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611133565b604051808215151515815260200191505060405180910390f35b610358611153565b6040518082815260200191505060405180910390f35b6104b86004803603604081101561038457600080fd5b81019080803590602001906401000000008111156103a157600080fd5b8201836020820111156103b357600080fd5b803590602001918460208302840111640100000000831117156103d557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561043557600080fd5b82018360208201111561044757600080fd5b8035906020019184602083028401116401000000008311171561046957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929050505061115d565b005b6104fc600480360360208110156104d057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111bd565b6040518082815260200191505060405180910390f35b61057e6004803603606081101561052857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611369565b604051808215151515815260200191505060405180910390f35b6105a0611519565b005b6105aa611524565b005b6105b4611848565b604051808260ff1660ff16815260200191505060405180910390f35b61061c600480360360408110156105e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061185f565b604051808215151515815260200191505060405180910390f35b6106786004803603602081101561064c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a94565b005b61075d6004803603606081101561069057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156106d757600080fd5b8201836020820111156106e957600080fd5b8035906020019184600183028401116401000000008311171561070b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611b63565b604051808215151515815260200191505060405180910390f35b6107a36004803603602081101561078d57600080fd5b8101908080359060200190929190505050611cef565b005b6107e7600480360360208110156107bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cfc565b604051808215151515815260200191505060405180910390f35b610809611d1c565b6040518082815260200191505060405180910390f35b6108616004803603602081101561083557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d22565b604051808215151515815260200191505060405180910390f35b6108bd6004803603602081101561089157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d42565b6040518082815260200191505060405180910390f35b61091f600480360360408110156108e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d8b565b005b610929611f31565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561096957808201518184015260208101905061094e565b50505050905090810190601f1680156109965780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6109f0600480360360408110156109ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611fd3565b604051808215151515815260200191505060405180910390f35b610a5860048036036040811015610a2057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612208565b005b610aa660048036036040811015610a7057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612395565b604051808215151515815260200191505060405180910390f35b610aec60048036036020811015610ad657600080fd5b81019080803590602001909291905050506123ac565b6040518082815260200191505060405180910390f35b610c0560048036036080811015610b1857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610b7f57600080fd5b820183602082011115610b9157600080fd5b80359060200191846001830284011164010000000083111715610bb357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506123cf565b604051808215151515815260200191505060405180910390f35b610d0260048036036060811015610c3557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610c7c57600080fd5b820183602082011115610c8e57600080fd5b80359060200191846001830284011164010000000083111715610cb057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061255d565b604051808215151515815260200191505060405180910390f35b610d246126e9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610d6e61270f565b005b610dd260048036036040811015610d8657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061271a565b6040518082815260200191505060405180910390f35b610e2a60048036036020811015610dfe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127a1565b6040518082815260200191505060405180910390f35b610e8c60048036036040811015610e5657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061284b565b005b610ed060048036036020811015610ea457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a0e565b005b610f1460048036036020811015610ee857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612add565b005b610f6460048036036040811015610f2c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612c31565b005b606060008054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ffe5780601f10610fd357610100808354040283529160200191610ffe565b820191906000526020600020905b815481529060010190602001808311610fe157829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561104357600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600d6020528060005260406000206000915054906101000a900460ff1681565b6000600554905090565b805182511461116b57600080fd5b60008090505b82518110156111b8576111ab3384838151811061118a57fe5b602002602001015184848151811061119e57fe5b6020026020010151612dbe565b8080600101915050611171565b505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661125757600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611364565b60006112ad600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546009546134a690919063ffffffff16565b9050600061130b6112fc600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123ac565b836134bd90919063ffffffff16565b905061135f81600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f490919063ffffffff16565b925050505b919050565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156113f457600080fd5b61148382600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134a690919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061150e848484612dbe565b600190509392505050565b61152233613510565b565b61152d3361362c565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811180156115c05750600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111155b6115c957600080fd5b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600061166783836134f490919063ffffffff16565b9050600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561170557600060075490506116dd6116ce846123ac565b826134a690919063ffffffff16565b90506116fa6116eb836123ac565b826134f490919063ffffffff16565b905080600781905550505b61175783600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134a690919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050565b6000600260009054906101000a900460ff16905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561189a57600080fd5b61192982600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f490919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611b6081613510565b50565b6000611b6f8484612395565b611b7857600080fd5b8373ffffffffffffffffffffffffffffffffffffffff1663f8a6172e338530866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611c51578082015181840152602081019050611c36565b50505050905090810190601f168015611c7e5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015611ca057600080fd5b505af1158015611cb4573d6000803e3d6000fd5b505050506040513d6020811015611cca57600080fd5b8101908080519060200190929190505050611ce457600080fd5b600190509392505050565b611cf933826136c1565b50565b600c6020528060005260406000206000915054906101000a900460ff1681565b60075481565b60086020528060005260406000206000915054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115611e1457600080fd5b611ea381600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134a690919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f2d82826136c1565b5050565b606060018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611fc95780601f10611f9e57610100808354040283529160200191611fc9565b820191906000526020600020905b815481529060010190602001808311611fac57829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561200e57600080fd5b61209d82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134a690919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146122cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f88cf9b943f64811022537ee9f0141770d85e612eae3a3a39241abe5ca9f113828282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006123a2338484612dbe565b6001905092915050565b60006123c8601260ff16600a0a836138dd90919063ffffffff16565b9050919050565b60006123dc858585611369565b6123e557600080fd5b8373ffffffffffffffffffffffffffffffffffffffff1663f8a6172e868530866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156124be5780820151818401526020810190506124a3565b50505050905090810190601f1680156124eb5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561250d57600080fd5b505af1158015612521573d6000803e3d6000fd5b505050506040513d602081101561253757600080fd5b810190808051906020019092919050505061255157600080fd5b60019050949350505050565b60006125698484611008565b61257257600080fd5b8373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561264b578082015181840152602081019050612630565b50505050905090810190601f1680156126785780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561269a57600080fd5b505af11580156126ae573d6000803e3d6000fd5b505050506040513d60208110156126c457600080fd5b81019080805190602001909291905050506126de57600080fd5b600190509392505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612718336138f6565b565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166127fb576000612844565b612843600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123ac565b5b9050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461290e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561294757600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156129ce57600080fd5b505af11580156129e2573d6000803e3d6000fd5b505050506040513d60208110156129f857600080fd5b8101908080519060200190929190505050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612ad1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b612ada816138f6565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612b3757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612b7157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612cf4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7fc3d26c130d120a4bb874de56c8b5fb727ad2cfc3551ca49cd42ef248e893b69a8282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115612e0a57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612e7357503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612e7c57600080fd5b612e858361362c565b612e8e8261362c565b6000809050600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612f375750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f8057612f636064612f556004856134bd90919063ffffffff16565b6138dd90919063ffffffff16565b9050600081148015612f755750600082115b15612f7f57600190505b5b6000600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000612fd984836134a690919063ffffffff16565b9050612fee83856134a690919063ffffffff16565b935060008573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141561302c578161306d565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020545b9050600061308486836134f490919063ffffffff16565b905082600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040518082815260200191505060405180910390a360006007549050600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613207576131e76131d8866123ac565b826134a690919063ffffffff16565b90506132046131f5856123ac565b826134f490919063ffffffff16565b90505b600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561329457613274613265846123ac565b826134a690919063ffffffff16565b9050613291613282836123ac565b826134f490919063ffffffff16565b90505b806007819055506000869050600082111561340f5760006132bf6002896138dd90919063ffffffff16565b905060006132d684836138dd90919063ffffffff16565b90506132ed816009546134f490919063ffffffff16565b60098190555061334582600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f490919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008211156133f7573073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35b61340a82846134a690919063ffffffff16565b925050505b613424816005546134a690919063ffffffff16565b600581905550600081111561349a57600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b50505050505050505050565b6000828211156134b257fe5b818303905092915050565b6000808314156134d057600090506134ee565b60008284029050828482816134e157fe5b04146134e957fe5b809150505b92915050565b60008082840190508381101561350657fe5b8091505092915050565b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661356657600080fd5b61356f8161362c565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613623613612600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123ac565b6007546134a690919063ffffffff16565b60078190555050565b613635816111bd565b600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600954600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b60008114156136cf57600080fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111561371b57600080fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600061377483836134a690919063ffffffff16565b905080600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137cf836005546134a690919063ffffffff16565b600581905550600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613871576000600754905061384961383a846123ac565b826134a690919063ffffffff16565b9050613866613857836123ac565b826134f490919063ffffffff16565b905080600781905550505b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a350505050565b6000808284816138e957fe5b0490508091505092915050565b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561394d57600080fd5b6139568161362c565b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613a0a6139f9600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123ac565b6007546134f490919063ffffffff16565b6007819055505056fea165627a7a723058207a05f30a98ee98154adf545edd32822b1d415f9d723029509b345cd4c30eaae20029

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102065760003560e01c806370a082311161011a578063cae9ca51116100ad578063e1eae0b41161007c578063e1eae0b414610de8578063e49cb2fb14610e40578063e7b7365114610e8e578063f2fde38b14610ed2578063ff12bbf414610f1657610206565b8063cae9ca5114610c1f578063ce606ee014610d1c578063d11aca6214610d66578063dd62ed3e14610d7057610206565b8063a486309d116100e9578063a486309d14610a0a578063a9059cbb14610a5a578063b1369e6a14610ac0578063c1d34b8914610b0257610206565b806370a082311461087b57806379cc6790146108d357806395d89b4114610921578063a457c2d7146109a457610206565b8063296130861161019d5780634000aea01161016c5780634000aea01461067a57806342966c681461077757806343684b21146107a55780634b56c39e146108015780636f49712b1461081f57610206565b806329613086146105a2578063313ce567146105ac57806339509351146105d05780633f9fe75a1461063657610206565b80631e89d545116101d95780631e89d5451461036e578063223d0417146104ba57806323b872dd1461051257806328696de21461059857610206565b806306fdde031461020b578063095ea7b31461028e57806316b627d1146102f457806318160ddd14610350575b600080fd5b610213610f66565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610253578082015181840152602081019050610238565b50505050905090810190601f1680156102805780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102da600480360360408110156102a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611008565b604051808215151515815260200191505060405180910390f35b6103366004803603602081101561030a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611133565b604051808215151515815260200191505060405180910390f35b610358611153565b6040518082815260200191505060405180910390f35b6104b86004803603604081101561038457600080fd5b81019080803590602001906401000000008111156103a157600080fd5b8201836020820111156103b357600080fd5b803590602001918460208302840111640100000000831117156103d557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561043557600080fd5b82018360208201111561044757600080fd5b8035906020019184602083028401116401000000008311171561046957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929050505061115d565b005b6104fc600480360360208110156104d057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111bd565b6040518082815260200191505060405180910390f35b61057e6004803603606081101561052857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611369565b604051808215151515815260200191505060405180910390f35b6105a0611519565b005b6105aa611524565b005b6105b4611848565b604051808260ff1660ff16815260200191505060405180910390f35b61061c600480360360408110156105e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061185f565b604051808215151515815260200191505060405180910390f35b6106786004803603602081101561064c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a94565b005b61075d6004803603606081101561069057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156106d757600080fd5b8201836020820111156106e957600080fd5b8035906020019184600183028401116401000000008311171561070b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611b63565b604051808215151515815260200191505060405180910390f35b6107a36004803603602081101561078d57600080fd5b8101908080359060200190929190505050611cef565b005b6107e7600480360360208110156107bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cfc565b604051808215151515815260200191505060405180910390f35b610809611d1c565b6040518082815260200191505060405180910390f35b6108616004803603602081101561083557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d22565b604051808215151515815260200191505060405180910390f35b6108bd6004803603602081101561089157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d42565b6040518082815260200191505060405180910390f35b61091f600480360360408110156108e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d8b565b005b610929611f31565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561096957808201518184015260208101905061094e565b50505050905090810190601f1680156109965780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6109f0600480360360408110156109ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611fd3565b604051808215151515815260200191505060405180910390f35b610a5860048036036040811015610a2057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612208565b005b610aa660048036036040811015610a7057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612395565b604051808215151515815260200191505060405180910390f35b610aec60048036036020811015610ad657600080fd5b81019080803590602001909291905050506123ac565b6040518082815260200191505060405180910390f35b610c0560048036036080811015610b1857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610b7f57600080fd5b820183602082011115610b9157600080fd5b80359060200191846001830284011164010000000083111715610bb357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506123cf565b604051808215151515815260200191505060405180910390f35b610d0260048036036060811015610c3557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610c7c57600080fd5b820183602082011115610c8e57600080fd5b80359060200191846001830284011164010000000083111715610cb057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061255d565b604051808215151515815260200191505060405180910390f35b610d246126e9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610d6e61270f565b005b610dd260048036036040811015610d8657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061271a565b6040518082815260200191505060405180910390f35b610e2a60048036036020811015610dfe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127a1565b6040518082815260200191505060405180910390f35b610e8c60048036036040811015610e5657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061284b565b005b610ed060048036036020811015610ea457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a0e565b005b610f1460048036036020811015610ee857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612add565b005b610f6460048036036040811015610f2c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612c31565b005b606060008054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ffe5780601f10610fd357610100808354040283529160200191610ffe565b820191906000526020600020905b815481529060010190602001808311610fe157829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561104357600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600d6020528060005260406000206000915054906101000a900460ff1681565b6000600554905090565b805182511461116b57600080fd5b60008090505b82518110156111b8576111ab3384838151811061118a57fe5b602002602001015184848151811061119e57fe5b6020026020010151612dbe565b8080600101915050611171565b505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661125757600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611364565b60006112ad600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546009546134a690919063ffffffff16565b9050600061130b6112fc600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123ac565b836134bd90919063ffffffff16565b905061135f81600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f490919063ffffffff16565b925050505b919050565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156113f457600080fd5b61148382600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134a690919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061150e848484612dbe565b600190509392505050565b61152233613510565b565b61152d3361362c565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811180156115c05750600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111155b6115c957600080fd5b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600061166783836134f490919063ffffffff16565b9050600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561170557600060075490506116dd6116ce846123ac565b826134a690919063ffffffff16565b90506116fa6116eb836123ac565b826134f490919063ffffffff16565b905080600781905550505b61175783600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134a690919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050565b6000600260009054906101000a900460ff16905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561189a57600080fd5b61192982600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f490919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611b6081613510565b50565b6000611b6f8484612395565b611b7857600080fd5b8373ffffffffffffffffffffffffffffffffffffffff1663f8a6172e338530866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611c51578082015181840152602081019050611c36565b50505050905090810190601f168015611c7e5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015611ca057600080fd5b505af1158015611cb4573d6000803e3d6000fd5b505050506040513d6020811015611cca57600080fd5b8101908080519060200190929190505050611ce457600080fd5b600190509392505050565b611cf933826136c1565b50565b600c6020528060005260406000206000915054906101000a900460ff1681565b60075481565b60086020528060005260406000206000915054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115611e1457600080fd5b611ea381600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134a690919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f2d82826136c1565b5050565b606060018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611fc95780601f10611f9e57610100808354040283529160200191611fc9565b820191906000526020600020905b815481529060010190602001808311611fac57829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561200e57600080fd5b61209d82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134a690919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146122cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f88cf9b943f64811022537ee9f0141770d85e612eae3a3a39241abe5ca9f113828282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006123a2338484612dbe565b6001905092915050565b60006123c8601260ff16600a0a836138dd90919063ffffffff16565b9050919050565b60006123dc858585611369565b6123e557600080fd5b8373ffffffffffffffffffffffffffffffffffffffff1663f8a6172e868530866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156124be5780820151818401526020810190506124a3565b50505050905090810190601f1680156124eb5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561250d57600080fd5b505af1158015612521573d6000803e3d6000fd5b505050506040513d602081101561253757600080fd5b810190808051906020019092919050505061255157600080fd5b60019050949350505050565b60006125698484611008565b61257257600080fd5b8373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561264b578082015181840152602081019050612630565b50505050905090810190601f1680156126785780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561269a57600080fd5b505af11580156126ae573d6000803e3d6000fd5b505050506040513d60208110156126c457600080fd5b81019080805190602001909291905050506126de57600080fd5b600190509392505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612718336138f6565b565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166127fb576000612844565b612843600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123ac565b5b9050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461290e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561294757600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156129ce57600080fd5b505af11580156129e2573d6000803e3d6000fd5b505050506040513d60208110156129f857600080fd5b8101908080519060200190929190505050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612ad1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b612ada816138f6565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612b3757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612b7157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612cf4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7fc3d26c130d120a4bb874de56c8b5fb727ad2cfc3551ca49cd42ef248e893b69a8282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115612e0a57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612e7357503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612e7c57600080fd5b612e858361362c565b612e8e8261362c565b6000809050600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612f375750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f8057612f636064612f556004856134bd90919063ffffffff16565b6138dd90919063ffffffff16565b9050600081148015612f755750600082115b15612f7f57600190505b5b6000600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000612fd984836134a690919063ffffffff16565b9050612fee83856134a690919063ffffffff16565b935060008573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141561302c578161306d565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020545b9050600061308486836134f490919063ffffffff16565b905082600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040518082815260200191505060405180910390a360006007549050600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613207576131e76131d8866123ac565b826134a690919063ffffffff16565b90506132046131f5856123ac565b826134f490919063ffffffff16565b90505b600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561329457613274613265846123ac565b826134a690919063ffffffff16565b9050613291613282836123ac565b826134f490919063ffffffff16565b90505b806007819055506000869050600082111561340f5760006132bf6002896138dd90919063ffffffff16565b905060006132d684836138dd90919063ffffffff16565b90506132ed816009546134f490919063ffffffff16565b60098190555061334582600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f490919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008211156133f7573073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35b61340a82846134a690919063ffffffff16565b925050505b613424816005546134a690919063ffffffff16565b600581905550600081111561349a57600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b50505050505050505050565b6000828211156134b257fe5b818303905092915050565b6000808314156134d057600090506134ee565b60008284029050828482816134e157fe5b04146134e957fe5b809150505b92915050565b60008082840190508381101561350657fe5b8091505092915050565b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661356657600080fd5b61356f8161362c565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613623613612600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123ac565b6007546134a690919063ffffffff16565b60078190555050565b613635816111bd565b600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600954600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b60008114156136cf57600080fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111561371b57600080fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600061377483836134a690919063ffffffff16565b905080600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137cf836005546134a690919063ffffffff16565b600581905550600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613871576000600754905061384961383a846123ac565b826134a690919063ffffffff16565b9050613866613857836123ac565b826134f490919063ffffffff16565b905080600781905550505b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a350505050565b6000808284816138e957fe5b0490508091505092915050565b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561394d57600080fd5b6139568161362c565b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613a0a6139f9600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123ac565b6007546134f490919063ffffffff16565b6007819055505056fea165627a7a723058207a05f30a98ee98154adf545edd32822b1d415f9d723029509b345cd4c30eaae20029

Deployed Bytecode Sourcemap

2816:13577:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2816:13577:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2535:82;;;:::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;2535:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7435:248;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7435:248:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3896:43;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3896:43:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5380:97;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6543:272;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6543:272:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6543:272:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6543:272: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;6543:272: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;;6543:272:0;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6543:272:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6543:272: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;6543:272: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;;6543:272:0;;;;;;;;;;;;;;;:::i;:::-;;13675:414;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13675:414:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6827:297;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6827:297:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15190:65;;;:::i;:::-;;14134:974;;;:::i;:::-;;2727:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7998:329;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7998:329:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15359:88;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15359:88:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;6266:265;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6266:265:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6266:265:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6266:265: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;6266:265: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;;6266:265:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9411:87;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9411:87:0;;;;;;;;;;;;;;;;;:::i;:::-;;3844:45;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3844:45:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3329:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3376:42;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3376:42:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5489:112;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5489:112:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9510:246;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9510:246:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2629:86;;;:::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;2629:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8339:339;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8339:339:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4618:179;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4618:179:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6101:153;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6101:153:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5781:159;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5781:159:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7136:287;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;7136:287:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;7136:287:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7136:287: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;7136:287: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;;7136:287:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7695:291;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7695:291:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;7695:291:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7695:291: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;7695:291: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;;7695:291:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3292:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15120:64;;;:::i;:::-;;5952:137;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5952:137:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5613:156;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5613:156:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16164:206;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16164:206:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15267:86;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15267:86:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;5117:251;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5117:251:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;4845:185;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4845:185:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2535:82;2571:13;2604:5;2597:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2535:82;:::o;7435:248::-;7500:4;7550:1;7531:21;;:7;:21;;;;7523:30;;;;;;7596:5;7564:8;:20;7573:10;7564:20;;;;;;;;;;;;;;;:29;7585:7;7564:29;;;;;;;;;;;;;;;:37;;;;7638:7;7617:36;;7626:10;7617:36;;;7647:5;7617:36;;;;;;;;;;;;;;;;;;7671:4;7664:11;;7435:248;;;;:::o;3896:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;5380:97::-;5424:7;5457:12;;5450:19;;5380:97;:::o;6543:272::-;6670:6;:13;6650:9;:16;:33;6642:42;;;;;;6699:9;6711:1;6699:13;;6695:112;6718:9;:16;6714:1;:20;6695:112;;;6754:53;6771:10;6783:9;6793:1;6783:12;;;;;;;;;;;;;;6797:6;6804:1;6797:9;;;;;;;;;;;;;;6754:16;:53::i;:::-;6736:3;;;;;;;6695:112;;;;6543:272;;:::o;13675:414::-;13739:7;13768:9;:17;13778:6;13768:17;;;;;;;;;;;;;;;;;;;;;;;;;13764:64;;13807:13;:21;13821:6;13807:21;;;;;;;;;;;;;;;;13800:28;;;;13764:64;13839:25;13867:64;13892:30;:38;13923:6;13892:38;;;;;;;;;;;;;;;;13867:20;;:24;;:64;;;;:::i;:::-;13839:92;;13952:18;13973:53;13995:30;14007:9;:17;14017:6;14007:17;;;;;;;;;;;;;;;;13995:11;:30::i;:::-;13973:17;:21;;:53;;;;:::i;:::-;13952:74;;14044:37;14070:10;14044:13;:21;14058:6;14044:21;;;;;;;;;;;;;;;;:25;;:37;;;;:::i;:::-;14037:44;;;;13675:414;;;;:::o;6827:297::-;6906:4;6946:8;:14;6955:4;6946:14;;;;;;;;;;;;;;;:26;6961:10;6946:26;;;;;;;;;;;;;;;;6937:5;:35;;6929:44;;;;;;7013:37;7044:5;7013:8;:14;7022:4;7013:14;;;;;;;;;;;;;;;:26;7028:10;7013:26;;;;;;;;;;;;;;;;:30;;:37;;;;:::i;:::-;6984:8;:14;6993:4;6984:14;;;;;;;;;;;;;;;:26;6999:10;6984:26;;;;;;;;;;;;;;;:66;;;;7061:33;7078:4;7084:2;7088:5;7061:16;:33::i;:::-;7112:4;7105:11;;6827:297;;;;;:::o;15190:65::-;15225:27;15241:10;15225:15;:27::i;:::-;15190:65::o;14134:974::-;14182:28;14199:10;14182:16;:28::i;:::-;14221:15;14239:13;:25;14253:10;14239:25;;;;;;;;;;;;;;;;14221:43;;14293:1;14283:7;:11;:50;;;;;14309:9;:24;14327:4;14309:24;;;;;;;;;;;;;;;;14298:7;:35;;14283:50;14275:59;;;;;;14383:1;14355:13;:25;14369:10;14355:25;;;;;;;;;;;;;;;:29;;;;14405:28;14436:9;:21;14446:10;14436:21;;;;;;;;;;;;;;;;14405:52;;14468:25;14496:33;14521:7;14496:20;:24;;:33;;;;:::i;:::-;14468:61;;14589:9;:21;14599:10;14589:21;;;;;;;;;;;;;;;;;;;;;;;;;14586:298;;;14636:17;14656:21;;14636:41;;14704:48;14718:33;14730:20;14718:11;:33::i;:::-;14704:9;:13;;:48;;;;:::i;:::-;14692:60;;14779:45;14793:30;14805:17;14793:11;:30::i;:::-;14779:9;:13;;:45;;;;:::i;:::-;14767:57;;14863:9;14839:21;:33;;;;14586:298;;14951:37;14980:7;14951:9;:24;14969:4;14951:24;;;;;;;;;;;;;;;;:28;;:37;;;;:::i;:::-;14924:9;:24;14942:4;14924:24;;;;;;;;;;;;;;;:64;;;;15023:17;14999:9;:21;15009:10;14999:21;;;;;;;;;;;;;;;:41;;;;15080:10;15056:44;;15073:4;15056:44;;;15092:7;15056:44;;;;;;;;;;;;;;;;;;14134:974;;;:::o;2727:82::-;2767:5;2792:9;;;;;;;;;;;2785:16;;2727:82;:::o;7998:329::-;8078:4;8128:1;8109:21;;:7;:21;;;;8101:30;;;;;;8175:45;8209:10;8175:8;:20;8184:10;8175:20;;;;;;;;;;;;;;;:29;8196:7;8175:29;;;;;;;;;;;;;;;;:33;;:45;;;;:::i;:::-;8142:8;:20;8151:10;8142:20;;;;;;;;;;;;;;;:29;8163:7;8142:29;;;;;;;;;;;;;;;:79;;;;8258:7;8237:60;;8246:10;8237:60;;;8267:8;:20;8276:10;8267:20;;;;;;;;;;;;;;;:29;8288:7;8267:29;;;;;;;;;;;;;;;;8237:60;;;;;;;;;;;;;;;;;;8315:4;8308:11;;7998:329;;;;:::o;15359:88::-;4508:13;;;;;;;;;;;4494:27;;:10;:27;;;4486:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15421:23;15437:6;15421:15;:23::i;:::-;15359:88;:::o;6266:265::-;6350:4;6381:19;6390:2;6394:5;6381:8;:19::i;:::-;6373:28;;;;;;6444:2;6420:40;;;6461:10;6473:5;6488:4;6495;6420:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;6420:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6420:80:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6420:80:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6420:80:0;;;;;;;;;;;;;;;;6412:89;;;;;;6519:4;6512:11;;6266:265;;;;;:::o;9411:87::-;9466:24;9472:10;9484:5;9466;:24::i;:::-;9411:87;:::o;3844:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;3329:40::-;;;;:::o;3376:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;5489:112::-;5544:7;5577:9;:16;5587:5;5577:16;;;;;;;;;;;;;;;;5570:23;;5489:112;;;:::o;9510:246::-;9603:8;:17;9612:7;9603:17;;;;;;;;;;;;;;;:29;9621:10;9603:29;;;;;;;;;;;;;;;;9594:5;:38;;9586:47;;;;;;9676:40;9710:5;9676:8;:17;9685:7;9676:17;;;;;;;;;;;;;;;:29;9694:10;9676:29;;;;;;;;;;;;;;;;:33;;:40;;;;:::i;:::-;9644:8;:17;9653:7;9644:17;;;;;;;;;;;;;;;:29;9662:10;9644:29;;;;;;;;;;;;;;;:72;;;;9727:21;9733:7;9742:5;9727;:21::i;:::-;9510:246;;:::o;2629:86::-;2667:13;2700:7;2693:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2629:86;:::o;8339:339::-;8424:4;8474:1;8455:21;;:7;:21;;;;8447:30;;;;;;8521:50;8555:15;8521:8;:20;8530:10;8521:20;;;;;;;;;;;;;;;:29;8542:7;8521:29;;;;;;;;;;;;;;;;:33;;:50;;;;:::i;:::-;8488:8;:20;8497:10;8488:20;;;;;;;;;;;;;;;:29;8509:7;8488:29;;;;;;;;;;;;;;;:84;;;;8609:7;8588:60;;8597:10;8588:60;;;8618:8;:20;8627:10;8618:20;;;;;;;;;;;;;;;:29;8639:7;8618:29;;;;;;;;;;;;;;;;8588:60;;;;;;;;;;;;;;;;;;8666:4;8659:11;;8339:339;;;;:::o;4618:179::-;4508:13;;;;;;;;;;;4494:27;;:10;:27;;;4486:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4713:32;4725:5;4732:12;4713:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4777:12;4756:11;:18;4768:5;4756:18;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;4618:179;;:::o;6101:153::-;6162:4;6185:39;6202:10;6214:2;6218:5;6185:16;:39::i;:::-;6242:4;6235:11;;6101:153;;;;:::o;5781:159::-;5850:7;5883:49;3161:2;5909:22;;5905:2;:26;5883:17;:21;;:49;;;;:::i;:::-;5876:56;;5781:159;;;:::o;7136:287::-;7238:4;7269:29;7282:4;7288:2;7292:5;7269:12;:29::i;:::-;7261:38;;;;;;7342:2;7318:40;;;7359:4;7365:5;7380:4;7387;7318:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;7318:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7318:74:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7318:74:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7318:74:0;;;;;;;;;;;;;;;;7310:83;;;;;;7411:4;7404:11;;7136:287;;;;;;:::o;7695:291::-;7784:12;7823:24;7831:7;7840:6;7823:7;:24::i;:::-;7815:33;;;;;;7890:7;7867:47;;;7915:10;7927:6;7943:4;7950;7867: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;7867:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7867:88:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7867:88:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7867:88:0;;;;;;;;;;;;;;;;7859:97;;;;;;7974:4;7967:11;;7695:291;;;;;:::o;3292:28::-;;;;;;;;;;;;;:::o;15120:64::-;15154:26;15169:10;15154:14;:26::i;:::-;15120:64::o;5952:137::-;6024:7;6057:8;:15;6066:5;6057:15;;;;;;;;;;;;;;;:24;6073:7;6057:24;;;;;;;;;;;;;;;;6050:31;;5952:137;;;;:::o;5613:156::-;5676:7;5709:9;:16;5719:5;5709:16;;;;;;;;;;;;;;;;;;;;;;;;;:52;;5760:1;5709:52;;;5728:29;5740:9;:16;5750:5;5740:16;;;;;;;;;;;;;;;;5728:11;:29::i;:::-;5709:52;5702:59;;5613:156;;;:::o;16164:206::-;4508:13;;;;;;;;;;;4494:27;;:10;:27;;;4486:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16296:4;16272:29;;:12;:29;;;;16264:38;;;;;;16320:12;16313:29;;;16343:10;16355:6;16313:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16313:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16313:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16313:49:0;;;;;;;;;;;;;;;;;16164:206;;:::o;15267:86::-;4508:13;;;;;;;;;;;4494:27;;:10;:27;;;4486:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15328:22;15343:6;15328:14;:22::i;:::-;15267:86;:::o;5117:251::-;5208:13;;;;;;;;;;;5194:27;;:10;:27;;;5186:36;;;;;;5261:1;5241:22;;:8;:22;;;;5233:31;;;;;;5316:8;5280:45;;5301:13;;;;;;;;;;;5280:45;;;;;;;;;;;;5352:8;5336:13;;:24;;;;;;;;;;;;;;;;;;5117:251;:::o;4845:185::-;4508:13;;;;;;;;;;;4494:27;;:10;:27;;;4486:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4942:34;4956:5;4963:12;4942:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5010:12;4987:13;:20;5001:5;4987:20;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4845:185;;:::o;10729:2564::-;10837:9;:15;10847:4;10837:15;;;;;;;;;;;;;;;;10828:5;:24;;10820:33;;;;;;10886:1;10872:16;;:2;:16;;;;:39;;;;;10906:4;10892:19;;:2;:19;;;;10872:39;10864:48;;;;;;11019:22;11036:4;11019:16;:22::i;:::-;11052:20;11069:2;11052:16;:20::i;:::-;11093:19;11115:1;11093:23;;11131:13;:19;11145:4;11131:19;;;;;;;;;;;;;;;;;;;;;;;;;11130:20;:40;;;;;11155:11;:15;11167:2;11155:15;;;;;;;;;;;;;;;;;;;;;;;;;11154:16;11130:40;11127:260;;;11207:21;11224:3;11207:12;11217:1;11207:5;:9;;:12;;;;:::i;:::-;:16;;:21;;;;:::i;:::-;11193:35;;11337:1;11322:11;:16;:29;;;;;11350:1;11342:5;:9;11322:29;11319:62;;;11380:1;11366:15;;11319:62;11127:260;11407:26;11436:9;:15;11446:4;11436:15;;;;;;;;;;;;;;;;11407:44;;11462:23;11488:29;11511:5;11488:18;:22;;:29;;;;:::i;:::-;11462:55;;11546:22;11556:11;11546:5;:9;;:22;;;;:::i;:::-;11538:30;;11591:24;11626:2;11618:10;;:4;:10;;;;:44;;11647:15;11618:44;;;11631:9;:13;11641:2;11631:13;;;;;;;;;;;;;;;;11618:44;11591:71;;11673:21;11697:27;11718:5;11697:16;:20;;:27;;;;:::i;:::-;11673:51;;11783:15;11765:9;:15;11775:4;11765:15;;;;;;;;;;;;;;;:33;;;;11825:13;11809:9;:13;11819:2;11809:13;;;;;;;;;;;;;;;:29;;;;11869:2;11854:25;;11863:4;11854:25;;;11873:5;11854:25;;;;;;;;;;;;;;;;;;11937:17;11957:21;;11937:41;;11992:9;:15;12002:4;11992:15;;;;;;;;;;;;;;;;;;;;;;;;;11989:184;;;12045:46;12059:31;12071:18;12059:11;:31::i;:::-;12045:9;:13;;:46;;;;:::i;:::-;12033:58;;12118:43;12132:28;12144:15;12132:11;:28::i;:::-;12118:9;:13;;:43;;;;:::i;:::-;12106:55;;11989:184;12186:9;:13;12196:2;12186:13;;;;;;;;;;;;;;;;;;;;;;;;;12183:178;;;12237:44;12251:29;12263:16;12251:11;:29::i;:::-;12237:9;:13;;:44;;;;:::i;:::-;12225:56;;12308:41;12322:26;12334:13;12322:11;:26::i;:::-;12308:9;:13;;:41;;;;:::i;:::-;12296:53;;12183:178;12395:9;12371:21;:33;;;;12425:20;12448:11;12425:34;;12495:1;12483:9;:13;12480:613;;;12522:22;12547:18;12563:1;12547:11;:15;;:18;;;;:::i;:::-;12522:43;;12633:22;12658:29;12677:9;12658:14;:18;;:29;;;;:::i;:::-;12633:54;;12782:40;12807:14;12782:20;;:24;;:40;;;;:::i;:::-;12759:20;:63;;;;12864:44;12893:14;12864:9;:24;12882:4;12864:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;12837:9;:24;12855:4;12837:24;;;;;;;;;;;;;;;:71;;;;12943:1;12926:14;:18;12923:96;;;12997:4;12968:51;;12977:10;12968:51;;;13004:14;12968:51;;;;;;;;;;;;;;;;;;12923:96;13049:32;13066:14;13049:12;:16;;:32;;;;:::i;:::-;13034:47;;12480:613;;;13159:30;13176:12;13159;;:16;;:30;;;;:::i;:::-;13144:12;:45;;;;13218:1;13203:12;:16;13200:85;;;13268:1;13239:46;;13248:10;13239:46;;;13272:12;13239:46;;;;;;;;;;;;;;;;;;13200:85;10729:2564;;;;;;;;;;:::o;1733:129::-;1791:7;1829:1;1824;:6;;1817:14;;;;1853:1;1849;:5;1842:12;;1733:129;;;;:::o;1357:224::-;1415:7;1450:1;1445;:6;1441:57;;;1485:1;1478:8;;;;1441:57;1508:9;1524:1;1520;:5;1508:17;;1552:1;1547;1543;:5;;;;;;:10;1536:18;;;;1572:1;1565:8;;;1357:224;;;;;:::o;1874:153::-;1932:7;1958:9;1974:1;1970;:5;1958:17;;1998:1;1993;:6;;1986:14;;;;2018:1;2011:8;;;1874:153;;;;:::o;15819:262::-;15892:9;:17;15902:6;15892:17;;;;;;;;;;;;;;;;;;;;;;;;;15884:26;;;;;;15921:24;15938:6;15921:16;:24::i;:::-;15976:5;15956:9;:17;15966:6;15956:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;16016:57;16042:30;16054:9;:17;16064:6;16054:17;;;;;;;;;;;;;;;;16042:11;:30::i;:::-;16016:21;;:25;;:57;;;;:::i;:::-;15992:21;:81;;;;15819:262;:::o;13414:195::-;13504:25;13522:6;13504:17;:25::i;:::-;13480:13;:21;13494:6;13480:21;;;;;;;;;;;;;;;:49;;;;13581:20;;13540:30;:38;13571:6;13540:38;;;;;;;;;;;;;;;:61;;;;13414:195;:::o;9768:766::-;9858:1;9849:5;:10;;9841:19;;;;;;9888:9;:18;9898:7;9888:18;;;;;;;;;;;;;;;;9879:5;:27;;9871:36;;;;;;9928:21;9952:9;:18;9962:7;9952:18;;;;;;;;;;;;;;;;9928:42;;9981:18;10002:24;10020:5;10002:13;:17;;:24;;;;:::i;:::-;9981:45;;10068:10;10047:9;:18;10057:7;10047:18;;;;;;;;;;;;;;;:31;;;;10104:23;10121:5;10104:12;;:16;;:23;;;;:::i;:::-;10089:12;:38;;;;10187:9;:18;10197:7;10187:18;;;;;;;;;;;;;;;;;;;;;;;;;10184:281;;;10231:17;10251:21;;10231:41;;10299;10313:26;10325:13;10313:11;:26::i;:::-;10299:9;:13;;:41;;;;:::i;:::-;10287:53;;10367:38;10381:23;10393:10;10381:11;:23::i;:::-;10367:9;:13;;:38;;;;:::i;:::-;10355:50;;10444:9;10420:21;:33;;;;10184:281;;10516:1;10490:36;;10499:7;10490:36;;;10520:5;10490:36;;;;;;;;;;;;;;;;;;9768:766;;;;:::o;1593:128::-;1651:7;1677:9;1693:1;1689;:5;;;;;;1677:17;;1712:1;1705:8;;;1593:128;;;;:::o;15502:261::-;15575:9;:17;15585:6;15575:17;;;;;;;;;;;;;;;;;;;;;;;;;15574:18;15566:27;;;;;;15604:24;15621:6;15604:16;:24::i;:::-;15659:4;15639:9;:17;15649:6;15639:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;15698:57;15724:30;15736:9;:17;15746:6;15736:17;;;;;;;;;;;;;;;;15724:11;:30::i;:::-;15698:21;;:25;;:57;;;;:::i;:::-;15674:21;:81;;;;15502:261;:::o

Swarm Source

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