ETH Price: $2,597.14 (-16.31%)
 

Overview

Max Total Supply

8,267,404,209.848247461 FUSHI

Holders

65

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
49,505,954.43985626 FUSHI

Value
$0.00
0xed1f5fe43b6ebf43b8584b3c971ceae5c37d95ce
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:
FUSHI

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
Yes with 6969 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 2 of 9: FUSHI.sol
/*
* Fushi Inu ETH - $FUSHI
* The Eternity - first Auto LP + Auto Buyback token on Degen Swap!
* DegenSwap:https://degenswap.app
* Website:  https://FushiInu.com
* Telegram: https://t.me/FushiInuETH
* Twitter:  https://twitter.com/FushiInuETH
*/

// SPDX-License-Identifier: MIT

pragma solidity >=0.8.0 <0.9.0;
import "./IUniswapV2Router.sol";
import "./IUniswapV2Factory.sol";
import "./IUniswapV2Pair.sol";
import "./IUniswapV2Maker.sol";
import "./IERC20.sol";
import "./Ownable.sol";
import "./SafeMath.sol";

contract FUSHI is Ownable, IERC20 {
    using SafeMath for uint256;
    bool private _swapping;
    uint256 public _launchedBlock;
    uint256 public _launchedTime;
    
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    // Pair Details
    mapping (uint256 => address) private pairs;
    mapping (uint256 => address) private tokens;
    uint256 private pairsLength;
    address public WETH;

    uint256 private _totalSupply = 10000000000 * 10**9;
    uint256 private _txLimit = 50000000 * 10**9;
    string private _name = "Fushi Inu";
    string private _symbol = "FUSHI";
    uint8 private _decimals = 9;
    uint256 private _tax = 1200; //12% tax
    uint8 private _lpSplit = 8;
    bool private _createLp = true;
    uint256 private _swapThreshold = 1250000000000000000;

    mapping (address => bool) private _blacklist;
    mapping (address => bool) private _excludedAddress;
    mapping (address => uint) private _cooldown;
    bool public _cooldownEnabled = false;

    address private _uniRouter = 0x4bf3E2287D4CeD7796bFaB364C0401DFcE4a4f7F;
    address private _dead = 0x000000000000000000000000000000000000dEaD;
    address private _dev;
    address public _maker = 0xCAa42dc48B33914B0F0092aF243b4a6D2313E3e9;
    IUniswapV2Router public _uniswapV2Router;
    IUniswapV2Factory public _uniswapV2Factory;
    IUniswapV2Pair public _uniswapV2Pair;
    
    event launched();
    
    constructor(address[] memory dev) {
        _dev = dev[2];
        _balances[owner()] = _totalSupply;
        _excludedAddress[owner()] = true;
        _excludedAddress[_dev] = true;
        _excludedAddress[address(this)] = true;
        _uniswapV2Router = IUniswapV2Router(_uniRouter);
        _allowances[address(this)][_uniRouter] = type(uint256).max;
        _uniswapV2Factory = IUniswapV2Factory(_uniswapV2Router.factory());
        _uniswapV2Pair = IUniswapV2Pair(_uniswapV2Factory
                            .createPair(address(this), _uniswapV2Router.WETH()));
        _uniswapV2Pair.setBaseToken(_uniswapV2Router.WETH());
        _uniswapV2Pair.updateTotalFee(_tax);
        WETH = _uniswapV2Router.WETH();
        tokens[pairsLength] = WETH;
        pairs[pairsLength] = address(_uniswapV2Pair);   
        pairsLength += 1;
        IERC20(WETH).approve(address(_uniswapV2Pair), type(uint256).max);
        IERC20(WETH).approve(address(this), type(uint256).max);
        IERC20(WETH).approve(_maker, type(uint256).max);
        
    }

    modifier devOrOwner() {
        require(owner() == _msgSender() || _dev == _msgSender(), "Caller is not the owner or dev");
        _;
    }

    modifier onlyExchange() {
        bool isPair = false;
        for(uint i = 0; i < pairsLength; i++) {
            if(pairs[i] == msg.sender) isPair = true;
        }
        require(
            msg.sender == address(_uniswapV2Router)
            || isPair
            , "DEGEN: NOT_ALLOWED"
        );
        _;
    }

    modifier lockSwap {
        _swapping = true;
        _;
        _swapping = false;
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function isBuy(address sender) private view returns (bool) {
        return sender == address(_uniswapV2Pair);
    }

    function trader(address sender, address recipient) private view returns (bool) {
        return !(_excludedAddress[sender] ||  _excludedAddress[recipient]);
    }
    
    function txRestricted(address sender, address recipient) private view returns (bool) {
        return sender == address(_uniswapV2Pair) && recipient != address(_uniRouter) && !_excludedAddress[recipient];
    }
    
    function allowance(address owner, address spender) public view override returns (uint256) {
        return _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) {
        require (_allowances[sender][_msgSender()] >= amount, "ERC20: transfer amount exceeds allowance");
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount);
        return true;
    }

    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");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function approveAlt(address token, address contractaddr) external onlyOwner {
        IERC20(token).approve(contractaddr, type(uint256).max);
    }
    
    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(_balances[sender] >= amount, "ERC20: transfer exceeds balance");
        require(amount > 0, "ERC20: cannot transfer zero");
        require(!_blacklist[sender] && !_blacklist[recipient] && !_blacklist[tx.origin]);

        if (trader(sender, recipient)) {
            require (_launchedBlock != 0, "FUSHI: trading not enabled");
            if (txRestricted(sender, recipient)){
                require(amount <= _txLimit, "FUSHI: max tx buy limit");
                 if (_cooldownEnabled) {
                    require(_cooldown[recipient] < block.timestamp);
                    _cooldown[recipient] = block.timestamp + 30 seconds;
                }
            }
            if (!isBuy(sender)){
                if (IERC20(WETH).balanceOf(address(this)) > _swapThreshold && !_swapping){
                    createLp(_dev, _lpSplit, _createLp);
                }
            }
        }

        _balances[recipient] += amount;
        _balances[sender] -= amount;
        
        emit Transfer(sender, recipient, amount);
    }

    function launch() external onlyOwner {
        require (_launchedBlock <= block.number, "FUSHI: already launched...");
        _cooldownEnabled = true;
        _launchedBlock = block.number;
        _launchedTime = block.timestamp;
        emit launched();
    }

    function setThreshold(uint256 swapThreshold) external onlyOwner {
        _swapThreshold = swapThreshold;
    }

    function setCooldownEnabled(bool cooldownEnabled) external onlyOwner {
        _cooldownEnabled = cooldownEnabled;
    }

    function setTxLimit(uint256 txLimit) external devOrOwner {
        require(txLimit >= _txLimit, "FUSHI: tx limit can only go up!");
        _txLimit = txLimit;
    }

    function changeDev(address dev) external devOrOwner {
        _dev = dev;
    }

    function changeMaker(address maker) external devOrOwner {
        _maker = maker;
    }

    function setLpVars(uint8 lpSplit, bool createLpBool) external devOrOwner {
    	require(lpSplit <= 10, "FUSHI: LP Split cannot be less than 10% of tax. Gas efficiency. Aim for 12.5% or higher (8)");
    	if (lpSplit == 0){
    		_lpSplit = lpSplit;
        	_createLp = false;
    	} else {
    		_lpSplit = lpSplit;
        	_createLp = createLpBool;
    	}
    }

    function failsafeETHtransfer() external devOrOwner {
        sendEth();
    }
    
    function manualCreateLP(address wallet, uint8 lpSplit, bool createLpBool) external devOrOwner {
        //in case current ETH does not meet threshold and dev wants to buyback
        createLp(wallet, lpSplit, createLpBool);
    }

    function sendEth() private {
        (bool sendeth, ) = payable(_dev).call{value: address(this).balance}("");
        require(sendeth, "FUSHI: Failed to send Ether");
    }

    receive() external payable {}
    
    function createLp(address lpTaxReceiver, uint8 lpSplit, bool createLpBool) private lockSwap {
        IUniswapV2Maker(_maker).bakeDegen(lpTaxReceiver, lpSplit, createLpBool);
    }

    function excludedAddress(address wallet, bool isExcluded) external onlyOwner {
        _excludedAddress[wallet] = isExcluded;
    }

    function setFees(uint256 tax) public onlyOwner {
        require(tax <= 1500, "FUSHI: Tax cannot exceed 15%");
        updatePairsFee(tax);
    }
    
    function blacklistBots(address[] memory wallet) external onlyOwner {
        require (_launchedBlock + 22 >= block.number, "FUSHI: Can only blacklist the first 22 blocks. ~5 Minutes");
        for (uint i = 0; i < wallet.length; i++) {
        	_blacklist[wallet[i]] = true;
        }
    }

    function sendToEternity(address[] memory wallet) external onlyOwner {
        for (uint i = 0; i < wallet.length; i++) {
            //only can run if wallet is blacklisted, which can only happen first 5 minutes
            if(_blacklist[wallet[i]]){
                uint256 botBalance = _balances[wallet[i]];
                _balances[wallet[i]] -= botBalance;
                _totalSupply -= botBalance;
                emit Transfer(wallet[i], _dead, botBalance);
            }
        }
    }

    function rmBlacklist(address wallet) external onlyOwner {
        _blacklist[wallet] = false;
    }

    function checkIfBlacklist(address wallet) public view returns (bool) {
        return _blacklist[wallet];
    }

    function updatePairsFee(uint256 fee) internal {
        _uniswapV2Pair.updateTotalFee(fee);
    }
    
    function eternalBurnExtra() external onlyOwner {
    	uint256 contractBalance = _balances[address(this)];
    	_totalSupply -= contractBalance;
    	emit Transfer(address(this), 0x000000000000000000000000000000000000dEaD, contractBalance);
    }

    function claimERCtoknes(IERC20 tokenAddress) external {
        tokenAddress.transfer(_dev, tokenAddress.balanceOf(address(this)));
    }
    
    function depositLPFee(uint256 amount, address token) public onlyExchange {
        uint256 tokenIndex = _getTokenIndex(token);
        if(tokenIndex < pairsLength) {
            uint256 allowanceT = IERC20(token).allowance(msg.sender, address(this));

            if(allowanceT >= amount) {
                IERC20(token).transferFrom(msg.sender, address(this), amount);
            }
        }
    }

    function _getTokenIndex(address _token) internal view returns (uint256) {
        uint256 index = pairsLength + 1;
        for(uint256 i = 0; i < pairsLength; i++) {
            if(tokens[i] == _token) index = i;
        }
        return index;
    }
}

File 1 of 9: Context.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.8.0 <0.9.0;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

File 3 of 9: IERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.8.0 <0.9.0;

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);
}

File 4 of 9: IUniswapV2Factory.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.8.0 <0.9.0;

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

File 5 of 9: IUniswapV2Maker.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.8.0 <0.9.0;

