ETH Price: $2,964.52 (-4.21%)
Gas: 2 Gwei

Token

Dev Is Selling (FTX)
 

Overview

Max Total Supply

350,000,000 FTX

Holders

136

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
340,740.230877126362827048 FTX

Value
$0.00
0xff7063dcbc3161d09276310a6e77ce6987b8430e
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:
Devisselling

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-13
*/

/**
https://t.me/DevIsSelling

https://twitter.com/DevIsSelling

https://www.deviselling.com/
*/

//SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.19;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

interface IERC20Metadata is IERC20 {

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _balances;

    mapping(address => mapping(address => uint256)) internal _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;

    }

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

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

    
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

    
    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    
    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    
    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    
    function _tokengeneration(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: generation to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply = amount;
        _balances[account] = amount;
        emit Transfer(address(0), account, amount);
    }

    
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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 _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

library Address {
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract Devisselling is ERC20, Ownable {
    using Address for address payable;

    IRouter public router;
    address public pair;

    bool private _liquidityMutex = false;
    bool private  providingLiquidity = false;
    bool public tradingEnabled = false;

    uint256 public  tokenLiquidityThreshold = 7000000 * 10**18;
    uint256 public maxWalletLimit = 7000000 * 10**18;

    uint256 private  genesis_block;
    uint256 private deadline = 0;
    uint256 private launchtax = 22;

    address private  marketingWallet = 0x0B4A2b9F73f7c22fbcE30671DE7E05C5402A31E7;
	address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;

    struct Taxes {
        uint256 marketing;
        uint256 liquidity;
    }

    Taxes public taxes = Taxes(22, 0);
    Taxes public sellTaxes = Taxes(33, 0);

    mapping(address => bool) public exemptFee;
    mapping(address => bool) private isearlybuyer;


    modifier mutexLock() {
        if (!_liquidityMutex) {
            _liquidityMutex = true;
            _;
            _liquidityMutex = false;
        }
    }

    constructor() ERC20("Dev Is Selling", "FTX") {
        _tokengeneration(msg.sender, 350000000 * 10**decimals());

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        exemptFee[address(this)] = true;
        exemptFee[msg.sender] = true;
        exemptFee[marketingWallet] = true;
        exemptFee[deadWallet] = true;
        exemptFee[0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214] = true;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        override
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

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

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!isearlybuyer[sender] && !isearlybuyer[recipient],
            "You can't transfer tokens"
        );

        if (!exemptFee[sender] && !exemptFee[recipient]) {
            require(tradingEnabled, "Trading not enabled");
        }

        if (sender == pair && !exemptFee[recipient] && !_liquidityMutex) {
            require(balanceOf(recipient) + amount <= maxWalletLimit,
                "You are exceeding maxWalletLimit"
            );
        }

        if (sender != pair && !exemptFee[recipient] && !exemptFee[sender] && !_liquidityMutex) {
           
            if (recipient != pair) {
                require(balanceOf(recipient) + amount <= maxWalletLimit,
                    "You are exceeding maxWalletLimit"
                );
            }
        }

        uint256 feeswap;
        uint256 feesum;
        uint256 fee;
        Taxes memory currentTaxes;

        bool useLaunchFee = !exemptFee[sender] &&
            !exemptFee[recipient] &&
            block.number < genesis_block + deadline;

        //set fee to zero if fees in contract are handled or exempted
        if (_liquidityMutex || exemptFee[sender] || exemptFee[recipient])
            fee = 0;

            //calculate fee
        else if (recipient == pair && !useLaunchFee) {
            feeswap =
                sellTaxes.liquidity +
                sellTaxes.marketing ;
            feesum = feeswap;
            currentTaxes = sellTaxes;
        } else if (!useLaunchFee) {
            feeswap =
                taxes.liquidity +
                taxes.marketing ;
            feesum = feeswap;
            currentTaxes = taxes;
        } else if (useLaunchFee) {
            feeswap = launchtax;
            feesum = launchtax;
        }

        fee = (amount * feesum) / 100;

        if (providingLiquidity && sender != pair) handle_fees(feeswap, currentTaxes);

        super._transfer(sender, recipient, amount - fee);
        if (fee > 0) {
            //send the fee to the contract
            if (feeswap > 0) {
                uint256 feeAmount = (amount * feeswap) / 100;
                super._transfer(sender, address(this), feeAmount);
            }

        }
    }

    function handle_fees(uint256 feeswap, Taxes memory swapTaxes) private mutexLock {

	if(feeswap == 0){
            return;
        }	

        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= tokenLiquidityThreshold) {
            if (tokenLiquidityThreshold > 1) {
                contractBalance = tokenLiquidityThreshold;
            }

            uint256 denominator = feeswap * 2;
            uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) /
                denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

            uint256 initialBalance = address(this).balance;

            swapTokensForETH(toSwap);

            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * swapTaxes.liquidity;

            if (ethToAddLiquidityWith > 0) {
                // Add liquidity
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }

            uint256 marketingAmt = unitBalance * 2 * swapTaxes.marketing;
            if (marketingAmt > 0) {
                payable(marketingWallet).sendValue(marketingAmt);
            }

        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(router), tokenAmount);

        router.addLiquidityETH{ value: ethAmount }(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            deadWallet,
            block.timestamp
        );
    }

    function updateLiquidityProvide(bool state) external onlyOwner {
        providingLiquidity = state;
    }

    function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner {
        tokenLiquidityThreshold = new_amount * 10**decimals();
    }

    function UpdateBuyTaxes(
        uint256 _marketing,
        uint256 _liquidity
    ) external onlyOwner {
        taxes = Taxes(_marketing, _liquidity);
    }

    function SetSellTaxes(
        uint256 _marketing,
        uint256 _liquidity
    ) external onlyOwner {
        sellTaxes = Taxes(_marketing, _liquidity);
    }

   function enableTrading() external onlyOwner {
        require(!tradingEnabled, "Trading is already enabled");
        tradingEnabled = true;
        providingLiquidity = true;
        genesis_block = block.number;
    }

    function updatedeadline(uint256 _deadline) external onlyOwner {
        require(!tradingEnabled, "Can't change when trading has started");
        deadline = _deadline;
    }

    function updateMarketingWallet(address newWallet) external onlyOwner {
        marketingWallet = newWallet;
    }

    function AddExemptFee(address _address) external onlyOwner {
        exemptFee[_address] = true;
    }

    function RemoveExemptFee(address _address) external onlyOwner {
        exemptFee[_address] = false;
    }

    function updateMaxWalletLimit(uint256 maxWallet) external onlyOwner {
        maxWalletLimit = maxWallet * 10**decimals(); 
    }

    function rescueETH(uint256 weiAmount) external onlyOwner {
        payable(owner()).transfer(weiAmount);
    }

    function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner {
        IERC20(tokenAdd).transfer(owner(), amount);
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"AddExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"RemoveExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"SetSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"UpdateBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenLiquidityThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"updateMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"updatedeadline","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6007805462ffffff60a01b191690556a05ca4ec2a79a7f6700000060088190556009555f600b8190556016600c819055600d80546001600160a01b031916730b4a2b9f73f7c22fbce30671de7e05c5402a31e7179055608081905260a0829052600e55600f819055610100604052602160c081905260e08290526010556011553480156200008b575f80fd5b506040518060400160405280600e81526020016d4465762049732053656c6c696e6760901b8152506040518060400160405280600381526020016208ca8b60eb1b8152508160039081620000e0919062000529565b506004620000ef828262000529565b5050506200010c620001066200037460201b60201c565b62000378565b62000135336200011f6012600a62000700565b6200012f906314dc938062000717565b620003c9565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200018b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001b1919062000731565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001fd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000223919062000731565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156200026e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000294919062000731565b600680546001600160a01b03199081166001600160a01b03958616179091556007805490911691841691909117905550305f90815260126020526040808220805460ff1990811660019081179092553384528284208054821683179055600d54909416835290822080548416821790557f1120e10407cab1193d7c5139d9aae5536deb3d83e855f25f8e42f811c01f56f7805484168217905573663a5c229c09b049e36dcc11a9b0d4a8eb9db2149091527fde1971b300b89e7e26ed403a315e2a5fbd019f3d8bff772aabed72d8b23168b5805490921617905562000759565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038216620004325760405162461bcd60e51b815260206004820152602560248201527f45524332303a2067656e65726174696f6e20746f20746865207a65726f206164604482015264647265737360d81b606482015260840160405180910390fd5b60028190556001600160a01b0382165f81815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620004b357607f821691505b602082108103620004d257634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000485575f81815260208120601f850160051c81016020861015620005005750805b601f850160051c820191505b8181101562000521578281556001016200050c565b505050505050565b81516001600160401b038111156200054557620005456200048a565b6200055d816200055684546200049e565b84620004d8565b602080601f83116001811462000593575f84156200057b5750858301515b5f19600386901b1c1916600185901b17855562000521565b5f85815260208120601f198616915b82811015620005c357888601518255948401946001909101908401620005a2565b5085821015620005e157878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200064557815f1904821115620006295762000629620005f1565b808516156200063757918102915b93841c93908002906200060a565b509250929050565b5f826200065d57506001620006fa565b816200066b57505f620006fa565b81600181146200068457600281146200068f57620006af565b6001915050620006fa565b60ff841115620006a357620006a3620005f1565b50506001821b620006fa565b5060208310610133831016604e8410600b8410161715620006d4575081810a620006fa565b620006e0838362000605565b805f1904821115620006f657620006f6620005f1565b0290505b92915050565b5f6200071060ff8416836200064d565b9392505050565b8082028115828204841417620006fa57620006fa620005f1565b5f6020828403121562000742575f80fd5b81516001600160a01b038116811462000710575f80fd5b611fa280620007675f395ff3fe6080604052600436106101ff575f3560e01c806385141a7711610113578063aacebbe31161009d578063edaa11681161006d578063edaa1168146105f9578063f2fde38b14610618578063f52be97c14610637578063f66895a314610656578063f887ea4014610670575f80fd5b8063aacebbe314610549578063c5d32bb214610568578063d695609b14610596578063dd62ed3e146105b5575f80fd5b806395d89b41116100e357806395d89b41146104b95780639e252f00146104cd578063a457c2d7146104ec578063a8aa1b311461050b578063a9059cbb1461052a575f80fd5b806385141a771461043c5780638a8c523c146104695780638cd4426d1461047d5780638da5cb5b1461049c575f80fd5b806342b6fa111161019457806366a88d961161016457806366a88d961461039157806370a08231146103a6578063715018a6146103da578063728f8eea146103ee578063832c2bd21461041d575f80fd5b806342b6fa11146103145780634324deae146103335780634ada218b146103525780635dbdb7e314610372575f80fd5b806318160ddd116101cf57806318160ddd146102a757806323b872dd146102bb578063313ce567146102da57806339509351146102f5575f80fd5b806306fdde031461020a578063095ea7b3146102345780631340538f146102635780631675d80214610284575f80fd5b3661020657005b5f80fd5b348015610215575f80fd5b5061021e61068f565b60405161022b9190611b3e565b60405180910390f35b34801561023f575f80fd5b5061025361024e366004611b9d565b61071f565b604051901515815260200161022b565b34801561026e575f80fd5b5061028261027d366004611bd4565b610735565b005b34801561028f575f80fd5b5061029960085481565b60405190815260200161022b565b3480156102b2575f80fd5b50600254610299565b3480156102c6575f80fd5b506102536102d5366004611bf6565b610786565b3480156102e5575f80fd5b506040516012815260200161022b565b348015610300575f80fd5b5061025361030f366004611b9d565b610835565b34801561031f575f80fd5b5061028261032e366004611c34565b61086b565b34801561033e575f80fd5b5061028261034d366004611c34565b6108b1565b34801561035d575f80fd5b5060075461025390600160b01b900460ff1681565b34801561037d575f80fd5b5061028261038c366004611c4b565b6108f7565b34801561039c575f80fd5b5061029960095481565b3480156103b1575f80fd5b506102996103c0366004611c4b565b6001600160a01b03165f9081526020819052604090205490565b3480156103e5575f80fd5b50610282610944565b3480156103f9575f80fd5b50600e54600f54610408919082565b6040805192835260208301919091520161022b565b348015610428575f80fd5b50610282610437366004611c4b565b610979565b348015610447575f80fd5b5061045161dead81565b6040516001600160a01b03909116815260200161022b565b348015610474575f80fd5b506102826109c3565b348015610488575f80fd5b50610282610497366004611b9d565b610a62565b3480156104a7575f80fd5b506005546001600160a01b0316610451565b3480156104c4575f80fd5b5061021e610b20565b3480156104d8575f80fd5b506102826104e7366004611c34565b610b2f565b3480156104f7575f80fd5b50610253610506366004611b9d565b610b94565b348015610516575f80fd5b50600754610451906001600160a01b031681565b348015610535575f80fd5b50610253610544366004611b9d565b610c2e565b348015610554575f80fd5b50610282610563366004611c4b565b610c3a565b348015610573575f80fd5b50610253610582366004611c4b565b60126020525f908152604090205460ff1681565b3480156105a1575f80fd5b506102826105b0366004611c66565b610c86565b3480156105c0575f80fd5b506102996105cf366004611c86565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610604575f80fd5b50610282610613366004611c34565b610cce565b348015610623575f80fd5b50610282610632366004611c4b565b610d65565b348015610642575f80fd5b50610282610651366004611c66565b610e00565b348015610661575f80fd5b50601054601154610408919082565b34801561067b575f80fd5b50600654610451906001600160a01b031681565b60606003805461069e90611cbd565b80601f01602080910402602001604051908101604052809291908181526020018280546106ca90611cbd565b80156107155780601f106106ec57610100808354040283529160200191610715565b820191905f5260205f20905b8154815290600101906020018083116106f857829003601f168201915b5050505050905090565b5f61072b338484610e48565b5060015b92915050565b6005546001600160a01b031633146107685760405162461bcd60e51b815260040161075f90611cf5565b60405180910390fd5b60078054911515600160a81b0260ff60a81b19909216919091179055565b5f610792848484610f6b565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156108165760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161075f565b61082a85336108258685611d3e565b610e48565b506001949350505050565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909161072b918590610825908690611d51565b6005546001600160a01b031633146108955760405162461bcd60e51b815260040161075f90611cf5565b6108a16012600a611e44565b6108ab9082611e52565b60085550565b6005546001600160a01b031633146108db5760405162461bcd60e51b815260040161075f90611cf5565b6108e76012600a611e44565b6108f19082611e52565b60095550565b6005546001600160a01b031633146109215760405162461bcd60e51b815260040161075f90611cf5565b6001600160a01b03165f908152601260205260409020805460ff19166001179055565b6005546001600160a01b0316331461096e5760405162461bcd60e51b815260040161075f90611cf5565b6109775f6114ce565b565b6005546001600160a01b031633146109a35760405162461bcd60e51b815260040161075f90611cf5565b6001600160a01b03165f908152601260205260409020805460ff19169055565b6005546001600160a01b031633146109ed5760405162461bcd60e51b815260040161075f90611cf5565b600754600160b01b900460ff1615610a475760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c6564000000000000604482015260640161075f565b6007805461ffff60a81b191661010160a81b17905543600a55565b6005546001600160a01b03163314610a8c5760405162461bcd60e51b815260040161075f90611cf5565b816001600160a01b031663a9059cbb610aad6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af1158015610af7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b1b9190611e69565b505050565b60606004805461069e90611cbd565b6005546001600160a01b03163314610b595760405162461bcd60e51b815260040161075f90611cf5565b6005546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610b90573d5f803e3d5ffd5b5050565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610c155760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161075f565b610c2433856108258685611d3e565b5060019392505050565b5f61072b338484610f6b565b6005546001600160a01b03163314610c645760405162461bcd60e51b815260040161075f90611cf5565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610cb05760405162461bcd60e51b815260040161075f90611cf5565b60408051808201909152828152602001819052600e91909155600f55565b6005546001600160a01b03163314610cf85760405162461bcd60e51b815260040161075f90611cf5565b600754600160b01b900460ff1615610d605760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b606482015260840161075f565b600b55565b6005546001600160a01b03163314610d8f5760405162461bcd60e51b815260040161075f90611cf5565b6001600160a01b038116610df45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161075f565b610dfd816114ce565b50565b6005546001600160a01b03163314610e2a5760405162461bcd60e51b815260040161075f90611cf5565b60408051808201909152828152602001819052601091909155601155565b6001600160a01b038316610eaa5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161075f565b6001600160a01b038216610f0b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161075f565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f8111610fcc5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161075f565b6001600160a01b0383165f9081526013602052604090205460ff1615801561100c57506001600160a01b0382165f9081526013602052604090205460ff16155b6110585760405162461bcd60e51b815260206004820152601960248201527f596f752063616e2774207472616e7366657220746f6b656e7300000000000000604482015260640161075f565b6001600160a01b0383165f9081526012602052604090205460ff1615801561109857506001600160a01b0382165f9081526012602052604090205460ff16155b156110ec57600754600160b01b900460ff166110ec5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b604482015260640161075f565b6007546001600160a01b03848116911614801561112157506001600160a01b0382165f9081526012602052604090205460ff16155b80156111375750600754600160a01b900460ff16155b156111b6576009548161115e846001600160a01b03165f9081526020819052604090205490565b6111689190611d51565b11156111b65760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161075f565b6007546001600160a01b038481169116148015906111ec57506001600160a01b0382165f9081526012602052604090205460ff16155b801561121057506001600160a01b0383165f9081526012602052604090205460ff16155b80156112265750600754600160a01b900460ff16155b156112ba576007546001600160a01b038381169116146112ba5760095481611262846001600160a01b03165f9081526020819052604090205490565b61126c9190611d51565b11156112ba5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161075f565b5f805f6112d860405180604001604052805f81526020015f81525090565b6001600160a01b0387165f9081526012602052604081205460ff1615801561131857506001600160a01b0387165f9081526012602052604090205460ff16155b80156113325750600b54600a5461132f9190611d51565b43105b600754909150600160a01b900460ff168061136457506001600160a01b0388165f9081526012602052604090205460ff165b8061138657506001600160a01b0387165f9081526012602052604090205460ff165b15611393575f925061142f565b6007546001600160a01b0388811691161480156113ae575080155b156113e7576010546011546113c39190611d51565b6040805180820190915260105481526011546020820152909550859450915061142f565b8061142057600e54600f546113fc9190611d51565b60408051808201909152600e548152600f546020820152909550859450915061142f565b801561142f57600c5494508493505b606461143b8588611e52565b6114459190611e84565b600754909350600160a81b900460ff16801561146f57506007546001600160a01b03898116911614155b1561147e5761147e858361151f565b611492888861148d868a611d3e565b611654565b82156114c45784156114c4575f60646114ab8789611e52565b6114b59190611e84565b90506114c2893083611654565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b600754600160a01b900460ff16610b90576007805460ff60a01b1916600160a01b179055811561164357305f908152602081905260409020546008548110611641576001600854111561157157506008545b5f61157d846002611e52565b90505f818460200151846115919190611e52565b61159b9190611e84565b90505f6115a88285611d3e565b9050476115b48261182a565b5f6115bf8247611d3e565b90505f8760200151866115d29190611d3e565b6115dc9083611e84565b90505f8860200151826115ef9190611e52565b9050801561160157611601868261197a565b88515f90611610846002611e52565b61161a9190611e52565b9050801561163857600d54611638906001600160a01b031682611a29565b50505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b0383166116b85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161075f565b6001600160a01b03821661171a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161075f565b6001600160a01b0383165f90815260208190526040902054818110156117915760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161075f565b61179b8282611d3e565b6001600160a01b038086165f9081526020819052604080822093909355908516815290812080548492906117d0908490611d51565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161181c91815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061185d5761185d611ea3565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156118b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118d89190611eb7565b816001815181106118eb576118eb611ea3565b6001600160a01b0392831660209182029290920101526006546119119130911684610e48565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906119499085905f90869030904290600401611ed2565b5f604051808303815f87803b158015611960575f80fd5b505af1158015611972573d5f803e3d5ffd5b505050505050565b6006546119929030906001600160a01b031684610e48565b60065460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156119fd573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611a229190611f41565b5050505050565b80471015611a795760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161075f565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611ac2576040519150601f19603f3d011682016040523d82523d5f602084013e611ac7565b606091505b5050905080610b1b5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161075f565b5f6020808352835180828501525f5b81811015611b6957858101830151858201604001528201611b4d565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610dfd575f80fd5b5f8060408385031215611bae575f80fd5b8235611bb981611b89565b946020939093013593505050565b8015158114610dfd575f80fd5b5f60208284031215611be4575f80fd5b8135611bef81611bc7565b9392505050565b5f805f60608486031215611c08575f80fd5b8335611c1381611b89565b92506020840135611c2381611b89565b929592945050506040919091013590565b5f60208284031215611c44575f80fd5b5035919050565b5f60208284031215611c5b575f80fd5b8135611bef81611b89565b5f8060408385031215611c77575f80fd5b50508035926020909101359150565b5f8060408385031215611c97575f80fd5b8235611ca281611b89565b91506020830135611cb281611b89565b809150509250929050565b600181811c90821680611cd157607f821691505b602082108103611cef57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561072f5761072f611d2a565b8082018082111561072f5761072f611d2a565b600181815b80851115611d9e57815f1904821115611d8457611d84611d2a565b80851615611d9157918102915b93841c9390800290611d69565b509250929050565b5f82611db45750600161072f565b81611dc057505f61072f565b8160018114611dd65760028114611de057611dfc565b600191505061072f565b60ff841115611df157611df1611d2a565b50506001821b61072f565b5060208310610133831016604e8410600b8410161715611e1f575081810a61072f565b611e298383611d64565b805f1904821115611e3c57611e3c611d2a565b029392505050565b5f611bef60ff841683611da6565b808202811582820484141761072f5761072f611d2a565b5f60208284031215611e79575f80fd5b8151611bef81611bc7565b5f82611e9e57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611ec7575f80fd5b8151611bef81611b89565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611f205784516001600160a01b031683529383019391830191600101611efb565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611f53575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220c84948b27a6e30828d41f50632ee0f234999301315f6ff76d1ba49893a8347ce64736f6c63430008150033

Deployed Bytecode

0x6080604052600436106101ff575f3560e01c806385141a7711610113578063aacebbe31161009d578063edaa11681161006d578063edaa1168146105f9578063f2fde38b14610618578063f52be97c14610637578063f66895a314610656578063f887ea4014610670575f80fd5b8063aacebbe314610549578063c5d32bb214610568578063d695609b14610596578063dd62ed3e146105b5575f80fd5b806395d89b41116100e357806395d89b41146104b95780639e252f00146104cd578063a457c2d7146104ec578063a8aa1b311461050b578063a9059cbb1461052a575f80fd5b806385141a771461043c5780638a8c523c146104695780638cd4426d1461047d5780638da5cb5b1461049c575f80fd5b806342b6fa111161019457806366a88d961161016457806366a88d961461039157806370a08231146103a6578063715018a6146103da578063728f8eea146103ee578063832c2bd21461041d575f80fd5b806342b6fa11146103145780634324deae146103335780634ada218b146103525780635dbdb7e314610372575f80fd5b806318160ddd116101cf57806318160ddd146102a757806323b872dd146102bb578063313ce567146102da57806339509351146102f5575f80fd5b806306fdde031461020a578063095ea7b3146102345780631340538f146102635780631675d80214610284575f80fd5b3661020657005b5f80fd5b348015610215575f80fd5b5061021e61068f565b60405161022b9190611b3e565b60405180910390f35b34801561023f575f80fd5b5061025361024e366004611b9d565b61071f565b604051901515815260200161022b565b34801561026e575f80fd5b5061028261027d366004611bd4565b610735565b005b34801561028f575f80fd5b5061029960085481565b60405190815260200161022b565b3480156102b2575f80fd5b50600254610299565b3480156102c6575f80fd5b506102536102d5366004611bf6565b610786565b3480156102e5575f80fd5b506040516012815260200161022b565b348015610300575f80fd5b5061025361030f366004611b9d565b610835565b34801561031f575f80fd5b5061028261032e366004611c34565b61086b565b34801561033e575f80fd5b5061028261034d366004611c34565b6108b1565b34801561035d575f80fd5b5060075461025390600160b01b900460ff1681565b34801561037d575f80fd5b5061028261038c366004611c4b565b6108f7565b34801561039c575f80fd5b5061029960095481565b3480156103b1575f80fd5b506102996103c0366004611c4b565b6001600160a01b03165f9081526020819052604090205490565b3480156103e5575f80fd5b50610282610944565b3480156103f9575f80fd5b50600e54600f54610408919082565b6040805192835260208301919091520161022b565b348015610428575f80fd5b50610282610437366004611c4b565b610979565b348015610447575f80fd5b5061045161dead81565b6040516001600160a01b03909116815260200161022b565b348015610474575f80fd5b506102826109c3565b348015610488575f80fd5b50610282610497366004611b9d565b610a62565b3480156104a7575f80fd5b506005546001600160a01b0316610451565b3480156104c4575f80fd5b5061021e610b20565b3480156104d8575f80fd5b506102826104e7366004611c34565b610b2f565b3480156104f7575f80fd5b50610253610506366004611b9d565b610b94565b348015610516575f80fd5b50600754610451906001600160a01b031681565b348015610535575f80fd5b50610253610544366004611b9d565b610c2e565b348015610554575f80fd5b50610282610563366004611c4b565b610c3a565b348015610573575f80fd5b50610253610582366004611c4b565b60126020525f908152604090205460ff1681565b3480156105a1575f80fd5b506102826105b0366004611c66565b610c86565b3480156105c0575f80fd5b506102996105cf366004611c86565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610604575f80fd5b50610282610613366004611c34565b610cce565b348015610623575f80fd5b50610282610632366004611c4b565b610d65565b348015610642575f80fd5b50610282610651366004611c66565b610e00565b348015610661575f80fd5b50601054601154610408919082565b34801561067b575f80fd5b50600654610451906001600160a01b031681565b60606003805461069e90611cbd565b80601f01602080910402602001604051908101604052809291908181526020018280546106ca90611cbd565b80156107155780601f106106ec57610100808354040283529160200191610715565b820191905f5260205f20905b8154815290600101906020018083116106f857829003601f168201915b5050505050905090565b5f61072b338484610e48565b5060015b92915050565b6005546001600160a01b031633146107685760405162461bcd60e51b815260040161075f90611cf5565b60405180910390fd5b60078054911515600160a81b0260ff60a81b19909216919091179055565b5f610792848484610f6b565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156108165760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161075f565b61082a85336108258685611d3e565b610e48565b506001949350505050565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909161072b918590610825908690611d51565b6005546001600160a01b031633146108955760405162461bcd60e51b815260040161075f90611cf5565b6108a16012600a611e44565b6108ab9082611e52565b60085550565b6005546001600160a01b031633146108db5760405162461bcd60e51b815260040161075f90611cf5565b6108e76012600a611e44565b6108f19082611e52565b60095550565b6005546001600160a01b031633146109215760405162461bcd60e51b815260040161075f90611cf5565b6001600160a01b03165f908152601260205260409020805460ff19166001179055565b6005546001600160a01b0316331461096e5760405162461bcd60e51b815260040161075f90611cf5565b6109775f6114ce565b565b6005546001600160a01b031633146109a35760405162461bcd60e51b815260040161075f90611cf5565b6001600160a01b03165f908152601260205260409020805460ff19169055565b6005546001600160a01b031633146109ed5760405162461bcd60e51b815260040161075f90611cf5565b600754600160b01b900460ff1615610a475760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c6564000000000000604482015260640161075f565b6007805461ffff60a81b191661010160a81b17905543600a55565b6005546001600160a01b03163314610a8c5760405162461bcd60e51b815260040161075f90611cf5565b816001600160a01b031663a9059cbb610aad6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af1158015610af7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b1b9190611e69565b505050565b60606004805461069e90611cbd565b6005546001600160a01b03163314610b595760405162461bcd60e51b815260040161075f90611cf5565b6005546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610b90573d5f803e3d5ffd5b5050565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610c155760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161075f565b610c2433856108258685611d3e565b5060019392505050565b5f61072b338484610f6b565b6005546001600160a01b03163314610c645760405162461bcd60e51b815260040161075f90611cf5565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610cb05760405162461bcd60e51b815260040161075f90611cf5565b60408051808201909152828152602001819052600e91909155600f55565b6005546001600160a01b03163314610cf85760405162461bcd60e51b815260040161075f90611cf5565b600754600160b01b900460ff1615610d605760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b606482015260840161075f565b600b55565b6005546001600160a01b03163314610d8f5760405162461bcd60e51b815260040161075f90611cf5565b6001600160a01b038116610df45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161075f565b610dfd816114ce565b50565b6005546001600160a01b03163314610e2a5760405162461bcd60e51b815260040161075f90611cf5565b60408051808201909152828152602001819052601091909155601155565b6001600160a01b038316610eaa5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161075f565b6001600160a01b038216610f0b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161075f565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f8111610fcc5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161075f565b6001600160a01b0383165f9081526013602052604090205460ff1615801561100c57506001600160a01b0382165f9081526013602052604090205460ff16155b6110585760405162461bcd60e51b815260206004820152601960248201527f596f752063616e2774207472616e7366657220746f6b656e7300000000000000604482015260640161075f565b6001600160a01b0383165f9081526012602052604090205460ff1615801561109857506001600160a01b0382165f9081526012602052604090205460ff16155b156110ec57600754600160b01b900460ff166110ec5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b604482015260640161075f565b6007546001600160a01b03848116911614801561112157506001600160a01b0382165f9081526012602052604090205460ff16155b80156111375750600754600160a01b900460ff16155b156111b6576009548161115e846001600160a01b03165f9081526020819052604090205490565b6111689190611d51565b11156111b65760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161075f565b6007546001600160a01b038481169116148015906111ec57506001600160a01b0382165f9081526012602052604090205460ff16155b801561121057506001600160a01b0383165f9081526012602052604090205460ff16155b80156112265750600754600160a01b900460ff16155b156112ba576007546001600160a01b038381169116146112ba5760095481611262846001600160a01b03165f9081526020819052604090205490565b61126c9190611d51565b11156112ba5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161075f565b5f805f6112d860405180604001604052805f81526020015f81525090565b6001600160a01b0387165f9081526012602052604081205460ff1615801561131857506001600160a01b0387165f9081526012602052604090205460ff16155b80156113325750600b54600a5461132f9190611d51565b43105b600754909150600160a01b900460ff168061136457506001600160a01b0388165f9081526012602052604090205460ff165b8061138657506001600160a01b0387165f9081526012602052604090205460ff165b15611393575f925061142f565b6007546001600160a01b0388811691161480156113ae575080155b156113e7576010546011546113c39190611d51565b6040805180820190915260105481526011546020820152909550859450915061142f565b8061142057600e54600f546113fc9190611d51565b60408051808201909152600e548152600f546020820152909550859450915061142f565b801561142f57600c5494508493505b606461143b8588611e52565b6114459190611e84565b600754909350600160a81b900460ff16801561146f57506007546001600160a01b03898116911614155b1561147e5761147e858361151f565b611492888861148d868a611d3e565b611654565b82156114c45784156114c4575f60646114ab8789611e52565b6114b59190611e84565b90506114c2893083611654565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b600754600160a01b900460ff16610b90576007805460ff60a01b1916600160a01b179055811561164357305f908152602081905260409020546008548110611641576001600854111561157157506008545b5f61157d846002611e52565b90505f818460200151846115919190611e52565b61159b9190611e84565b90505f6115a88285611d3e565b9050476115b48261182a565b5f6115bf8247611d3e565b90505f8760200151866115d29190611d3e565b6115dc9083611e84565b90505f8860200151826115ef9190611e52565b9050801561160157611601868261197a565b88515f90611610846002611e52565b61161a9190611e52565b9050801561163857600d54611638906001600160a01b031682611a29565b50505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b0383166116b85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161075f565b6001600160a01b03821661171a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161075f565b6001600160a01b0383165f90815260208190526040902054818110156117915760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161075f565b61179b8282611d3e565b6001600160a01b038086165f9081526020819052604080822093909355908516815290812080548492906117d0908490611d51565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161181c91815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061185d5761185d611ea3565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156118b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118d89190611eb7565b816001815181106118eb576118eb611ea3565b6001600160a01b0392831660209182029290920101526006546119119130911684610e48565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906119499085905f90869030904290600401611ed2565b5f604051808303815f87803b158015611960575f80fd5b505af1158015611972573d5f803e3d5ffd5b505050505050565b6006546119929030906001600160a01b031684610e48565b60065460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156119fd573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611a229190611f41565b5050505050565b80471015611a795760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161075f565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611ac2576040519150601f19603f3d011682016040523d82523d5f602084013e611ac7565b606091505b5050905080610b1b5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161075f565b5f6020808352835180828501525f5b81811015611b6957858101830151858201604001528201611b4d565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610dfd575f80fd5b5f8060408385031215611bae575f80fd5b8235611bb981611b89565b946020939093013593505050565b8015158114610dfd575f80fd5b5f60208284031215611be4575f80fd5b8135611bef81611bc7565b9392505050565b5f805f60608486031215611c08575f80fd5b8335611c1381611b89565b92506020840135611c2381611b89565b929592945050506040919091013590565b5f60208284031215611c44575f80fd5b5035919050565b5f60208284031215611c5b575f80fd5b8135611bef81611b89565b5f8060408385031215611c77575f80fd5b50508035926020909101359150565b5f8060408385031215611c97575f80fd5b8235611ca281611b89565b91506020830135611cb281611b89565b809150509250929050565b600181811c90821680611cd157607f821691505b602082108103611cef57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561072f5761072f611d2a565b8082018082111561072f5761072f611d2a565b600181815b80851115611d9e57815f1904821115611d8457611d84611d2a565b80851615611d9157918102915b93841c9390800290611d69565b509250929050565b5f82611db45750600161072f565b81611dc057505f61072f565b8160018114611dd65760028114611de057611dfc565b600191505061072f565b60ff841115611df157611df1611d2a565b50506001821b61072f565b5060208310610133831016604e8410600b8410161715611e1f575081810a61072f565b611e298383611d64565b805f1904821115611e3c57611e3c611d2a565b029392505050565b5f611bef60ff841683611da6565b808202811582820484141761072f5761072f611d2a565b5f60208284031215611e79575f80fd5b8151611bef81611bc7565b5f82611e9e57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611ec7575f80fd5b8151611bef81611b89565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611f205784516001600160a01b031683529383019391830191600101611efb565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611f53575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220c84948b27a6e30828d41f50632ee0f234999301315f6ff76d1ba49893a8347ce64736f6c63430008150033

Deployed Bytecode Sourcemap

7999:9717:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1930:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9719:161;;;;;;;;;;-1:-1:-1;9719:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;9719:161:0;1023:187:1;15900:108:0;;;;;;;;;;-1:-1:-1;15900:108:0;;;;;:::i;:::-;;:::i;:::-;;8277:58;;;;;;;;;;;;;;;;;;;1730:25:1;;;1718:2;1703:18;8277:58:0;1584:177:1;2269:108:0;;;;;;;;;;-1:-1:-1;2357:12:0;;2269:108;;9888:448;;;;;;;;;;-1:-1:-1;9888:448:0;;;;;:::i;:::-;;:::i;2162:93::-;;;;;;;;;;-1:-1:-1;2162:93:0;;2245:2;2369:36:1;;2357:2;2342:18;2162:93:0;2227:184:1;10344:248:0;;;;;;;;;;-1:-1:-1;10344:248:0;;;;;:::i;:::-;;:::i;16016:145::-;;;;;;;;;;-1:-1:-1;16016:145:0;;;;;:::i;:::-;;:::i;17282:131::-;;;;;;;;;;-1:-1:-1;17282:131:0;;;;;:::i;:::-;;:::i;8234:34::-;;;;;;;;;;-1:-1:-1;8234:34:0;;;;-1:-1:-1;;;8234:34:0;;;;;;17054:104;;;;;;;;;;-1:-1:-1;17054:104:0;;;;;:::i;:::-;;:::i;8342:48::-;;;;;;;;;;;;;;;;2391:127;;;;;;;;;;-1:-1:-1;2391:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;2492:18:0;2465:7;2492:18;;;;;;;;;;;;2391:127;6662:94;;;;;;;;;;;;;:::i;8764:33::-;;;;;;;;;;-1:-1:-1;8764:33:0;;;;;;;;;;;;;3027:25:1;;;3083:2;3068:18;;3061:34;;;;3000:18;8764:33:0;2853:248:1;17166:108:0;;;;;;;;;;-1:-1:-1;17166:108:0;;;;;:::i;:::-;;:::i;8591:79::-;;;;;;;;;;;;8628:42;8591:79;;;;;-1:-1:-1;;;;;3270:32:1;;;3252:51;;3240:2;3225:18;8591:79:0;3106:203:1;16514:224:0;;;;;;;;;;;;;:::i;17541:135::-;;;;;;;;;;-1:-1:-1;17541:135:0;;;;;:::i;:::-;;:::i;6439:87::-;;;;;;;;;;-1:-1:-1;6512:6:0;;-1:-1:-1;;;;;6512:6:0;6439:87;;2044:104;;;;;;;;;;;;;:::i;17421:112::-;;;;;;;;;;-1:-1:-1;17421:112:0;;;;;:::i;:::-;;:::i;10600:410::-;;;;;;;;;;-1:-1:-1;10600:410:0;;;;;:::i;:::-;;:::i;8116:19::-;;;;;;;;;;-1:-1:-1;8116:19:0;;;;-1:-1:-1;;;;;8116:19:0;;;11018:165;;;;;;;;;;-1:-1:-1;11018:165:0;;;;;:::i;:::-;;:::i;16931:115::-;;;;;;;;;;-1:-1:-1;16931:115:0;;;;;:::i;:::-;;:::i;8850:41::-;;;;;;;;;;-1:-1:-1;8850:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16169:164;;;;;;;;;;-1:-1:-1;16169:164:0;;;;;:::i;:::-;;:::i;2762:201::-;;;;;;;;;;-1:-1:-1;2762:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;2928:18:0;;;2896:7;2928:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2762:201;16746:177;;;;;;;;;;-1:-1:-1;16746:177:0;;;;;:::i;:::-;;:::i;6764:192::-;;;;;;;;;;-1:-1:-1;6764:192:0;;;;;:::i;:::-;;:::i;16341:166::-;;;;;;;;;;-1:-1:-1;16341:166:0;;;;;:::i;:::-;;:::i;8804:37::-;;;;;;;;;;-1:-1:-1;8804:37:0;;;;;;;;;8088:21;;;;;;;;;;-1:-1:-1;8088:21:0;;;;-1:-1:-1;;;;;8088:21:0;;;1930:100;1984:13;2017:5;2010:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1930:100;:::o;9719:161::-;9794:4;9811:39;288:10;9834:7;9843:6;9811:8;:39::i;:::-;-1:-1:-1;9868:4:0;9719:161;;;;;:::o;15900:108::-;6512:6;;-1:-1:-1;;;;;6512:6:0;288:10;6574:23;6566:68;;;;-1:-1:-1;;;6566:68:0;;;;;;;:::i;:::-;;;;;;;;;15974:18:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;15974:26:0::1;-1:-1:-1::0;;;;15974:26:0;;::::1;::::0;;;::::1;::::0;;15900:108::o;9888:448::-;10020:4;10037:36;10047:6;10055:9;10066:6;10037:9;:36::i;:::-;-1:-1:-1;;;;;10113:19:0;;10086:24;10113:19;;;:11;:19;;;;;;;;288:10;10113:33;;;;;;;;10165:26;;;;10157:79;;;;-1:-1:-1;;;10157:79:0;;5131:2:1;10157:79:0;;;5113:21:1;5170:2;5150:18;;;5143:30;5209:34;5189:18;;;5182:62;-1:-1:-1;;;5260:18:1;;;5253:38;5308:19;;10157:79:0;4929:404:1;10157:79:0;10247:57;10256:6;288:10;10278:25;10297:6;10278:16;:25;:::i;:::-;10247:8;:57::i;:::-;-1:-1:-1;10324:4:0;;9888:448;-1:-1:-1;;;;9888:448:0:o;10344:248::-;288:10;10460:4;10514:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10514:34:0;;;;;;;;;;10460:4;;10482:80;;10505:7;;10514:47;;10551:10;;10514:47;:::i;16016:145::-;6512:6;;-1:-1:-1;;;;;6512:6:0;288:10;6574:23;6566:68;;;;-1:-1:-1;;;6566:68:0;;;;;;;:::i;:::-;16139:14:::1;2245:2:::0;16139::::1;:14;:::i;:::-;16126:27;::::0;:10;:27:::1;:::i;:::-;16100:23;:53:::0;-1:-1:-1;16016:145:0:o;17282:131::-;6512:6;;-1:-1:-1;;;;;6512:6:0;288:10;6574:23;6566:68;;;;-1:-1:-1;;;6566:68:0;;;;;;;:::i;:::-;17390:14:::1;2245:2:::0;17390::::1;:14;:::i;:::-;17378:26;::::0;:9;:26:::1;:::i;:::-;17361:14;:43:::0;-1:-1:-1;17282:131:0:o;17054:104::-;6512:6;;-1:-1:-1;;;;;6512:6:0;288:10;6574:23;6566:68;;;;-1:-1:-1;;;6566:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17124:19:0::1;;::::0;;;:9:::1;:19;::::0;;;;:26;;-1:-1:-1;;17124:26:0::1;17146:4;17124:26;::::0;;17054:104::o;6662:94::-;6512:6;;-1:-1:-1;;;;;6512:6:0;288:10;6574:23;6566:68;;;;-1:-1:-1;;;6566:68:0;;;;;;;:::i;:::-;6727:21:::1;6745:1;6727:9;:21::i;:::-;6662:94::o:0;17166:108::-;6512:6;;-1:-1:-1;;;;;6512:6:0;288:10;6574:23;6566:68;;;;-1:-1:-1;;;6566:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17239:19:0::1;17261:5;17239:19:::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;17239:27:0::1;::::0;;17166:108::o;16514:224::-;6512:6;;-1:-1:-1;;;;;6512:6:0;288:10;6574:23;6566:68;;;;-1:-1:-1;;;6566:68:0;;;;;;;:::i;:::-;16578:14:::1;::::0;-1:-1:-1;;;16578:14:0;::::1;;;16577:15;16569:54;;;::::0;-1:-1:-1;;;16569:54:0;;7491:2:1;16569:54:0::1;::::0;::::1;7473:21:1::0;7530:2;7510:18;;;7503:30;7569:28;7549:18;;;7542:56;7615:18;;16569:54:0::1;7289:350:1::0;16569:54:0::1;16634:14;:21:::0;;-1:-1:-1;;;;16666:25:0;-1:-1:-1;;;16666:25:0;;;16718:12:::1;16702:13;:28:::0;16514:224::o;17541:135::-;6512:6;;-1:-1:-1;;;;;6512:6:0;288:10;6574:23;6566:68;;;;-1:-1:-1;;;6566:68:0;;;;;;;:::i;:::-;17633:8:::1;-1:-1:-1::0;;;;;17626:25:0::1;;17652:7;6512:6:::0;;-1:-1:-1;;;;;6512:6:0;;6439:87;17652:7:::1;17626:42;::::0;-1:-1:-1;;;;;;17626:42:0::1;::::0;;;;;;-1:-1:-1;;;;;7836:32:1;;;17626:42:0::1;::::0;::::1;7818:51:1::0;7885:18;;;7878:34;;;7791:18;;17626:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17541:135:::0;;:::o;2044:104::-;2100:13;2133:7;2126:14;;;;;:::i;17421:112::-;6512:6;;-1:-1:-1;;;;;6512:6:0;288:10;6574:23;6566:68;;;;-1:-1:-1;;;6566:68:0;;;;;;;:::i;:::-;6512:6;;17489:36:::1;::::0;-1:-1:-1;;;;;6512:6:0;;;;17489:36;::::1;;;::::0;17515:9;;17489:36:::1;::::0;;;17515:9;6512:6;17489:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;17421:112:::0;:::o;10600:410::-;288:10;10721:4;10770:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10770:34:0;;;;;;;;;;10823:35;;;;10815:85;;;;-1:-1:-1;;;10815:85:0;;8375:2:1;10815:85:0;;;8357:21:1;8414:2;8394:18;;;8387:30;8453:34;8433:18;;;8426:62;-1:-1:-1;;;8504:18:1;;;8497:35;8549:19;;10815:85:0;8173:401:1;10815:85:0;10911:67;288:10;10934:7;10943:34;10962:15;10943:16;:34;:::i;10911:67::-;-1:-1:-1;10998:4:0;;10600:410;-1:-1:-1;;;10600:410:0:o;11018:165::-;11096:4;11113:40;11123:10;11135:9;11146:6;11113:9;:40::i;16931:115::-;6512:6;;-1:-1:-1;;;;;6512:6:0;288:10;6574:23;6566:68;;;;-1:-1:-1;;;6566:68:0;;;;;;;:::i;:::-;17011:15:::1;:27:::0;;-1:-1:-1;;;;;;17011:27:0::1;-1:-1:-1::0;;;;;17011:27:0;;;::::1;::::0;;;::::1;::::0;;16931:115::o;16169:164::-;6512:6;;-1:-1:-1;;;;;6512:6:0;288:10;6574:23;6566:68;;;;-1:-1:-1;;;6566:68:0;;;;;;;:::i;:::-;16296:29:::1;::::0;;;;::::1;::::0;;;;;;::::1;;::::0;;;16288:5:::1;:37:::0;;;;;;16169:164::o;16746:177::-;6512:6;;-1:-1:-1;;;;;6512:6:0;288:10;6574:23;6566:68;;;;-1:-1:-1;;;6566:68:0;;;;;;;:::i;:::-;16828:14:::1;::::0;-1:-1:-1;;;16828:14:0;::::1;;;16827:15;16819:65;;;::::0;-1:-1:-1;;;16819:65:0;;8781:2:1;16819:65:0::1;::::0;::::1;8763:21:1::0;8820:2;8800:18;;;8793:30;8859:34;8839:18;;;8832:62;-1:-1:-1;;;8910:18:1;;;8903:35;8955:19;;16819:65:0::1;8579:401:1::0;16819:65:0::1;16895:8;:20:::0;16746:177::o;6764:192::-;6512:6;;-1:-1:-1;;;;;6512:6:0;288:10;6574:23;6566:68;;;;-1:-1:-1;;;6566:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6853:22:0;::::1;6845:73;;;::::0;-1:-1:-1;;;6845:73:0;;9187:2:1;6845:73:0::1;::::0;::::1;9169:21:1::0;9226:2;9206:18;;;9199:30;9265:34;9245:18;;;9238:62;-1:-1:-1;;;9316:18:1;;;9309:36;9362:19;;6845:73:0::1;8985:402:1::0;6845:73:0::1;6929:19;6939:8;6929:9;:19::i;:::-;6764:192:::0;:::o;16341:166::-;6512:6;;-1:-1:-1;;;;;6512:6:0;288:10;6574:23;6566:68;;;;-1:-1:-1;;;6566:68:0;;;;;;;:::i;:::-;16470:29:::1;::::0;;;;::::1;::::0;;;;;;::::1;;::::0;;;16458:9:::1;:41:::0;;;;;;16341:166::o;5333:380::-;-1:-1:-1;;;;;5469:19:0;;5461:68;;;;-1:-1:-1;;;5461:68:0;;9594:2:1;5461:68:0;;;9576:21:1;9633:2;9613:18;;;9606:30;9672:34;9652:18;;;9645:62;-1:-1:-1;;;9723:18:1;;;9716:34;9767:19;;5461:68:0;9392:400:1;5461:68:0;-1:-1:-1;;;;;5548:21:0;;5540:68;;;;-1:-1:-1;;;5540:68:0;;9999:2:1;5540:68:0;;;9981:21:1;10038:2;10018:18;;;10011:30;10077:34;10057:18;;;10050:62;-1:-1:-1;;;10128:18:1;;;10121:32;10170:19;;5540:68:0;9797:398:1;5540:68:0;-1:-1:-1;;;;;5621:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5673:32;;1730:25:1;;;5673:32:0;;1703:18:1;5673:32:0;;;;;;;5333:380;;;:::o;11191:2459::-;11341:1;11332:6;:10;11324:64;;;;-1:-1:-1;;;11324:64:0;;10402:2:1;11324:64:0;;;10384:21:1;10441:2;10421:18;;;10414:30;10480:34;10460:18;;;10453:62;-1:-1:-1;;;10531:18:1;;;10524:39;10580:19;;11324:64:0;10200:405:1;11324:64:0;-1:-1:-1;;;;;11408:20:0;;;;;;:12;:20;;;;;;;;11407:21;:49;;;;-1:-1:-1;;;;;;11433:23:0;;;;;;:12;:23;;;;;;;;11432:24;11407:49;11399:110;;;;-1:-1:-1;;;11399:110:0;;10812:2:1;11399:110:0;;;10794:21:1;10851:2;10831:18;;;10824:30;10890:27;10870:18;;;10863:55;10935:18;;11399:110:0;10610:349:1;11399:110:0;-1:-1:-1;;;;;11527:17:0;;;;;;:9;:17;;;;;;;;11526:18;:43;;;;-1:-1:-1;;;;;;11549:20:0;;;;;;:9;:20;;;;;;;;11548:21;11526:43;11522:122;;;11594:14;;-1:-1:-1;;;11594:14:0;;;;11586:46;;;;-1:-1:-1;;;11586:46:0;;11166:2:1;11586:46:0;;;11148:21:1;11205:2;11185:18;;;11178:30;-1:-1:-1;;;11224:18:1;;;11217:49;11283:18;;11586:46:0;10964:343:1;11586:46:0;11670:4;;-1:-1:-1;;;;;11660:14:0;;;11670:4;;11660:14;:39;;;;-1:-1:-1;;;;;;11679:20:0;;;;;;:9;:20;;;;;;;;11678:21;11660:39;:59;;;;-1:-1:-1;11704:15:0;;-1:-1:-1;;;11704:15:0;;;;11703:16;11660:59;11656:215;;;11777:14;;11767:6;11744:20;11754:9;-1:-1:-1;;;;;2492:18:0;2465:7;2492:18;;;;;;;;;;;;2391:127;11744:20;:29;;;;:::i;:::-;:47;;11736:123;;;;-1:-1:-1;;;11736:123:0;;11514:2:1;11736:123:0;;;11496:21:1;;;11533:18;;;11526:30;11592:34;11572:18;;;11565:62;11644:18;;11736:123:0;11312:356:1;11736:123:0;11897:4;;-1:-1:-1;;;;;11887:14:0;;;11897:4;;11887:14;;;;:39;;-1:-1:-1;;;;;;11906:20:0;;;;;;:9;:20;;;;;;;;11905:21;11887:39;:61;;;;-1:-1:-1;;;;;;11931:17:0;;;;;;:9;:17;;;;;;;;11930:18;11887:61;:81;;;;-1:-1:-1;11953:15:0;;-1:-1:-1;;;11953:15:0;;;;11952:16;11887:81;11883:315;;;12015:4;;-1:-1:-1;;;;;12002:17:0;;;12015:4;;12002:17;11998:189;;12081:14;;12071:6;12048:20;12058:9;-1:-1:-1;;;;;2492:18:0;2465:7;2492:18;;;;;;;;;;;;2391:127;12048:20;:29;;;;:::i;:::-;:47;;12040:131;;;;-1:-1:-1;;;12040:131:0;;11514:2:1;12040:131:0;;;11496:21:1;;;11533:18;;;11526:30;11592:34;11572:18;;;11565:62;11644:18;;12040:131:0;11312:356:1;12040:131:0;12210:15;12236:14;12261:11;12283:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;12283:25:0;-1:-1:-1;;;;;12342:17:0;;12321;12342;;;:9;:17;;;;;;;;12341:18;:56;;;;-1:-1:-1;;;;;;12377:20:0;;;;;;:9;:20;;;;;;;;12376:21;12341:56;:112;;;;;12445:8;;12429:13;;:24;;;;:::i;:::-;12414:12;:39;12341:112;12541:15;;12321:132;;-1:-1:-1;;;;12541:15:0;;;;;:36;;-1:-1:-1;;;;;;12560:17:0;;;;;;:9;:17;;;;;;;;12541:36;:60;;;-1:-1:-1;;;;;;12581:20:0;;;;;;:9;:20;;;;;;;;12541:60;12537:655;;;12622:1;12616:7;;12537:655;;;12687:4;;-1:-1:-1;;;;;12674:17:0;;;12687:4;;12674:17;:34;;;;;12696:12;12695:13;12674:34;12670:522;;;12791:9;:19;12752;;:58;;12791:19;12752:58;:::i;:::-;12857:24;;;;;;;;;12872:9;12857:24;;;;;;;;;12725:85;;-1:-1:-1;12725:85:0;;-1:-1:-1;12857:24:0;-1:-1:-1;12670:522:0;;;12904:12;12899:293;;12995:5;:15;12960;;:50;;12995:15;12960:50;:::i;:::-;13057:20;;;;;;;;;13072:5;13057:20;;;;;;;;;12933:77;;-1:-1:-1;12933:77:0;;-1:-1:-1;13057:20:0;-1:-1:-1;12899:293:0;;;13099:12;13095:97;;;13138:9;;;-1:-1:-1;13138:9:0;;-1:-1:-1;13095:97:0;13230:3;13211:15;13220:6;13211;:15;:::i;:::-;13210:23;;;;:::i;:::-;13250:18;;13204:29;;-1:-1:-1;;;;13250:18:0;;;;:36;;;;-1:-1:-1;13282:4:0;;-1:-1:-1;;;;;13272:14:0;;;13282:4;;13272:14;;13250:36;13246:76;;;13288:34;13300:7;13309:12;13288:11;:34::i;:::-;13335:48;13351:6;13359:9;13370:12;13379:3;13370:6;:12;:::i;:::-;13335:15;:48::i;:::-;13398:7;;13394:249;;13470:11;;13466:164;;13502:17;13543:3;13523:16;13532:7;13523:6;:16;:::i;:::-;13522:24;;;;:::i;:::-;13502:44;;13565:49;13581:6;13597:4;13604:9;13565:15;:49::i;:::-;13483:147;13466:164;11313:2337;;;;;11191:2459;;;:::o;6964:173::-;7039:6;;;-1:-1:-1;;;;;7056:17:0;;;-1:-1:-1;;;;;;7056:17:0;;;;;;;7089:40;;7039:6;;;7056:17;7039:6;;7089:40;;7020:16;;7089:40;7009:128;6964:173;:::o;13658:1367::-;8991:15;;-1:-1:-1;;;8991:15:0;;;;8986:125;;9023:15;:22;;-1:-1:-1;;;;9023:22:0;-1:-1:-1;;;9023:22:0;;;13744:49;;13775:7:::1;13744:49;13850:4;13806:23;2492:18:::0;;;;;;;;;;;13890:23:::1;::::0;13871:42;::::1;13867:1151;;13960:1;13934:23;;:27;13930:109;;;-1:-1:-1::0;14000:23:0::1;::::0;13930:109:::1;14055:19;14077:11;:7:::0;14087:1:::1;14077:11;:::i;:::-;14055:33;;14103:32;14197:11;14157:9;:19;;;14139:15;:37;;;;:::i;:::-;14138:70;;;;:::i;:::-;14103:105:::0;-1:-1:-1;14223:14:0::1;14240:42;14103:105:::0;14240:15;:42:::1;:::i;:::-;14223:59:::0;-1:-1:-1;14324:21:0::1;14362:24;14223:59:::0;14362:16:::1;:24::i;:::-;14403:20;14426:38;14450:14:::0;14426:21:::1;:38;:::i;:::-;14403:61;;14479:19;14531:9;:19;;;14517:11;:33;;;;:::i;:::-;14501:50;::::0;:12;:50:::1;:::i;:::-;14479:72;;14566:29;14612:9;:19;;;14598:11;:33;;;;:::i;:::-;14566:65:::0;-1:-1:-1;14652:25:0;;14648:161:::1;;14732:61;14745:24;14771:21;14732:12;:61::i;:::-;14866:19:::0;;14825:20:::1;::::0;14848:15:::1;:11:::0;14862:1:::1;14848:15;:::i;:::-;:37;;;;:::i;:::-;14825:60:::0;-1:-1:-1;14904:16:0;;14900:105:::1;;14949:15;::::0;14941:48:::1;::::0;-1:-1:-1;;;;;14949:15:0::1;14976:12:::0;14941:34:::1;:48::i;:::-;13915:1103;;;;;;;;13867:1151;13738:1287;9060:1;9076:15:::0;:23;;-1:-1:-1;;;;9076:23:0;;;13658:1367;;:::o;4314:638::-;-1:-1:-1;;;;;4454:20:0;;4446:70;;;;-1:-1:-1;;;4446:70:0;;12097:2:1;4446:70:0;;;12079:21:1;12136:2;12116:18;;;12109:30;12175:34;12155:18;;;12148:62;-1:-1:-1;;;12226:18:1;;;12219:35;12271:19;;4446:70:0;11895:401:1;4446:70:0;-1:-1:-1;;;;;4535:23:0;;4527:71;;;;-1:-1:-1;;;4527:71:0;;12503:2:1;4527:71:0;;;12485:21:1;12542:2;12522:18;;;12515:30;12581:34;12561:18;;;12554:62;-1:-1:-1;;;12632:18:1;;;12625:33;12675:19;;4527:71:0;12301:399:1;4527:71:0;-1:-1:-1;;;;;4695:17:0;;4671:21;4695:17;;;;;;;;;;;4731:23;;;;4723:74;;;;-1:-1:-1;;;4723:74:0;;12907:2:1;4723:74:0;;;12889:21:1;12946:2;12926:18;;;12919:30;12985:34;12965:18;;;12958:62;-1:-1:-1;;;13036:18:1;;;13029:36;13082:19;;4723:74:0;12705:402:1;4723:74:0;4828:22;4844:6;4828:13;:22;:::i;:::-;-1:-1:-1;;;;;4808:17:0;;;:9;:17;;;;;;;;;;;:42;;;;4861:20;;;;;;;;:30;;4885:6;;4808:9;4861:30;;4885:6;;4861:30;:::i;:::-;;;;;;;;4926:9;-1:-1:-1;;;;;4909:35:0;4918:6;-1:-1:-1;;;;;4909:35:0;;4937:6;4909:35;;;;1730:25:1;;1718:2;1703:18;;1584:177;4909:35:0;;;;;;;;4435:517;4314:638;;;:::o;15033:448::-;15123:16;;;15137:1;15123:16;;;;;;;;15099:21;;15123:16;;;;;;;;;;-1:-1:-1;15123:16:0;15099:40;;15168:4;15150;15155:1;15150:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15150:23:0;;;:7;;;;;;;;;;:23;;;;15194:6;;:13;;;-1:-1:-1;;;15194:13:0;;;;:6;;;;;:11;;:13;;;;;15150:7;;15194:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15184:4;15189:1;15184:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15184:23:0;;;:7;;;;;;;;;:23;15252:6;;15220:53;;15237:4;;15252:6;15261:11;15220:8;:53::i;:::-;15286:6;;:187;;-1:-1:-1;;;15286:187:0;;-1:-1:-1;;;;;15286:6:0;;;;:57;;:187;;15358:11;;15286:6;;15400:4;;15427;;15447:15;;15286:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15088:393;15033:448;:::o;15489:403::-;15602:6;;15570:53;;15587:4;;-1:-1:-1;;;;;15602:6:0;15611:11;15570:8;:53::i;:::-;15636:6;;:248;;-1:-1:-1;;;15636:248:0;;15701:4;15636:248;;;14958:34:1;15008:18;;;15001:34;;;15636:6:0;15051:18:1;;;15044:34;;;15094:18;;;15087:34;8628:42:0;15137:19:1;;;15130:44;15858:15:0;15190:19:1;;;15183:35;-1:-1:-1;;;;;15636:6:0;;;;:22;;15667:9;;14892:19:1;;15636:248:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15489:403;;:::o;5882:319::-;5997:6;5972:21;:31;;5964:73;;;;-1:-1:-1;;;5964:73:0;;15742:2:1;5964:73:0;;;15724:21:1;15781:2;15761:18;;;15754:30;15820:31;15800:18;;;15793:59;15869:18;;5964:73:0;15540:353:1;5964:73:0;6051:12;6069:9;-1:-1:-1;;;;;6069:14:0;6092:6;6069:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6050:54;;;6123:7;6115:78;;;;-1:-1:-1;;;6115:78:0;;16310:2:1;6115:78:0;;;16292:21:1;16349:2;16329:18;;;16322:30;16388:34;16368:18;;;16361:62;16459:28;16439:18;;;16432:56;16505:19;;6115:78:0;16108:422:1;14:548;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;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:118::-;1301:5;1294:13;1287:21;1280:5;1277:32;1267:60;;1323:1;1320;1313:12;1338:241;1394:6;1447:2;1435:9;1426:7;1422:23;1418:32;1415:52;;;1463:1;1460;1453:12;1415:52;1502:9;1489:23;1521:28;1543:5;1521:28;:::i;:::-;1568:5;1338:241;-1:-1:-1;;;1338:241:1:o;1766:456::-;1843:6;1851;1859;1912:2;1900:9;1891:7;1887:23;1883:32;1880:52;;;1928:1;1925;1918:12;1880:52;1967:9;1954:23;1986:31;2011:5;1986:31;:::i;:::-;2036:5;-1:-1:-1;2093:2:1;2078:18;;2065:32;2106:33;2065:32;2106:33;:::i;:::-;1766:456;;2158:7;;-1:-1:-1;;;2212:2:1;2197:18;;;;2184:32;;1766:456::o;2416:180::-;2475:6;2528:2;2516:9;2507:7;2503:23;2499:32;2496:52;;;2544:1;2541;2534:12;2496:52;-1:-1:-1;2567:23:1;;2416:180;-1:-1:-1;2416:180:1:o;2601:247::-;2660:6;2713:2;2701:9;2692:7;2688:23;2684:32;2681:52;;;2729:1;2726;2719:12;2681:52;2768:9;2755:23;2787:31;2812:5;2787:31;:::i;3314:248::-;3382:6;3390;3443:2;3431:9;3422:7;3418:23;3414:32;3411:52;;;3459:1;3456;3449:12;3411:52;-1:-1:-1;;3482:23:1;;;3552:2;3537:18;;;3524:32;;-1:-1:-1;3314:248:1:o;3567:388::-;3635:6;3643;3696:2;3684:9;3675:7;3671:23;3667:32;3664:52;;;3712:1;3709;3702:12;3664:52;3751:9;3738:23;3770:31;3795:5;3770:31;:::i;:::-;3820:5;-1:-1:-1;3877:2:1;3862:18;;3849:32;3890:33;3849:32;3890:33;:::i;:::-;3942:7;3932:17;;;3567:388;;;;;:::o;4183:380::-;4262:1;4258:12;;;;4305;;;4326:61;;4380:4;4372:6;4368:17;4358:27;;4326:61;4433:2;4425:6;4422:14;4402:18;4399:38;4396:161;;4479:10;4474:3;4470:20;4467:1;4460:31;4514:4;4511:1;4504:15;4542:4;4539:1;4532:15;4396:161;;4183:380;;;:::o;4568:356::-;4770:2;4752:21;;;4789:18;;;4782:30;4848:34;4843:2;4828:18;;4821:62;4915:2;4900:18;;4568:356::o;5338:127::-;5399:10;5394:3;5390:20;5387:1;5380:31;5430:4;5427:1;5420:15;5454:4;5451:1;5444:15;5470:128;5537:9;;;5558:11;;;5555:37;;;5572:18;;:::i;5603:125::-;5668:9;;;5689:10;;;5686:36;;;5702:18;;:::i;5733:422::-;5822:1;5865:5;5822:1;5879:270;5900:7;5890:8;5887:21;5879:270;;;5959:4;5955:1;5951:6;5947:17;5941:4;5938:27;5935:53;;;5968:18;;:::i;:::-;6018:7;6008:8;6004:22;6001:55;;;6038:16;;;;6001:55;6117:22;;;;6077:15;;;;5879:270;;;5883:3;5733:422;;;;;:::o;6160:806::-;6209:5;6239:8;6229:80;;-1:-1:-1;6280:1:1;6294:5;;6229:80;6328:4;6318:76;;-1:-1:-1;6365:1:1;6379:5;;6318:76;6410:4;6428:1;6423:59;;;;6496:1;6491:130;;;;6403:218;;6423:59;6453:1;6444:10;;6467:5;;;6491:130;6528:3;6518:8;6515:17;6512:43;;;6535:18;;:::i;:::-;-1:-1:-1;;6591:1:1;6577:16;;6606:5;;6403:218;;6705:2;6695:8;6692:16;6686:3;6680:4;6677:13;6673:36;6667:2;6657:8;6654:16;6649:2;6643:4;6640:12;6636:35;6633:77;6630:159;;;-1:-1:-1;6742:19:1;;;6774:5;;6630:159;6821:34;6846:8;6840:4;6821:34;:::i;:::-;6891:6;6887:1;6883:6;6879:19;6870:7;6867:32;6864:58;;;6902:18;;:::i;:::-;6940:20;;6160:806;-1:-1:-1;;;6160:806:1:o;6971:140::-;7029:5;7058:47;7099:4;7089:8;7085:19;7079:4;7058:47;:::i;7116:168::-;7189:9;;;7220;;7237:15;;;7231:22;;7217:37;7207:71;;7258:18;;:::i;7923:245::-;7990:6;8043:2;8031:9;8022:7;8018:23;8014:32;8011:52;;;8059:1;8056;8049:12;8011:52;8091:9;8085:16;8110:28;8132:5;8110:28;:::i;11673:217::-;11713:1;11739;11729:132;;11783:10;11778:3;11774:20;11771:1;11764:31;11818:4;11815:1;11808:15;11846:4;11843:1;11836:15;11729:132;-1:-1:-1;11875:9:1;;11673:217::o;13244:127::-;13305:10;13300:3;13296:20;13293:1;13286:31;13336:4;13333:1;13326:15;13360:4;13357:1;13350:15;13376:251;13446:6;13499:2;13487:9;13478:7;13474:23;13470:32;13467:52;;;13515:1;13512;13505:12;13467:52;13547:9;13541:16;13566:31;13591:5;13566:31;:::i;13632:980::-;13894:4;13942:3;13931:9;13927:19;13973:6;13962:9;13955:25;13999:2;14037:6;14032:2;14021:9;14017:18;14010:34;14080:3;14075:2;14064:9;14060:18;14053:31;14104:6;14139;14133:13;14170:6;14162;14155:22;14208:3;14197:9;14193:19;14186:26;;14247:2;14239:6;14235:15;14221:29;;14268:1;14278:195;14292:6;14289:1;14286:13;14278:195;;;14357:13;;-1:-1:-1;;;;;14353:39:1;14341:52;;14448:15;;;;14413:12;;;;14389:1;14307:9;14278:195;;;-1:-1:-1;;;;;;;14529:32:1;;;;14524:2;14509:18;;14502:60;-1:-1:-1;;;14593:3:1;14578:19;14571:35;14490:3;13632:980;-1:-1:-1;;;13632:980:1:o;15229:306::-;15317:6;15325;15333;15386:2;15374:9;15365:7;15361:23;15357:32;15354:52;;;15402:1;15399;15392:12;15354:52;15431:9;15425:16;15415:26;;15481:2;15470:9;15466:18;15460:25;15450:35;;15525:2;15514:9;15510:18;15504:25;15494:35;;15229:306;;;;;:::o

Swarm Source

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