ETH Price: $3,102.98 (-0.02%)

Token

All Time High (ATH)
 

Overview

Max Total Supply

100,000,000 ATH

Holders

71

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
AllTimeHigh

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-19
*/

// All Time High, ATH
// SPDX-License-Identifier: MIT

pragma solidity 0.8.12;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; 
        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 _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

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

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;

        emit Transfer(account, address(0), 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,
        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 AllTimeHigh is ERC20, Ownable{ 
    using Address for address payable;
    
    IRouter public router;
    address public pair;
    
    bool private swapping;
    bool public swapEnabled;
    bool public tradingEnabled;

    uint256 public genesis_block;
    uint256 public deadblocks = 0;
    
    uint256 public swapThreshold = 10_000 * 10e18;
    uint256 public maxTxAmount = 2_000_000 * 10**18; 
    uint256 public maxWalletAmount = 2_000_000 * 10**18; 
    
    address public marketingWallet = 0x14d31e8D059C99229AA3Db8A4B86563A769e5363; 
    address public devWallet = 0x14d31e8D059C99229AA3Db8A4B86563A769e5363;
    
    struct Taxes {
        uint256 marketing;
        uint256 liquidity; 
        uint256 dev;
    }
    
    Taxes public taxes = Taxes(24,0,2); 
    Taxes public sellTaxes = Taxes(34,0,5); 
    uint256 public totTax = 26; 
    uint256 public totSellTax = 39; 
    
    mapping (address => bool) public excludedFromFees;
    mapping (address => bool) private isBot;
    
    modifier inSwap() {
        if (!swapping) {
            swapping = true;
            _;
            swapping = false;
        }
    }
        
    constructor() ERC20("All Time High", "ATH") {
        _mint(msg.sender, 1e8 * 10 ** decimals());
        excludedFromFees[msg.sender] = true;

        excludedFromFees[address(this)] = true;
        excludedFromFees[marketingWallet] = true;
        excludedFromFees[devWallet] = true;
    }

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

        router = _router;
        pair = _pair;
    }
    
    function _transfer(address sender, address recipient, uint256 amount) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!isBot[sender] && !isBot[recipient], "You can't transfer tokens");
                
        
        if(!excludedFromFees[sender] && !excludedFromFees[recipient] && !swapping){
            require(tradingEnabled, "Trading not active yet");
            if(genesis_block + deadblocks > block.number){
                if(recipient != pair) isBot[recipient] = true;
                if(sender != pair) isBot[sender] = true;
            }
            require(amount <= maxTxAmount, "You are exceeding maxTxAmount");
            if(recipient != pair){
                require(balanceOf(recipient) + amount <= maxWalletAmount, "You are exceeding maxWalletAmount");
            }
        }

        uint256 fee;
        
  
        if (swapping || excludedFromFees[sender] || excludedFromFees[recipient]) fee = 0;
        
 
        else{
            if(recipient == pair) fee = amount * totSellTax / 100;
            else fee = amount * totTax / 100;
        }
        

        if (swapEnabled && !swapping && sender != pair && fee > 0) swapForFees();

        super._transfer(sender, recipient, amount - fee);
        if(fee > 0) super._transfer(sender, address(this) ,fee);

    }

    function swapForFees() private inSwap {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= swapThreshold) {

                    uint256 denominator = totSellTax * 2;
            uint256 tokensToAddLiquidityWith = contractBalance * sellTaxes.liquidity / denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;
    
            uint256 initialBalance = address(this).balance;
    
            swapTokensForETH(toSwap);
    
            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance= deltaBalance / (denominator - sellTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * sellTaxes.liquidity;
    
            if(ethToAddLiquidityWith > 0){
                // Add liquidity to Uniswap
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }
    
            uint256 marketingAmt = unitBalance * 2 * sellTaxes.marketing;
            if(marketingAmt > 0){
                payable(marketingWallet).sendValue(marketingAmt);
            }
            
            uint256 devAmt = unitBalance * 2 * sellTaxes.dev;
            if(devAmt > 0){
                payable(devWallet).sendValue(devAmt);
            }
        }
    }


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

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);

    }

    function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{value: bnbAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            devWallet,
            block.timestamp
        );
    }

    function setSwapEnabled(bool state) external onlyOwner {
        swapEnabled = state;
    }

    function setSwapThreshold(uint256 new_amount) external onlyOwner {
        swapThreshold = new_amount;
    }

    function enableTrading(uint256 numOfDeadBlocks) external onlyOwner{
        require(!tradingEnabled, "Trading already active");
        tradingEnabled = true;
        swapEnabled = true;
        genesis_block = block.number;
        deadblocks = numOfDeadBlocks;
    }

    function setBuyTaxes(uint256 _marketing, uint256 _liquidity, uint256 _dev) external onlyOwner{
        taxes = Taxes(_marketing, _liquidity, _dev);
        totTax = _marketing + _liquidity + _dev;
    }

    function setSellTaxes(uint256 _marketing, uint256 _liquidity, uint256 _dev) external onlyOwner{
        sellTaxes = Taxes(_marketing, _liquidity, _dev);
        totSellTax = _marketing + _liquidity + _dev;
    }
    
    function updateDBMarketingWallet(address newWallet) external onlyOwner{
        marketingWallet = newWallet;
    }
    
    function updateDBTeamWallet(address newWallet) external onlyOwner{
        devWallet = newWallet;
    }

    function updateRouterAndPair(IRouter _router, address _pair) external onlyOwner{
        router = _router;
        pair = _pair;
    }
    
        function addBots(address[] memory isBot_) public onlyOwner {
        for (uint i = 0; i < isBot_.length; i++) {
            isBot[isBot_[i]] = true;
        }
        }
    function updateExcludedFromFees(address _address, bool state) external onlyOwner {
        excludedFromFees[_address] = state;
    }
    
    function updateMaxTxAmount(uint256 amount) external onlyOwner{
        maxTxAmount = amount * 10**18;
    }
    
    function updateMaxWalletAmount(uint256 amount) external onlyOwner{
        maxWalletAmount = amount * 10**18;
    }

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

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

    function manualSwap(uint256 amount, uint256 devPercentage, uint256 marketingPercentage) external onlyOwner{
        uint256 initBalance = address(this).balance;
        swapTokensForETH(amount);
        uint256 newBalance = address(this).balance - initBalance;
        if(marketingPercentage > 0) payable(marketingWallet).sendValue(newBalance * marketingPercentage / (devPercentage + marketingPercentage));
        if(devPercentage > 0) payable(devWallet).sendValue(newBalance * devPercentage / (devPercentage + marketingPercentage));
    }

    // fallbacks
    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":"isBot_","type":"address[]"}],"name":"addBots","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":"createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadblocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"numOfDeadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"devPercentage","type":"uint256"},{"internalType":"uint256","name":"marketingPercentage","type":"uint256"}],"name":"manualSwap","outputs":[],"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":"maxWalletAmount","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":"tokenAddress","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"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totTax","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":"address","name":"newWallet","type":"address"}],"name":"updateDBMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDBTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IRouter","name":"_router","type":"address"},{"internalType":"address","name":"_pair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6000600981905569152d02c7e14af6800000600a556a01a784379d99db42000000600b819055600c55600d80547314d31e8d059c99229aa3db8a4b86563a769e53636001600160a01b03199182168117909255600e805490911690911790556018608081905260a0829052600260c0819052600f919091556010829055601155610140604052602260e08190526101008290526005610120819052601291909155601391909155601455601a6015556027601655348015620000c057600080fd5b506040518060400160405280600d81526020016c082d8d840a8d2daca4090d2ced609b1b81525060405180604001604052806003815260200162082a8960eb1b81525081600390805190602001906200011b92919062000317565b5080516200013190600490602084019062000317565b5050506200014e62000148620001d960201b60201c565b620001dd565b6200017733620001616012600a620004d2565b62000171906305f5e100620004ea565b6200022f565b336000908152601760205260408082208054600160ff1991821681179092553084528284208054821683179055600d546001600160a01b0390811685528385208054831684179055600e54168452919092208054909116909117905562000564565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166200028a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b80600260008282546200029e91906200050c565b90915550506001600160a01b03821660009081526020819052604081208054839290620002cd9084906200050c565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620003259062000527565b90600052602060002090601f01602090048101928262000349576000855562000394565b82601f106200036457805160ff191683800117855562000394565b8280016001018555821562000394579182015b828111156200039457825182559160200191906001019062000377565b50620003a2929150620003a6565b5090565b5b80821115620003a25760008155600101620003a7565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000414578160001904821115620003f857620003f8620003bd565b808516156200040657918102915b93841c9390800290620003d8565b509250929050565b6000826200042d57506001620004cc565b816200043c57506000620004cc565b8160018114620004555760028114620004605762000480565b6001915050620004cc565b60ff841115620004745762000474620003bd565b50506001821b620004cc565b5060208310610133831016604e8410600b8410161715620004a5575081810a620004cc565b620004b18383620003d3565b8060001904821115620004c857620004c8620003bd565b0290505b92915050565b6000620004e360ff8416836200041c565b9392505050565b6000816000190483118215151615620005075762000507620003bd565b500290565b60008219821115620005225762000522620003bd565b500190565b600181811c908216806200053c57607f821691505b602082108114156200055e57634e487b7160e01b600052602260045260246000fd5b50919050565b61247e80620005746000396000f3fe6080604052600436106102815760003560e01c80638c0b5e221161014f578063a9059cbb116100c1578063e01af92c1161007a578063e01af92c146107bc578063e545fd6d146107dc578063f2fde38b146107fc578063f66895a31461081c578063f887ea401461083b578063fb53d9a21461085b57600080fd5b8063a9059cbb146106d0578063aa4bde28146106f0578063c18bc19514610706578063d34628cc14610726578063dbe66ca014610746578063dd62ed3e1461077657600080fd5b80639d0014b1116101135780639d0014b11461061b5780639e252f001461063b5780639e78fb4f1461065b578063a457c2d714610670578063a7c7f0af14610690578063a8aa1b31146106b057600080fd5b80638c0b5e22146105925780638cd4426d146105a85780638da5cb5b146105c85780638ea5220f146105e657806395d89b411461060657600080fd5b8063313ce567116101f35780636ddd1713116101ac5780636ddd17131461049457806370a08231146104b5578063715018a6146104eb578063728f8eea1461050057806375f0a8741461053a57806382aa7c681461057257600080fd5b8063313ce567146103e157806339509351146103fd57806340b28c2f1461041d5780634ada218b1461043d57806350c9a88f1461045e5780636256d1811461047457600080fd5b80631870517a116102455780631870517a1461033f5780632253163d1461035f57806323b872dd1461037557806326b5d32f14610395578063274a533c146103b5578063293b7ef4146103cb57600080fd5b80630445b6671461028d57806306fdde03146102b657806308733214146102d8578063095ea7b3146102fa57806318160ddd1461032a57600080fd5b3661028857005b600080fd5b34801561029957600080fd5b506102a3600a5481565b6040519081526020015b60405180910390f35b3480156102c257600080fd5b506102cb61087b565b6040516102ad9190611f8b565b3480156102e457600080fd5b506102f86102f3366004611fe0565b61090d565b005b34801561030657600080fd5b5061031a610315366004612031565b610984565b60405190151581526020016102ad565b34801561033657600080fd5b506002546102a3565b34801561034b57600080fd5b506102f861035a366004611fe0565b61099a565b34801561036b57600080fd5b506102a360165481565b34801561038157600080fd5b5061031a61039036600461205d565b610a08565b3480156103a157600080fd5b506102f86103b0366004611fe0565b610ab9565b3480156103c157600080fd5b506102a360085481565b3480156103d757600080fd5b506102a360155481565b3480156103ed57600080fd5b50604051601281526020016102ad565b34801561040957600080fd5b5061031a610418366004612031565b610b74565b34801561042957600080fd5b506102f861043836600461209e565b610bab565b34801561044957600080fd5b5060075461031a90600160b01b900460ff1681565b34801561046a57600080fd5b506102a360095481565b34801561048057600080fd5b506102f861048f3660046120d7565b610c03565b3480156104a057600080fd5b5060075461031a90600160a81b900460ff1681565b3480156104c157600080fd5b506102a36104d03660046120f0565b6001600160a01b031660009081526020819052604090205490565b3480156104f757600080fd5b506102f8610c45565b34801561050c57600080fd5b50600f5460105460115461051f92919083565b604080519384526020840192909252908201526060016102ad565b34801561054657600080fd5b50600d5461055a906001600160a01b031681565b6040516001600160a01b0390911681526020016102ad565b34801561057e57600080fd5b506102f861058d3660046120d7565b610c7b565b34801561059e57600080fd5b506102a3600b5481565b3480156105b457600080fd5b506102f86105c3366004612031565b610d16565b3480156105d457600080fd5b506005546001600160a01b031661055a565b3480156105f257600080fd5b50600e5461055a906001600160a01b031681565b34801561061257600080fd5b506102cb610dd7565b34801561062757600080fd5b506102f86106363660046120d7565b610de6565b34801561064757600080fd5b506102f86106563660046120d7565b610e15565b34801561066757600080fd5b506102f8610e67565b34801561067c57600080fd5b5061031a61068b366004612031565b611020565b34801561069c57600080fd5b506102f86106ab3660046120f0565b6110bb565b3480156106bc57600080fd5b5060075461055a906001600160a01b031681565b3480156106dc57600080fd5b5061031a6106eb366004612031565b611107565b3480156106fc57600080fd5b506102a3600c5481565b34801561071257600080fd5b506102f86107213660046120d7565b611114565b34801561073257600080fd5b506102f861074136600461212a565b611156565b34801561075257600080fd5b5061031a6107613660046120f0565b60176020526000908152604090205460ff1681565b34801561078257600080fd5b506102a361079136600461209e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107c857600080fd5b506102f86107d73660046121fd565b6111ec565b3480156107e857600080fd5b506102f86107f736600461221a565b611234565b34801561080857600080fd5b506102f86108173660046120f0565b611289565b34801561082857600080fd5b5060125460135460145461051f92919083565b34801561084757600080fd5b5060065461055a906001600160a01b031681565b34801561086757600080fd5b506102f86108763660046120f0565b611321565b60606003805461088a90612248565b80601f01602080910402602001604051908101604052809291908181526020018280546108b690612248565b80156109035780601f106108d857610100808354040283529160200191610903565b820191906000526020600020905b8154815290600101906020018083116108e657829003601f168201915b5050505050905090565b6005546001600160a01b031633146109405760405162461bcd60e51b815260040161093790612283565b60405180910390fd5b6040805160608101825284815260208101849052018190526012839055601382905560148190558061097283856122ce565b61097c91906122ce565b601655505050565b600061099133848461136d565b50600192915050565b6005546001600160a01b031633146109c45760405162461bcd60e51b815260040161093790612283565b604080516060810182528481526020810184905201819052600f83905560108290556011819055806109f683856122ce565b610a0091906122ce565b601555505050565b6000610a15848484611491565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610a9a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610937565b610aae8533610aa986856122e6565b61136d565b506001949350505050565b6005546001600160a01b03163314610ae35760405162461bcd60e51b815260040161093790612283565b47610aed846118dd565b6000610af982476122e6565b90508215610b3457610b34610b0e84866122ce565b610b1885846122fd565b610b22919061231c565b600d546001600160a01b031690611a37565b8315610b6d57610b6d610b4784866122ce565b610b5186846122fd565b610b5b919061231c565b600e546001600160a01b031690611a37565b5050505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610991918590610aa99086906122ce565b6005546001600160a01b03163314610bd55760405162461bcd60e51b815260040161093790612283565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6005546001600160a01b03163314610c2d5760405162461bcd60e51b815260040161093790612283565b610c3f81670de0b6b3a76400006122fd565b600b5550565b6005546001600160a01b03163314610c6f5760405162461bcd60e51b815260040161093790612283565b610c796000611b50565b565b6005546001600160a01b03163314610ca55760405162461bcd60e51b815260040161093790612283565b600754600160b01b900460ff1615610cf85760405162461bcd60e51b815260206004820152601660248201527554726164696e6720616c72656164792061637469766560501b6044820152606401610937565b6007805461ffff60a81b191661010160a81b17905543600855600955565b6005546001600160a01b03163314610d405760405162461bcd60e51b815260040161093790612283565b816001600160a01b031663a9059cbb610d616005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610dae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd2919061233e565b505050565b60606004805461088a90612248565b6005546001600160a01b03163314610e105760405162461bcd60e51b815260040161093790612283565b600a55565b6005546001600160a01b03163314610e3f5760405162461bcd60e51b815260040161093790612283565b610e6481610e556005546001600160a01b031690565b6001600160a01b031690611a37565b50565b6005546001600160a01b03163314610e915760405162461bcd60e51b815260040161093790612283565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0e919061235b565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7f919061235b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610fcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff0919061235b565b600680546001600160a01b039485166001600160a01b031991821617909155600780549290941691161790915550565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156110a25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610937565b6110b13385610aa986856122e6565b5060019392505050565b6005546001600160a01b031633146110e55760405162461bcd60e51b815260040161093790612283565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610991338484611491565b6005546001600160a01b0316331461113e5760405162461bcd60e51b815260040161093790612283565b61115081670de0b6b3a76400006122fd565b600c5550565b6005546001600160a01b031633146111805760405162461bcd60e51b815260040161093790612283565b60005b81518110156111e8576001601860008484815181106111a4576111a4612378565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806111e08161238e565b915050611183565b5050565b6005546001600160a01b031633146112165760405162461bcd60e51b815260040161093790612283565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b0316331461125e5760405162461bcd60e51b815260040161093790612283565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146112b35760405162461bcd60e51b815260040161093790612283565b6001600160a01b0381166113185760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610937565b610e6481611b50565b6005546001600160a01b0316331461134b5760405162461bcd60e51b815260040161093790612283565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166113cf5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610937565b6001600160a01b0382166114305760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610937565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116114f35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610937565b6001600160a01b03831660009081526018602052604090205460ff1615801561153557506001600160a01b03821660009081526018602052604090205460ff16155b6115815760405162461bcd60e51b815260206004820152601960248201527f596f752063616e2774207472616e7366657220746f6b656e73000000000000006044820152606401610937565b6001600160a01b03831660009081526017602052604090205460ff161580156115c357506001600160a01b03821660009081526017602052604090205460ff16155b80156115d95750600754600160a01b900460ff16155b156117a557600754600160b01b900460ff166116305760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81b9bdd081858dd1a5d99481e595d60521b6044820152606401610937565b4360095460085461164191906122ce565b11156116b9576007546001600160a01b03838116911614611680576001600160a01b0382166000908152601860205260409020805460ff191660011790555b6007546001600160a01b038481169116146116b9576001600160a01b0383166000908152601860205260409020805460ff191660011790555b600b5481111561170b5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61785478416d6f756e740000006044820152606401610937565b6007546001600160a01b038381169116146117a557600c5481611743846001600160a01b031660009081526020819052604090205490565b61174d91906122ce565b11156117a55760405162461bcd60e51b815260206004820152602160248201527f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e6044820152601d60fa1b6064820152608401610937565b600754600090600160a01b900460ff16806117d857506001600160a01b03841660009081526017602052604090205460ff165b806117fb57506001600160a01b03831660009081526017602052604090205460ff165b156118085750600061185c565b6007546001600160a01b038481169116141561183f5760646016548361182e91906122fd565b611838919061231c565b905061185c565b60646015548361184f91906122fd565b611859919061231c565b90505b600754600160a81b900460ff16801561187f5750600754600160a01b900460ff16155b801561189957506007546001600160a01b03858116911614155b80156118a55750600081115b156118b2576118b2611ba2565b6118c684846118c184866122e6565b611d06565b80156118d7576118d7843083611d06565b50505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061191257611912612378565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561196b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198f919061235b565b816001815181106119a2576119a2612378565b6001600160a01b0392831660209182029290920101526006546119c8913091168461136d565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611a019085906000908690309042906004016123a9565b600060405180830381600087803b158015611a1b57600080fd5b505af1158015611a2f573d6000803e3d6000fd5b505050505050565b80471015611a875760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610937565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611ad4576040519150601f19603f3d011682016040523d82523d6000602084013e611ad9565b606091505b5050905080610dd25760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610937565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610c79576007805460ff60a01b1916600160a01b179055306000908152602081905260408120549050600a548110611cf65760006016546002611bf291906122fd565b905060008160126001015484611c0891906122fd565b611c12919061231c565b90506000611c2082856122e6565b905047611c2c826118dd565b6000611c3882476122e6565b601354909150600090611c4b90876122e6565b611c55908361231c565b601354909150600090611c6890836122fd565b90508015611c7a57611c7a8682611ede565b601254600090611c8b8460026122fd565b611c9591906122fd565b90508015611cb357600d54611cb3906001600160a01b031682611a37565b601454600090611cc48560026122fd565b611cce91906122fd565b90508015611cec57600e54611cec906001600160a01b031682611a37565b5050505050505050505b506007805460ff60a01b19169055565b6001600160a01b038316611d6a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610937565b6001600160a01b038216611dcc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610937565b6001600160a01b03831660009081526020819052604090205481811015611e445760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610937565b611e4e82826122e6565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611e849084906122ce565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ed091815260200190565b60405180910390a350505050565b600654611ef69030906001600160a01b03168461136d565b600654600e5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611f66573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b6d919061241a565b600060208083528351808285015260005b81811015611fb857858101830151858201604001528201611f9c565b81811115611fca576000604083870101525b50601f01601f1916929092016040019392505050565b600080600060608486031215611ff557600080fd5b505081359360208301359350604090920135919050565b6001600160a01b0381168114610e6457600080fd5b803561202c8161200c565b919050565b6000806040838503121561204457600080fd5b823561204f8161200c565b946020939093013593505050565b60008060006060848603121561207257600080fd5b833561207d8161200c565b9250602084013561208d8161200c565b929592945050506040919091013590565b600080604083850312156120b157600080fd5b82356120bc8161200c565b915060208301356120cc8161200c565b809150509250929050565b6000602082840312156120e957600080fd5b5035919050565b60006020828403121561210257600080fd5b813561210d8161200c565b9392505050565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561213d57600080fd5b823567ffffffffffffffff8082111561215557600080fd5b818501915085601f83011261216957600080fd5b81358181111561217b5761217b612114565b8060051b604051601f19603f830116810181811085821117156121a0576121a0612114565b6040529182528482019250838101850191888311156121be57600080fd5b938501935b828510156121e3576121d485612021565b845293850193928501926121c3565b98975050505050505050565b8015158114610e6457600080fd5b60006020828403121561220f57600080fd5b813561210d816121ef565b6000806040838503121561222d57600080fd5b82356122388161200c565b915060208301356120cc816121ef565b600181811c9082168061225c57607f821691505b6020821081141561227d57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156122e1576122e16122b8565b500190565b6000828210156122f8576122f86122b8565b500390565b6000816000190483118215151615612317576123176122b8565b500290565b60008261233957634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561235057600080fd5b815161210d816121ef565b60006020828403121561236d57600080fd5b815161210d8161200c565b634e487b7160e01b600052603260045260246000fd5b60006000198214156123a2576123a26122b8565b5060010190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123f95784516001600160a01b0316835293830193918301916001016123d4565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561242f57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220a582d9672881be8bc830f95ade6484380de83f9ab298a7bc33b44d3a7f910e7364736f6c634300080c0033

Deployed Bytecode

0x6080604052600436106102815760003560e01c80638c0b5e221161014f578063a9059cbb116100c1578063e01af92c1161007a578063e01af92c146107bc578063e545fd6d146107dc578063f2fde38b146107fc578063f66895a31461081c578063f887ea401461083b578063fb53d9a21461085b57600080fd5b8063a9059cbb146106d0578063aa4bde28146106f0578063c18bc19514610706578063d34628cc14610726578063dbe66ca014610746578063dd62ed3e1461077657600080fd5b80639d0014b1116101135780639d0014b11461061b5780639e252f001461063b5780639e78fb4f1461065b578063a457c2d714610670578063a7c7f0af14610690578063a8aa1b31146106b057600080fd5b80638c0b5e22146105925780638cd4426d146105a85780638da5cb5b146105c85780638ea5220f146105e657806395d89b411461060657600080fd5b8063313ce567116101f35780636ddd1713116101ac5780636ddd17131461049457806370a08231146104b5578063715018a6146104eb578063728f8eea1461050057806375f0a8741461053a57806382aa7c681461057257600080fd5b8063313ce567146103e157806339509351146103fd57806340b28c2f1461041d5780634ada218b1461043d57806350c9a88f1461045e5780636256d1811461047457600080fd5b80631870517a116102455780631870517a1461033f5780632253163d1461035f57806323b872dd1461037557806326b5d32f14610395578063274a533c146103b5578063293b7ef4146103cb57600080fd5b80630445b6671461028d57806306fdde03146102b657806308733214146102d8578063095ea7b3146102fa57806318160ddd1461032a57600080fd5b3661028857005b600080fd5b34801561029957600080fd5b506102a3600a5481565b6040519081526020015b60405180910390f35b3480156102c257600080fd5b506102cb61087b565b6040516102ad9190611f8b565b3480156102e457600080fd5b506102f86102f3366004611fe0565b61090d565b005b34801561030657600080fd5b5061031a610315366004612031565b610984565b60405190151581526020016102ad565b34801561033657600080fd5b506002546102a3565b34801561034b57600080fd5b506102f861035a366004611fe0565b61099a565b34801561036b57600080fd5b506102a360165481565b34801561038157600080fd5b5061031a61039036600461205d565b610a08565b3480156103a157600080fd5b506102f86103b0366004611fe0565b610ab9565b3480156103c157600080fd5b506102a360085481565b3480156103d757600080fd5b506102a360155481565b3480156103ed57600080fd5b50604051601281526020016102ad565b34801561040957600080fd5b5061031a610418366004612031565b610b74565b34801561042957600080fd5b506102f861043836600461209e565b610bab565b34801561044957600080fd5b5060075461031a90600160b01b900460ff1681565b34801561046a57600080fd5b506102a360095481565b34801561048057600080fd5b506102f861048f3660046120d7565b610c03565b3480156104a057600080fd5b5060075461031a90600160a81b900460ff1681565b3480156104c157600080fd5b506102a36104d03660046120f0565b6001600160a01b031660009081526020819052604090205490565b3480156104f757600080fd5b506102f8610c45565b34801561050c57600080fd5b50600f5460105460115461051f92919083565b604080519384526020840192909252908201526060016102ad565b34801561054657600080fd5b50600d5461055a906001600160a01b031681565b6040516001600160a01b0390911681526020016102ad565b34801561057e57600080fd5b506102f861058d3660046120d7565b610c7b565b34801561059e57600080fd5b506102a3600b5481565b3480156105b457600080fd5b506102f86105c3366004612031565b610d16565b3480156105d457600080fd5b506005546001600160a01b031661055a565b3480156105f257600080fd5b50600e5461055a906001600160a01b031681565b34801561061257600080fd5b506102cb610dd7565b34801561062757600080fd5b506102f86106363660046120d7565b610de6565b34801561064757600080fd5b506102f86106563660046120d7565b610e15565b34801561066757600080fd5b506102f8610e67565b34801561067c57600080fd5b5061031a61068b366004612031565b611020565b34801561069c57600080fd5b506102f86106ab3660046120f0565b6110bb565b3480156106bc57600080fd5b5060075461055a906001600160a01b031681565b3480156106dc57600080fd5b5061031a6106eb366004612031565b611107565b3480156106fc57600080fd5b506102a3600c5481565b34801561071257600080fd5b506102f86107213660046120d7565b611114565b34801561073257600080fd5b506102f861074136600461212a565b611156565b34801561075257600080fd5b5061031a6107613660046120f0565b60176020526000908152604090205460ff1681565b34801561078257600080fd5b506102a361079136600461209e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107c857600080fd5b506102f86107d73660046121fd565b6111ec565b3480156107e857600080fd5b506102f86107f736600461221a565b611234565b34801561080857600080fd5b506102f86108173660046120f0565b611289565b34801561082857600080fd5b5060125460135460145461051f92919083565b34801561084757600080fd5b5060065461055a906001600160a01b031681565b34801561086757600080fd5b506102f86108763660046120f0565b611321565b60606003805461088a90612248565b80601f01602080910402602001604051908101604052809291908181526020018280546108b690612248565b80156109035780601f106108d857610100808354040283529160200191610903565b820191906000526020600020905b8154815290600101906020018083116108e657829003601f168201915b5050505050905090565b6005546001600160a01b031633146109405760405162461bcd60e51b815260040161093790612283565b60405180910390fd5b6040805160608101825284815260208101849052018190526012839055601382905560148190558061097283856122ce565b61097c91906122ce565b601655505050565b600061099133848461136d565b50600192915050565b6005546001600160a01b031633146109c45760405162461bcd60e51b815260040161093790612283565b604080516060810182528481526020810184905201819052600f83905560108290556011819055806109f683856122ce565b610a0091906122ce565b601555505050565b6000610a15848484611491565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610a9a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610937565b610aae8533610aa986856122e6565b61136d565b506001949350505050565b6005546001600160a01b03163314610ae35760405162461bcd60e51b815260040161093790612283565b47610aed846118dd565b6000610af982476122e6565b90508215610b3457610b34610b0e84866122ce565b610b1885846122fd565b610b22919061231c565b600d546001600160a01b031690611a37565b8315610b6d57610b6d610b4784866122ce565b610b5186846122fd565b610b5b919061231c565b600e546001600160a01b031690611a37565b5050505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610991918590610aa99086906122ce565b6005546001600160a01b03163314610bd55760405162461bcd60e51b815260040161093790612283565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6005546001600160a01b03163314610c2d5760405162461bcd60e51b815260040161093790612283565b610c3f81670de0b6b3a76400006122fd565b600b5550565b6005546001600160a01b03163314610c6f5760405162461bcd60e51b815260040161093790612283565b610c796000611b50565b565b6005546001600160a01b03163314610ca55760405162461bcd60e51b815260040161093790612283565b600754600160b01b900460ff1615610cf85760405162461bcd60e51b815260206004820152601660248201527554726164696e6720616c72656164792061637469766560501b6044820152606401610937565b6007805461ffff60a81b191661010160a81b17905543600855600955565b6005546001600160a01b03163314610d405760405162461bcd60e51b815260040161093790612283565b816001600160a01b031663a9059cbb610d616005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610dae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd2919061233e565b505050565b60606004805461088a90612248565b6005546001600160a01b03163314610e105760405162461bcd60e51b815260040161093790612283565b600a55565b6005546001600160a01b03163314610e3f5760405162461bcd60e51b815260040161093790612283565b610e6481610e556005546001600160a01b031690565b6001600160a01b031690611a37565b50565b6005546001600160a01b03163314610e915760405162461bcd60e51b815260040161093790612283565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0e919061235b565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7f919061235b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610fcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff0919061235b565b600680546001600160a01b039485166001600160a01b031991821617909155600780549290941691161790915550565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156110a25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610937565b6110b13385610aa986856122e6565b5060019392505050565b6005546001600160a01b031633146110e55760405162461bcd60e51b815260040161093790612283565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610991338484611491565b6005546001600160a01b0316331461113e5760405162461bcd60e51b815260040161093790612283565b61115081670de0b6b3a76400006122fd565b600c5550565b6005546001600160a01b031633146111805760405162461bcd60e51b815260040161093790612283565b60005b81518110156111e8576001601860008484815181106111a4576111a4612378565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806111e08161238e565b915050611183565b5050565b6005546001600160a01b031633146112165760405162461bcd60e51b815260040161093790612283565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b0316331461125e5760405162461bcd60e51b815260040161093790612283565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146112b35760405162461bcd60e51b815260040161093790612283565b6001600160a01b0381166113185760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610937565b610e6481611b50565b6005546001600160a01b0316331461134b5760405162461bcd60e51b815260040161093790612283565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166113cf5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610937565b6001600160a01b0382166114305760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610937565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116114f35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610937565b6001600160a01b03831660009081526018602052604090205460ff1615801561153557506001600160a01b03821660009081526018602052604090205460ff16155b6115815760405162461bcd60e51b815260206004820152601960248201527f596f752063616e2774207472616e7366657220746f6b656e73000000000000006044820152606401610937565b6001600160a01b03831660009081526017602052604090205460ff161580156115c357506001600160a01b03821660009081526017602052604090205460ff16155b80156115d95750600754600160a01b900460ff16155b156117a557600754600160b01b900460ff166116305760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81b9bdd081858dd1a5d99481e595d60521b6044820152606401610937565b4360095460085461164191906122ce565b11156116b9576007546001600160a01b03838116911614611680576001600160a01b0382166000908152601860205260409020805460ff191660011790555b6007546001600160a01b038481169116146116b9576001600160a01b0383166000908152601860205260409020805460ff191660011790555b600b5481111561170b5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61785478416d6f756e740000006044820152606401610937565b6007546001600160a01b038381169116146117a557600c5481611743846001600160a01b031660009081526020819052604090205490565b61174d91906122ce565b11156117a55760405162461bcd60e51b815260206004820152602160248201527f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e6044820152601d60fa1b6064820152608401610937565b600754600090600160a01b900460ff16806117d857506001600160a01b03841660009081526017602052604090205460ff165b806117fb57506001600160a01b03831660009081526017602052604090205460ff165b156118085750600061185c565b6007546001600160a01b038481169116141561183f5760646016548361182e91906122fd565b611838919061231c565b905061185c565b60646015548361184f91906122fd565b611859919061231c565b90505b600754600160a81b900460ff16801561187f5750600754600160a01b900460ff16155b801561189957506007546001600160a01b03858116911614155b80156118a55750600081115b156118b2576118b2611ba2565b6118c684846118c184866122e6565b611d06565b80156118d7576118d7843083611d06565b50505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061191257611912612378565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561196b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198f919061235b565b816001815181106119a2576119a2612378565b6001600160a01b0392831660209182029290920101526006546119c8913091168461136d565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611a019085906000908690309042906004016123a9565b600060405180830381600087803b158015611a1b57600080fd5b505af1158015611a2f573d6000803e3d6000fd5b505050505050565b80471015611a875760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610937565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611ad4576040519150601f19603f3d011682016040523d82523d6000602084013e611ad9565b606091505b5050905080610dd25760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610937565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610c79576007805460ff60a01b1916600160a01b179055306000908152602081905260408120549050600a548110611cf65760006016546002611bf291906122fd565b905060008160126001015484611c0891906122fd565b611c12919061231c565b90506000611c2082856122e6565b905047611c2c826118dd565b6000611c3882476122e6565b601354909150600090611c4b90876122e6565b611c55908361231c565b601354909150600090611c6890836122fd565b90508015611c7a57611c7a8682611ede565b601254600090611c8b8460026122fd565b611c9591906122fd565b90508015611cb357600d54611cb3906001600160a01b031682611a37565b601454600090611cc48560026122fd565b611cce91906122fd565b90508015611cec57600e54611cec906001600160a01b031682611a37565b5050505050505050505b506007805460ff60a01b19169055565b6001600160a01b038316611d6a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610937565b6001600160a01b038216611dcc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610937565b6001600160a01b03831660009081526020819052604090205481811015611e445760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610937565b611e4e82826122e6565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611e849084906122ce565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ed091815260200190565b60405180910390a350505050565b600654611ef69030906001600160a01b03168461136d565b600654600e5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611f66573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b6d919061241a565b600060208083528351808285015260005b81811015611fb857858101830151858201604001528201611f9c565b81811115611fca576000604083870101525b50601f01601f1916929092016040019392505050565b600080600060608486031215611ff557600080fd5b505081359360208301359350604090920135919050565b6001600160a01b0381168114610e6457600080fd5b803561202c8161200c565b919050565b6000806040838503121561204457600080fd5b823561204f8161200c565b946020939093013593505050565b60008060006060848603121561207257600080fd5b833561207d8161200c565b9250602084013561208d8161200c565b929592945050506040919091013590565b600080604083850312156120b157600080fd5b82356120bc8161200c565b915060208301356120cc8161200c565b809150509250929050565b6000602082840312156120e957600080fd5b5035919050565b60006020828403121561210257600080fd5b813561210d8161200c565b9392505050565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561213d57600080fd5b823567ffffffffffffffff8082111561215557600080fd5b818501915085601f83011261216957600080fd5b81358181111561217b5761217b612114565b8060051b604051601f19603f830116810181811085821117156121a0576121a0612114565b6040529182528482019250838101850191888311156121be57600080fd5b938501935b828510156121e3576121d485612021565b845293850193928501926121c3565b98975050505050505050565b8015158114610e6457600080fd5b60006020828403121561220f57600080fd5b813561210d816121ef565b6000806040838503121561222d57600080fd5b82356122388161200c565b915060208301356120cc816121ef565b600181811c9082168061225c57607f821691505b6020821081141561227d57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156122e1576122e16122b8565b500190565b6000828210156122f8576122f86122b8565b500390565b6000816000190483118215151615612317576123176122b8565b500290565b60008261233957634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561235057600080fd5b815161210d816121ef565b60006020828403121561236d57600080fd5b815161210d8161200c565b634e487b7160e01b600052603260045260246000fd5b60006000198214156123a2576123a26122b8565b5060010190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123f95784516001600160a01b0316835293830193918301916001016123d4565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561242f57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220a582d9672881be8bc830f95ade6484380de83f9ab298a7bc33b44d3a7f910e7364736f6c634300080c0033

Deployed Bytecode Sourcemap

7781:8239:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8103:45;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;8103:45:0;;;;;;;;1716:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;13950:214::-;;;;;;;;;;-1:-1:-1;13950:214:0;;;;;:::i;:::-;;:::i;:::-;;2630:169;;;;;;;;;;-1:-1:-1;2630:169:0;;;;;:::i;:::-;;:::i;:::-;;;1879:14:1;;1872:22;1854:41;;1842:2;1827:18;2630:169:0;1714:187:1;2037:108:0;;;;;;;;;;-1:-1:-1;2125:12:0;;2037:108;;13737:205;;;;;;;;;;-1:-1:-1;13737:205:0;;;;;:::i;:::-;;:::i;8674:30::-;;;;;;;;;;;;;;;;2807:422;;;;;;;;;;-1:-1:-1;2807:422:0;;;;;:::i;:::-;;:::i;15410:546::-;;;;;;;;;;-1:-1:-1;15410:546:0;;;;;:::i;:::-;;:::i;8026:28::-;;;;;;;;;;;;;;;;8640:26;;;;;;;;;;;;;;;;1936:93;;;;;;;;;;-1:-1:-1;1936:93:0;;2019:2;2509:36:1;;2497:2;2482:18;1936:93:0;2367:184:1;3237:215:0;;;;;;;;;;-1:-1:-1;3237:215:0;;;;;:::i;:::-;;:::i;14417:137::-;;;;;;;;;;-1:-1:-1;14417:137:0;;;;;:::i;:::-;;:::i;7991:26::-;;;;;;;;;;-1:-1:-1;7991:26:0;;;;-1:-1:-1;;;7991:26:0;;;;;;8061:29;;;;;;;;;;;;;;;;14894:109;;;;;;;;;;-1:-1:-1;14894:109:0;;;;;:::i;:::-;;:::i;7961:23::-;;;;;;;;;;-1:-1:-1;7961:23:0;;;;-1:-1:-1;;;7961:23:0;;;;;;2153:127;;;;;;;;;;-1:-1:-1;2153:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;2254:18:0;2227:7;2254:18;;;;;;;;;;;;2153:127;6558:94;;;;;;;;;;;;;:::i;8552:34::-;;;;;;;;;;-1:-1:-1;8552:34:0;;;;;;;;;;;;;;;;3603:25:1;;;3659:2;3644:18;;3637:34;;;;3687:18;;;3680:34;3591:2;3576:18;8552:34:0;3401:319:1;8275:75:0;;;;;;;;;;-1:-1:-1;8275:75:0;;;;-1:-1:-1;;;;;8275:75:0;;;;;;-1:-1:-1;;;;;3889:32:1;;;3871:51;;3859:2;3844:18;8275:75:0;3725:203:1;13455:274:0;;;;;;;;;;-1:-1:-1;13455:274:0;;;;;:::i;:::-;;:::i;8155:47::-;;;;;;;;;;;;;;;;15140:142;;;;;;;;;;-1:-1:-1;15140:142:0;;;;;:::i;:::-;;:::i;6335:87::-;;;;;;;;;;-1:-1:-1;6408:6:0;;-1:-1:-1;;;;;6408:6:0;6335:87;;8358:69;;;;;;;;;;-1:-1:-1;8358:69:0;;;;-1:-1:-1;;;;;8358:69:0;;;1824:104;;;;;;;;;;;;;:::i;13337:110::-;;;;;;;;;;-1:-1:-1;13337:110:0;;;;;:::i;:::-;;:::i;15290:112::-;;;;;;;;;;-1:-1:-1;15290:112:0;;;;;:::i;:::-;;:::i;9287:290::-;;;;;;;;;;;;;:::i;3460:377::-;;;;;;;;;;-1:-1:-1;3460:377:0;;;;;:::i;:::-;;:::i;14304:105::-;;;;;;;;;;-1:-1:-1;14304:105:0;;;;;:::i;:::-;;:::i;7901:19::-;;;;;;;;;;-1:-1:-1;7901:19:0;;;;-1:-1:-1;;;;;7901:19:0;;;2288:175;;;;;;;;;;-1:-1:-1;2288:175:0;;;;;:::i;:::-;;:::i;8210:51::-;;;;;;;;;;;;;;;;15015:117;;;;;;;;;;-1:-1:-1;15015:117:0;;;;;:::i;:::-;;:::i;14570:172::-;;;;;;;;;;-1:-1:-1;14570:172:0;;;;;:::i;:::-;;:::i;8718:49::-;;;;;;;;;;-1:-1:-1;8718:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2471:151;;;;;;;;;;-1:-1:-1;2471:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;2587:18:0;;;2560:7;2587:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2471:151;13236:93;;;;;;;;;;-1:-1:-1;13236:93:0;;;;;:::i;:::-;;:::i;14748:134::-;;;;;;;;;;-1:-1:-1;14748:134:0;;;;;:::i;:::-;;:::i;6660:192::-;;;;;;;;;;-1:-1:-1;6660:192:0;;;;;:::i;:::-;;:::i;8594:38::-;;;;;;;;;;-1:-1:-1;8594:38:0;;;;;;;;;;;;7873:21;;;;;;;;;;-1:-1:-1;7873:21:0;;;;-1:-1:-1;;;;;7873:21:0;;;14176:116;;;;;;;;;;-1:-1:-1;14176:116:0;;;;;:::i;:::-;;:::i;1716:100::-;1770:13;1803:5;1796:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1716:100;:::o;13950:214::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;;;;;;;;;14067:35:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;14055:9:::1;:47:::0;;;;;;;;;;;14097:4;14126:23:::1;14085:10:::0;14073;14126:23:::1;:::i;:::-;:30;;;;:::i;:::-;14113:10;:43:::0;-1:-1:-1;;;13950:214:0:o;2630:169::-;2713:4;2730:39;198:10;2753:7;2762:6;2730:8;:39::i;:::-;-1:-1:-1;2787:4:0;2630:169;;;;:::o;13737:205::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;13849:35:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;13841:5:::1;:43:::0;;;;;;;;;;;13879:4;13904:23:::1;13867:10:::0;13855;13904:23:::1;:::i;:::-;:30;;;;:::i;:::-;13895:6;:39:::0;-1:-1:-1;;;13737:205:0:o;2807:422::-;2913:4;2930:36;2940:6;2948:9;2959:6;2930:9;:36::i;:::-;-1:-1:-1;;;;;3006:19:0;;2979:24;3006:19;;;:11;:19;;;;;;;;198:10;3006:33;;;;;;;;3058:26;;;;3050:79;;;;-1:-1:-1;;;3050:79:0;;7776:2:1;3050:79:0;;;7758:21:1;7815:2;7795:18;;;7788:30;7854:34;7834:18;;;7827:62;-1:-1:-1;;;7905:18:1;;;7898:38;7953:19;;3050:79:0;7574:404:1;3050:79:0;3140:57;3149:6;198:10;3171:25;3190:6;3171:16;:25;:::i;:::-;3140:8;:57::i;:::-;-1:-1:-1;3217:4:0;;2807:422;-1:-1:-1;;;;2807:422:0:o;15410:546::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;15549:21:::1;15581:24;15598:6:::0;15581:16:::1;:24::i;:::-;15616:18;15637:35;15661:11:::0;15637:21:::1;:35;:::i;:::-;15616:56:::0;-1:-1:-1;15686:23:0;;15683:136:::1;;15711:108;15782:35;15798:19:::0;15782:13;:35:::1;:::i;:::-;15746:32;15759:19:::0;15746:10;:32:::1;:::i;:::-;:72;;;;:::i;:::-;15719:15;::::0;-1:-1:-1;;;;;15719:15:0::1;::::0;15711:34:::1;:108::i;:::-;15833:17:::0;;15830:118:::1;;15852:96;15911:35;15927:19:::0;15911:13;:35:::1;:::i;:::-;15881:26;15894:13:::0;15881:10;:26:::1;:::i;:::-;:66;;;;:::i;:::-;15860:9;::::0;-1:-1:-1;;;;;15860:9:0::1;::::0;15852:28:::1;:96::i;:::-;15516:440;;15410:546:::0;;;:::o;3237:215::-;198:10;3325:4;3374:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3374:34:0;;;;;;;;;;3325:4;;3342:80;;3365:7;;3374:47;;3411:10;;3374:47;:::i;14417:137::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;14507:6:::1;:16:::0;;-1:-1:-1;;;;;14507:16:0;;::::1;-1:-1:-1::0;;;;;;14507:16:0;;::::1;;::::0;;;14534:4:::1;:12:::0;;;;;::::1;::::0;::::1;;::::0;;14417:137::o;14894:109::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;14980:15:::1;:6:::0;14989::::1;14980:15;:::i;:::-;14966:11;:29:::0;-1:-1:-1;14894:109:0:o;6558:94::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;6623:21:::1;6641:1;6623:9;:21::i;:::-;6558:94::o:0;13455:274::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;13541:14:::1;::::0;-1:-1:-1;;;13541:14:0;::::1;;;13540:15;13532:50;;;::::0;-1:-1:-1;;;13532:50:0;;8710:2:1;13532:50:0::1;::::0;::::1;8692:21:1::0;8749:2;8729:18;;;8722:30;-1:-1:-1;;;8768:18:1;;;8761:52;8830:18;;13532:50:0::1;8508:346:1::0;13532:50:0::1;13593:14;:21:::0;;-1:-1:-1;;;;13625:18:0;-1:-1:-1;;;13625:18:0;;;13670:12:::1;13654:13;:28:::0;13693:10:::1;:28:::0;13455:274::o;15140:142::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;15235:12:::1;-1:-1:-1::0;;;;;15228:29:0::1;;15258:7;6408:6:::0;;-1:-1:-1;;;;;6408:6:0;;6335:87;15258:7:::1;15228:46;::::0;-1:-1:-1;;;;;;15228:46:0::1;::::0;;;;;;-1:-1:-1;;;;;9051:32:1;;;15228:46:0::1;::::0;::::1;9033:51:1::0;9100:18;;;9093:34;;;9006:18;;15228:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15140:142:::0;;:::o;1824:104::-;1880:13;1913:7;1906:14;;;;;:::i;13337:110::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;13413:13:::1;:26:::0;13337:110::o;15290:112::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;15357:37:::1;15384:9;15365:7;6408:6:::0;;-1:-1:-1;;;;;6408:6:0;;6335:87;15365:7:::1;-1:-1:-1::0;;;;;15357:26:0::1;::::0;::::1;:37::i;:::-;15290:112:::0;:::o;9287:290::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;9338:15:::1;9364:42;9338:69;;9418:13;9443:7;-1:-1:-1::0;;;;;9443:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9434:52:0::1;;9495:4;9502:7;-1:-1:-1::0;;;;;9502:12:0::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9434:83;::::0;-1:-1:-1;;;;;;9434:83:0::1;::::0;;;;;;-1:-1:-1;;;;;9874:15:1;;;9434:83:0::1;::::0;::::1;9856:34:1::0;9926:15;;9906:18;;;9899:43;9791:18;;9434:83:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9530:6;:16:::0;;-1:-1:-1;;;;;9530:16:0;;::::1;-1:-1:-1::0;;;;;;9530:16:0;;::::1;;::::0;;;9557:4:::1;:12:::0;;;;;::::1;::::0;::::1;;::::0;;;-1:-1:-1;9287:290:0:o;3460:377::-;198:10;3553:4;3597:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3597:34:0;;;;;;;;;;3650:35;;;;3642:85;;;;-1:-1:-1;;;3642:85:0;;10155:2:1;3642:85:0;;;10137:21:1;10194:2;10174:18;;;10167:30;10233:34;10213:18;;;10206:62;-1:-1:-1;;;10284:18:1;;;10277:35;10329:19;;3642:85:0;9953:401:1;3642:85:0;3738:67;198:10;3761:7;3770:34;3789:15;3770:16;:34;:::i;3738:67::-;-1:-1:-1;3825:4:0;;3460:377;-1:-1:-1;;;3460:377:0:o;14304:105::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;14380:9:::1;:21:::0;;-1:-1:-1;;;;;;14380:21:0::1;-1:-1:-1::0;;;;;14380:21:0;;;::::1;::::0;;;::::1;::::0;;14304:105::o;2288:175::-;2374:4;2391:42;198:10;2415:9;2426:6;2391:9;:42::i;15015:117::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;15109:15:::1;:6:::0;15118::::1;15109:15;:::i;:::-;15091;:33:::0;-1:-1:-1;15015:117:0:o;14570:172::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;14645:6:::1;14640:91;14661:6;:13;14657:1;:17;14640:91;;;14715:4;14696:5;:16;14702:6;14709:1;14702:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;14696:16:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;14696:16:0;:23;;-1:-1:-1;;14696:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14676:3;::::1;::::0;::::1;:::i;:::-;;;;14640:91;;;;14570:172:::0;:::o;13236:93::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;13302:11:::1;:19:::0;;;::::1;;-1:-1:-1::0;;;13302:19:0::1;-1:-1:-1::0;;;;13302:19:0;;::::1;::::0;;;::::1;::::0;;13236:93::o;14748:134::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14840:26:0;;;::::1;;::::0;;;:16:::1;:26;::::0;;;;:34;;-1:-1:-1;;14840:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14748:134::o;6660:192::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6749:22:0;::::1;6741:73;;;::::0;-1:-1:-1;;;6741:73:0;;10833:2:1;6741:73:0::1;::::0;::::1;10815:21:1::0;10872:2;10852:18;;;10845:30;10911:34;10891:18;;;10884:62;-1:-1:-1;;;10962:18:1;;;10955:36;11008:19;;6741:73:0::1;10631:402:1::0;6741:73:0::1;6825:19;6835:8;6825:9;:19::i;14176:116::-:0;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;14257:15:::1;:27:::0;;-1:-1:-1;;;;;;14257:27:0::1;-1:-1:-1::0;;;;;14257:27:0;;;::::1;::::0;;;::::1;::::0;;14176:116::o;5305:346::-;-1:-1:-1;;;;;5407:19:0;;5399:68;;;;-1:-1:-1;;;5399:68:0;;11240:2:1;5399:68:0;;;11222:21:1;11279:2;11259:18;;;11252:30;11318:34;11298:18;;;11291:62;-1:-1:-1;;;11369:18:1;;;11362:34;11413:19;;5399:68:0;11038:400:1;5399:68:0;-1:-1:-1;;;;;5486:21:0;;5478:68;;;;-1:-1:-1;;;5478:68:0;;11645:2:1;5478:68:0;;;11627:21:1;11684:2;11664:18;;;11657:30;11723:34;11703:18;;;11696:62;-1:-1:-1;;;11774:18:1;;;11767:32;11816:19;;5478:68:0;11443:398:1;5478:68:0;-1:-1:-1;;;;;5559:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5611:32;;160:25:1;;;5611:32:0;;133:18:1;5611:32:0;;;;;;;5305:346;;;:::o;9589:1389::-;9705:1;9696:6;:10;9688:64;;;;-1:-1:-1;;;9688:64:0;;12048:2:1;9688:64:0;;;12030:21:1;12087:2;12067:18;;;12060:30;12126:34;12106:18;;;12099:62;-1:-1:-1;;;12177:18:1;;;12170:39;12226:19;;9688:64:0;11846:405:1;9688:64:0;-1:-1:-1;;;;;9772:13:0;;;;;;:5;:13;;;;;;;;9771:14;:35;;;;-1:-1:-1;;;;;;9790:16:0;;;;;;:5;:16;;;;;;;;9789:17;9771:35;9763:73;;;;-1:-1:-1;;;9763:73:0;;12458:2:1;9763:73:0;;;12440:21:1;12497:2;12477:18;;;12470:30;12536:27;12516:18;;;12509:55;12581:18;;9763:73:0;12256:349:1;9763:73:0;-1:-1:-1;;;;;9879:24:0;;;;;;:16;:24;;;;;;;;9878:25;:57;;;;-1:-1:-1;;;;;;9908:27:0;;;;;;:16;:27;;;;;;;;9907:28;9878:57;:70;;;;-1:-1:-1;9940:8:0;;-1:-1:-1;;;9940:8:0;;;;9939:9;9878:70;9875:589;;;9972:14;;-1:-1:-1;;;9972:14:0;;;;9964:49;;;;-1:-1:-1;;;9964:49:0;;12812:2:1;9964:49:0;;;12794:21:1;12851:2;12831:18;;;12824:30;-1:-1:-1;;;12870:18:1;;;12863:52;12932:18;;9964:49:0;12610:346:1;9964:49:0;10060:12;10047:10;;10031:13;;:26;;;;:::i;:::-;:41;10028:183;;;10108:4;;-1:-1:-1;;;;;10095:17:0;;;10108:4;;10095:17;10092:45;;-1:-1:-1;;;;;10114:16:0;;;;;;:5;:16;;;;;:23;;-1:-1:-1;;10114:23:0;10133:4;10114:23;;;10092:45;10169:4;;-1:-1:-1;;;;;10159:14:0;;;10169:4;;10159:14;10156:39;;-1:-1:-1;;;;;10175:13:0;;;;;;:5;:13;;;;;:20;;-1:-1:-1;;10175:20:0;10191:4;10175:20;;;10156:39;10243:11;;10233:6;:21;;10225:63;;;;-1:-1:-1;;;10225:63:0;;13163:2:1;10225:63:0;;;13145:21:1;13202:2;13182:18;;;13175:30;13241:31;13221:18;;;13214:59;13290:18;;10225:63:0;12961:353:1;10225:63:0;10319:4;;-1:-1:-1;;;;;10306:17:0;;;10319:4;;10306:17;10303:150;;10384:15;;10374:6;10351:20;10361:9;-1:-1:-1;;;;;2254:18:0;2227:7;2254:18;;;;;;;;;;;;2153:127;10351:20;:29;;;;:::i;:::-;:48;;10343:94;;;;-1:-1:-1;;;10343:94:0;;13521:2:1;10343:94:0;;;13503:21:1;13560:2;13540:18;;;13533:30;13599:34;13579:18;;;13572:62;-1:-1:-1;;;13650:18:1;;;13643:31;13691:19;;10343:94:0;13319:397:1;10343:94:0;10516:8;;10476:11;;-1:-1:-1;;;10516:8:0;;;;;:36;;-1:-1:-1;;;;;;10528:24:0;;;;;;:16;:24;;;;;;;;10516:36;:67;;;-1:-1:-1;;;;;;10556:27:0;;;;;;:16;:27;;;;;;;;10516:67;10512:235;;;-1:-1:-1;10591:1:0;10512:235;;;10651:4;;-1:-1:-1;;;;;10638:17:0;;;10651:4;;10638:17;10635:100;;;10685:3;10672:10;;10663:6;:19;;;;:::i;:::-;:25;;;;:::i;:::-;10657:31;;10635:100;;;10732:3;10723:6;;10714;:15;;;;:::i;:::-;:21;;;;:::i;:::-;10708:27;;10635:100;10773:11;;-1:-1:-1;;;10773:11:0;;;;:24;;;;-1:-1:-1;10789:8:0;;-1:-1:-1;;;10789:8:0;;;;10788:9;10773:24;:42;;;;-1:-1:-1;10811:4:0;;-1:-1:-1;;;;;10801:14:0;;;10811:4;;10801:14;;10773:42;:53;;;;;10825:1;10819:3;:7;10773:53;10769:72;;;10828:13;:11;:13::i;:::-;10854:48;10870:6;10878:9;10889:12;10898:3;10889:6;:12;:::i;:::-;10854:15;:48::i;:::-;10916:7;;10913:55;;10925:43;10941:6;10957:4;10964:3;10925:15;:43::i;:::-;9677:1301;9589:1389;;;:::o;12323:400::-;12413:16;;;12427:1;12413:16;;;;;;;;12389:21;;12413:16;;;;;;;;;;-1:-1:-1;12413:16:0;12389:40;;12458:4;12440;12445:1;12440:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12440:23:0;;;:7;;;;;;;;;;:23;;;;12484:6;;:13;;;-1:-1:-1;;;12484:13:0;;;;:6;;;;;:11;;:13;;;;;12440:7;;12484:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12474:4;12479:1;12474:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12474:23:0;;;:7;;;;;;;;;:23;12542:6;;12510:53;;12527:4;;12542:6;12551:11;12510:8;:53::i;:::-;12602:6;;:111;;-1:-1:-1;;;12602:111:0;;-1:-1:-1;;;;;12602:6:0;;;;:57;;:111;;12660:11;;12602:6;;12676:4;;12690;;12697:15;;12602:111;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12378:345;12323:400;:::o;5780:317::-;5895:6;5870:21;:31;;5862:73;;;;-1:-1:-1;;;5862:73:0;;14908:2:1;5862:73:0;;;14890:21:1;14947:2;14927:18;;;14920:30;14986:31;14966:18;;;14959:59;15035:18;;5862:73:0;14706:353:1;5862:73:0;5949:12;5967:9;-1:-1:-1;;;;;5967:14:0;5989:6;5967:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5948:52;;;6019:7;6011:78;;;;-1:-1:-1;;;6011:78:0;;15476:2:1;6011:78:0;;;15458:21:1;15515:2;15495:18;;;15488:30;15554:34;15534:18;;;15527:62;15625:28;15605:18;;;15598:56;15671:19;;6011:78:0;15274:422:1;6860:173:0;6935:6;;;-1:-1:-1;;;;;6952:17:0;;;-1:-1:-1;;;;;;6952:17:0;;;;;;;6985:40;;6935:6;;;6952:17;6935:6;;6985:40;;6916:16;;6985:40;6905:128;6860:173;:::o;10986:1327::-;8860:8;;-1:-1:-1;;;8860:8:0;;;;8855:104;;8885:8;:15;;-1:-1:-1;;;;8885:15:0;-1:-1:-1;;;8885:15:0;;;11079:4:::1;-1:-1:-1::0;2254:18:0;;;;;;;;;;;11035:50:::1;;11119:13;;11100:15;:32;11096:1210;;11159:19;11181:10;;11194:1;11181:14;;;;:::i;:::-;11159:36;;11210:32;11285:11;11263:9;:19;;;11245:15;:37;;;;:::i;:::-;:51;;;;:::i;:::-;11210:86:::0;-1:-1:-1;11311:14:0::1;11328:42;11210:86:::0;11328:15;:42:::1;:::i;:::-;11311:59:::0;-1:-1:-1;11416:21:0::1;11458:24;11311:59:::0;11458:16:::1;:24::i;:::-;11503:20;11526:38;11550:14:::0;11526:21:::1;:38;:::i;:::-;11630:19:::0;;11503:61;;-1:-1:-1;11579:19:0::1;::::0;11616:33:::1;::::0;:11;:33:::1;:::i;:::-;11600:50;::::0;:12;:50:::1;:::i;:::-;11711:19:::0;;11579:71;;-1:-1:-1;11665:29:0::1;::::0;11697:33:::1;::::0;11579:71;11697:33:::1;:::i;:::-;11665:65:::0;-1:-1:-1;11754:25:0;;11751:170:::1;;11844:61;11857:24;11883:21;11844:12;:61::i;:::-;11982:9;:19:::0;11941:20:::1;::::0;11964:15:::1;:11:::0;11978:1:::1;11964:15;:::i;:::-;:37;;;;:::i;:::-;11941:60:::0;-1:-1:-1;12019:16:0;;12016:103:::1;;12063:15;::::0;12055:48:::1;::::0;-1:-1:-1;;;;;12063:15:0::1;12090:12:::0;12055:34:::1;:48::i;:::-;12182:13:::0;;12147:14:::1;::::0;12164:15:::1;:11:::0;12182:13:::1;12164:15;:::i;:::-;:31;;;;:::i;:::-;12147:48:::0;-1:-1:-1;12213:10:0;;12210:85:::1;;12251:9;::::0;12243:36:::1;::::0;-1:-1:-1;;;;;12251:9:0::1;12272:6:::0;12243:28:::1;:36::i;:::-;11134:1172;;;;;;;;;11096:1210;-1:-1:-1::0;8931:8:0;:16;;-1:-1:-1;;;;8931:16:0;;;10986:1327::o;3845:604::-;-1:-1:-1;;;;;3951:20:0;;3943:70;;;;-1:-1:-1;;;3943:70:0;;15903:2:1;3943:70:0;;;15885:21:1;15942:2;15922:18;;;15915:30;15981:34;15961:18;;;15954:62;-1:-1:-1;;;16032:18:1;;;16025:35;16077:19;;3943:70:0;15701:401:1;3943:70:0;-1:-1:-1;;;;;4032:23:0;;4024:71;;;;-1:-1:-1;;;4024:71:0;;16309:2:1;4024:71:0;;;16291:21:1;16348:2;16328:18;;;16321:30;16387:34;16367:18;;;16360:62;-1:-1:-1;;;16438:18:1;;;16431:33;16481:19;;4024:71:0;16107:399:1;4024:71:0;-1:-1:-1;;;;;4192:17:0;;4168:21;4192:17;;;;;;;;;;;4228:23;;;;4220:74;;;;-1:-1:-1;;;4220:74:0;;16713:2:1;4220:74:0;;;16695:21:1;16752:2;16732:18;;;16725:30;16791:34;16771:18;;;16764:62;-1:-1:-1;;;16842:18:1;;;16835:36;16888:19;;4220:74:0;16511:402:1;4220:74:0;4325:22;4341:6;4325:13;:22;:::i;:::-;-1:-1:-1;;;;;4305:17:0;;;:9;:17;;;;;;;;;;;:42;;;;4358:20;;;;;;;;:30;;4382:6;;4305:9;4358:30;;4382:6;;4358:30;:::i;:::-;;;;;;;;4423:9;-1:-1:-1;;;;;4406:35:0;4415:6;-1:-1:-1;;;;;4406:35:0;;4434:6;4406:35;;;;160:25:1;;148:2;133:18;;14:177;4406:35:0;;;;;;;;3932:517;3845:604;;;:::o;12731:497::-;12911:6;;12879:53;;12896:4;;-1:-1:-1;;;;;12911:6:0;12920:11;12879:8;:53::i;:::-;12975:6;;13170:9;;12975:245;;-1:-1:-1;;;12975:245:0;;13038:4;12975:245;;;17259:34:1;17309:18;;;17302:34;;;12975:6:0;17352:18:1;;;17345:34;;;17395:18;;;17388:34;-1:-1:-1;;;;;13170:9:0;;;17438:19:1;;;17431:44;13194:15:0;17491:19:1;;;17484:35;12975:6:0;;;:22;;13005:9;;17193:19:1;;12975:245:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;196:597:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;634:6;631:1;628:13;625:91;;;704:1;699:2;690:6;679:9;675:22;671:31;664:42;625:91;-1:-1:-1;777:2:1;756:15;-1:-1:-1;;752:29:1;737:45;;;;784:2;733:54;;196:597;-1:-1:-1;;;196:597:1:o;798:316::-;875:6;883;891;944:2;932:9;923:7;919:23;915:32;912:52;;;960:1;957;950:12;912:52;-1:-1:-1;;983:23:1;;;1053:2;1038:18;;1025:32;;-1:-1:-1;1104:2:1;1089:18;;;1076:32;;798:316;-1:-1:-1;798:316:1:o;1119:131::-;-1:-1:-1;;;;;1194:31:1;;1184:42;;1174:70;;1240:1;1237;1230:12;1255:134;1323:20;;1352:31;1323:20;1352:31;:::i;:::-;1255:134;;;:::o;1394:315::-;1462:6;1470;1523:2;1511:9;1502:7;1498:23;1494:32;1491:52;;;1539:1;1536;1529:12;1491:52;1578:9;1565:23;1597:31;1622:5;1597:31;:::i;:::-;1647:5;1699:2;1684:18;;;;1671:32;;-1:-1:-1;;;1394:315:1:o;1906:456::-;1983:6;1991;1999;2052:2;2040:9;2031:7;2027:23;2023:32;2020:52;;;2068:1;2065;2058:12;2020:52;2107:9;2094:23;2126:31;2151:5;2126:31;:::i;:::-;2176:5;-1:-1:-1;2233:2:1;2218:18;;2205:32;2246:33;2205:32;2246:33;:::i;:::-;1906:456;;2298:7;;-1:-1:-1;;;2352:2:1;2337:18;;;;2324:32;;1906:456::o;2556:403::-;2639:6;2647;2700:2;2688:9;2679:7;2675:23;2671:32;2668:52;;;2716:1;2713;2706:12;2668:52;2755:9;2742:23;2774:31;2799:5;2774:31;:::i;:::-;2824:5;-1:-1:-1;2881:2:1;2866:18;;2853:32;2894:33;2853:32;2894:33;:::i;:::-;2946:7;2936:17;;;2556:403;;;;;:::o;2964:180::-;3023:6;3076:2;3064:9;3055:7;3051:23;3047:32;3044:52;;;3092:1;3089;3082:12;3044:52;-1:-1:-1;3115:23:1;;2964:180;-1:-1:-1;2964:180:1:o;3149:247::-;3208:6;3261:2;3249:9;3240:7;3236:23;3232:32;3229:52;;;3277:1;3274;3267:12;3229:52;3316:9;3303:23;3335:31;3360:5;3335:31;:::i;:::-;3385:5;3149:247;-1:-1:-1;;;3149:247:1:o;3933:127::-;3994:10;3989:3;3985:20;3982:1;3975:31;4025:4;4022:1;4015:15;4049:4;4046:1;4039:15;4065:1121;4149:6;4180:2;4223;4211:9;4202:7;4198:23;4194:32;4191:52;;;4239:1;4236;4229:12;4191:52;4279:9;4266:23;4308:18;4349:2;4341:6;4338:14;4335:34;;;4365:1;4362;4355:12;4335:34;4403:6;4392:9;4388:22;4378:32;;4448:7;4441:4;4437:2;4433:13;4429:27;4419:55;;4470:1;4467;4460:12;4419:55;4506:2;4493:16;4528:2;4524;4521:10;4518:36;;;4534:18;;:::i;:::-;4580:2;4577:1;4573:10;4612:2;4606:9;4675:2;4671:7;4666:2;4662;4658:11;4654:25;4646:6;4642:38;4730:6;4718:10;4715:22;4710:2;4698:10;4695:18;4692:46;4689:72;;;4741:18;;:::i;:::-;4777:2;4770:22;4827:18;;;4861:15;;;;-1:-1:-1;4903:11:1;;;4899:20;;;4931:19;;;4928:39;;;4963:1;4960;4953:12;4928:39;4987:11;;;;5007:148;5023:6;5018:3;5015:15;5007:148;;;5089:23;5108:3;5089:23;:::i;:::-;5077:36;;5040:12;;;;5133;;;;5007:148;;;5174:6;4065:1121;-1:-1:-1;;;;;;;;4065:1121:1:o;5584:118::-;5670:5;5663:13;5656:21;5649:5;5646:32;5636:60;;5692:1;5689;5682:12;5707:241;5763:6;5816:2;5804:9;5795:7;5791:23;5787:32;5784:52;;;5832:1;5829;5822:12;5784:52;5871:9;5858:23;5890:28;5912:5;5890:28;:::i;5953:382::-;6018:6;6026;6079:2;6067:9;6058:7;6054:23;6050:32;6047:52;;;6095:1;6092;6085:12;6047:52;6134:9;6121:23;6153:31;6178:5;6153:31;:::i;:::-;6203:5;-1:-1:-1;6260:2:1;6245:18;;6232:32;6273:30;6232:32;6273:30;:::i;6563:380::-;6642:1;6638:12;;;;6685;;;6706:61;;6760:4;6752:6;6748:17;6738:27;;6706:61;6813:2;6805:6;6802:14;6782:18;6779:38;6776:161;;;6859:10;6854:3;6850:20;6847:1;6840:31;6894:4;6891:1;6884:15;6922:4;6919:1;6912:15;6776:161;;6563:380;;;:::o;6948:356::-;7150:2;7132:21;;;7169:18;;;7162:30;7228:34;7223:2;7208:18;;7201:62;7295:2;7280:18;;6948:356::o;7309:127::-;7370:10;7365:3;7361:20;7358:1;7351:31;7401:4;7398:1;7391:15;7425:4;7422:1;7415:15;7441:128;7481:3;7512:1;7508:6;7505:1;7502:13;7499:39;;;7518:18;;:::i;:::-;-1:-1:-1;7554:9:1;;7441:128::o;7983:125::-;8023:4;8051:1;8048;8045:8;8042:34;;;8056:18;;:::i;:::-;-1:-1:-1;8093:9:1;;7983:125::o;8113:168::-;8153:7;8219:1;8215;8211:6;8207:14;8204:1;8201:21;8196:1;8189:9;8182:17;8178:45;8175:71;;;8226:18;;:::i;:::-;-1:-1:-1;8266:9:1;;8113:168::o;8286:217::-;8326:1;8352;8342:132;;8396:10;8391:3;8387:20;8384:1;8377:31;8431:4;8428:1;8421:15;8459:4;8456:1;8449:15;8342:132;-1:-1:-1;8488:9:1;;8286:217::o;9138:245::-;9205:6;9258:2;9246:9;9237:7;9233:23;9229:32;9226:52;;;9274:1;9271;9264:12;9226:52;9306:9;9300:16;9325:28;9347:5;9325:28;:::i;9388:251::-;9458:6;9511:2;9499:9;9490:7;9486:23;9482:32;9479:52;;;9527:1;9524;9517:12;9479:52;9559:9;9553:16;9578:31;9603:5;9578:31;:::i;10359:127::-;10420:10;10415:3;10411:20;10408:1;10401:31;10451:4;10448:1;10441:15;10475:4;10472:1;10465:15;10491:135;10530:3;-1:-1:-1;;10551:17:1;;10548:43;;;10571:18;;:::i;:::-;-1:-1:-1;10618:1:1;10607:13;;10491:135::o;13721:980::-;13983:4;14031:3;14020:9;14016:19;14062:6;14051:9;14044:25;14088:2;14126:6;14121:2;14110:9;14106:18;14099:34;14169:3;14164:2;14153:9;14149:18;14142:31;14193:6;14228;14222:13;14259:6;14251;14244:22;14297:3;14286:9;14282:19;14275:26;;14336:2;14328:6;14324:15;14310:29;;14357:1;14367:195;14381:6;14378:1;14375:13;14367:195;;;14446:13;;-1:-1:-1;;;;;14442:39:1;14430:52;;14537:15;;;;14502:12;;;;14478:1;14396:9;14367:195;;;-1:-1:-1;;;;;;;14618:32:1;;;;14613:2;14598:18;;14591:60;-1:-1:-1;;;14682:3:1;14667:19;14660:35;14579:3;13721:980;-1:-1:-1;;;13721:980:1:o;17530:306::-;17618:6;17626;17634;17687:2;17675:9;17666:7;17662:23;17658:32;17655:52;;;17703:1;17700;17693:12;17655:52;17732:9;17726:16;17716:26;;17782:2;17771:9;17767:18;17761:25;17751:35;;17826:2;17815:9;17811:18;17805:25;17795:35;;17530:306;;;;;:::o

Swarm Source

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