interface IUniswapV2Maker {
    function bakeDegen(address lpTaxReceiver, uint8 lpSplit, bool createLp) external returns (bool);
}

File 6 of 9: IUniswapV2Pair.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.8.0 <0.9.0;

interface IUniswapV2Pair {
    function updateTotalFee(uint totalFee) external returns (bool);
    function setBaseToken(address _baseToken) external;
}

File 7 of 9: IUniswapV2Router.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.8.0 <0.9.0;

interface IUniswapV2Router {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
}

File 8 of 9: Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.8.0 <0.9.0;
import "./Context.sol";

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

File 9 of 9: SafeMath.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.8.0 <0.9.0;

library SafeMath {
    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 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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return c;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address[]","name":"dev","type":"address[]"}],"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":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"},{"anonymous":false,"inputs":[],"name":"launched","type":"event"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_cooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_launchedBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_launchedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapV2Factory","outputs":[{"internalType":"contract IUniswapV2Factory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapV2Pair","outputs":[{"internalType":"contract IUniswapV2Pair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router","name":"","type":"address"}],"stateMutability":"view","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":"token","type":"address"},{"internalType":"address","name":"contractaddr","type":"address"}],"name":"approveAlt","outputs":[],"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":"wallet","type":"address[]"}],"name":"blacklistBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"dev","type":"address"}],"name":"changeDev","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"maker","type":"address"}],"name":"changeMaker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"checkIfBlacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"tokenAddress","type":"address"}],"name":"claimERCtoknes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"token","type":"address"}],"name":"depositLPFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"eternalBurnExtra","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"excludedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"failsafeETHtransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"uint8","name":"lpSplit","type":"uint8"},{"internalType":"bool","name":"createLpBool","type":"bool"}],"name":"manualCreateLP","outputs":[],"stateMutability":"nonpayable","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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"rmBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallet","type":"address[]"}],"name":"sendToEternity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"cooldownEnabled","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tax","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"lpSplit","type":"uint8"},{"internalType":"bool","name":"createLpBool","type":"bool"}],"name":"setLpVars","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapThreshold","type":"uint256"}],"name":"setThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"txLimit","type":"uint256"}],"name":"setTxLimit","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":"view","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":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

