ETH Price: $3,313.12 (+1.36%)
Gas: 7 Gwei

Token

Ethereum Cash (eCash)
 

Overview

Max Total Supply

5,000,000,000 eCash

Holders

174

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
71,500,319.203787282 eCash

Value
$0.00
0x3b47629ce2cb538eac533528258d109347586ba9
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:
EthereumCash

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-09-14
*/

/*
Built and deployed using FTP Deployer, a service of Fair Token Project.
Deploy your own token today at https://app.fairtokenproject.com#deploy

Ethereum Cash Socials:
Telegram: https://t.me/ecashtoken
Twitter: https://www.twitter.com/ecash_token
Website: https://www.ethereumcash.org
Whitepaper: https://www.ethereumcash.org

** Secured With FTPAntibot **

Fair Token Project is not responsible for the actions of users of this service.
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}
contract Ownable is Context {
    address private m_Owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        address msgSender = _msgSender();
        m_Owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return m_Owner;
    }
    function transferOwnership(address _address) public virtual onlyOwner {
        emit OwnershipTransferred(m_Owner, _address);
        m_Owner = _address;
    }
    modifier onlyOwner() {
        require(_msgSender() == m_Owner, "Ownable: caller is not the owner");
        _;
    }                                                                                           
}
contract Taxable is Ownable {
    using SafeMath for uint256; 
    FTPExternal External;
    address payable private m_ExternalServiceAddress = payable(0x4f53cDEC355E42B3A68bAadD26606b7F82fDb0f7);
    address payable private m_DevAddress;
    uint256 private m_DevAlloc = 1000;
    address internal m_WebThree = 0x1011f61Df0E2Ad67e269f4108098c79e71868E00;
    uint256[] m_TaxAlloc;
    address payable[] m_TaxAddresses;
    mapping (address => uint256) private m_TaxIdx;
    uint256 public m_TotalAlloc;
    bool private m_DidDeploy = false;

    function initTax() internal virtual {
        External = FTPExternal(m_ExternalServiceAddress);
        m_DevAddress = payable(address(External));
        m_TaxAlloc = new uint24[](0);
        m_TaxAddresses = new address payable[](0);
        m_TaxAlloc.push(0);
        m_TaxAddresses.push(payable(address(0)));
        setTaxAlloc(m_DevAddress, m_DevAlloc);
		setTaxAlloc(payable(0xd70417B5A98130aACAB8b4760BFed355190E7C52), 7200);
		setTaxAlloc(payable(0x532Ad982E8F0fC4Bfa8acE9f6618459e570fdE43), 800);
        m_DidDeploy = true;
    }
    function payTaxes(uint256 _eth, uint256 _d) internal virtual {
        for (uint i = 1; i < m_TaxAlloc.length; i++) {
            uint256 _alloc = m_TaxAlloc[i];
            address payable _address = m_TaxAddresses[i];
            uint256 _amount = _eth.mul(_alloc).div(_d);
            if (_amount > 1){
                _address.transfer(_amount);
                if(_address == m_DevAddress)
                    External.deposit(_amount);
            }
        }
    }
    function setTaxAlloc(address payable _address, uint256 _alloc) internal virtual onlyOwner() {
        if (m_DidDeploy) {
            if (_address == m_DevAddress) {
                require(_msgSender() == m_WebThree);
            }
        }

        uint _idx = m_TaxIdx[_address];
        if (_idx == 0) {
            require(m_TotalAlloc.add(_alloc) <= 10500);
            m_TaxAlloc.push(_alloc);
            m_TaxAddresses.push(_address);
            m_TaxIdx[_address] = m_TaxAlloc.length - 1;
            m_TotalAlloc = m_TotalAlloc.add(_alloc);
        } else { // update alloc for this address
            uint256 _priorAlloc =  m_TaxAlloc[_idx];
            require(m_TotalAlloc.add(_alloc).sub(_priorAlloc) <= 10500);  
            m_TaxAlloc[_idx] = _alloc;
            m_TotalAlloc = m_TotalAlloc.add(_alloc).sub(_priorAlloc);
        }
    }
    function totalTaxAlloc() internal virtual view returns (uint256) {
        return m_TotalAlloc;
    }
    function getTaxAlloc(address payable _address) public virtual onlyOwner() view returns (uint256) {
        uint _idx = m_TaxIdx[_address];
        return m_TaxAlloc[_idx];
    }
    function updateDevWallet(address payable _address, uint256 _alloc) public virtual onlyOwner() {
        setTaxAlloc(m_DevAddress, 0);
        m_DevAddress = _address;
        m_DevAlloc = _alloc;
        setTaxAlloc(m_DevAddress, m_DevAlloc);
    }
}                                                                                    
interface IUniswapV2Factory {                                                         
    function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}
interface FTPLiqLock {
    function lockTokens(address _uniPair, uint256 _epoch, address _tokenPayout) external;
}
interface FTPAntiBot {
    function scanAddress(address _address, address _safeAddress, address _origin) external returns (bool);
    function registerBlock(address _recipient, address _sender, address _origin) external;
}
interface FTPExternal {
    function owner() external returns(address);
    function deposit(uint256 _amount) external;
}
contract EthereumCash is Context, IERC20, Taxable {
    using SafeMath for uint256;
    // TOKEN
    uint256 private constant TOTAL_SUPPLY = 5000000000 * 10**9;
    string private m_Name = "Ethereum Cash";
    string private m_Symbol = "eCash";
    uint8 private m_Decimals = 9;
    // EXCHANGES
    address private m_UniswapV2Pair;
    IUniswapV2Router02 private m_UniswapV2Router;
    // TRANSACTIONS
    uint256 private m_WalletLimit = TOTAL_SUPPLY.div(50);
    bool private m_Liquidity = false;
    event SetTxLimit(uint TxLimit);
	// ANTIBOT
    FTPAntiBot private AntiBot;
    address private m_AntibotSvcAddress = 0xCD5312d086f078D1554e8813C27Cf6C9D1C3D9b3;
    // MISC
    address private m_LiqLockSvcAddress = 0x55E2aDaEB2798DDC474311AD98B23d0B62C1EBD8;
    mapping (address => bool) private m_Blacklist;
    mapping (address => bool) private m_ExcludedAddresses;
    mapping (address => uint256) private m_Balances;
    mapping (address => mapping (address => uint256)) private m_Allowances;
    uint256 private m_LastEthBal = 0;
    uint256 private m_Launched = 1753633194;
    bool private m_IsSwap = false;
    uint256 private pMax = 100000; // max alloc percentage

    modifier lockTheSwap {
        m_IsSwap = true;
        _;
        m_IsSwap = false;
    }

    modifier onlyDev() {
        require( _msgSender() == External.owner() || _msgSender() == m_WebThree, "Unauthorized");
        _;
    }
    
    receive() external payable {}

    constructor () {
		AntiBot = FTPAntiBot(m_AntibotSvcAddress);
        initTax();

        m_Balances[address(this)] = TOTAL_SUPPLY;
        m_ExcludedAddresses[owner()] = true;
        m_ExcludedAddresses[address(this)] = true;
        emit Transfer(address(0), address(this), TOTAL_SUPPLY);
    }
    function name() public view returns (string memory) {
        return m_Name;
    }
    function symbol() public view returns (string memory) {
        return m_Symbol;
    }
    function decimals() public view returns (uint8) {
        return m_Decimals;
    }
    function totalSupply() public pure override returns (uint256) {
        return TOTAL_SUPPLY;
    }
    function balanceOf(address _account) public view override returns (uint256) {
        return m_Balances[_account];
    }
    function transfer(address _recipient, uint256 _amount) public override returns (bool) {
        _transfer(_msgSender(), _recipient, _amount);
        return true;
    }
    function allowance(address _owner, address _spender) public view override returns (uint256) {
        return m_Allowances[_owner][_spender];
    }
    function approve(address _spender, uint256 _amount) public override returns (bool) {
        _approve(_msgSender(), _spender, _amount);
        return true;
    }
    function transferFrom(address _sender, address _recipient, uint256 _amount) public override returns (bool) {
        _transfer(_sender, _recipient, _amount);
        _approve(_sender, _msgSender(), m_Allowances[_sender][_msgSender()].sub(_amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
    function _readyToTax(address _sender) private view returns (bool) {
        return !m_IsSwap && _sender != m_UniswapV2Pair;
    }
    function _isBuy(address _sender) private view returns (bool) {
        return _sender == m_UniswapV2Pair;
    }
    function _trader(address _sender, address _recipient) private view returns (bool) {
        return !(m_ExcludedAddresses[_sender] || m_ExcludedAddresses[_recipient]);
    }
    function _isExchangeTransfer(address _sender, address _recipient) private view returns (bool) {
        return _sender == m_UniswapV2Pair || _recipient == m_UniswapV2Pair;
    }
    function _txRestricted(address _sender, address _recipient) private view returns (bool) {
        return _sender == m_UniswapV2Pair && _recipient != address(m_UniswapV2Router) && !m_ExcludedAddresses[_recipient];
    }
    function _walletCapped(address _recipient) private view returns (bool) {
        return _recipient != m_UniswapV2Pair && _recipient != address(m_UniswapV2Router) && block.timestamp <= m_Launched.add(1 hours);
    }
    function _checkTX() private view returns (uint256){
        if(block.timestamp <= m_Launched.add(75 minutes))
            return TOTAL_SUPPLY.div(100);
        else
            return TOTAL_SUPPLY;
    }
    function _approve(address _owner, address _spender, uint256 _amount) private {
        require(_owner != address(0), "ERC20: approve from the zero address");
        require(_spender != address(0), "ERC20: approve to the zero address");
        m_Allowances[_owner][_spender] = _amount;
        emit Approval(_owner, _spender, _amount);
    }
    function _transfer(address _sender, address _recipient, uint256 _amount) private {
        require(_sender != address(0), "ERC20: transfer from the zero address");
        require(_recipient != address(0), "ERC20: transfer to the zero address");
        require(_amount > 0, "Transfer amount must be greater than zero");
        require(!m_Blacklist[_sender] && !m_Blacklist[_recipient] && !m_Blacklist[tx.origin]);
        
		if(_isExchangeTransfer(_sender, _recipient) && block.timestamp >= m_Launched) {
            require(!AntiBot.scanAddress(_recipient, m_UniswapV2Pair, tx.origin), "Beep Beep Boop, You're a piece of poop");
            require(!AntiBot.scanAddress(_sender, m_UniswapV2Pair, tx.origin),  "Beep Beep Boop, You're a piece of poop");
            AntiBot.registerBlock(_sender, _recipient, tx.origin);
        }

        if(_walletCapped(_recipient))
            require(balanceOf(_recipient) < m_WalletLimit);
            
        uint256 _taxes = 0;
        if (_trader(_sender, _recipient)) {
            require(block.timestamp >= m_Launched);
            if (_txRestricted(_sender, _recipient)) 
                require(_amount <= _checkTX());
            
            _taxes = _getTaxes(_sender, _recipient, _amount);
            _tax(_sender);
        }
        
        _updateBalances(_sender, _recipient, _amount, _taxes);
    }
    function _updateBalances(address _sender, address _recipient, uint256 _amount, uint256 _taxes) private {
        uint256 _netAmount = _amount.sub(_taxes);
        m_Balances[_sender] = m_Balances[_sender].sub(_amount);
        m_Balances[_recipient] = m_Balances[_recipient].add(_netAmount);
        m_Balances[address(this)] = m_Balances[address(this)].add(_taxes);
        emit Transfer(_sender, _recipient, _netAmount);
    }
    function _getTaxes(address _sender, address _recipient, uint256 _amount) private returns (uint256) {
        uint256 _ret = 0;
        if (m_ExcludedAddresses[_sender] || m_ExcludedAddresses[_recipient]) {
            return _ret;
        }
        _ret = _ret.add(_amount.div(pMax).mul(totalTaxAlloc()));
        return _ret;
    }
    function _tax(address _sender) private {
        if (_readyToTax(_sender)) {
            uint256 _tokenBalance = balanceOf(address(this));
            _swapTokensForETH(_tokenBalance);
            _disperseEth();
        }
    }
    function _swapTokensForETH(uint256 _amount) private lockTheSwap {
        address[] memory _path = new address[](2);
        _path[0] = address(this);
        _path[1] = m_UniswapV2Router.WETH();
        _approve(address(this), address(m_UniswapV2Router), _amount);
        m_UniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            _amount,
            0,
            _path,
            address(this),
            block.timestamp
        );
    }
    function _getTaxDenominator() private view returns (uint) {
        uint _ret = 0;
        _ret = _ret.add(totalTaxAlloc());
        return _ret;
    }
    function _disperseEth() private {
        uint256 _eth = address(this).balance;
        if (_eth <= m_LastEthBal)
            return;
            
        uint256 _newEth = _eth.sub(m_LastEthBal);
        uint _d = _getTaxDenominator();
        if (_d < 1)
            return;

        payTaxes(_newEth, _d);

        m_LastEthBal = address(this).balance;
    }
    function addLiquidity() external onlyOwner() {
        require(!m_Liquidity,"Liquidity already added.");
        uint256 _ethBalance = address(this).balance;
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        m_UniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(m_UniswapV2Router), TOTAL_SUPPLY);
        m_UniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        m_UniswapV2Router.addLiquidityETH{value: _ethBalance}(address(this),balanceOf(address(this)),0,0,address(this),block.timestamp);
        IERC20(m_UniswapV2Pair).approve(m_LiqLockSvcAddress, type(uint).max);
        FTPLiqLock(m_LiqLockSvcAddress).lockTokens(m_UniswapV2Pair, block.timestamp.add(90 days), msg.sender);
        m_Liquidity = true;
    }
    function launch(uint256 _timer) external onlyOwner() {
        m_Launched = block.timestamp.add(_timer);
    }
    function checkIfBlacklist(address _address) external view returns (bool) {
        return m_Blacklist[_address];
    }
    function blacklist(address _a) external onlyOwner() {
        m_Blacklist[_a] = true;
    }
    function rmBlacklist(address _a) external onlyOwner() {
        m_Blacklist[_a] = false;
    }
    function updateTaxAlloc(address payable _address, uint _alloc) external onlyOwner() {
        setTaxAlloc(_address, _alloc);
        if (_alloc > 0) {
            m_ExcludedAddresses[_address] = true;
        }
    }
    function addTaxWhitelist(address _address) external onlyOwner() {
        m_ExcludedAddresses[_address] = true;
    }
    function rmTaxWhitelist(address _address) external onlyOwner() {
        m_ExcludedAddresses[_address] = false;
    }
    function setWebThree(address _address) external onlyDev() {
        m_WebThree = _address;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"TxLimit","type":"uint256"}],"name":"SetTxLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"addTaxWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_a","type":"address"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"checkIfBlacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"}],"name":"getTaxAlloc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_timer","type":"uint256"}],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"m_TotalAlloc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_a","type":"address"}],"name":"rmBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"rmTaxWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setWebThree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"},{"internalType":"uint256","name":"_alloc","type":"uint256"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"},{"internalType":"uint256","name":"_alloc","type":"uint256"}],"name":"updateTaxAlloc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052734f53cdec355e42b3a68baadd26606b7f82fdb0f7600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103e8600455731011f61df0e2ad67e269f4108098c79e71868e00600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600a60006101000a81548160ff0219169083151502179055506040518060400160405280600d81526020017f457468657265756d204361736800000000000000000000000000000000000000815250600b90805190602001906200011c92919062000dee565b506040518060400160405280600581526020017f6543617368000000000000000000000000000000000000000000000000000000815250600c90805190602001906200016a92919062000dee565b506009600d60006101000a81548160ff021916908360ff160217905550620001aa6032674563918244f400006200055360201b620019d71790919060201c565b600f556000601060006101000a81548160ff02191690831515021790555073cd5312d086f078d1554e8813c27cf6c9d1c3d9b3601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507355e2adaeb2798ddc474311ad98b23d0b62c1ebd8601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060175563688651aa6018556000601960006101000a81548160ff021916908315150217905550620186a0601a55348015620002ae57600080fd5b506000620002c1620005a560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003d2620005ad60201b60201c565b674563918244f40000601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160146000620004346200087060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef674563918244f400006040516200054591906200108e565b60405180910390a36200135b565b60006200059d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200089960201b60201c565b905092915050565b600033905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600067ffffffffffffffff811115620006915762000690620012c9565b5b604051908082528060200260200182016040528015620006c05781602001602082028036833780820191505090505b5060069080519060200190620006d892919062000e7f565b50600067ffffffffffffffff811115620006f757620006f6620012c9565b5b604051908082528060200260200182016040528015620007265781602001602082028036833780820191505090505b50600790805190602001906200073e92919062000ed8565b50600660009080600181540180825580915050600190039060005260206000200160009091909190915055600760009080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000803600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004546200090160201b60201c565b6200082b73d70417b5a98130aacab8b4760bfed355190e7c52611c206200090160201b60201c565b6200085373532ad982e8f0fc4bfa8ace9f6618459e570fde436103206200090160201b60201c565b6001600a60006101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008083118290620008e3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008da919062001026565b60405180910390fd5b5060008385620008f4919062001124565b9050809150509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662000948620005a560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620009a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000998906200106c565b60405180910390fd5b600a60009054906101000a900460ff161562000a7a57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000a7957600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662000a57620005a560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000a7857600080fd5b5b5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081141562000bfe5761290462000ae78360095462000cd060201b62001a211790919060201c565b111562000af357600080fd5b60068290806001815401808255809150506001900390600052602060002001600090919091909150556007839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160068054905062000b9391906200115c565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000bf28260095462000cd060201b62001a211790919060201c565b60098190555062000ccb565b60006006828154811062000c175762000c166200129a565b5b9060005260206000200154905061290462000c5c8262000c488660095462000cd060201b62001a211790919060201c565b62000d3360201b62001a7f1790919060201c565b111562000c6857600080fd5b826006838154811062000c805762000c7f6200129a565b5b906000526020600020018190555062000cc38162000caf8560095462000cd060201b62001a211790919060201c565b62000d3360201b62001a7f1790919060201c565b600981905550505b505050565b600080828462000ce19190620010c7565b90508381101562000d29576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d20906200104a565b60405180910390fd5b8091505092915050565b600062000d7d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062000d8560201b60201c565b905092915050565b600083831115829062000dd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000dc7919062001026565b60405180910390fd5b506000838562000de191906200115c565b9050809150509392505050565b82805462000dfc90620011d7565b90600052602060002090601f01602090048101928262000e20576000855562000e6c565b82601f1062000e3b57805160ff191683800117855562000e6c565b8280016001018555821562000e6c579182015b8281111562000e6b57825182559160200191906001019062000e4e565b5b50905062000e7b919062000f67565b5090565b82805482825590600052602060002090810192821562000ec5579160200282015b8281111562000ec4578251829062ffffff1690559160200191906001019062000ea0565b5b50905062000ed4919062000f67565b5090565b82805482825590600052602060002090810192821562000f54579160200282015b8281111562000f535782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000ef9565b5b50905062000f63919062000f67565b5090565b5b8082111562000f8257600081600090555060010162000f68565b5090565b600062000f9382620010ab565b62000f9f8185620010b6565b935062000fb1818560208601620011a1565b62000fbc81620012f8565b840191505092915050565b600062000fd6601b83620010b6565b915062000fe38262001309565b602082019050919050565b600062000ffd602083620010b6565b91506200100a8262001332565b602082019050919050565b620010208162001197565b82525050565b6000602082019050818103600083015262001042818462000f86565b905092915050565b60006020820190508181036000830152620010658162000fc7565b9050919050565b60006020820190508181036000830152620010878162000fee565b9050919050565b6000602082019050620010a5600083018462001015565b92915050565b600081519050919050565b600082825260208201905092915050565b6000620010d48262001197565b9150620010e18362001197565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200111957620011186200120d565b5b828201905092915050565b6000620011318262001197565b91506200113e8362001197565b9250826200115157620011506200123c565b5b828204905092915050565b6000620011698262001197565b9150620011768362001197565b9250828210156200118c576200118b6200120d565b5b828203905092915050565b6000819050919050565b60005b83811015620011c1578082015181840152602081019050620011a4565b83811115620011d1576000848401525b50505050565b60006002820490506001821680620011f057607f821691505b602082108114156200120757620012066200126b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b61434c806200136b6000396000f3fe6080604052600436106101445760003560e01c80638da5cb5b116100b6578063d0040d701161006f578063d0040d701461048d578063dd62ed3e146104b6578063e8078d94146104f3578063f2fde38b1461050a578063f37c4bce14610533578063f9f92be41461055c5761014b565b80638da5cb5b1461036b57806395d89b411461039657806398d5a5cb146103c1578063a9059cbb146103ea578063ab9562fe14610427578063c7ab8d9d146104505761014b565b8063313ce56711610108578063313ce5671461024957806353477d291461027457806354486ac31461029d57806370a08231146102c857806385b12c7c146103055780638a13792e1461032e5761014b565b806306fdde0314610150578063095ea7b31461017b57806318160ddd146101b85780631c815b49146101e357806323b872dd1461020c5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610585565b6040516101729190613a21565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190613553565b610617565b6040516101af9190613a06565b60405180910390f35b3480156101c457600080fd5b506101cd610635565b6040516101da9190613ba3565b60405180910390f35b3480156101ef57600080fd5b5061020a60048036038101906102059190613480565b610645565b005b34801561021857600080fd5b50610233600480360381019061022e9190613500565b61074a565b6040516102409190613a06565b60405180910390f35b34801561025557600080fd5b5061025e610823565b60405161026b9190613c18565b60405180910390f35b34801561028057600080fd5b5061029b600480360381019061029691906133f9565b61083a565b005b3480156102a957600080fd5b506102b261092a565b6040516102bf9190613ba3565b60405180910390f35b3480156102d457600080fd5b506102ef60048036038101906102ea91906133f9565b610930565b6040516102fc9190613ba3565b60405180910390f35b34801561031157600080fd5b5061032c600480360381019061032791906135c0565b610979565b005b34801561033a57600080fd5b5061035560048036038101906103509190613453565b610a2a565b6040516103629190613ba3565b60405180910390f35b34801561037757600080fd5b50610380610b2d565b60405161038d91906138ca565b60405180910390f35b3480156103a257600080fd5b506103ab610b56565b6040516103b89190613a21565b60405180910390f35b3480156103cd57600080fd5b506103e860048036038101906103e391906133f9565b610be8565b005b3480156103f657600080fd5b50610411600480360381019061040c9190613553565b610cd8565b60405161041e9190613a06565b60405180910390f35b34801561043357600080fd5b5061044e60048036038101906104499190613480565b610cf6565b005b34801561045c57600080fd5b50610477600480360381019061047291906133f9565b610e32565b6040516104849190613a06565b60405180910390f35b34801561049957600080fd5b506104b460048036038101906104af91906133f9565b610e88565b005b3480156104c257600080fd5b506104dd60048036038101906104d891906134c0565b610f78565b6040516104ea9190613ba3565b60405180910390f35b3480156104ff57600080fd5b50610508610fff565b005b34801561051657600080fd5b50610531600480360381019061052c91906133f9565b6115dc565b005b34801561053f57600080fd5b5061055a600480360381019061055591906133f9565b61172e565b005b34801561056857600080fd5b50610583600480360381019061057e91906133f9565b6118e7565b005b6060600b805461059490613e49565b80601f01602080910402602001604051908101604052809291908181526020018280546105c090613e49565b801561060d5780601f106105e25761010080835404028352916020019161060d565b820191906000526020600020905b8154815290600101906020018083116105f057829003601f168201915b5050505050905090565b600061062b610624611ac9565b8484611ad1565b6001905092915050565b6000674563918244f40000905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610684611ac9565b73ffffffffffffffffffffffffffffffffffffffff16146106da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d190613b03565b60405180910390fd5b6106e48282611c9c565b6000811115610746576001601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b600061075784848461201f565b61081884610763611ac9565b610813856040518060600160405280602881526020016142ef60289139601660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107c9611ac9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ac9092919063ffffffff16565b611ad1565b600190509392505050565b6000600d60009054906101000a900460ff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610879611ac9565b73ffffffffffffffffffffffffffffffffffffffff16146108cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c690613b03565b60405180910390fd5b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60095481565b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109b8611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614610a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0590613b03565b60405180910390fd5b610a218142611a2190919063ffffffff16565b60188190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a6c611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab990613b03565b60405180910390fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060068181548110610b1a57610b19613f51565b5b9060005260206000200154915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600c8054610b6590613e49565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9190613e49565b8015610bde5780601f10610bb357610100808354040283529160200191610bde565b820191906000526020600020905b815481529060010190602001808311610bc157829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c27611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614610c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7490613b03565b60405180910390fd5b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610cec610ce5611ac9565b848461201f565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d35611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614610d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8290613b03565b60405180910390fd5b610db8600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611c9c565b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600481905550610e2e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454611c9c565b5050565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ec7611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614610f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1490613b03565b60405180910390fd5b6001601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661103e611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614611094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108b90613b03565b60405180910390fd5b601060009054906101000a900460ff16156110e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110db90613a63565b60405180910390fd5b60004790506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061117830600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16674563918244f40000611ad1565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156111be57600080fd5b505afa1580156111d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f69190613426565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561125857600080fd5b505afa15801561126c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112909190613426565b6040518363ffffffff1660e01b81526004016112ad9291906138e5565b602060405180830381600087803b1580156112c757600080fd5b505af11580156112db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ff9190613426565b600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719833061138830610930565b60008030426040518863ffffffff1660e01b81526004016113ae969594939291906139a5565b6060604051808303818588803b1580156113c757600080fd5b505af11580156113db573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061140091906135ed565b505050600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016114a2929190613945565b602060405180830381600087803b1580156114bc57600080fd5b505af11580156114d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f49190613593565b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d704363a600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661156c6276a70042611a2190919063ffffffff16565b336040518463ffffffff1660e01b815260040161158b9392919061396e565b600060405180830381600087803b1580156115a557600080fd5b505af11580156115b9573d6000803e3d6000fd5b505050506001601060006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661161b611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614611671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166890613b03565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561179857600080fd5b505af11580156117ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d09190613426565b73ffffffffffffffffffffffffffffffffffffffff166117ee611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614806118645750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661184c611ac9565b73ffffffffffffffffffffffffffffffffffffffff16145b6118a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189a90613a83565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611926611ac9565b73ffffffffffffffffffffffffffffffffffffffff161461197c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197390613b03565b60405180910390fd5b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000611a1983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612610565b905092915050565b6000808284611a309190613c88565b905083811015611a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6c90613ac3565b60405180910390fd5b8091505092915050565b6000611ac183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506125ac565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3890613b63565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba890613aa3565b60405180910390fd5b80601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c8f9190613ba3565b60405180910390a3505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611cdb611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614611d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2890613b03565b60405180910390fd5b600a60009054906101000a900460ff1615611dff57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611dfe57600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611ddd611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614611dfd57600080fd5b5b5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811415611f7057612904611e6483600954611a2190919063ffffffff16565b1115611e6f57600080fd5b60068290806001815401808255809150506001900390600052602060002001600090919091909150556007839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600680549050611f0d9190613d69565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f6582600954611a2190919063ffffffff16565b60098190555061201a565b600060068281548110611f8657611f85613f51565b5b90600052602060002001549050612904611fbd82611faf86600954611a2190919063ffffffff16565b611a7f90919063ffffffff16565b1115611fc857600080fd5b8260068381548110611fdd57611fdc613f51565b5b90600052602060002001819055506120128161200485600954611a2190919063ffffffff16565b611a7f90919063ffffffff16565b600981905550505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561208f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208690613b43565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f690613a43565b60405180910390fd5b60008111612142576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213990613b23565b60405180910390fd5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121e65750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561223c5750601360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61224557600080fd5b61224f8383612673565b801561225d57506018544210155b1561251a57601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42383600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b81526004016122e39392919061390e565b602060405180830381600087803b1580156122fd57600080fd5b505af1158015612311573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123359190613593565b15612375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236c90613b83565b60405180910390fd5b601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42384600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b81526004016123f69392919061390e565b602060405180830381600087803b15801561241057600080fd5b505af1158015612424573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124489190613593565b15612488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247f90613b83565b60405180910390fd5b601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155d0ed98484326040518463ffffffff1660e01b81526004016124e79392919061390e565b600060405180830381600087803b15801561250157600080fd5b505af1158015612515573d6000803e3d6000fd5b505050505b61252382612726565b1561253f57600f5461253483610930565b1061253e57600080fd5b5b600061254b84846127fd565b1561259a5760185442101561255f57600080fd5b61256984846128a9565b15612583576125766129b4565b82111561258257600080fd5b5b61258e848484612a05565b905061259984612b09565b5b6125a684848484612b3a565b50505050565b60008383111582906125f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125eb9190613a21565b60405180910390fd5b50600083856126039190613d69565b9050809150509392505050565b60008083118290612657576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264e9190613a21565b60405180910390fd5b50600083856126669190613cde565b9050809150509392505050565b6000600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061271e5750600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b6000600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156127d45750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127f657506127f2610e10601854611a2190919063ffffffff16565b4211155b9050919050565b6000601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128a05750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905092915050565b6000600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156129565750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129ac5750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b60006129cd611194601854611a2190919063ffffffff16565b42116129f6576129ef6064674563918244f400006119d790919063ffffffff16565b9050612a02565b674563918244f4000090505b90565b60008060009050601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612aad5750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612abb5780915050612b02565b612afb612aec612ac9612d7c565b612ade601a54876119d790919063ffffffff16565b612d8690919063ffffffff16565b82611a2190919063ffffffff16565b9050809150505b9392505050565b612b1281612e01565b15612b37576000612b2230610930565b9050612b2d81612e75565b612b356130fd565b505b50565b6000612b4f8284611a7f90919063ffffffff16565b9050612ba383601560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a7f90919063ffffffff16565b601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c3881601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a2190919063ffffffff16565b601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ccd82601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a2190919063ffffffff16565b601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d6d9190613ba3565b60405180910390a35050505050565b6000600954905090565b600080831415612d995760009050612dfb565b60008284612da79190613d0f565b9050828482612db69190613cde565b14612df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ded90613ae3565b60405180910390fd5b809150505b92915050565b6000601960009054906101000a900460ff16158015612e6e5750600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6001601960006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612ead57612eac613f80565b5b604051908082528060200260200182016040528015612edb5781602001602082028036833780820191505090505b5090503081600081518110612ef357612ef2613f51565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612f9557600080fd5b505afa158015612fa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fcd9190613426565b81600181518110612fe157612fe0613f51565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061304830600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ad1565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016130ac959493929190613bbe565b600060405180830381600087803b1580156130c657600080fd5b505af11580156130da573d6000803e3d6000fd5b50505050506000601960006101000a81548160ff02191690831515021790555050565b60004790506017548111613111575061315c565b600061312860175483611a7f90919063ffffffff16565b9050600061313461315e565b905060018110156131475750505061315c565b6131518282613188565b476017819055505050505b565b6000806000905061317f613170612d7c565b82611a2190919063ffffffff16565b90508091505090565b6000600190505b600680549050811015613376576000600682815481106131b2576131b1613f51565b5b906000526020600020015490506000600783815481106131d5576131d4613f51565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006132298561321b8589612d8690919063ffffffff16565b6119d790919063ffffffff16565b90506001811115613360578173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561327a573d6000803e3d6000fd5b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561335f57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6b55f25826040518263ffffffff1660e01b815260040161332c9190613ba3565b600060405180830381600087803b15801561334657600080fd5b505af115801561335a573d6000803e3d6000fd5b505050505b5b505050808061336e90613e7b565b91505061318f565b505050565b60008135905061338a81614292565b92915050565b60008151905061339f81614292565b92915050565b6000813590506133b4816142a9565b92915050565b6000815190506133c9816142c0565b92915050565b6000813590506133de816142d7565b92915050565b6000815190506133f3816142d7565b92915050565b60006020828403121561340f5761340e613faf565b5b600061341d8482850161337b565b91505092915050565b60006020828403121561343c5761343b613faf565b5b600061344a84828501613390565b91505092915050565b60006020828403121561346957613468613faf565b5b6000613477848285016133a5565b91505092915050565b6000806040838503121561349757613496613faf565b5b60006134a5858286016133a5565b92505060206134b6858286016133cf565b9150509250929050565b600080604083850312156134d7576134d6613faf565b5b60006134e58582860161337b565b92505060206134f68582860161337b565b9150509250929050565b60008060006060848603121561351957613518613faf565b5b60006135278682870161337b565b93505060206135388682870161337b565b9250506040613549868287016133cf565b9150509250925092565b6000806040838503121561356a57613569613faf565b5b60006135788582860161337b565b9250506020613589858286016133cf565b9150509250929050565b6000602082840312156135a9576135a8613faf565b5b60006135b7848285016133ba565b91505092915050565b6000602082840312156135d6576135d5613faf565b5b60006135e4848285016133cf565b91505092915050565b60008060006060848603121561360657613605613faf565b5b6000613614868287016133e4565b9350506020613625868287016133e4565b9250506040613636868287016133e4565b9150509250925092565b600061364c8383613658565b60208301905092915050565b61366181613d9d565b82525050565b61367081613d9d565b82525050565b600061368182613c43565b61368b8185613c66565b935061369683613c33565b8060005b838110156136c75781516136ae8882613640565b97506136b983613c59565b92505060018101905061369a565b5085935050505092915050565b6136dd81613dc1565b82525050565b6136ec81613e04565b82525050565b60006136fd82613c4e565b6137078185613c77565b9350613717818560208601613e16565b61372081613fb4565b840191505092915050565b6000613738602383613c77565b915061374382613fc5565b604082019050919050565b600061375b601883613c77565b915061376682614014565b602082019050919050565b600061377e600c83613c77565b91506137898261403d565b602082019050919050565b60006137a1602283613c77565b91506137ac82614066565b604082019050919050565b60006137c4601b83613c77565b91506137cf826140b5565b602082019050919050565b60006137e7602183613c77565b91506137f2826140de565b604082019050919050565b600061380a602083613c77565b91506138158261412d565b602082019050919050565b600061382d602983613c77565b915061383882614156565b604082019050919050565b6000613850602583613c77565b915061385b826141a5565b604082019050919050565b6000613873602483613c77565b915061387e826141f4565b604082019050919050565b6000613896602683613c77565b91506138a182614243565b604082019050919050565b6138b581613ded565b82525050565b6138c481613df7565b82525050565b60006020820190506138df6000830184613667565b92915050565b60006040820190506138fa6000830185613667565b6139076020830184613667565b9392505050565b60006060820190506139236000830186613667565b6139306020830185613667565b61393d6040830184613667565b949350505050565b600060408201905061395a6000830185613667565b61396760208301846138ac565b9392505050565b60006060820190506139836000830186613667565b61399060208301856138ac565b61399d6040830184613667565b949350505050565b600060c0820190506139ba6000830189613667565b6139c760208301886138ac565b6139d460408301876136e3565b6139e160608301866136e3565b6139ee6080830185613667565b6139fb60a08301846138ac565b979650505050505050565b6000602082019050613a1b60008301846136d4565b92915050565b60006020820190508181036000830152613a3b81846136f2565b905092915050565b60006020820190508181036000830152613a5c8161372b565b9050919050565b60006020820190508181036000830152613a7c8161374e565b9050919050565b60006020820190508181036000830152613a9c81613771565b9050919050565b60006020820190508181036000830152613abc81613794565b9050919050565b60006020820190508181036000830152613adc816137b7565b9050919050565b60006020820190508181036000830152613afc816137da565b9050919050565b60006020820190508181036000830152613b1c816137fd565b9050919050565b60006020820190508181036000830152613b3c81613820565b9050919050565b60006020820190508181036000830152613b5c81613843565b9050919050565b60006020820190508181036000830152613b7c81613866565b9050919050565b60006020820190508181036000830152613b9c81613889565b9050919050565b6000602082019050613bb860008301846138ac565b92915050565b600060a082019050613bd360008301886138ac565b613be060208301876136e3565b8181036040830152613bf28186613676565b9050613c016060830185613667565b613c0e60808301846138ac565b9695505050505050565b6000602082019050613c2d60008301846138bb565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613c9382613ded565b9150613c9e83613ded565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613cd357613cd2613ec4565b5b828201905092915050565b6000613ce982613ded565b9150613cf483613ded565b925082613d0457613d03613ef3565b5b828204905092915050565b6000613d1a82613ded565b9150613d2583613ded565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d5e57613d5d613ec4565b5b828202905092915050565b6000613d7482613ded565b9150613d7f83613ded565b925082821015613d9257613d91613ec4565b5b828203905092915050565b6000613da882613dcd565b9050919050565b6000613dba82613dcd565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613e0f82613ded565b9050919050565b60005b83811015613e34578082015181840152602081019050613e19565b83811115613e43576000848401525b50505050565b60006002820490506001821680613e6157607f821691505b60208210811415613e7557613e74613f22565b5b50919050565b6000613e8682613ded565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613eb957613eb8613ec4565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4c697175696469747920616c72656164792061646465642e0000000000000000600082015250565b7f556e617574686f72697a65640000000000000000000000000000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f42656570204265657020426f6f702c20596f752772652061207069656365206f60008201527f6620706f6f700000000000000000000000000000000000000000000000000000602082015250565b61429b81613d9d565b81146142a657600080fd5b50565b6142b281613daf565b81146142bd57600080fd5b50565b6142c981613dc1565b81146142d457600080fd5b50565b6142e081613ded565b81146142eb57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122060ef483c47f6ea5e4bd6bf3267922c9af2ce1bdeda610fa86428c5a5431ccd6664736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101445760003560e01c80638da5cb5b116100b6578063d0040d701161006f578063d0040d701461048d578063dd62ed3e146104b6578063e8078d94146104f3578063f2fde38b1461050a578063f37c4bce14610533578063f9f92be41461055c5761014b565b80638da5cb5b1461036b57806395d89b411461039657806398d5a5cb146103c1578063a9059cbb146103ea578063ab9562fe14610427578063c7ab8d9d146104505761014b565b8063313ce56711610108578063313ce5671461024957806353477d291461027457806354486ac31461029d57806370a08231146102c857806385b12c7c146103055780638a13792e1461032e5761014b565b806306fdde0314610150578063095ea7b31461017b57806318160ddd146101b85780631c815b49146101e357806323b872dd1461020c5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610585565b6040516101729190613a21565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190613553565b610617565b6040516101af9190613a06565b60405180910390f35b3480156101c457600080fd5b506101cd610635565b6040516101da9190613ba3565b60405180910390f35b3480156101ef57600080fd5b5061020a60048036038101906102059190613480565b610645565b005b34801561021857600080fd5b50610233600480360381019061022e9190613500565b61074a565b6040516102409190613a06565b60405180910390f35b34801561025557600080fd5b5061025e610823565b60405161026b9190613c18565b60405180910390f35b34801561028057600080fd5b5061029b600480360381019061029691906133f9565b61083a565b005b3480156102a957600080fd5b506102b261092a565b6040516102bf9190613ba3565b60405180910390f35b3480156102d457600080fd5b506102ef60048036038101906102ea91906133f9565b610930565b6040516102fc9190613ba3565b60405180910390f35b34801561031157600080fd5b5061032c600480360381019061032791906135c0565b610979565b005b34801561033a57600080fd5b5061035560048036038101906103509190613453565b610a2a565b6040516103629190613ba3565b60405180910390f35b34801561037757600080fd5b50610380610b2d565b60405161038d91906138ca565b60405180910390f35b3480156103a257600080fd5b506103ab610b56565b6040516103b89190613a21565b60405180910390f35b3480156103cd57600080fd5b506103e860048036038101906103e391906133f9565b610be8565b005b3480156103f657600080fd5b50610411600480360381019061040c9190613553565b610cd8565b60405161041e9190613a06565b60405180910390f35b34801561043357600080fd5b5061044e60048036038101906104499190613480565b610cf6565b005b34801561045c57600080fd5b50610477600480360381019061047291906133f9565b610e32565b6040516104849190613a06565b60405180910390f35b34801561049957600080fd5b506104b460048036038101906104af91906133f9565b610e88565b005b3480156104c257600080fd5b506104dd60048036038101906104d891906134c0565b610f78565b6040516104ea9190613ba3565b60405180910390f35b3480156104ff57600080fd5b50610508610fff565b005b34801561051657600080fd5b50610531600480360381019061052c91906133f9565b6115dc565b005b34801561053f57600080fd5b5061055a600480360381019061055591906133f9565b61172e565b005b34801561056857600080fd5b50610583600480360381019061057e91906133f9565b6118e7565b005b6060600b805461059490613e49565b80601f01602080910402602001604051908101604052809291908181526020018280546105c090613e49565b801561060d5780601f106105e25761010080835404028352916020019161060d565b820191906000526020600020905b8154815290600101906020018083116105f057829003601f168201915b5050505050905090565b600061062b610624611ac9565b8484611ad1565b6001905092915050565b6000674563918244f40000905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610684611ac9565b73ffffffffffffffffffffffffffffffffffffffff16146106da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d190613b03565b60405180910390fd5b6106e48282611c9c565b6000811115610746576001601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b600061075784848461201f565b61081884610763611ac9565b610813856040518060600160405280602881526020016142ef60289139601660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107c9611ac9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ac9092919063ffffffff16565b611ad1565b600190509392505050565b6000600d60009054906101000a900460ff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610879611ac9565b73ffffffffffffffffffffffffffffffffffffffff16146108cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c690613b03565b60405180910390fd5b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60095481565b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109b8611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614610a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0590613b03565b60405180910390fd5b610a218142611a2190919063ffffffff16565b60188190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a6c611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab990613b03565b60405180910390fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060068181548110610b1a57610b19613f51565b5b9060005260206000200154915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600c8054610b6590613e49565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9190613e49565b8015610bde5780601f10610bb357610100808354040283529160200191610bde565b820191906000526020600020905b815481529060010190602001808311610bc157829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c27611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614610c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7490613b03565b60405180910390fd5b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610cec610ce5611ac9565b848461201f565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d35611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614610d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8290613b03565b60405180910390fd5b610db8600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611c9c565b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600481905550610e2e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454611c9c565b5050565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ec7611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614610f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1490613b03565b60405180910390fd5b6001601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661103e611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614611094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108b90613b03565b60405180910390fd5b601060009054906101000a900460ff16156110e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110db90613a63565b60405180910390fd5b60004790506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061117830600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16674563918244f40000611ad1565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156111be57600080fd5b505afa1580156111d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f69190613426565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561125857600080fd5b505afa15801561126c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112909190613426565b6040518363ffffffff1660e01b81526004016112ad9291906138e5565b602060405180830381600087803b1580156112c757600080fd5b505af11580156112db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ff9190613426565b600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719833061138830610930565b60008030426040518863ffffffff1660e01b81526004016113ae969594939291906139a5565b6060604051808303818588803b1580156113c757600080fd5b505af11580156113db573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061140091906135ed565b505050600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016114a2929190613945565b602060405180830381600087803b1580156114bc57600080fd5b505af11580156114d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f49190613593565b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d704363a600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661156c6276a70042611a2190919063ffffffff16565b336040518463ffffffff1660e01b815260040161158b9392919061396e565b600060405180830381600087803b1580156115a557600080fd5b505af11580156115b9573d6000803e3d6000fd5b505050506001601060006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661161b611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614611671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166890613b03565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561179857600080fd5b505af11580156117ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d09190613426565b73ffffffffffffffffffffffffffffffffffffffff166117ee611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614806118645750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661184c611ac9565b73ffffffffffffffffffffffffffffffffffffffff16145b6118a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189a90613a83565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611926611ac9565b73ffffffffffffffffffffffffffffffffffffffff161461197c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197390613b03565b60405180910390fd5b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000611a1983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612610565b905092915050565b6000808284611a309190613c88565b905083811015611a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6c90613ac3565b60405180910390fd5b8091505092915050565b6000611ac183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506125ac565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3890613b63565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba890613aa3565b60405180910390fd5b80601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c8f9190613ba3565b60405180910390a3505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611cdb611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614611d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2890613b03565b60405180910390fd5b600a60009054906101000a900460ff1615611dff57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611dfe57600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611ddd611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614611dfd57600080fd5b5b5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811415611f7057612904611e6483600954611a2190919063ffffffff16565b1115611e6f57600080fd5b60068290806001815401808255809150506001900390600052602060002001600090919091909150556007839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600680549050611f0d9190613d69565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f6582600954611a2190919063ffffffff16565b60098190555061201a565b600060068281548110611f8657611f85613f51565b5b90600052602060002001549050612904611fbd82611faf86600954611a2190919063ffffffff16565b611a7f90919063ffffffff16565b1115611fc857600080fd5b8260068381548110611fdd57611fdc613f51565b5b90600052602060002001819055506120128161200485600954611a2190919063ffffffff16565b611a7f90919063ffffffff16565b600981905550505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561208f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208690613b43565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f690613a43565b60405180910390fd5b60008111612142576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213990613b23565b60405180910390fd5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121e65750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561223c5750601360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61224557600080fd5b61224f8383612673565b801561225d57506018544210155b1561251a57601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42383600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b81526004016122e39392919061390e565b602060405180830381600087803b1580156122fd57600080fd5b505af1158015612311573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123359190613593565b15612375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236c90613b83565b60405180910390fd5b601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42384600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b81526004016123f69392919061390e565b602060405180830381600087803b15801561241057600080fd5b505af1158015612424573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124489190613593565b15612488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247f90613b83565b60405180910390fd5b601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155d0ed98484326040518463ffffffff1660e01b81526004016124e79392919061390e565b600060405180830381600087803b15801561250157600080fd5b505af1158015612515573d6000803e3d6000fd5b505050505b61252382612726565b1561253f57600f5461253483610930565b1061253e57600080fd5b5b600061254b84846127fd565b1561259a5760185442101561255f57600080fd5b61256984846128a9565b15612583576125766129b4565b82111561258257600080fd5b5b61258e848484612a05565b905061259984612b09565b5b6125a684848484612b3a565b50505050565b60008383111582906125f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125eb9190613a21565b60405180910390fd5b50600083856126039190613d69565b9050809150509392505050565b60008083118290612657576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264e9190613a21565b60405180910390fd5b50600083856126669190613cde565b9050809150509392505050565b6000600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061271e5750600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b6000600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156127d45750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127f657506127f2610e10601854611a2190919063ffffffff16565b4211155b9050919050565b6000601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128a05750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905092915050565b6000600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156129565750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129ac5750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b60006129cd611194601854611a2190919063ffffffff16565b42116129f6576129ef6064674563918244f400006119d790919063ffffffff16565b9050612a02565b674563918244f4000090505b90565b60008060009050601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612aad5750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612abb5780915050612b02565b612afb612aec612ac9612d7c565b612ade601a54876119d790919063ffffffff16565b612d8690919063ffffffff16565b82611a2190919063ffffffff16565b9050809150505b9392505050565b612b1281612e01565b15612b37576000612b2230610930565b9050612b2d81612e75565b612b356130fd565b505b50565b6000612b4f8284611a7f90919063ffffffff16565b9050612ba383601560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a7f90919063ffffffff16565b601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c3881601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a2190919063ffffffff16565b601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ccd82601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a2190919063ffffffff16565b601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d6d9190613ba3565b60405180910390a35050505050565b6000600954905090565b600080831415612d995760009050612dfb565b60008284612da79190613d0f565b9050828482612db69190613cde565b14612df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ded90613ae3565b60405180910390fd5b809150505b92915050565b6000601960009054906101000a900460ff16158015612e6e5750600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6001601960006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612ead57612eac613f80565b5b604051908082528060200260200182016040528015612edb5781602001602082028036833780820191505090505b5090503081600081518110612ef357612ef2613f51565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612f9557600080fd5b505afa158015612fa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fcd9190613426565b81600181518110612fe157612fe0613f51565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061304830600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ad1565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016130ac959493929190613bbe565b600060405180830381600087803b1580156130c657600080fd5b505af11580156130da573d6000803e3d6000fd5b50505050506000601960006101000a81548160ff02191690831515021790555050565b60004790506017548111613111575061315c565b600061312860175483611a7f90919063ffffffff16565b9050600061313461315e565b905060018110156131475750505061315c565b6131518282613188565b476017819055505050505b565b6000806000905061317f613170612d7c565b82611a2190919063ffffffff16565b90508091505090565b6000600190505b600680549050811015613376576000600682815481106131b2576131b1613f51565b5b906000526020600020015490506000600783815481106131d5576131d4613f51565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006132298561321b8589612d8690919063ffffffff16565b6119d790919063ffffffff16565b90506001811115613360578173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561327a573d6000803e3d6000fd5b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561335f57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6b55f25826040518263ffffffff1660e01b815260040161332c9190613ba3565b600060405180830381600087803b15801561334657600080fd5b505af115801561335a573d6000803e3d6000fd5b505050505b5b505050808061336e90613e7b565b91505061318f565b505050565b60008135905061338a81614292565b92915050565b60008151905061339f81614292565b92915050565b6000813590506133b4816142a9565b92915050565b6000815190506133c9816142c0565b92915050565b6000813590506133de816142d7565b92915050565b6000815190506133f3816142d7565b92915050565b60006020828403121561340f5761340e613faf565b5b600061341d8482850161337b565b91505092915050565b60006020828403121561343c5761343b613faf565b5b600061344a84828501613390565b91505092915050565b60006020828403121561346957613468613faf565b5b6000613477848285016133a5565b91505092915050565b6000806040838503121561349757613496613faf565b5b60006134a5858286016133a5565b92505060206134b6858286016133cf565b9150509250929050565b600080604083850312156134d7576134d6613faf565b5b60006134e58582860161337b565b92505060206134f68582860161337b565b9150509250929050565b60008060006060848603121561351957613518613faf565b5b60006135278682870161337b565b93505060206135388682870161337b565b9250506040613549868287016133cf565b9150509250925092565b6000806040838503121561356a57613569613faf565b5b60006135788582860161337b565b9250506020613589858286016133cf565b9150509250929050565b6000602082840312156135a9576135a8613faf565b5b60006135b7848285016133ba565b91505092915050565b6000602082840312156135d6576135d5613faf565b5b60006135e4848285016133cf565b91505092915050565b60008060006060848603121561360657613605613faf565b5b6000613614868287016133e4565b9350506020613625868287016133e4565b9250506040613636868287016133e4565b9150509250925092565b600061364c8383613658565b60208301905092915050565b61366181613d9d565b82525050565b61367081613d9d565b82525050565b600061368182613c43565b61368b8185613c66565b935061369683613c33565b8060005b838110156136c75781516136ae8882613640565b97506136b983613c59565b92505060018101905061369a565b5085935050505092915050565b6136dd81613dc1565b82525050565b6136ec81613e04565b82525050565b60006136fd82613c4e565b6137078185613c77565b9350613717818560208601613e16565b61372081613fb4565b840191505092915050565b6000613738602383613c77565b915061374382613fc5565b604082019050919050565b600061375b601883613c77565b915061376682614014565b602082019050919050565b600061377e600c83613c77565b91506137898261403d565b602082019050919050565b60006137a1602283613c77565b91506137ac82614066565b604082019050919050565b60006137c4601b83613c77565b91506137cf826140b5565b602082019050919050565b60006137e7602183613c77565b91506137f2826140de565b604082019050919050565b600061380a602083613c77565b91506138158261412d565b602082019050919050565b600061382d602983613c77565b915061383882614156565b604082019050919050565b6000613850602583613c77565b915061385b826141a5565b604082019050919050565b6000613873602483613c77565b915061387e826141f4565b604082019050919050565b6000613896602683613c77565b91506138a182614243565b604082019050919050565b6138b581613ded565b82525050565b6138c481613df7565b82525050565b60006020820190506138df6000830184613667565b92915050565b60006040820190506138fa6000830185613667565b6139076020830184613667565b9392505050565b60006060820190506139236000830186613667565b6139306020830185613667565b61393d6040830184613667565b949350505050565b600060408201905061395a6000830185613667565b61396760208301846138ac565b9392505050565b60006060820190506139836000830186613667565b61399060208301856138ac565b61399d6040830184613667565b949350505050565b600060c0820190506139ba6000830189613667565b6139c760208301886138ac565b6139d460408301876136e3565b6139e160608301866136e3565b6139ee6080830185613667565b6139fb60a08301846138ac565b979650505050505050565b6000602082019050613a1b60008301846136d4565b92915050565b60006020820190508181036000830152613a3b81846136f2565b905092915050565b60006020820190508181036000830152613a5c8161372b565b9050919050565b60006020820190508181036000830152613a7c8161374e565b9050919050565b60006020820190508181036000830152613a9c81613771565b9050919050565b60006020820190508181036000830152613abc81613794565b9050919050565b60006020820190508181036000830152613adc816137b7565b9050919050565b60006020820190508181036000830152613afc816137da565b9050919050565b60006020820190508181036000830152613b1c816137fd565b9050919050565b60006020820190508181036000830152613b3c81613820565b9050919050565b60006020820190508181036000830152613b5c81613843565b9050919050565b60006020820190508181036000830152613b7c81613866565b9050919050565b60006020820190508181036000830152613b9c81613889565b9050919050565b6000602082019050613bb860008301846138ac565b92915050565b600060a082019050613bd360008301886138ac565b613be060208301876136e3565b8181036040830152613bf28186613676565b9050613c016060830185613667565b613c0e60808301846138ac565b9695505050505050565b6000602082019050613c2d60008301846138bb565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613c9382613ded565b9150613c9e83613ded565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613cd357613cd2613ec4565b5b828201905092915050565b6000613ce982613ded565b9150613cf483613ded565b925082613d0457613d03613ef3565b5b828204905092915050565b6000613d1a82613ded565b9150613d2583613ded565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d5e57613d5d613ec4565b5b828202905092915050565b6000613d7482613ded565b9150613d7f83613ded565b925082821015613d9257613d91613ec4565b5b828203905092915050565b6000613da882613dcd565b9050919050565b6000613dba82613dcd565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613e0f82613ded565b9050919050565b60005b83811015613e34578082015181840152602081019050613e19565b83811115613e43576000848401525b50505050565b60006002820490506001821680613e6157607f821691505b60208210811415613e7557613e74613f22565b5b50919050565b6000613e8682613ded565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613eb957613eb8613ec4565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4c697175696469747920616c72656164792061646465642e0000000000000000600082015250565b7f556e617574686f72697a65640000000000000000000000000000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f42656570204265657020426f6f702c20596f752772652061207069656365206f60008201527f6620706f6f700000000000000000000000000000000000000000000000000000602082015250565b61429b81613d9d565b81146142a657600080fd5b50565b6142b281613daf565b81146142bd57600080fd5b50565b6142c981613dc1565b81146142d457600080fd5b50565b6142e081613ded565b81146142eb57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122060ef483c47f6ea5e4bd6bf3267922c9af2ce1bdeda610fa86428c5a5431ccd6664736f6c63430008070033

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.