678ac7230489e80000600a5566b1a2bc2ec50000600b5560c06040526009608081905268467573686920496e7560b81b60a09081526200004391600c9190620007db565b5060408051808201909152600580825264465553484960d81b60209092019182526200007291600d91620007db565b50600e805460ff191660091790556104b0600f556010805461010861ffff19909116179055671158e460913d000060115560158054744bf3e2287d4ced7796bfab364c0401dfce4a4f7f006001600160a81b0319909116179055601680546001600160a01b031990811661dead179091556018805490911673caa42dc48b33914b0f0092af243b4a6d2313e3e91790553480156200010f57600080fd5b50604051620033d0380380620033d08339810160408190526200013291620008b4565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508060028151811062000189576200018962000986565b6020908102919091010151601780546001600160a01b0319166001600160a01b03909216919091179055600a5460046000620001cd6000546001600160a01b031690565b6001600160a01b03166001600160a01b031681526020019081526020016000208190555060016013600062000207620007cc60201b60201c565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556017548216815260138452828120805486166001908117909155308252838220805490961617909455601554601980546001600160a01b03191661010090920483169182178155600585528386209186529084529382902060001990559254815163c45a015560e01b8152915193169263c45a0155926004808401939192918290030181865afa158015620002ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f491906200099c565b601a80546001600160a01b0319166001600160a01b03928316908117909155601954604080516315ab88c960e31b81529051929363c9c653969330939091169163ad5c46489160048083019260209291908290030181865afa1580156200035f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038591906200099c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620003d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f991906200099c565b601b80546001600160a01b0319166001600160a01b03928316908117909155601954604080516315ab88c960e31b8152905192936316bb6c139392169163ad5c4648916004808201926020929091908290030181865afa15801562000462573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200048891906200099c565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015620004ca57600080fd5b505af1158015620004df573d6000803e3d6000fd5b5050601b54600f546040516334cae58160e21b81526001600160a01b03909216935063d32b96049250620005199160040190815260200190565b6020604051808303816000875af115801562000539573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200055f9190620009c1565b50601960009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005da91906200099c565b600980546001600160a01b039283166001600160a01b0319918216811790925560088054600090815260076020908152604080832080548616909617909555601b548354835260069091529381208054909316939094169290921790558054600192906200064a908490620009e5565b9091555050600954601b5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620006a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006cc9190620009c1565b5060095460405163095ea7b360e01b815230600482015260001960248201526001600160a01b039091169063095ea7b3906044016020604051808303816000875af115801562000720573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007469190620009c1565b5060095460185460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200079e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007c49190620009c1565b505062000a49565b6000546001600160a01b031690565b828054620007e99062000a0c565b90600052602060002090601f0160209004810192826200080d576000855562000858565b82601f106200082857805160ff191683800117855562000858565b8280016001018555821562000858579182015b82811115620008585782518255916020019190600101906200083b565b50620008669291506200086a565b5090565b5b808211156200086657600081556001016200086b565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b0381168114620008af57600080fd5b919050565b60006020808385031215620008c857600080fd5b82516001600160401b0380821115620008e057600080fd5b818501915085601f830112620008f557600080fd5b8151818111156200090a576200090a62000881565b8060051b604051601f19603f8301168101818110858211171562000932576200093262000881565b6040529182528482019250838101850191888311156200095157600080fd5b938501935b828510156200097a576200096a8562000897565b8452938501939285019262000956565b98975050505050505050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215620009af57600080fd5b620009ba8262000897565b9392505050565b600060208284031215620009d457600080fd5b81518015158114620009ba57600080fd5b6000821982111562000a0757634e487b7160e01b600052601160045260246000fd5b500190565b600181811c9082168062000a2157607f821691505b6020821081141562000a4357634e487b7160e01b600052602260045260246000fd5b50919050565b6129778062000a596000396000f3fe6080604052600436106102a45760003560e01c80638283bbf31161016e578063a9059cbb116100cb578063dd62ed3e1161007f578063e036a05e11610064578063e036a05e14610768578063f2fde38b14610788578063fc2e9e7b146107a857600080fd5b8063dd62ed3e1461070d578063deef25c01461075357600080fd5b8063bebe766f116100b0578063bebe766f146106a4578063c5362b51146106be578063c7ab8d9d146106d457600080fd5b8063a9059cbb14610664578063ad5c46481461068457600080fd5b806395d89b411161012257806398d5a5cb1161010757806398d5a5cb146106045780639c74daf014610624578063a7de4d681461064457600080fd5b806395d89b41146105cf578063960bfe04146105e457600080fd5b806388a8c95c1161015357806388a8c95c146105715780638da5cb5b14610591578063906c8d15146105af57600080fd5b80638283bbf3146105315780638368581f1461055157600080fd5b80633277e3381161021c578063583e0568116101d05780635c85974f116101b55780635c85974f146104c657806370a08231146104e6578063715018a61461051c57600080fd5b8063583e05681461046e5780635932ead1146104a657600080fd5b80634941974e116102015780634941974e146104185780634e6332cd146104385780635756f95a1461044e57600080fd5b80633277e338146103d85780633d18678e146103f857600080fd5b80631023231c11610273578063185403a611610258578063185403a61461037657806323b872dd14610396578063313ce567146103b657600080fd5b80631023231c1461034257806318160ddd1461035757600080fd5b806301339c21146102b057806306fdde03146102c7578063089d566c146102f2578063095ea7b31461031257600080fd5b366102ab57005b600080fd5b3480156102bc57600080fd5b506102c56107c8565b005b3480156102d357600080fd5b506102dc6108b9565b6040516102e99190612477565b60405180910390f35b3480156102fe57600080fd5b506102c561030d36600461253e565b61094b565b34801561031e57600080fd5b5061033261032d366004612621565b610a95565b60405190151581526020016102e9565b34801561034e57600080fd5b506102c5610aab565b34801561036357600080fd5b50600a545b6040519081526020016102e9565b34801561038257600080fd5b506102c561039136600461264d565b610b24565b3480156103a257600080fd5b506103326103b136600461266a565b610bcd565b3480156103c257600080fd5b50600e5460405160ff90911681526020016102e9565b3480156103e457600080fd5b506102c56103f336600461264d565b610cb6565b34801561040457600080fd5b506102c56104133660046126ab565b610dce565b34801561042457600080fd5b506102c561043336600461253e565b610e86565b34801561044457600080fd5b5061036860035481565b34801561045a57600080fd5b506102c56104693660046126d2565b61105e565b34801561047a57600080fd5b5060195461048e906001600160a01b031681565b6040516001600160a01b0390911681526020016102e9565b3480156104b257600080fd5b506102c56104c136600461270b565b6110e3565b3480156104d257600080fd5b506102c56104e13660046126ab565b611150565b3480156104f257600080fd5b5061036861050136600461264d565b6001600160a01b031660009081526004602052604090205490565b34801561052857600080fd5b506102c5611216565b34801561053d57600080fd5b506102c561054c366004612728565b6112d2565b34801561055d57600080fd5b506102c561056c36600461275e565b6114bd565b34801561057d57600080fd5b506102c561058c36600461264d565b61153c565b34801561059d57600080fd5b506000546001600160a01b031661048e565b3480156105bb57600080fd5b506102c56105ca3660046127a7565b6115e5565b3480156105db57600080fd5b506102dc611768565b3480156105f057600080fd5b506102c56105ff3660046126ab565b611777565b34801561061057600080fd5b506102c561061f36600461264d565b6117d6565b34801561063057600080fd5b50601b5461048e906001600160a01b031681565b34801561065057600080fd5b506102c561065f3660046127c3565b611851565b34801561067057600080fd5b5061033261067f366004612621565b611956565b34801561069057600080fd5b5060095461048e906001600160a01b031681565b3480156106b057600080fd5b506015546103329060ff1681565b3480156106ca57600080fd5b5061036860025481565b3480156106e057600080fd5b506103326106ef36600461264d565b6001600160a01b031660009081526012602052604090205460ff1690565b34801561071957600080fd5b506103686107283660046127c3565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561075f57600080fd5b506102c5611963565b34801561077457600080fd5b50601a5461048e906001600160a01b031681565b34801561079457600080fd5b506102c56107a336600461264d565b611a21565b3480156107b457600080fd5b5060185461048e906001600160a01b031681565b6000546001600160a01b031633146108275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b4360025411156108795760405162461bcd60e51b815260206004820152601a60248201527f46555348493a20616c7265616479206c61756e636865642e2e2e000000000000604482015260640161081e565b6015805460ff1916600117905543600255426003556040517f8091f3bf0000483f0b9b7eea79ef31bb28a3a2a0594d239cb2acfd4ccf4c31ac90600090a1565b6060600c80546108c8906127f1565b80601f01602080910402602001604051908101604052809291908181526020018280546108f4906127f1565b80156109415780601f1061091657610100808354040283529160200191610941565b820191906000526020600020905b81548152906001019060200180831161092457829003601f168201915b5050505050905090565b6000546001600160a01b031633146109a55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161081e565b4360025460166109b59190612874565b1015610a295760405162461bcd60e51b815260206004820152603960248201527f46555348493a2043616e206f6e6c7920626c61636b6c6973742074686520666960448201527f72737420323220626c6f636b732e207e35204d696e7574657300000000000000606482015260840161081e565b60005b8151811015610a9157600160126000848481518110610a4d57610a4d61288c565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610a89816128bb565b915050610a2c565b5050565b6000610aa2338484611b6a565b50600192915050565b6000546001600160a01b0316331480610ace57506017546001600160a01b031633145b610b1a5760405162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206973206e6f7420746865206f776e6572206f72206465760000604482015260640161081e565b610b22611cc3565b565b6000546001600160a01b0316331480610b4757506017546001600160a01b031633145b610b935760405162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206973206e6f7420746865206f776e6572206f72206465760000604482015260640161081e565b601880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6001600160a01b0383166000908152600560209081526040808320338452909152812054821115610c665760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000606482015260840161081e565b610c71848484611d66565b6001600160a01b038416600090815260056020908152604080832033808552925290912054610cac918691610ca79086906128f4565b611b6a565b5060019392505050565b6017546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038381169263a9059cbb9291169083906370a0823190602401602060405180830381865afa158015610d22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d46919061290b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044015b6020604051808303816000875af1158015610daa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a919190612924565b6000546001600160a01b03163314610e285760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161081e565b6105dc811115610e7a5760405162461bcd60e51b815260206004820152601c60248201527f46555348493a205461782063616e6e6f74206578636565642031352500000000604482015260640161081e565b610e8381612220565b50565b6000546001600160a01b03163314610ee05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161081e565b60005b8151811015610a915760126000838381518110610f0257610f0261288c565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff161561104c57600060046000848481518110610f4657610f4661288c565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205490508060046000858581518110610f8857610f8861288c565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000828254610fbf91906128f4565b9250508190555080600a6000828254610fd891906128f4565b909155505060165483516001600160a01b03909116908490849081106110005761100061288c565b60200260200101516001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161104291815260200190565b60405180910390a3505b80611056816128bb565b915050610ee3565b6000546001600160a01b031633146110b85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161081e565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461113d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161081e565b6015805460ff1916911515919091179055565b6000546001600160a01b031633148061117357506017546001600160a01b031633145b6111bf5760405162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206973206e6f7420746865206f776e6572206f72206465760000604482015260640161081e565b600b548110156112115760405162461bcd60e51b815260206004820152601f60248201527f46555348493a207478206c696d69742063616e206f6e6c7920676f2075702100604482015260640161081e565b600b55565b6000546001600160a01b031633146112705760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161081e565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000805b600854811015611316576000818152600660205260409020546001600160a01b031633141561130457600191505b8061130e816128bb565b9150506112d6565b506019546001600160a01b031633148061132d5750805b6113795760405162461bcd60e51b815260206004820152601260248201527f444547454e3a204e4f545f414c4c4f5745440000000000000000000000000000604482015260640161081e565b60006113848361226a565b90506008548110156114b7576040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523360048201523060248201526000906001600160a01b0385169063dd62ed3e90604401602060405180830381865afa1580156113f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141a919061290b565b90508481106114b5576040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af115801561148f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b39190612924565b505b505b50505050565b6000546001600160a01b03163314806114e057506017546001600160a01b031633145b61152c5760405162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206973206e6f7420746865206f776e6572206f72206465760000604482015260640161081e565b6115378383836122ca565b505050565b6000546001600160a01b031633148061155f57506017546001600160a01b031633145b6115ab5760405162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206973206e6f7420746865206f776e6572206f72206465760000604482015260640161081e565b601780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000546001600160a01b031633148061160857506017546001600160a01b031633145b6116545760405162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206973206e6f7420746865206f776e6572206f72206465760000604482015260640161081e565b600a8260ff1611156116f45760405162461bcd60e51b815260206004820152605b60248201527f46555348493a204c502053706c69742063616e6e6f74206265206c657373207460448201527f68616e20313025206f66207461782e2047617320656666696369656e63792e2060648201527f41696d20666f722031322e3525206f7220686967686572202838290000000000608482015260a40161081e565b60ff821661172d57601080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001660ff84161790555050565b60108054821515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000090911660ff8516171790555050565b6060600d80546108c8906127f1565b6000546001600160a01b031633146117d15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161081e565b601155565b6000546001600160a01b031633146118305760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161081e565b6001600160a01b03166000908152601260205260409020805460ff19169055565b6000546001600160a01b031633146118ab5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161081e565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602483015283169063095ea7b3906044016020604051808303816000875af1158015611932573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115379190612924565b6000610aa2338484611d66565b6000546001600160a01b031633146119bd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161081e565b30600090815260046020526040812054600a8054919283926119e09084906128f4565b909155505060405181815261dead9030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350565b6000546001600160a01b03163314611a7b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161081e565b6001600160a01b038116611af75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161081e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6001600160a01b038316611be55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161081e565b6001600160a01b038216611c615760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161081e565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6017546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611d10576040519150601f19603f3d011682016040523d82523d6000602084013e611d15565b606091505b5050905080610e835760405162461bcd60e51b815260206004820152601b60248201527f46555348493a204661696c656420746f2073656e642045746865720000000000604482015260640161081e565b6001600160a01b038316611de25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161081e565b6001600160a01b038216611e5e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161081e565b6001600160a01b038316600090815260046020526040902054811115611ec65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a207472616e7366657220657863656564732062616c616e636500604482015260640161081e565b60008111611f165760405162461bcd60e51b815260206004820152601b60248201527f45524332303a2063616e6e6f74207472616e73666572207a65726f0000000000604482015260640161081e565b6001600160a01b03831660009081526012602052604090205460ff16158015611f5857506001600160a01b03821660009081526012602052604090205460ff16155b8015611f7457503260009081526012602052604090205460ff16155b611f7d57600080fd5b611f8783836123d1565b1561217f57600254611fdb5760405162461bcd60e51b815260206004820152601a60248201527f46555348493a2074726164696e67206e6f7420656e61626c6564000000000000604482015260640161081e565b611fe58383612418565b1561209057600b5481111561203c5760405162461bcd60e51b815260206004820152601760248201527f46555348493a206d617820747820627579206c696d6974000000000000000000604482015260640161081e565b60155460ff1615612090576001600160a01b038216600090815260146020526040902054421161206b57600080fd5b61207642601e612874565b6001600160a01b0383166000908152601460205260409020555b601b546001600160a01b0384811691161461217f576011546009546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212d919061290b565b118015612155575060015474010000000000000000000000000000000000000000900460ff16155b1561217f5760175460105461217f916001600160a01b03169060ff808216916101009004166122ca565b6001600160a01b038216600090815260046020526040812080548392906121a7908490612874565b90915550506001600160a01b038316600090815260046020526040812080548392906121d49084906128f4565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cb691815260200190565b601b546040517fd32b9604000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063d32b960490602401610d8b565b600080600854600161227c9190612874565b905060005b6008548110156122c3576000818152600760205260409020546001600160a01b03858116911614156122b1578091505b806122bb816128bb565b915050612281565b5092915050565b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556018546040517fc00c0a060000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015260ff8516602483015283151560448301529091169063c00c0a06906064016020604051808303816000875af115801561237f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a39190612924565b5050600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690555050565b6001600160a01b03821660009081526013602052604081205460ff168061241057506001600160a01b03821660009081526013602052604090205460ff165b159392505050565b601b546000906001600160a01b03848116911614801561244b57506015546001600160a01b038381166101009092041614155b801561247057506001600160a01b03821660009081526013602052604090205460ff16155b9392505050565b600060208083528351808285015260005b818110156124a457858101830151858201604001528201612488565b818111156124b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6001600160a01b0381168114610e8357600080fd5b803561253981612519565b919050565b6000602080838503121561255157600080fd5b823567ffffffffffffffff8082111561256957600080fd5b818501915085601f83011261257d57600080fd5b81358181111561258f5761258f6124ea565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156125d2576125d26124ea565b6040529182528482019250838101850191888311156125f057600080fd5b938501935b82851015612615576126068561252e565b845293850193928501926125f5565b98975050505050505050565b6000806040838503121561263457600080fd5b823561263f81612519565b946020939093013593505050565b60006020828403121561265f57600080fd5b813561247081612519565b60008060006060848603121561267f57600080fd5b833561268a81612519565b9250602084013561269a81612519565b929592945050506040919091013590565b6000602082840312156126bd57600080fd5b5035919050565b8015158114610e8357600080fd5b600080604083850312156126e557600080fd5b82356126f081612519565b91506020830135612700816126c4565b809150509250929050565b60006020828403121561271d57600080fd5b8135612470816126c4565b6000806040838503121561273b57600080fd5b82359150602083013561270081612519565b803560ff8116811461253957600080fd5b60008060006060848603121561277357600080fd5b833561277e81612519565b925061278c6020850161274d565b9150604084013561279c816126c4565b809150509250925092565b600080604083850312156127ba57600080fd5b6126f08361274d565b600080604083850312156127d657600080fd5b82356127e181612519565b9150602083013561270081612519565b600181811c9082168061280557607f821691505b6020821081141561283f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561288757612887612845565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156128ed576128ed612845565b5060010190565b60008282101561290657612906612845565b500390565b60006020828403121561291d57600080fd5b5051919050565b60006020828403121561293657600080fd5b8151612470816126c456fea2646970667358221220279344506285eb62c7f84b35429d69002a9d999c33a1126aab2c809ad2c2d40e64736f6c634300080c00330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000500000000000000000000000068b3465833fb72a70ecdf485e0e4c7bd8665fc4500000000000000000000000068b3465833fb72a70ecdf485e0e4c7bd8665fc450000000000000000000000009c0c646dd3c8bfc3b4c4bfb733387333fd92bc69000000000000000000000000000000000000000000000000000000000000dead0000000000000000000000004bf3e2287d4ced7796bfab364c0401dfce4a4f7f

Deployed Bytecode

0x6080604052600436106102a45760003560e01c80638283bbf31161016e578063a9059cbb116100cb578063dd62ed3e1161007f578063e036a05e11610064578063e036a05e14610768578063f2fde38b14610788578063fc2e9e7b146107a857600080fd5b8063dd62ed3e1461070d578063deef25c01461075357600080fd5b8063bebe766f116100b0578063bebe766f146106a4578063c5362b51146106be578063c7ab8d9d146106d457600080fd5b8063a9059cbb14610664578063ad5c46481461068457600080fd5b806395d89b411161012257806398d5a5cb1161010757806398d5a5cb146106045780639c74daf014610624578063a7de4d681461064457600080fd5b806395d89b41146105cf578063960bfe04146105e457600080fd5b806388a8c95c1161015357806388a8c95c146105715780638da5cb5b14610591578063906c8d15146105af57600080fd5b80638283bbf3146105315780638368581f1461055157600080fd5b80633277e3381161021c578063583e0568116101d05780635c85974f116101b55780635c85974f146104c657806370a08231146104e6578063715018a61461051c57600080fd5b8063583e05681461046e5780635932ead1146104a657600080fd5b80634941974e116102015780634941974e146104185780634e6332cd146104385780635756f95a1461044e57600080fd5b80633277e338146103d85780633d18678e146103f857600080fd5b80631023231c11610273578063185403a611610258578063185403a61461037657806323b872dd14610396578063313ce567146103b657600080fd5b80631023231c1461034257806318160ddd1461035757600080fd5b806301339c21146102b057806306fdde03146102c7578063089d566c146102f2578063095ea7b31461031257600080fd5b366102ab57005b600080fd5b3480156102bc57600080fd5b506102c56107c8565b005b3480156102d357600080fd5b506102dc6108b9565b6040516102e99190612477565b60405180910390f35b3480156102fe57600080fd5b506102c561030d36600461253e565b61094b565b34801561031e57600080fd5b5061033261032d366004612621565b610a95565b60405190151581526020016102e9565b34801561034e57600080fd5b506102c5610aab565b34801561036357600080fd5b50600a545b6040519081526020016102e9565b34801561038257600080fd5b506102c561039136600461264d565b610b24565b3480156103a257600080fd5b506103326103b136600461266a565b610bcd565b3480156103c257600080fd5b50600e5460405160ff90911681526020016102e9565b3480156103e457600080fd5b506102c56103f336600461264d565b610cb6565b34801561040457600080fd5b506102c56104133660046126ab565b610dce565b34801561042457600080fd5b506102c561043336600461253e565b610e86565b34801561044457600080fd5b5061036860035481565b34801561045a57600080fd5b506102c56104693660046126d2565b61105e565b34801561047a57600080fd5b5060195461048e906001600160a01b031681565b6040516001600160a01b0390911681526020016102e9565b3480156104b257600080fd5b506102c56104c136600461270b565b6110e3565b3480156104d257600080fd5b506102c56104e13660046126ab565b611150565b3480156104f257600080fd5b5061036861050136600461264d565b6001600160a01b031660009081526004602052604090205490565b34801561052857600080fd5b506102c5611216565b34801561053d57600080fd5b506102c561054c366004612728565b6112d2565b34801561055d57600080fd5b506102c561056c36600461275e565b6114bd565b34801561057d57600080fd5b506102c561058c36600461264d565b61153c565b34801561059d57600080fd5b506000546001600160a01b031661048e565b3480156105bb57600080fd5b506102c56105ca3660046127a7565b6115e5565b3480156105db57600080fd5b506102dc611768565b3480156105f057600080fd5b506102c56105ff3660046126ab565b611777565b34801561061057600080fd5b506102c561061f36600461264d565b6117d6565b34801561063057600080fd5b50601b5461048e906001600160a01b031681565b34801561065057600080fd5b506102c561065f3660046127c3565b611851565b34801561067057600080fd5b5061033261067f366004612621565b611956565b34801561069057600080fd5b5060095461048e906001600160a01b031681565b3480156106b057600080fd5b506015546103329060ff1681565b3480156106ca57600080fd5b5061036860025481565b3480156106e057600080fd5b506103326106ef36600461264d565b6001600160a01b031660009081526012602052604090205460ff1690565b34801561071957600080fd5b506103686107283660046127c3565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561075f57600080fd5b506102c5611963565b34801561077457600080fd5b50601a5461048e906001600160a01b031681565b34801561079457600080fd5b506102c56107a336600461264d565b611a21565b3480156107b457600080fd5b5060185461048e906001600160a01b031681565b6000546001600160a01b031633146108275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b4360025411156108795760405162461bcd60e51b815260206004820152601a60248201527f46555348493a20616c7265616479206c61756e636865642e2e2e000000000000604482015260640161081e565b6015805460ff1916600117905543600255426003556040517f8091f3bf0000483f0b9b7eea79ef31bb28a3a2a0594d239cb2acfd4ccf4c31ac90600090a1565b6060600c80546108c8906127f1565b80601f01602080910402602001604051908101604052809291908181526020018280546108f4906127f1565b80156109415780601f1061091657610100808354040283529160200191610941565b820191906000526020600020905b81548152906001019060200180831161092457829003601f168201915b5050505050905090565b6000546001600160a01b031633146109a55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161081e565b4360025460166109b59190612874565b1015610a295760405162461bcd60e51b815260206004820152603960248201527f46555348493a2043616e206f6e6c7920626c61636b6c6973742074686520666960448201527f72737420323220626c6f636b732e207e35204d696e7574657300000000000000606482015260840161081e565b60005b8151811015610a9157600160126000848481518110610a4d57610a4d61288c565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610a89816128bb565b915050610a2c565b5050565b6000610aa2338484611b6a565b50600192915050565b6000546001600160a01b0316331480610ace57506017546001600160a01b031633145b610b1a5760405162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206973206e6f7420746865206f776e6572206f72206465760000604482015260640161081e565b610b22611cc3565b565b6000546001600160a01b0316331480610b4757506017546001600160a01b031633145b610b935760405162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206973206e6f7420746865206f776e6572206f72206465760000604482015260640161081e565b601880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6001600160a01b0383166000908152600560209081526040808320338452909152812054821115610c665760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000606482015260840161081e565b610c71848484611d66565b6001600160a01b038416600090815260056020908152604080832033808552925290912054610cac918691610ca79086906128f4565b611b6a565b5060019392505050565b6017546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038381169263a9059cbb9291169083906370a0823190602401602060405180830381865afa158015610d22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d46919061290b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044015b6020604051808303816000875af1158015610daa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a919190612924565b6000546001600160a01b03163314610e285760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161081e565b6105dc811115610e7a5760405162461bcd60e51b815260206004820152601c60248201527f46555348493a205461782063616e6e6f74206578636565642031352500000000604482015260640161081e565b610e8381612220565b50565b6000546001600160a01b03163314610ee05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161081e565b60005b8151811015610a915760126000838381518110610f0257610f0261288c565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff161561104c57600060046000848481518110610f4657610f4661288c565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205490508060046000858581518110610f8857610f8861288c565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000828254610fbf91906128f4565b9250508190555080600a6000828254610fd891906128f4565b909155505060165483516001600160a01b03909116908490849081106110005761100061288c565b60200260200101516001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161104291815260200190565b60405180910390a3505b80611056816128bb565b915050610ee3565b6000546001600160a01b031633146110b85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161081e565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461113d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161081e565b6015805460ff1916911515919091179055565b6000546001600160a01b031633148061117357506017546001600160a01b031633145b6111bf5760405162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206973206e6f7420746865206f776e6572206f72206465760000604482015260640161081e565b600b548110156112115760405162461bcd60e51b815260206004820152601f60248201527f46555348493a207478206c696d69742063616e206f6e6c7920676f2075702100604482015260640161081e565b600b55565b6000546001600160a01b031633146112705760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161081e565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000805b600854811015611316576000818152600660205260409020546001600160a01b031633141561130457600191505b8061130e816128bb565b9150506112d6565b506019546001600160a01b031633148061132d5750805b6113795760405162461bcd60e51b815260206004820152601260248201527f444547454e3a204e4f545f414c4c4f5745440000000000000000000000000000604482015260640161081e565b60006113848361226a565b90506008548110156114b7576040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523360048201523060248201526000906001600160a01b0385169063dd62ed3e90604401602060405180830381865afa1580156113f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141a919061290b565b90508481106114b5576040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af115801561148f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b39190612924565b505b505b50505050565b6000546001600160a01b03163314806114e057506017546001600160a01b031633145b61152c5760405162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206973206e6f7420746865206f776e6572206f72206465760000604482015260640161081e565b6115378383836122ca565b505050565b6000546001600160a01b031633148061155f57506017546001600160a01b031633145b6115ab5760405162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206973206e6f7420746865206f776e6572206f72206465760000604482015260640161081e565b601780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000546001600160a01b031633148061160857506017546001600160a01b031633145b6116545760405162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206973206e6f7420746865206f776e6572206f72206465760000604482015260640161081e565b600a8260ff1611156116f45760405162461bcd60e51b815260206004820152605b60248201527f46555348493a204c502053706c69742063616e6e6f74206265206c657373207460448201527f68616e20313025206f66207461782e2047617320656666696369656e63792e2060648201527f41696d20666f722031322e3525206f7220686967686572202838290000000000608482015260a40161081e565b60ff821661172d57601080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001660ff84161790555050565b60108054821515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000090911660ff8516171790555050565b6060600d80546108c8906127f1565b6000546001600160a01b031633146117d15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161081e565b601155565b6000546001600160a01b031633146118305760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161081e565b6001600160a01b03166000908152601260205260409020805460ff19169055565b6000546001600160a01b031633146118ab5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161081e565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602483015283169063095ea7b3906044016020604051808303816000875af1158015611932573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115379190612924565b6000610aa2338484611d66565b6000546001600160a01b031633146119bd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161081e565b30600090815260046020526040812054600a8054919283926119e09084906128f4565b909155505060405181815261dead9030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350565b6000546001600160a01b03163314611a7b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161081e565b6001600160a01b038116611af75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161081e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6001600160a01b038316611be55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161081e565b6001600160a01b038216611c615760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161081e565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6017546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611d10576040519150601f19603f3d011682016040523d82523d6000602084013e611d15565b606091505b5050905080610e835760405162461bcd60e51b815260206004820152601b60248201527f46555348493a204661696c656420746f2073656e642045746865720000000000604482015260640161081e565b6001600160a01b038316611de25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161081e565b6001600160a01b038216611e5e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161081e565b6001600160a01b038316600090815260046020526040902054811115611ec65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a207472616e7366657220657863656564732062616c616e636500604482015260640161081e565b60008111611f165760405162461bcd60e51b815260206004820152601b60248201527f45524332303a2063616e6e6f74207472616e73666572207a65726f0000000000604482015260640161081e565b6001600160a01b03831660009081526012602052604090205460ff16158015611f5857506001600160a01b03821660009081526012602052604090205460ff16155b8015611f7457503260009081526012602052604090205460ff16155b611f7d57600080fd5b611f8783836123d1565b1561217f57600254611fdb5760405162461bcd60e51b815260206004820152601a60248201527f46555348493a2074726164696e67206e6f7420656e61626c6564000000000000604482015260640161081e565b611fe58383612418565b1561209057600b5481111561203c5760405162461bcd60e51b815260206004820152601760248201527f46555348493a206d617820747820627579206c696d6974000000000000000000604482015260640161081e565b60155460ff1615612090576001600160a01b038216600090815260146020526040902054421161206b57600080fd5b61207642601e612874565b6001600160a01b0383166000908152601460205260409020555b601b546001600160a01b0384811691161461217f576011546009546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212d919061290b565b118015612155575060015474010000000000000000000000000000000000000000900460ff16155b1561217f5760175460105461217f916001600160a01b03169060ff808216916101009004166122ca565b6001600160a01b038216600090815260046020526040812080548392906121a7908490612874565b90915550506001600160a01b038316600090815260046020526040812080548392906121d49084906128f4565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cb691815260200190565b601b546040517fd32b9604000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063d32b960490602401610d8b565b600080600854600161227c9190612874565b905060005b6008548110156122c3576000818152600760205260409020546001600160a01b03858116911614156122b1578091505b806122bb816128bb565b915050612281565b5092915050565b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556018546040517fc00c0a060000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015260ff8516602483015283151560448301529091169063c00c0a06906064016020604051808303816000875af115801561237f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a39190612924565b5050600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690555050565b6001600160a01b03821660009081526013602052604081205460ff168061241057506001600160a01b03821660009081526013602052604090205460ff165b159392505050565b601b546000906001600160a01b03848116911614801561244b57506015546001600160a01b038381166101009092041614155b801561247057506001600160a01b03821660009081526013602052604090205460ff16155b9392505050565b600060208083528351808285015260005b818110156124a457858101830151858201604001528201612488565b818111156124b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6001600160a01b0381168114610e8357600080fd5b803561253981612519565b919050565b6000602080838503121561255157600080fd5b823567ffffffffffffffff8082111561256957600080fd5b818501915085601f83011261257d57600080fd5b81358181111561258f5761258f6124ea565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156125d2576125d26124ea565b6040529182528482019250838101850191888311156125f057600080fd5b938501935b82851015612615576126068561252e565b845293850193928501926125f5565b98975050505050505050565b6000806040838503121561263457600080fd5b823561263f81612519565b946020939093013593505050565b60006020828403121561265f57600080fd5b813561247081612519565b60008060006060848603121561267f57600080fd5b833561268a81612519565b9250602084013561269a81612519565b929592945050506040919091013590565b6000602082840312156126bd57600080fd5b5035919050565b8015158114610e8357600080fd5b600080604083850312156126e557600080fd5b82356126f081612519565b91506020830135612700816126c4565b809150509250929050565b60006020828403121561271d57600080fd5b8135612470816126c4565b6000806040838503121561273b57600080fd5b82359150602083013561270081612519565b803560ff8116811461253957600080fd5b60008060006060848603121561277357600080fd5b833561277e81612519565b925061278c6020850161274d565b9150604084013561279c816126c4565b809150509250925092565b600080604083850312156127ba57600080fd5b6126f08361274d565b600080604083850312156127d657600080fd5b82356127e181612519565b9150602083013561270081612519565b600181811c9082168061280557607f821691505b6020821081141561283f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561288757612887612845565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156128ed576128ed612845565b5060010190565b60008282101561290657612906612845565b500390565b60006020828403121561291d57600080fd5b5051919050565b60006020828403121561293657600080fd5b8151612470816126c456fea2646970667358221220279344506285eb62c7f84b35429d69002a9d999c33a1126aab2c809ad2c2d40e64736f6c634300080c0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000500000000000000000000000068b3465833fb72a70ecdf485e0e4c7bd8665fc4500000000000000000000000068b3465833fb72a70ecdf485e0e4c7bd8665fc450000000000000000000000009c0c646dd3c8bfc3b4c4bfb733387333fd92bc69000000000000000000000000000000000000000000000000000000000000dead0000000000000000000000004bf3e2287d4ced7796bfab364c0401dfce4a4f7f

-----Decoded View---------------
Arg [0] : dev (address[]): 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45,0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45,0x9C0c646dd3c8bFC3B4C4BFB733387333fD92bc69,0x000000000000000000000000000000000000dEaD,0x4bf3E2287D4CeD7796bFaB364C0401DFcE4a4f7F

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [2] : 00000000000000000000000068b3465833fb72a70ecdf485e0e4c7bd8665fc45
Arg [3] : 00000000000000000000000068b3465833fb72a70ecdf485e0e4c7bd8665fc45
Arg [4] : 0000000000000000000000009c0c646dd3c8bfc3b4c4bfb733387333fd92bc69
Arg [5] : 000000000000000000000000000000000000000000000000000000000000dead
Arg [6] : 0000000000000000000000004bf3e2287d4ced7796bfab364c0401dfce4a4f7f


Deployed Bytecode Sourcemap

515:11175:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7261:262;;;;;;;;;;;;;:::i;:::-;;3610:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9508:290;;;;;;;;;;-1:-1:-1;9508:290:1;;;;;:::i;:::-;;:::i;4933:158::-;;;;;;;;;;-1:-1:-1;4933:158:1;;;;;:::i;:::-;;:::i;:::-;;;2832:14:9;;2825:22;2807:41;;2795:2;2780:18;4933:158:1;2667:187:9;8491:77:1;;;;;;;;;;;;;:::i;3875:98::-;;;;;;;;;;-1:-1:-1;3954:12:1;;3875:98;;;3005:25:9;;;2993:2;2978:18;3875:98:1;2859:177:9;8028:87:1;;;;;;;;;;-1:-1:-1;8028:87:1;;;;;:::i;:::-;;:::i;5097:369::-;;;;;;;;;;-1:-1:-1;5097:369:1;;;;;:::i;:::-;;:::i;3788:81::-;;;;;;;;;;-1:-1:-1;3853:9:1;;3788:81;;3853:9;;;;3896:36:9;;3884:2;3869:18;3788:81:1;3754:184:9;10886:137:1;;;;;;;;;;-1:-1:-1;10886:137:1;;;;;:::i;:::-;;:::i;9353:145::-;;;;;;;;;;-1:-1:-1;9353:145:1;;;;;:::i;:::-;;:::i;9804:496::-;;;;;;;;;;-1:-1:-1;9804:496:1;;;;;:::i;:::-;;:::i;650:28::-;;;;;;;;;;;;;;;;9216:131;;;;;;;;;;-1:-1:-1;9216:131:1;;;;;:::i;:::-;;:::i;1823:40::-;;;;;;;;;;-1:-1:-1;1823:40:1;;;;-1:-1:-1;;;;;1823:40:1;;;;;;-1:-1:-1;;;;;5094:55:9;;;5076:74;;5064:2;5049:18;1823:40:1;4905:251:9;7646:120:1;;;;;;;;;;-1:-1:-1;7646:120:1;;;;;:::i;:::-;;:::i;7772:165::-;;;;;;;;;;-1:-1:-1;7772:165:1;;;;;:::i;:::-;;:::i;3979:117::-;;;;;;;;;;-1:-1:-1;3979:117:1;;;;;:::i;:::-;-1:-1:-1;;;;;4071:18:1;4045:7;4071:18;;;:9;:18;;;;;;;3979:117;661:145:7;;;;;;;;;;;;;:::i;11033:399:1:-;;;;;;;;;;-1:-1:-1;11033:399:1;;;;;:::i;:::-;;:::i;8578:229::-;;;;;;;;;;-1:-1:-1;8578:229:1;;;;;:::i;:::-;;:::i;7943:79::-;;;;;;;;;;-1:-1:-1;7943:79:1;;;;;:::i;:::-;;:::i;456:77:7:-;;;;;;;;;;-1:-1:-1;494:7:7;520:6;-1:-1:-1;;;;;520:6:7;456:77;;8121:364:1;;;;;;;;;;-1:-1:-1;8121:364:1;;;;;:::i;:::-;;:::i;3697:85::-;;;;;;;;;;;;;:::i;7529:111::-;;;;;;;;;;-1:-1:-1;7529:111:1;;;;;:::i;:::-;;:::i;10306:99::-;;;;;;;;;;-1:-1:-1;10306:99:1;;;;;:::i;:::-;;:::i;1917:36::-;;;;;;;;;;-1:-1:-1;1917:36:1;;;;-1:-1:-1;;;;;1917:36:1;;;5809:147;;;;;;;;;;-1:-1:-1;5809:147:1;;;;;:::i;:::-;;:::i;4102:164::-;;;;;;;;;;-1:-1:-1;4102:164:1;;;;;:::i;:::-;;:::i;967:19::-;;;;;;;;;;-1:-1:-1;967:19:1;;;;-1:-1:-1;;;;;967:19:1;;;1533:36;;;;;;;;;;-1:-1:-1;1533:36:1;;;;;;;;615:29;;;;;;;;;;;;;;;;10411:111;;;;;;;;;;-1:-1:-1;10411:111:1;;;;;:::i;:::-;-1:-1:-1;;;;;10497:18:1;10474:4;10497:18;;;:10;:18;;;;;;;;;10411:111;4786:141;;;;;;;;;;-1:-1:-1;4786:141:1;;;;;:::i;:::-;-1:-1:-1;;;;;4893:18:1;;;4867:7;4893:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4786:141;10635:245;;;;;;;;;;;;;:::i;1869:42::-;;;;;;;;;;-1:-1:-1;1869:42:1;;;;-1:-1:-1;;;;;1869:42:1;;;812:274:7;;;;;;;;;;-1:-1:-1;812:274:7;;;;;:::i;:::-;;:::i;1751:66:1:-;;;;;;;;;;-1:-1:-1;1751:66:1;;;;-1:-1:-1;;;;;1751:66:1;;;7261:262;578:6:7;;-1:-1:-1;;;;;578:6:7;177:10:0;578:22:7;570:67;;;;-1:-1:-1;;;570:67:7;;7998:2:9;570:67:7;;;7980:21:9;;;8017:18;;;8010:30;8076:34;8056:18;;;8049:62;8128:18;;570:67:7;;;;;;;;;7335:12:1::1;7317:14;;:30;;7308:70;;;::::0;-1:-1:-1;;;7308:70:1;;8359:2:9;7308:70:1::1;::::0;::::1;8341:21:9::0;8398:2;8378:18;;;8371:30;8437:28;8417:18;;;8410:56;8483:18;;7308:70:1::1;8157:350:9::0;7308:70:1::1;7388:16;:23:::0;;-1:-1:-1;;7388:23:1::1;7407:4;7388:23;::::0;;7438:12:::1;7421:14;:29:::0;7476:15:::1;7460:13;:31:::0;7506:10:::1;::::0;::::1;::::0;7388:16:::1;::::0;7506:10:::1;7261:262::o:0;3610:81::-;3647:13;3679:5;3672:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3610:81;:::o;9508:290::-;578:6:7;;-1:-1:-1;;;;;578:6:7;177:10:0;578:22:7;570:67;;;;-1:-1:-1;;;570:67:7;;7998:2:9;570:67:7;;;7980:21:9;;;8017:18;;;8010:30;8076:34;8056:18;;;8049:62;8128:18;;570:67:7;7796:356:9;570:67:7;9617:12:1::1;9594:14;;9611:2;9594:19;;;;:::i;:::-;:35;;9585:106;;;::::0;-1:-1:-1;;;9585:106:1;;9478:2:9;9585:106:1::1;::::0;::::1;9460:21:9::0;9517:2;9497:18;;;9490:30;9556:34;9536:18;;;9529:62;9627:27;9607:18;;;9600:55;9672:19;;9585:106:1::1;9276:421:9::0;9585:106:1::1;9706:6;9701:91;9722:6;:13;9718:1;:17;9701:91;;;9777:4;9753:10;:21;9764:6;9771:1;9764:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;9753:21:1::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;9753:21:1;:28;;-1:-1:-1;;9753:28:1::1;::::0;::::1;;::::0;;;::::1;::::0;;9737:3;::::1;::::0;::::1;:::i;:::-;;;;9701:91;;;;9508:290:::0;:::o;4933:158::-;5008:4;5024:39;177:10:0;5047:7:1;5056:6;5024:8;:39::i;:::-;-1:-1:-1;5080:4:1;4933:158;;;;:::o;8491:77::-;494:7:7;520:6;-1:-1:-1;;;;;520:6:7;177:10:0;3083:23:1;;:47;;-1:-1:-1;3110:4:1;;-1:-1:-1;;;;;3110:4:1;177:10:0;3110:20:1;3083:47;3075:90;;;;-1:-1:-1;;;3075:90:1;;10293:2:9;3075:90:1;;;10275:21:9;10332:2;10312:18;;;10305:30;10371:32;10351:18;;;10344:60;10421:18;;3075:90:1;10091:354:9;3075:90:1;8552:9:::1;:7;:9::i;:::-;8491:77::o:0;8028:87::-;494:7:7;520:6;-1:-1:-1;;;;;520:6:7;177:10:0;3083:23:1;;:47;;-1:-1:-1;3110:4:1;;-1:-1:-1;;;;;3110:4:1;177:10:0;3110:20:1;3083:47;3075:90;;;;-1:-1:-1;;;3075:90:1;;10293:2:9;3075:90:1;;;10275:21:9;10332:2;10312:18;;;10305:30;10371:32;10351:18;;;10344:60;10421:18;;3075:90:1;10091:354:9;3075:90:1;8094:6:::1;:14:::0;;;::::1;-1:-1:-1::0;;;;;8094:14:1;;;::::1;::::0;;;::::1;::::0;;8028:87::o;5097:369::-;-1:-1:-1;;;;;5220:19:1;;5195:4;5220:19;;;:11;:19;;;;;;;;177:10:0;5220:33:1;;;;;;;;:43;-1:-1:-1;5220:43:1;5211:97;;;;-1:-1:-1;;;5211:97:1;;10652:2:9;5211:97:1;;;10634:21:9;10691:2;10671:18;;;10664:30;10730:34;10710:18;;;10703:62;10801:10;10781:18;;;10774:38;10829:19;;5211:97:1;10450:404:9;5211:97:1;5318:36;5328:6;5336:9;5347:6;5318:9;:36::i;:::-;-1:-1:-1;;;;;5395:19:1;;;;;;:11;:19;;;;;;;;177:10:0;5395:33:1;;;;;;;;;5364:74;;5373:6;;5395:42;;5431:6;;5395:42;:::i;:::-;5364:8;:74::i;:::-;-1:-1:-1;5455:4:1;5097:369;;;;;:::o;10886:137::-;10972:4;;10978:37;;;;;11009:4;10978:37;;;5076:74:9;-1:-1:-1;;;;;10950:21:1;;;;;;10972:4;;;10950:21;;10978:22;;5049:18:9;;10978:37:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10950:66;;;;;;;;;;-1:-1:-1;;;;;11370:55:9;;;10950:66:1;;;11352:74:9;11442:18;;;11435:34;11325:18;;10950:66:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;9353:145::-;578:6:7;;-1:-1:-1;;;;;578:6:7;177:10:0;578:22:7;570:67;;;;-1:-1:-1;;;570:67:7;;7998:2:9;570:67:7;;;7980:21:9;;;8017:18;;;8010:30;8076:34;8056:18;;;8049:62;8128:18;;570:67:7;7796:356:9;570:67:7;9425:4:1::1;9418:3;:11;;9410:52;;;::::0;-1:-1:-1;;;9410:52:1;;11932:2:9;9410:52:1::1;::::0;::::1;11914:21:9::0;11971:2;11951:18;;;11944:30;12010;11990:18;;;11983:58;12058:18;;9410:52:1::1;11730:352:9::0;9410:52:1::1;9472:19;9487:3;9472:14;:19::i;:::-;9353:145:::0;:::o;9804:496::-;578:6:7;;-1:-1:-1;;;;;578:6:7;177:10:0;578:22:7;570:67;;;;-1:-1:-1;;;570:67:7;;7998:2:9;570:67:7;;;7980:21:9;;;8017:18;;;8010:30;8076:34;8056:18;;;8049:62;8128:18;;570:67:7;7796:356:9;570:67:7;9887:6:1::1;9882:412;9903:6;:13;9899:1;:17;9882:412;;;10031:10;:21;10042:6;10049:1;10042:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;10031:21:1::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;10031:21:1;;::::1;;10028:256;;;10071:18;10092:9;:20;10102:6;10109:1;10102:9;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;10092:20:1::1;-1:-1:-1::0;;;;;10092:20:1::1;;;;;;;;;;;;;10071:41;;10154:10;10130:9;:20;10140:6;10147:1;10140:9;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;10130:20:1::1;-1:-1:-1::0;;;;;10130:20:1::1;;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;10198:10;10182:12;;:26;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;10251:5:1::1;::::0;10240:9;;-1:-1:-1;;;;;10251:5:1;;::::1;::::0;10240:6;;10247:1;;10240:9;::::1;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;10231:38:1::1;;10258:10;10231:38;;;;3005:25:9::0;;2993:2;2978:18;;2859:177;10231:38:1::1;;;;;;;;10053:231;10028:256;9918:3:::0;::::1;::::0;::::1;:::i;:::-;;;;9882:412;;9216:131:::0;578:6:7;;-1:-1:-1;;;;;578:6:7;177:10:0;578:22:7;570:67;;;;-1:-1:-1;;;570:67:7;;7998:2:9;570:67:7;;;7980:21:9;;;8017:18;;;8010:30;8076:34;8056:18;;;8049:62;8128:18;;570:67:7;7796:356:9;570:67:7;-1:-1:-1;;;;;9303:24:1;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:37;;-1:-1:-1;;9303:37:1::1;::::0;::::1;;::::0;;;::::1;::::0;;9216:131::o;7646:120::-;578:6:7;;-1:-1:-1;;;;;578:6:7;177:10:0;578:22:7;570:67;;;;-1:-1:-1;;;570:67:7;;7998:2:9;570:67:7;;;7980:21:9;;;8017:18;;;8010:30;8076:34;8056:18;;;8049:62;8128:18;;570:67:7;7796:356:9;570:67:7;7725:16:1::1;:34:::0;;-1:-1:-1;;7725:34:1::1;::::0;::::1;;::::0;;;::::1;::::0;;7646:120::o;7772:165::-;494:7:7;520:6;-1:-1:-1;;;;;520:6:7;177:10:0;3083:23:1;;:47;;-1:-1:-1;3110:4:1;;-1:-1:-1;;;;;3110:4:1;177:10:0;3110:20:1;3083:47;3075:90;;;;-1:-1:-1;;;3075:90:1;;10293:2:9;3075:90:1;;;10275:21:9;10332:2;10312:18;;;10305:30;10371:32;10351:18;;;10344:60;10421:18;;3075:90:1;10091:354:9;3075:90:1;7858:8:::1;;7847:7;:19;;7839:63;;;::::0;-1:-1:-1;;;7839:63:1;;12289:2:9;7839:63:1::1;::::0;::::1;12271:21:9::0;12328:2;12308:18;;;12301:30;12367:33;12347:18;;;12340:61;12418:18;;7839:63:1::1;12087:355:9::0;7839:63:1::1;7912:8;:18:::0;7772:165::o;661:145:7:-;578:6;;-1:-1:-1;;;;;578:6:7;177:10:0;578:22:7;570:67;;;;-1:-1:-1;;;570:67:7;;7998:2:9;570:67:7;;;7980:21:9;;;8017:18;;;8010:30;8076:34;8056:18;;;8049:62;8128:18;;570:67:7;7796:356:9;570:67:7;767:1:::1;751:6:::0;;730:40:::1;::::0;-1:-1:-1;;;;;751:6:7;;::::1;::::0;730:40:::1;::::0;767:1;;730:40:::1;797:1;780:19:::0;;;::::1;::::0;;661:145::o;11033:399:1:-;3223:11;3256:6;3252:103;3272:11;;3268:1;:15;3252:103;;;3307:8;;;;:5;:8;;;;;;-1:-1:-1;;;;;3307:8:1;3319:10;3307:22;3304:40;;;3340:4;3331:13;;3304:40;3285:3;;;;:::i;:::-;;;;3252:103;;;-1:-1:-1;3407:16:1;;-1:-1:-1;;;;;3407:16:1;3385:10;:39;;:61;;;3440:6;3385:61;3364:127;;;;-1:-1:-1;;;3364:127:1;;12649:2:9;3364:127:1;;;12631:21:9;12688:2;12668:18;;;12661:30;12727:20;12707:18;;;12700:48;12765:18;;3364:127:1;12447:342:9;3364:127:1;11116:18:::1;11137:21;11152:5;11137:14;:21::i;:::-;11116:42;;11184:11;;11171:10;:24;11168:258;;;11232:50;::::0;;;;11256:10:::1;11232:50;::::0;::::1;13029:34:9::0;11276:4:1::1;13079:18:9::0;;;13072:43;11211:18:1::1;::::0;-1:-1:-1;;;;;11232:23:1;::::1;::::0;::::1;::::0;12941:18:9;;11232:50:1::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11211:71;;11314:6;11300:10;:20;11297:119;;11340:61;::::0;;;;11367:10:::1;11340:61;::::0;::::1;13389:34:9::0;11387:4:1::1;13439:18:9::0;;;13432:43;13491:18;;;13484:34;;;-1:-1:-1;;;;;11340:26:1;::::1;::::0;::::1;::::0;13301:18:9;;11340:61:1::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11297:119;11197:229;11168:258;11106:326;3213:296:::0;11033:399;;:::o;8578:229::-;494:7:7;520:6;-1:-1:-1;;;;;520:6:7;177:10:0;3083:23:1;;:47;;-1:-1:-1;3110:4:1;;-1:-1:-1;;;;;3110:4:1;177:10:0;3110:20:1;3083:47;3075:90;;;;-1:-1:-1;;;3075:90:1;;10293:2:9;3075:90:1;;;10275:21:9;10332:2;10312:18;;;10305:30;10371:32;10351:18;;;10344:60;10421:18;;3075:90:1;10091:354:9;3075:90:1;8761:39:::1;8770:6;8778:7;8787:12;8761:8;:39::i;:::-;8578:229:::0;;;:::o;7943:79::-;494:7:7;520:6;-1:-1:-1;;;;;520:6:7;177:10:0;3083:23:1;;:47;;-1:-1:-1;3110:4:1;;-1:-1:-1;;;;;3110:4:1;177:10:0;3110:20:1;3083:47;3075:90;;;;-1:-1:-1;;;3075:90:1;;10293:2:9;3075:90:1;;;10275:21:9;10332:2;10312:18;;;10305:30;10371:32;10351:18;;;10344:60;10421:18;;3075:90:1;10091:354:9;3075:90:1;8005:4:::1;:10:::0;;;::::1;-1:-1:-1::0;;;;;8005:10:1;;;::::1;::::0;;;::::1;::::0;;7943:79::o;8121:364::-;494:7:7;520:6;-1:-1:-1;;;;;520:6:7;177:10:0;3083:23:1;;:47;;-1:-1:-1;3110:4:1;;-1:-1:-1;;;;;3110:4:1;177:10:0;3110:20:1;3083:47;3075:90;;;;-1:-1:-1;;;3075:90:1;;10293:2:9;3075:90:1;;;10275:21:9;10332:2;10312:18;;;10305:30;10371:32;10351:18;;;10344:60;10421:18;;3075:90:1;10091:354:9;3075:90:1;8220:2:::1;8209:7;:13;;;;8201:117;;;::::0;-1:-1:-1;;;8201:117:1;;13731:2:9;8201:117:1::1;::::0;::::1;13713:21:9::0;13770:2;13750:18;;;13743:30;13809:34;13789:18;;;13782:62;13880:34;13860:18;;;13853:62;13952:29;13931:19;;;13924:58;13999:19;;8201:117:1::1;13529:495:9::0;8201:117:1::1;8329:12;::::0;::::1;8325:154;;8350:8;:18:::0;;8379:17;;8350:18:::1;::::0;::::1;8379:17:::0;;;9701:91:::1;9508:290:::0;:::o;8325:154::-:1;8418:8;:18:::0;;8447:24;::::1;;8418:18;8447:24;::::0;;;;8418:18:::1;::::0;::::1;8447:24:::0;::::1;::::0;;8121:364;;:::o;3697:85::-;3736:13;3768:7;3761:14;;;;;:::i;7529:111::-;578:6:7;;-1:-1:-1;;;;;578:6:7;177:10:0;578:22:7;570:67;;;;-1:-1:-1;;;570:67:7;;7998:2:9;570:67:7;;;7980:21:9;;;8017:18;;;8010:30;8076:34;8056:18;;;8049:62;8128:18;;570:67:7;7796:356:9;570:67:7;7603:14:1::1;:30:::0;7529:111::o;10306:99::-;578:6:7;;-1:-1:-1;;;;;578:6:7;177:10:0;578:22:7;570:67;;;;-1:-1:-1;;;570:67:7;;7998:2:9;570:67:7;;;7980:21:9;;;8017:18;;;8010:30;8076:34;8056:18;;;8049:62;8128:18;;570:67:7;7796:356:9;570:67:7;-1:-1:-1;;;;;10372:18:1::1;10393:5;10372:18:::0;;;:10:::1;:18;::::0;;;;:26;;-1:-1:-1;;10372:26:1::1;::::0;;10306:99::o;5809:147::-;578:6:7;;-1:-1:-1;;;;;578:6:7;177:10:0;578:22:7;570:67;;;;-1:-1:-1;;;570:67:7;;7998:2:9;570:67:7;;;7980:21:9;;;8017:18;;;8010:30;8076:34;8056:18;;;8049:62;8128:18;;570:67:7;7796:356:9;570:67:7;5895:54:1::1;::::0;;;;-1:-1:-1;;;;;11370:55:9;;;5895:54:1::1;::::0;::::1;11352:74:9::0;5931:17:1::1;11442:18:9::0;;;11435:34;5895:21:1;::::1;::::0;::::1;::::0;11325:18:9;;5895:54:1::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4102:164::-:0;4180:4;4196:42;177:10:0;4220:9:1;4231:6;4196:9;:42::i;10635:245::-;578:6:7;;-1:-1:-1;;;;;578:6:7;177:10:0;578:22:7;570:67;;;;-1:-1:-1;;;570:67:7;;7998:2:9;570:67:7;;;7980:21:9;;;8017:18;;;8010:30;8076:34;8056:18;;;8049:62;8128:18;;570:67:7;7796:356:9;570:67:7;10733:4:1::1;10689:23;10715:24:::0;;;:9:::1;:24;::::0;;;;;10746:12:::1;:31:::0;;10715:24;;;;10746:31:::1;::::0;10715:24;;10746:31:::1;:::i;:::-;::::0;;;-1:-1:-1;;10789:84:1::1;::::0;3005:25:9;;;10813:42:1::1;::::0;10806:4:::1;::::0;10789:84:::1;::::0;2993:2:9;2978:18;10789:84:1::1;;;;;;;10682:198;10635:245::o:0;812:274:7:-;578:6;;-1:-1:-1;;;;;578:6:7;177:10:0;578:22:7;570:67;;;;-1:-1:-1;;;570:67:7;;7998:2:9;570:67:7;;;7980:21:9;;;8017:18;;;8010:30;8076:34;8056:18;;;8049:62;8128:18;;570:67:7;7796:356:9;570:67:7;-1:-1:-1;;;;;913:22:7;::::1;892:107;;;::::0;-1:-1:-1;;;892:107:7;;14231:2:9;892:107:7::1;::::0;::::1;14213:21:9::0;14270:2;14250:18;;;14243:30;14309:34;14289:18;;;14282:62;14380:8;14360:18;;;14353:36;14406:19;;892:107:7::1;14029:402:9::0;892:107:7::1;1035:6;::::0;;1014:38:::1;::::0;-1:-1:-1;;;;;1014:38:7;;::::1;::::0;1035:6;::::1;::::0;1014:38:::1;::::0;::::1;1062:6;:17:::0;;;::::1;-1:-1:-1::0;;;;;1062:17:7;;;::::1;::::0;;;::::1;::::0;;812:274::o;5472:331:1:-;-1:-1:-1;;;;;5564:19:1;;5556:68;;;;-1:-1:-1;;;5556:68:1;;14638:2:9;5556:68:1;;;14620:21:9;14677:2;14657:18;;;14650:30;14716:34;14696:18;;;14689:62;14787:6;14767:18;;;14760:34;14811:19;;5556:68:1;14436:400:9;5556:68:1;-1:-1:-1;;;;;5642:21:1;;5634:68;;;;-1:-1:-1;;;5634:68:1;;15043:2:9;5634:68:1;;;15025:21:9;15082:2;15062:18;;;15055:30;15121:34;15101:18;;;15094:62;15192:4;15172:18;;;15165:32;15214:19;;5634:68:1;14841:398:9;5634:68:1;-1:-1:-1;;;;;5713:18:1;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5764:32;;3005:25:9;;;5764:32:1;;2978:18:9;5764:32:1;;;;;;;;5472:331;;;:::o;8813:172::-;8877:4;;8869:52;;8851:12;;-1:-1:-1;;;;;8877:4:1;;8895:21;;8851:12;8869:52;8851:12;8869:52;8895:21;8877:4;8869:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8850:71;;;8939:7;8931:47;;;;-1:-1:-1;;;8931:47:1;;15656:2:9;8931:47:1;;;15638:21:9;15695:2;15675:18;;;15668:30;15734:29;15714:18;;;15707:57;15781:18;;8931:47:1;15454:351:9;5966:1289:1;-1:-1:-1;;;;;6062:20:1;;6054:70;;;;-1:-1:-1;;;6054:70:1;;16012:2:9;6054:70:1;;;15994:21:9;16051:2;16031:18;;;16024:30;16090:34;16070:18;;;16063:62;16161:7;16141:18;;;16134:35;16186:19;;6054:70:1;15810:401:9;6054:70:1;-1:-1:-1;;;;;6142:23:1;;6134:71;;;;-1:-1:-1;;;6134:71:1;;16418:2:9;6134:71:1;;;16400:21:9;16457:2;16437:18;;;16430:30;16496:34;16476:18;;;16469:62;16567:5;16547:18;;;16540:33;16590:19;;6134:71:1;16216:399:9;6134:71:1;-1:-1:-1;;;;;6223:17:1;;;;;;:9;:17;;;;;;:27;-1:-1:-1;6223:27:1;6215:71;;;;-1:-1:-1;;;6215:71:1;;16822:2:9;6215:71:1;;;16804:21:9;16861:2;16841:18;;;16834:30;16900:33;16880:18;;;16873:61;16951:18;;6215:71:1;16620:355:9;6215:71:1;6313:1;6304:6;:10;6296:50;;;;-1:-1:-1;;;6296:50:1;;17182:2:9;6296:50:1;;;17164:21:9;17221:2;17201:18;;;17194:30;17260:29;17240:18;;;17233:57;17307:18;;6296:50:1;16980:351:9;6296:50:1;-1:-1:-1;;;;;6365:18:1;;;;;;:10;:18;;;;;;;;6364:19;:45;;;;-1:-1:-1;;;;;;6388:21:1;;;;;;:10;:21;;;;;;;;6387:22;6364:45;:71;;;;-1:-1:-1;6425:9:1;6414:21;;;;:10;:21;;;;;;;;6413:22;6364:71;6356:80;;;;;;6451:25;6458:6;6466:9;6451:6;:25::i;:::-;6447:665;;;6501:14;;6492:59;;;;-1:-1:-1;;;6492:59:1;;17538:2:9;6492:59:1;;;17520:21:9;17577:2;17557:18;;;17550:30;17616:28;17596:18;;;17589:56;17662:18;;6492:59:1;17336:350:9;6492:59:1;6569:31;6582:6;6590:9;6569:12;:31::i;:::-;6565:324;;;6637:8;;6627:6;:18;;6619:54;;;;-1:-1:-1;;;6619:54:1;;17893:2:9;6619:54:1;;;17875:21:9;17932:2;17912:18;;;17905:30;17971:25;17951:18;;;17944:53;18014:18;;6619:54:1;17691:347:9;6619:54:1;6696:16;;;;6692:183;;;-1:-1:-1;;;;;6744:20:1;;;;;;:9;:20;;;;;;6767:15;-1:-1:-1;6736:47:1;;;;;;6828:28;:15;6846:10;6828:28;:::i;:::-;-1:-1:-1;;;;;6805:20:1;;;;;;:9;:20;;;;;:51;6692:183;4366:14;;-1:-1:-1;;;;;4348:33:1;;;4366:14;;4348:33;6902:200;;6983:14;;6950:4;;6943:37;;;;;6974:4;6943:37;;;5076:74:9;-1:-1:-1;;;;;6950:4:1;;;;6943:22;;5049:18:9;;6943:37:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;:68;;;;-1:-1:-1;7002:9:1;;;;;;;7001:10;6943:68;6939:149;;;7043:4;;7049:8;;7034:35;;-1:-1:-1;;;;;7043:4:1;;7049:8;;;;;7043:4;7059:9;;;7034:8;:35::i;:::-;-1:-1:-1;;;;;7122:20:1;;;;;;:9;:20;;;;;:30;;7146:6;;7122:20;:30;;7146:6;;7122:30;:::i;:::-;;;;-1:-1:-1;;;;;;;7162:17:1;;;;;;:9;:17;;;;;:27;;7183:6;;7162:17;:27;;7183:6;;7162:27;:::i;:::-;;;;;;;;7230:9;-1:-1:-1;;;;;7213:35:1;7222:6;-1:-1:-1;;;;;7213:35:1;;7241:6;7213:35;;;;3005:25:9;;2993:2;2978:18;;2859:177;10528:97:1;10584:14;;:34;;;;;;;;3005:25:9;;;-1:-1:-1;;;;;10584:14:1;;;;:29;;2978:18:9;;10584:34:1;2859:177:9;11438:250:1;11501:7;11520:13;11536:11;;11550:1;11536:15;;;;:::i;:::-;11520:31;;11565:9;11561:99;11584:11;;11580:1;:15;11561:99;;;11619:9;;;;:6;:9;;;;;;-1:-1:-1;;;;;11619:19:1;;;:9;;:19;11616:33;;;11648:1;11640:9;;11616:33;11597:3;;;;:::i;:::-;;;;11561:99;;;-1:-1:-1;11676:5:1;11438:250;-1:-1:-1;;11438:250:1:o;9030:180::-;3555:4;3543:16;;;;;;;;9148:6:::1;::::0;9132:71:::1;::::0;;;;-1:-1:-1;;;;;18253:55:9;;;9132:71:1::1;::::0;::::1;18235:74:9::0;18357:4;18345:17;;18325:18;;;18318:45;18406:14;;18399:22;18379:18;;;18372:50;9148:6:1;;::::1;::::0;9132:33:::1;::::0;18208:18:9;;9132:71:1::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;3580:9:1;:17;;;;;;-1:-1:-1;;9030:180:1:o;4394:162::-;-1:-1:-1;;;;;4492:24:1;;4467:4;4492:24;;;:16;:24;;;;;;;;;:56;;-1:-1:-1;;;;;;4521:27:1;;;;;;:16;:27;;;;;;;;4492:56;4490:59;;4394:162;-1:-1:-1;;;4394:162:1:o;4566:210::-;4686:14;;4645:4;;-1:-1:-1;;;;;4668:33:1;;;4686:14;;4668:33;:69;;;;-1:-1:-1;4726:10:1;;-1:-1:-1;;;;;4705:32:1;;;4726:10;;;;;4705:32;;4668:69;:101;;;;-1:-1:-1;;;;;;4742:27:1;;;;;;:16;:27;;;;;;;;4741:28;4668:101;4661:108;4566:210;-1:-1:-1;;;4566:210:1:o;14:656:9:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;586:2:9;574:15;591:66;570:88;555:104;;;;661:2;551:113;;14:656;-1:-1:-1;;;14:656:9:o;675:184::-;727:77;724:1;717:88;824:4;821:1;814:15;848:4;845:1;838:15;864:154;-1:-1:-1;;;;;943:5:9;939:54;932:5;929:65;919:93;;1008:1;1005;998:12;1023:134;1091:20;;1120:31;1091:20;1120:31;:::i;:::-;1023:134;;;:::o;1162:1180::-;1246:6;1277:2;1320;1308:9;1299:7;1295:23;1291:32;1288:52;;;1336:1;1333;1326:12;1288:52;1376:9;1363:23;1405:18;1446:2;1438:6;1435:14;1432:34;;;1462:1;1459;1452:12;1432:34;1500:6;1489:9;1485:22;1475:32;;1545:7;1538:4;1534:2;1530:13;1526:27;1516:55;;1567:1;1564;1557:12;1516:55;1603:2;1590:16;1625:2;1621;1618:10;1615:36;;;1631:18;;:::i;:::-;1677:2;1674:1;1670:10;1709:2;1703:9;1768:66;1763:2;1759;1755:11;1751:84;1743:6;1739:97;1886:6;1874:10;1871:22;1866:2;1854:10;1851:18;1848:46;1845:72;;;1897:18;;:::i;:::-;1933:2;1926:22;1983:18;;;2017:15;;;;-1:-1:-1;2059:11:9;;;2055:20;;;2087:19;;;2084:39;;;2119:1;2116;2109:12;2084:39;2143:11;;;;2163:148;2179:6;2174:3;2171:15;2163:148;;;2245:23;2264:3;2245:23;:::i;:::-;2233:36;;2196:12;;;;2289;;;;2163:148;;;2330:6;1162:1180;-1:-1:-1;;;;;;;;1162:1180:9:o;2347:315::-;2415:6;2423;2476:2;2464:9;2455:7;2451:23;2447:32;2444:52;;;2492:1;2489;2482:12;2444:52;2531:9;2518:23;2550:31;2575:5;2550:31;:::i;:::-;2600:5;2652:2;2637:18;;;;2624:32;;-1:-1:-1;;;2347:315:9:o;3041:247::-;3100:6;3153:2;3141:9;3132:7;3128:23;3124:32;3121:52;;;3169:1;3166;3159:12;3121:52;3208:9;3195:23;3227:31;3252:5;3227:31;:::i;3293:456::-;3370:6;3378;3386;3439:2;3427:9;3418:7;3414:23;3410:32;3407:52;;;3455:1;3452;3445:12;3407:52;3494:9;3481:23;3513:31;3538:5;3513:31;:::i;:::-;3563:5;-1:-1:-1;3620:2:9;3605:18;;3592:32;3633:33;3592:32;3633:33;:::i;:::-;3293:456;;3685:7;;-1:-1:-1;;;3739:2:9;3724:18;;;;3711:32;;3293:456::o;4210:180::-;4269:6;4322:2;4310:9;4301:7;4297:23;4293:32;4290:52;;;4338:1;4335;4328:12;4290:52;-1:-1:-1;4361:23:9;;4210:180;-1:-1:-1;4210:180:9:o;4395:118::-;4481:5;4474:13;4467:21;4460:5;4457:32;4447:60;;4503:1;4500;4493:12;4518:382;4583:6;4591;4644:2;4632:9;4623:7;4619:23;4615:32;4612:52;;;4660:1;4657;4650:12;4612:52;4699:9;4686:23;4718:31;4743:5;4718:31;:::i;:::-;4768:5;-1:-1:-1;4825:2:9;4810:18;;4797:32;4838:30;4797:32;4838:30;:::i;:::-;4887:7;4877:17;;;4518:382;;;;;:::o;5161:241::-;5217:6;5270:2;5258:9;5249:7;5245:23;5241:32;5238:52;;;5286:1;5283;5276:12;5238:52;5325:9;5312:23;5344:28;5366:5;5344:28;:::i;5407:315::-;5475:6;5483;5536:2;5524:9;5515:7;5511:23;5507:32;5504:52;;;5552:1;5549;5542:12;5504:52;5588:9;5575:23;5565:33;;5648:2;5637:9;5633:18;5620:32;5661:31;5686:5;5661:31;:::i;5727:156::-;5793:20;;5853:4;5842:16;;5832:27;;5822:55;;5873:1;5870;5863:12;5888:452;5960:6;5968;5976;6029:2;6017:9;6008:7;6004:23;6000:32;5997:52;;;6045:1;6042;6035:12;5997:52;6084:9;6071:23;6103:31;6128:5;6103:31;:::i;:::-;6153:5;-1:-1:-1;6177:36:9;6209:2;6194:18;;6177:36;:::i;:::-;6167:46;;6265:2;6254:9;6250:18;6237:32;6278:30;6300:7;6278:30;:::i;:::-;6327:7;6317:17;;;5888:452;;;;;:::o;6576:311::-;6639:6;6647;6700:2;6688:9;6679:7;6675:23;6671:32;6668:52;;;6716:1;6713;6706:12;6668:52;6739:27;6756:9;6739:27;:::i;7146:388::-;7214:6;7222;7275:2;7263:9;7254:7;7250:23;7246:32;7243:52;;;7291:1;7288;7281:12;7243:52;7330:9;7317:23;7349:31;7374:5;7349:31;:::i;:::-;7399:5;-1:-1:-1;7456:2:9;7441:18;;7428:32;7469:33;7428:32;7469:33;:::i;8512:437::-;8591:1;8587:12;;;;8634;;;8655:61;;8709:4;8701:6;8697:17;8687:27;;8655:61;8762:2;8754:6;8751:14;8731:18;8728:38;8725:218;;;8799:77;8796:1;8789:88;8900:4;8897:1;8890:15;8928:4;8925:1;8918:15;8725:218;;8512:437;;;:::o;8954:184::-;9006:77;9003:1;8996:88;9103:4;9100:1;9093:15;9127:4;9124:1;9117:15;9143:128;9183:3;9214:1;9210:6;9207:1;9204:13;9201:39;;;9220:18;;:::i;:::-;-1:-1:-1;9256:9:9;;9143:128::o;9702:184::-;9754:77;9751:1;9744:88;9851:4;9848:1;9841:15;9875:4;9872:1;9865:15;9891:195;9930:3;9961:66;9954:5;9951:77;9948:103;;;10031:18;;:::i;:::-;-1:-1:-1;10078:1:9;10067:13;;9891:195::o;10859:125::-;10899:4;10927:1;10924;10921:8;10918:34;;;10932:18;;:::i;:::-;-1:-1:-1;10969:9:9;;10859:125::o;10989:184::-;11059:6;11112:2;11100:9;11091:7;11087:23;11083:32;11080:52;;;11128:1;11125;11118:12;11080:52;-1:-1:-1;11151:16:9;;10989:184;-1:-1:-1;10989:184:9:o;11480:245::-;11547:6;11600:2;11588:9;11579:7;11575:23;11571:32;11568:52;;;11616:1;11613;11606:12;11568:52;11648:9;11642:16;11667:28;11689:5;11667:28;:::i

Swarm Source

ipfs://279344506285eb62c7f84b35429d69002a9d999c33a1126aab2c809ad2c2d40e
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.