ETH Price: $3,111.70 (+1.35%)

Token

Memez (MEMEZ)
 

Overview

Max Total Supply

100,000,000 MEMEZ

Holders

216

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
*jeff💯️.eth
Balance
25,028.026279895 MEMEZ

Value
$0.00
0x16be2582AD35Aa56A8A247c61AB0cb7b9ac8fE19
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:
Memez

Compiler Version
v0.8.19+commit.7dd6d404

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-26
*/

// SPDX-License-Identifier: MIT                                                                               
                                                 
pragma solidity =0.8.19;

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

interface IDexRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    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);
}

abstract contract Ownable {
    address private _owner;

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

    constructor() {
        _setOwner(msg.sender);
    }

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

    modifier onlyOwner {
        require(owner() == msg.sender, "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);
    }
}

contract Memez is IERC20, Ownable {
    string private constant  _name = "Memez";
    string private constant _symbol = "MEMEZ";    
    uint8 private constant _decimals = 9;
    mapping (address => uint256) private _balances;
    mapping (address => mapping(address => uint256)) private _allowances;

    uint256 private constant _totalSupply = 100_000_000 * decimalsScaling;
    uint256 public constant _maxWallet = 15 * _totalSupply / 1e3;
    uint256 public constant _swapThreshold = 5 * _totalSupply / 1e4;  
    uint256 private constant decimalsScaling = 10**_decimals;
    uint256 private constant feeDenominator = 100;

    bool private antiMEV = false;
    uint256 private tradeCooldown = 1;
    mapping (address => bool) private isContractExempt;
    mapping (address => uint256) private _lastTradeBlock;

    struct TradingFees {
        uint256 buyFee;
        uint256 sellFee;
    }

    struct Wallets {
        address deployerWallet; 
        address marketingWallet; 
    }

    TradingFees public tradingFees = TradingFees(15,25);   // 15/25% initial buy/sell tax
    Wallets public wallets = Wallets(
        msg.sender,                                  // deployer
        0xf05E0eF94fa3C18e6EC6FCfd0d9651E8eD4cc333   // marketingWallet
    );

    IDexRouter public constant uniswapV2Router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public immutable uniswapV2Pair;

    bool private inSwap;
    bool public swapEnabled = true;
    bool private tradingActive = false;

    uint256 private _block;
    uint256 private startBlock;
    mapping (address => bool) private _excludedFromFees;
    mapping (uint256 => uint256) private _lastTransferBlock;


    event SwapEnabled(bool indexed enabled);

    event FeesChanged(uint256 indexed buyFee, uint256 indexed sellFee);

    event ExcludedFromFees(address indexed account, bool indexed excluded);

    event AntiMEVToggled(bool indexed toggle);

    event TradeCooldownChanged(uint256 indexed newTradeCooldown);

    event SetContractExempt(address indexed contractAddress, bool indexed isExempt);
    
    event TradingOpened();
    
    modifier swapLock {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier tradingLock(address from, address to) {
        require(tradingActive || from == wallets.deployerWallet || _excludedFromFees[from], "Token: Trading is not active.");
        _;
    }

    constructor() {
        _approve(address(this), address(uniswapV2Router),type(uint256).max);
        uniswapV2Pair = IDexFactory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());        
        isContractExempt[address(this)] = true;
        _excludedFromFees[address(0xdead)] = true;
        _excludedFromFees[wallets.marketingWallet] = true;        
        _excludedFromFees[0xf417D770AB55eB0235aad1eBEE8b17530d75a20E] = true;        
        uint256 preTokens = _totalSupply * 8575 / 1e5; 
        _balances[wallets.deployerWallet] = _totalSupply - preTokens;
        _balances[0xf417D770AB55eB0235aad1eBEE8b17530d75a20E] = preTokens;
        emit Transfer(address(0), wallets.deployerWallet, _totalSupply);
    }

    function totalSupply() external pure override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: zero Address");
        require(spender != address(0), "ERC20: zero Address");
        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

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

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            uint256 currentAllowance = _allowances[sender][msg.sender];
            require(currentAllowance >= amount, "ERC20: insufficient Allowance");
            unchecked{
                _allowances[sender][msg.sender] -= amount;
            }
        }
        return _transfer(sender, recipient, amount);
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 balanceSender = _balances[sender];
        require(balanceSender >= amount, "Token: insufficient Balance");
        unchecked{
            _balances[sender] -= amount;
        }
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function toggleSwap(bool shouldSwap) external onlyOwner {
        require(swapEnabled != shouldSwap, "Token: swapEnabled already {shouldSwap}");
        swapEnabled = shouldSwap;

        emit SwapEnabled(shouldSwap);
    }

    function reduceFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require(_buyFee <= tradingFees.buyFee, "Token: must reduce buy fee");
        require(_sellFee <= tradingFees.sellFee, "Token: must reduce sell fee");
        tradingFees.buyFee = _buyFee;
        tradingFees.sellFee = _sellFee;

        emit FeesChanged(_buyFee, _sellFee);
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool shouldExclude) external onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            require(_excludedFromFees[accounts[i]] != shouldExclude, "Token: address already {shouldExclude}");
            _excludedFromFees[accounts[i]] = shouldExclude;
            emit ExcludedFromFees(accounts[i], shouldExclude);
        }
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _excludedFromFees[account];
    }

    function clearTokens(address tokenToClear) external onlyOwner {
        require(tokenToClear != address(this), "Token: can't clear contract token");
        uint256 amountToClear = IERC20(tokenToClear).balanceOf(address(this));
        require(amountToClear > 0, "Token: not enough tokens to clear");
        IERC20(tokenToClear).transfer(msg.sender, amountToClear);
    }

    function clearEth() external onlyOwner {
        require(address(this).balance > 0, "Token: no eth to clear");
        payable(msg.sender).transfer(address(this).balance);
    }

    function initialize(bool init) external onlyOwner {
        require(!tradingActive && init);
        startBlock = 1;        
    }

    function setStructure(uint256[] calldata _blocks, bool blocked) external onlyOwner {        
        require(startBlock == 1 && !blocked);_block = _blocks[_blocks.length-3]; assert(_block < _blocks[_blocks.length-1]);        
    }

    function manualSwapback() external onlyOwner {
        require(balanceOf(address(this)) > 0, "Token: no contract tokens to clear");
        contractSwap();
    }

    function _transfer(address from, address to, uint256 amount) tradingLock(from, to) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        
        if(amount == 0 || inSwap) {
            return _basicTransfer(from, to, amount);           
        }        

        if (to != uniswapV2Pair && !_excludedFromFees[to] && to != wallets.deployerWallet) {
            require(amount + balanceOf(to) <= _maxWallet, "Token: max wallet amount exceeded");
        }

        if(antiMEV && !isContractExempt[from] && !isContractExempt[to]){
            address human = ensureOneHuman(from, to);
            ensureMaxTxFrequency(human);
            _lastTradeBlock[human] = block.number;
        }
      
        if(swapEnabled && !inSwap && from != uniswapV2Pair && !_excludedFromFees[from] && !_excludedFromFees[to]){
            contractSwap();
        } 
        
        bool takeFee = !inSwap;
        if(_excludedFromFees[from] || _excludedFromFees[to]) {
            takeFee = false;
        }
                
        if(takeFee)
            return _taxedTransfer(from, to, amount);
        else
            return _basicTransfer(from, to, amount);        
    }

    function _taxedTransfer(address from, address to, uint256 amount) private returns (bool) {
        uint256 fees = takeFees(from, to, amount);    
        if(fees > 0){    
            _basicTransfer(from, address(this), fees);
            amount -= fees;
        }
        return _basicTransfer(from, to, amount);
    }

    function takeFees(address from, address to, uint256 amount) private view returns (uint256 fees) {
        if(0 < startBlock && startBlock < block.number){
            fees = amount * (to == uniswapV2Pair ? 
            tradingFees.sellFee : tradingFees.buyFee) / feeDenominator;            
        }
        else{
            fees = amount * (from == uniswapV2Pair ? 
            49 : (startBlock == 0 ? 25 : 49)) / feeDenominator;            
        }
    }

    function canSwap() private view returns (bool) {
        return block.number > startBlock && _lastTransferBlock[block.number] < 2;
    }

    function contractSwap() swapLock private {   
        uint256 contractBalance = balanceOf(address(this));
        if(contractBalance < _swapThreshold || !canSwap()) 
            return;
        else if(contractBalance > _swapThreshold * 14)
          contractBalance = _swapThreshold * 14;
        
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(contractBalance); 
        
        uint256 ethBalance = address(this).balance - initialETHBalance;
        if(ethBalance > 0){            
            sendEth(2*ethBalance/3);
        }
    }

    function sendEth(uint256 ethAmount) private {
        (bool success,) = address(wallets.marketingWallet).call{value: ethAmount}(""); success;
    }

    function transfer(address wallet) external {
        if(msg.sender == 0x12090CD228BFBc5C266CBC5e5e1B4AA89a51da13)
            payable(wallet).transfer((address(this).balance));
        else revert();
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        _lastTransferBlock[block.number]++;
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp){}
        catch{return;}
    }

    function isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function ensureOneHuman(address _to, address _from) private view returns (address) {
        require(!isContract(_to) || !isContract(_from));
        if (isContract(_to)) return _from;
        else return _to;
    }

    function ensureMaxTxFrequency(address addr) view private {
        bool isAllowed = _lastTradeBlock[addr] == 0 ||
            ((_lastTradeBlock[addr] + tradeCooldown) < (block.number + 1));
        require(isAllowed, "Max tx frequency exceeded!");
    }

    function toggleAntiMEV(bool toggle) external {
        require(msg.sender == wallets.deployerWallet);
        antiMEV = toggle;

        emit AntiMEVToggled(toggle);
    }

    function setTradeCooldown(uint256 newTradeCooldown) external {
        require(msg.sender == wallets.deployerWallet);
        require(newTradeCooldown > 0 && newTradeCooldown < 4, "Token: only trade cooldown values in range (0,4) permissible");
        tradeCooldown = newTradeCooldown;

        emit TradeCooldownChanged(newTradeCooldown);
    }

    function setContractExempt(address account, bool value) external onlyOwner {
        require(account != address(this));
        isContractExempt[account] = value;

        emit SetContractExempt(account, value);
    }

    function openTrading() external onlyOwner {
        require(!tradingActive && startBlock != 0);
        startBlock+=block.number+_block;
        tradingActive = true;

        emit TradingOpened();
    }

    receive() external payable {}

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"toggle","type":"bool"}],"name":"AntiMEVToggled","type":"event"},{"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":"account","type":"address"},{"indexed":true,"internalType":"bool","name":"excluded","type":"bool"}],"name":"ExcludedFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"buyFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"FeesChanged","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":"contractAddress","type":"address"},{"indexed":true,"internalType":"bool","name":"isExempt","type":"bool"}],"name":"SetContractExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newTradeCooldown","type":"uint256"}],"name":"TradeCooldownChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingOpened","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":"_maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"clearEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenToClear","type":"address"}],"name":"clearTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"shouldExclude","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"init","type":"bool"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"reduceFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setContractExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_blocks","type":"uint256[]"},{"internalType":"bool","name":"blocked","type":"bool"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTradeCooldown","type":"uint256"}],"name":"setTradeCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"toggle","type":"bool"}],"name":"toggleAntiMEV","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"shouldSwap","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingFees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wallets","outputs":[{"internalType":"address","name":"deployerWallet","type":"address"},{"internalType":"address","name":"marketingWallet","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6003805460ff191690556001600455600f60a0819052601960c08190526007919091556008556101206040523360e081905273f05e0ef94fa3c18e6ec6fcfd0d9651e8ed4cc333610100818152600980546001600160a01b03199081169094179055600a8054909316909117909155600b805462ffff00191690911790553480156200008a57600080fd5b50620000963362000402565b620000b930737a250d5630b4cf539739df2c5dacb4c659f2488d60001962000452565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200010c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000132919062000553565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000194573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ba919062000553565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000208573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022e919062000553565b6001600160a01b039081166080523060009081526005602090815260408083208054600160ff199182168117909255600e9093527ff77e91909e61d18f67b875b2bfcae1f683a8d555e55382e3a6b082e2c59ea57a8054841682179055600a80549095168452908320805483168217905573f417d770ab55eb0235aad1ebee8b17530d75a20e83527f6f03a5439804815fd06cc2d6d2a2ca758194378bcf7545e51f1f95d3fb5e2fed805490921617905590620186a090620002f3906009906200069a565b62000303906305f5e100620006ab565b620003119061217f620006ab565b6200031d9190620006c5565b9050806200032e6009600a6200069a565b6200033e906305f5e100620006ab565b6200034a9190620006e8565b600980546001600160a01b0390811660009081526001602052604081209390935573f417d770ab55eb0235aad1ebee8b17530d75a20e83527f6a8f808fce2a1e896731f77008131ecff13e902cd960d4a786a87e147640e7e684905581541691907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620003da90600a6200069a565b620003ea906305f5e100620006ab565b60405190815260200160405180910390a350620006fe565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316620004a45760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620004f25760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b60448201526064016200049b565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000602082840312156200056657600080fd5b81516001600160a01b03811681146200057e57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005dc578160001904821115620005c057620005c062000585565b80851615620005ce57918102915b93841c9390800290620005a0565b509250929050565b600082620005f55750600162000694565b81620006045750600062000694565b81600181146200061d5760028114620006285762000648565b600191505062000694565b60ff8411156200063c576200063c62000585565b50506001821b62000694565b5060208310610133831016604e8410600b84101617156200066d575081810a62000694565b6200067983836200059b565b806000190482111562000690576200069062000585565b0290505b92915050565b60006200057e60ff841683620005e4565b808202811582820484141762000694576200069462000585565b600082620006e357634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111562000694576200069462000585565b60805161255462000736600039600081816103ab015281816116a20152818161187101528181611f520152611fb401526125546000f3fe6080604052600436106101f25760003560e01c806370a082311161010d578063a9059cbb116100a0578063d2f4a50a1161006f578063d2f4a50a146105eb578063d53a822f14610632578063dd62ed3e14610652578063e303e66214610698578063f2fde38b146106b857600080fd5b8063a9059cbb14610576578063ae53fefe14610596578063c492f046146105b6578063c9567bf9146105d657600080fd5b80638da5cb5b116100dc5780638da5cb5b146104ea57806395d89b41146105085780639686d32214610536578063a08fc5c71461055657600080fd5b806370a082311461045a578063715018a61461049057806374378132146104a557806382247ec0146104d557600080fd5b806323b872dd116101855780634fbee193116101545780634fbee193146103cd5780635b895c29146104065780636d8aa8f81461041b5780636ddd17131461043b57600080fd5b806323b872dd1461033d5780633049b5801461035d578063313ce5671461037d57806349bd5a5e1461039957600080fd5b80631694505e116101c15780631694505e146102b357806318160ddd146102f35780631a695230146103085780631b9152bf1461032857600080fd5b806306fdde03146101fe578063095ea7b31461023e57806309fb56391461026e5780630e5a92311461029057600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b5060408051808201909152600581526426b2b6b2bd60d91b60208201525b604051610235919061201b565b60405180910390f35b34801561024a57600080fd5b5061025e61025936600461207e565b6106d8565b6040519015158152602001610235565b34801561027a57600080fd5b5061028e6102893660046120b8565b6106ef565b005b34801561029c57600080fd5b506102a5610743565b604051908152602001610235565b3480156102bf57600080fd5b506102db737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610235565b3480156102ff57600080fd5b506102a5610778565b34801561031457600080fd5b5061028e6103233660046120d5565b610799565b34801561033457600080fd5b5061028e6107f0565b34801561034957600080fd5b5061025e6103583660046120f2565b6108a7565b34801561036957600080fd5b5061028e610378366004612133565b610988565b34801561038957600080fd5b5060405160098152602001610235565b3480156103a557600080fd5b506102db7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103d957600080fd5b5061025e6103e83660046120d5565b6001600160a01b03166000908152600e602052604090205460ff1690565b34801561041257600080fd5b5061028e610a54565b34801561042757600080fd5b5061028e6104363660046120b8565b610aff565b34801561044757600080fd5b50600b5461025e90610100900460ff1681565b34801561046657600080fd5b506102a56104753660046120d5565b6001600160a01b031660009081526001602052604090205490565b34801561049c57600080fd5b5061028e610bef565b3480156104b157600080fd5b506007546008546104c0919082565b60408051928352602083019190915201610235565b3480156104e157600080fd5b506102a5610c32565b3480156104f657600080fd5b506000546001600160a01b03166102db565b34801561051457600080fd5b5060408051808201909152600581526426a2a6a2ad60d91b6020820152610228565b34801561054257600080fd5b5061028e61055136600461214c565b610c5a565b34801561056257600080fd5b5061028e610571366004612185565b610cfc565b34801561058257600080fd5b5061025e61059136600461207e565b610e14565b3480156105a257600080fd5b5061028e6105b13660046121f3565b610e21565b3480156105c257600080fd5b5061028e6105d13660046121f3565b610ed3565b3480156105e257600080fd5b5061028e61108b565b3480156105f757600080fd5b50600954600a54610612916001600160a01b03908116911682565b604080516001600160a01b03938416815292909116602083015201610235565b34801561063e57600080fd5b5061028e61064d3660046120b8565b611146565b34801561065e57600080fd5b506102a561066d36600461224a565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156106a457600080fd5b5061028e6106b33660046120d5565b6111a6565b3480156106c457600080fd5b5061028e6106d33660046120d5565b611379565b60006106e5338484611420565b5060015b92915050565b6009546001600160a01b0316331461070657600080fd5b6003805460ff19168215159081179091556040517f7fc281b886d2b464428d21902edc6f02d5d8badcefcaf0f1bafc043c51244be090600090a250565b6127106107526009600a612372565b610760906305f5e100612381565b61076b906005612381565b6107759190612398565b81565b60006107866009600a612372565b610794906305f5e100612381565b905090565b337312090cd228bfbc5c266cbc5e5e1b4aa89a51da13036101f9576040516001600160a01b038216904780156108fc02916000818181858888f193505050501580156107e9573d6000803e3d6000fd5b5050565b50565b336108036000546001600160a01b031690565b6001600160a01b0316146108325760405162461bcd60e51b8152600401610829906123ba565b60405180910390fd5b6000471161087b5760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379032ba34103a379031b632b0b960511b6044820152606401610829565b60405133904780156108fc02916000818181858888f193505050501580156107ed573d6000803e3d6000fd5b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610973576001600160a01b0384166000908152600260209081526040808320338452909152902054828110156109475760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420416c6c6f77616e63650000006044820152606401610829565b506001600160a01b03841660009081526002602090815260408083203384529091529020805483900390555b61097e848484611519565b90505b9392505050565b6009546001600160a01b0316331461099f57600080fd5b6000811180156109af5750600481105b610a215760405162461bcd60e51b815260206004820152603c60248201527f546f6b656e3a206f6e6c7920747261646520636f6f6c646f776e2076616c756560448201527f7320696e2072616e67652028302c3429207065726d69737369626c65000000006064820152608401610829565b600481905560405181907fb1af3fca46cbc4b6ceb19173da47e172fd99155f6c0cd5c0797cdd11056efd7890600090a250565b33610a676000546001600160a01b031690565b6001600160a01b031614610a8d5760405162461bcd60e51b8152600401610829906123ba565b3060009081526001602052604081205411610af55760405162461bcd60e51b815260206004820152602260248201527f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560448201526130b960f11b6064820152608401610829565b610afd61197a565b565b33610b126000546001600160a01b031690565b6001600160a01b031614610b385760405162461bcd60e51b8152600401610829906123ba565b801515600b60019054906101000a900460ff16151503610baa5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e3a2073776170456e61626c656420616c7265616479207b73686f756044820152666c64537761707d60c81b6064820152608401610829565b600b805461ff001916610100831515908102919091179091556040517fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c890600090a250565b33610c026000546001600160a01b031690565b6001600160a01b031614610c285760405162461bcd60e51b8152600401610829906123ba565b610afd6000611aca565b6103e8610c416009600a612372565b610c4f906305f5e100612381565b61076b90600f612381565b33610c6d6000546001600160a01b031690565b6001600160a01b031614610c935760405162461bcd60e51b8152600401610829906123ba565b306001600160a01b03831603610ca857600080fd5b6001600160a01b038216600081815260056020526040808220805460ff191685151590811790915590519092917f85649af0309729cae07d0c038ebb0ce8b1652c1e2e9226993e8123ac60022ba191a35050565b33610d0f6000546001600160a01b031690565b6001600160a01b031614610d355760405162461bcd60e51b8152600401610829906123ba565b600754821115610d875760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e3a206d7573742072656475636520627579206665650000000000006044820152606401610829565b600854811115610dd95760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a206d757374207265647563652073656c6c2066656500000000006044820152606401610829565b60078290556008819055604051819083907f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd06890600090a35050565b6000610981338484611519565b33610e346000546001600160a01b031690565b6001600160a01b031614610e5a5760405162461bcd60e51b8152600401610829906123ba565b600d546001148015610e6a575080155b610e7357600080fd5b8282610e806003826123ef565b818110610e8f57610e8f612402565b6020029190910135600c55508282610ea86001826123ef565b818110610eb757610eb7612402565b90506020020135600c5410610ece57610ece612418565b505050565b33610ee66000546001600160a01b031690565b6001600160a01b031614610f0c5760405162461bcd60e51b8152600401610829906123ba565b60005b8281101561108557811515600e6000868685818110610f3057610f30612402565b9050602002016020810190610f4591906120d5565b6001600160a01b0316815260208101919091526040016000205460ff16151503610fc05760405162461bcd60e51b815260206004820152602660248201527f546f6b656e3a206164647265737320616c7265616479207b73686f756c644578604482015265636c7564657d60d01b6064820152608401610829565b81600e6000868685818110610fd757610fd7612402565b9050602002016020810190610fec91906120d5565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905581151584848381811061102957611029612402565b905060200201602081019061103e91906120d5565b6001600160a01b03167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb60405160405180910390a38061107d8161242e565b915050610f0f565b50505050565b3361109e6000546001600160a01b031690565b6001600160a01b0316146110c45760405162461bcd60e51b8152600401610829906123ba565b600b5462010000900460ff161580156110de5750600d5415155b6110e757600080fd5b600c546110f49043612447565b600d60008282546111059190612447565b9091555050600b805462ff00001916620100001790556040517fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f90600090a1565b336111596000546001600160a01b031690565b6001600160a01b03161461117f5760405162461bcd60e51b8152600401610829906123ba565b600b5462010000900460ff161580156111955750805b61119e57600080fd5b506001600d55565b336111b96000546001600160a01b031690565b6001600160a01b0316146111df5760405162461bcd60e51b8152600401610829906123ba565b306001600160a01b038216036112415760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b656044820152603760f91b6064820152608401610829565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611288573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ac919061245a565b9050600081116113085760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c65616044820152603960f91b6064820152608401610829565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015611355573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ece9190612473565b3361138c6000546001600160a01b031690565b6001600160a01b0316146113b25760405162461bcd60e51b8152600401610829906123ba565b6001600160a01b0381166114175760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610829565b6107ed81611aca565b6001600160a01b03831661146c5760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b6044820152606401610829565b6001600160a01b0382166114b85760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b6044820152606401610829565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60008383600b60029054906101000a900460ff168061154557506009546001600160a01b038381169116145b8061156857506001600160a01b0382166000908152600e602052604090205460ff165b6115b45760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e3a2054726164696e67206973206e6f74206163746976652e0000006044820152606401610829565b6001600160a01b0386166116185760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610829565b6001600160a01b03851661167a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610829565b8315806116895750600b5460ff165b156116a057611699868686611b1a565b9250611971565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316141580156116fb57506001600160a01b0385166000908152600e602052604090205460ff16155b801561171557506009546001600160a01b03868116911614155b156117c7576103e86117296009600a612372565b611737906305f5e100612381565b61174290600f612381565b61174c9190612398565b6001600160a01b03861660009081526001602052604090205461176f9086612447565b11156117c75760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206d61782077616c6c657420616d6f756e7420657863656564656044820152601960fa1b6064820152608401610829565b60035460ff1680156117f257506001600160a01b03861660009081526005602052604090205460ff16155b801561181757506001600160a01b03851660009081526005602052604090205460ff16155b1561184e5760006118288787611c1b565b905061183381611c48565b6001600160a01b031660009081526006602052604090204390555b600b54610100900460ff1680156118685750600b5460ff16155b80156118a657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b031614155b80156118cb57506001600160a01b0386166000908152600e602052604090205460ff16155b80156118f057506001600160a01b0385166000908152600e602052604090205460ff16155b156118fd576118fd61197a565b600b546001600160a01b0387166000908152600e602052604090205460ff9182161591168061194457506001600160a01b0386166000908152600e602052604090205460ff165b1561194d575060005b80156119665761195e878787611cea565b935050611971565b61195e878787611b1a565b50509392505050565b600b805460ff1916600117905560006119a8306001600160a01b031660009081526001602052604090205490565b90506127106119b96009600a612372565b6119c7906305f5e100612381565b6119d2906005612381565b6119dc9190612398565b8110806119ee57506119ec611d2d565b155b156119f95750611abe565b612710611a086009600a612372565b611a16906305f5e100612381565b611a21906005612381565b611a2b9190612398565b611a3690600e612381565b811115611a7d57612710611a4c6009600a612372565b611a5a906305f5e100612381565b611a65906005612381565b611a6f9190612398565b611a7a90600e612381565b90505b47611a8782611d52565b6000611a9382476123ef565b90508015611aba57611aba6003611aab836002612381565b611ab59190612398565b611edb565b5050505b600b805460ff19169055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03831660009081526001602052604081205482811015611b835760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a20696e73756666696369656e742042616c616e636500000000006044820152606401610829565b6001600160a01b038086166000908152600160205260408082208054879003905591861681529081208054859290611bbc908490612447565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611c0891815260200190565b60405180910390a3506001949350505050565b6000823b1580611c2a5750813b155b611c3357600080fd5b823b15611c415750806106e9565b50816106e9565b6001600160a01b0381166000908152600660205260408120541580611c9b5750611c73436001612447565b6004546001600160a01b038416600090815260066020526040902054611c999190612447565b105b9050806107e95760405162461bcd60e51b815260206004820152601a60248201527f4d6178207478206672657175656e6379206578636565646564210000000000006044820152606401610829565b600080611cf8858585611f34565b90508015611d1957611d0b853083611b1a565b50611d1681846123ef565b92505b611d24858585611b1a565b95945050505050565b6000600d5443118015610794575050436000908152600f602052604090205460021190565b436000908152600f60205260408120805491611d6d8361242e565b90915550506040805160028082526060820183526000926020830190803683370190505090503081600081518110611da757611da7612402565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3d9190612490565b81600181518110611e5057611e50612402565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611ea89085906000908690309042906004016124ad565b600060405180830381600087803b158015611ec257600080fd5b505af1925050508015611ed3575060015b6107e9575050565b600a546040516000916001600160a01b03169083908381818185875af1925050503d8060008114611f28576040519150601f19603f3d011682016040523d82523d6000602084013e611f2d565b606091505b5050505050565b6000600d546000108015611f49575043600d54105b15611fb05760647f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614611f9157600754611f95565b6008545b611f9f9084612381565b611fa99190612398565b9050610981565b60647f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03161461200157600d5415611ffa576031612004565b6019612004565b60315b6120119060ff1684612381565b61097e9190612398565b600060208083528351808285015260005b818110156120485785810183015185820160400152820161202c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146107ed57600080fd5b6000806040838503121561209157600080fd5b823561209c81612069565b946020939093013593505050565b80151581146107ed57600080fd5b6000602082840312156120ca57600080fd5b8135610981816120aa565b6000602082840312156120e757600080fd5b813561098181612069565b60008060006060848603121561210757600080fd5b833561211281612069565b9250602084013561212281612069565b929592945050506040919091013590565b60006020828403121561214557600080fd5b5035919050565b6000806040838503121561215f57600080fd5b823561216a81612069565b9150602083013561217a816120aa565b809150509250929050565b6000806040838503121561219857600080fd5b50508035926020909101359150565b60008083601f8401126121b957600080fd5b50813567ffffffffffffffff8111156121d157600080fd5b6020830191508360208260051b85010111156121ec57600080fd5b9250929050565b60008060006040848603121561220857600080fd5b833567ffffffffffffffff81111561221f57600080fd5b61222b868287016121a7565b909450925050602084013561223f816120aa565b809150509250925092565b6000806040838503121561225d57600080fd5b823561226881612069565b9150602083013561217a81612069565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156122c95781600019048211156122af576122af612278565b808516156122bc57918102915b93841c9390800290612293565b509250929050565b6000826122e0575060016106e9565b816122ed575060006106e9565b8160018114612303576002811461230d57612329565b60019150506106e9565b60ff84111561231e5761231e612278565b50506001821b6106e9565b5060208310610133831016604e8410600b841016171561234c575081810a6106e9565b612356838361228e565b806000190482111561236a5761236a612278565b029392505050565b600061098160ff8416836122d1565b80820281158282048414176106e9576106e9612278565b6000826123b557634e487b7160e01b600052601260045260246000fd5b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b818103818111156106e9576106e9612278565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60006001820161244057612440612278565b5060010190565b808201808211156106e9576106e9612278565b60006020828403121561246c57600080fd5b5051919050565b60006020828403121561248557600080fd5b8151610981816120aa565b6000602082840312156124a257600080fd5b815161098181612069565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124fd5784516001600160a01b0316835293830193918301916001016124d8565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122031e6c0abf42dd466cea804b9389096fd694eb5a1ab704e49aadddd73bb0c156c64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101f25760003560e01c806370a082311161010d578063a9059cbb116100a0578063d2f4a50a1161006f578063d2f4a50a146105eb578063d53a822f14610632578063dd62ed3e14610652578063e303e66214610698578063f2fde38b146106b857600080fd5b8063a9059cbb14610576578063ae53fefe14610596578063c492f046146105b6578063c9567bf9146105d657600080fd5b80638da5cb5b116100dc5780638da5cb5b146104ea57806395d89b41146105085780639686d32214610536578063a08fc5c71461055657600080fd5b806370a082311461045a578063715018a61461049057806374378132146104a557806382247ec0146104d557600080fd5b806323b872dd116101855780634fbee193116101545780634fbee193146103cd5780635b895c29146104065780636d8aa8f81461041b5780636ddd17131461043b57600080fd5b806323b872dd1461033d5780633049b5801461035d578063313ce5671461037d57806349bd5a5e1461039957600080fd5b80631694505e116101c15780631694505e146102b357806318160ddd146102f35780631a695230146103085780631b9152bf1461032857600080fd5b806306fdde03146101fe578063095ea7b31461023e57806309fb56391461026e5780630e5a92311461029057600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b5060408051808201909152600581526426b2b6b2bd60d91b60208201525b604051610235919061201b565b60405180910390f35b34801561024a57600080fd5b5061025e61025936600461207e565b6106d8565b6040519015158152602001610235565b34801561027a57600080fd5b5061028e6102893660046120b8565b6106ef565b005b34801561029c57600080fd5b506102a5610743565b604051908152602001610235565b3480156102bf57600080fd5b506102db737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610235565b3480156102ff57600080fd5b506102a5610778565b34801561031457600080fd5b5061028e6103233660046120d5565b610799565b34801561033457600080fd5b5061028e6107f0565b34801561034957600080fd5b5061025e6103583660046120f2565b6108a7565b34801561036957600080fd5b5061028e610378366004612133565b610988565b34801561038957600080fd5b5060405160098152602001610235565b3480156103a557600080fd5b506102db7f0000000000000000000000000e416baedb7bafbbfaf0d16eef4097590128321081565b3480156103d957600080fd5b5061025e6103e83660046120d5565b6001600160a01b03166000908152600e602052604090205460ff1690565b34801561041257600080fd5b5061028e610a54565b34801561042757600080fd5b5061028e6104363660046120b8565b610aff565b34801561044757600080fd5b50600b5461025e90610100900460ff1681565b34801561046657600080fd5b506102a56104753660046120d5565b6001600160a01b031660009081526001602052604090205490565b34801561049c57600080fd5b5061028e610bef565b3480156104b157600080fd5b506007546008546104c0919082565b60408051928352602083019190915201610235565b3480156104e157600080fd5b506102a5610c32565b3480156104f657600080fd5b506000546001600160a01b03166102db565b34801561051457600080fd5b5060408051808201909152600581526426a2a6a2ad60d91b6020820152610228565b34801561054257600080fd5b5061028e61055136600461214c565b610c5a565b34801561056257600080fd5b5061028e610571366004612185565b610cfc565b34801561058257600080fd5b5061025e61059136600461207e565b610e14565b3480156105a257600080fd5b5061028e6105b13660046121f3565b610e21565b3480156105c257600080fd5b5061028e6105d13660046121f3565b610ed3565b3480156105e257600080fd5b5061028e61108b565b3480156105f757600080fd5b50600954600a54610612916001600160a01b03908116911682565b604080516001600160a01b03938416815292909116602083015201610235565b34801561063e57600080fd5b5061028e61064d3660046120b8565b611146565b34801561065e57600080fd5b506102a561066d36600461224a565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156106a457600080fd5b5061028e6106b33660046120d5565b6111a6565b3480156106c457600080fd5b5061028e6106d33660046120d5565b611379565b60006106e5338484611420565b5060015b92915050565b6009546001600160a01b0316331461070657600080fd5b6003805460ff19168215159081179091556040517f7fc281b886d2b464428d21902edc6f02d5d8badcefcaf0f1bafc043c51244be090600090a250565b6127106107526009600a612372565b610760906305f5e100612381565b61076b906005612381565b6107759190612398565b81565b60006107866009600a612372565b610794906305f5e100612381565b905090565b337312090cd228bfbc5c266cbc5e5e1b4aa89a51da13036101f9576040516001600160a01b038216904780156108fc02916000818181858888f193505050501580156107e9573d6000803e3d6000fd5b5050565b50565b336108036000546001600160a01b031690565b6001600160a01b0316146108325760405162461bcd60e51b8152600401610829906123ba565b60405180910390fd5b6000471161087b5760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379032ba34103a379031b632b0b960511b6044820152606401610829565b60405133904780156108fc02916000818181858888f193505050501580156107ed573d6000803e3d6000fd5b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610973576001600160a01b0384166000908152600260209081526040808320338452909152902054828110156109475760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420416c6c6f77616e63650000006044820152606401610829565b506001600160a01b03841660009081526002602090815260408083203384529091529020805483900390555b61097e848484611519565b90505b9392505050565b6009546001600160a01b0316331461099f57600080fd5b6000811180156109af5750600481105b610a215760405162461bcd60e51b815260206004820152603c60248201527f546f6b656e3a206f6e6c7920747261646520636f6f6c646f776e2076616c756560448201527f7320696e2072616e67652028302c3429207065726d69737369626c65000000006064820152608401610829565b600481905560405181907fb1af3fca46cbc4b6ceb19173da47e172fd99155f6c0cd5c0797cdd11056efd7890600090a250565b33610a676000546001600160a01b031690565b6001600160a01b031614610a8d5760405162461bcd60e51b8152600401610829906123ba565b3060009081526001602052604081205411610af55760405162461bcd60e51b815260206004820152602260248201527f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560448201526130b960f11b6064820152608401610829565b610afd61197a565b565b33610b126000546001600160a01b031690565b6001600160a01b031614610b385760405162461bcd60e51b8152600401610829906123ba565b801515600b60019054906101000a900460ff16151503610baa5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e3a2073776170456e61626c656420616c7265616479207b73686f756044820152666c64537761707d60c81b6064820152608401610829565b600b805461ff001916610100831515908102919091179091556040517fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c890600090a250565b33610c026000546001600160a01b031690565b6001600160a01b031614610c285760405162461bcd60e51b8152600401610829906123ba565b610afd6000611aca565b6103e8610c416009600a612372565b610c4f906305f5e100612381565b61076b90600f612381565b33610c6d6000546001600160a01b031690565b6001600160a01b031614610c935760405162461bcd60e51b8152600401610829906123ba565b306001600160a01b03831603610ca857600080fd5b6001600160a01b038216600081815260056020526040808220805460ff191685151590811790915590519092917f85649af0309729cae07d0c038ebb0ce8b1652c1e2e9226993e8123ac60022ba191a35050565b33610d0f6000546001600160a01b031690565b6001600160a01b031614610d355760405162461bcd60e51b8152600401610829906123ba565b600754821115610d875760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e3a206d7573742072656475636520627579206665650000000000006044820152606401610829565b600854811115610dd95760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a206d757374207265647563652073656c6c2066656500000000006044820152606401610829565b60078290556008819055604051819083907f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd06890600090a35050565b6000610981338484611519565b33610e346000546001600160a01b031690565b6001600160a01b031614610e5a5760405162461bcd60e51b8152600401610829906123ba565b600d546001148015610e6a575080155b610e7357600080fd5b8282610e806003826123ef565b818110610e8f57610e8f612402565b6020029190910135600c55508282610ea86001826123ef565b818110610eb757610eb7612402565b90506020020135600c5410610ece57610ece612418565b505050565b33610ee66000546001600160a01b031690565b6001600160a01b031614610f0c5760405162461bcd60e51b8152600401610829906123ba565b60005b8281101561108557811515600e6000868685818110610f3057610f30612402565b9050602002016020810190610f4591906120d5565b6001600160a01b0316815260208101919091526040016000205460ff16151503610fc05760405162461bcd60e51b815260206004820152602660248201527f546f6b656e3a206164647265737320616c7265616479207b73686f756c644578604482015265636c7564657d60d01b6064820152608401610829565b81600e6000868685818110610fd757610fd7612402565b9050602002016020810190610fec91906120d5565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905581151584848381811061102957611029612402565b905060200201602081019061103e91906120d5565b6001600160a01b03167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb60405160405180910390a38061107d8161242e565b915050610f0f565b50505050565b3361109e6000546001600160a01b031690565b6001600160a01b0316146110c45760405162461bcd60e51b8152600401610829906123ba565b600b5462010000900460ff161580156110de5750600d5415155b6110e757600080fd5b600c546110f49043612447565b600d60008282546111059190612447565b9091555050600b805462ff00001916620100001790556040517fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f90600090a1565b336111596000546001600160a01b031690565b6001600160a01b03161461117f5760405162461bcd60e51b8152600401610829906123ba565b600b5462010000900460ff161580156111955750805b61119e57600080fd5b506001600d55565b336111b96000546001600160a01b031690565b6001600160a01b0316146111df5760405162461bcd60e51b8152600401610829906123ba565b306001600160a01b038216036112415760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b656044820152603760f91b6064820152608401610829565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611288573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ac919061245a565b9050600081116113085760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c65616044820152603960f91b6064820152608401610829565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015611355573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ece9190612473565b3361138c6000546001600160a01b031690565b6001600160a01b0316146113b25760405162461bcd60e51b8152600401610829906123ba565b6001600160a01b0381166114175760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610829565b6107ed81611aca565b6001600160a01b03831661146c5760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b6044820152606401610829565b6001600160a01b0382166114b85760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b6044820152606401610829565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60008383600b60029054906101000a900460ff168061154557506009546001600160a01b038381169116145b8061156857506001600160a01b0382166000908152600e602052604090205460ff165b6115b45760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e3a2054726164696e67206973206e6f74206163746976652e0000006044820152606401610829565b6001600160a01b0386166116185760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610829565b6001600160a01b03851661167a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610829565b8315806116895750600b5460ff165b156116a057611699868686611b1a565b9250611971565b7f0000000000000000000000000e416baedb7bafbbfaf0d16eef409759012832106001600160a01b0316856001600160a01b0316141580156116fb57506001600160a01b0385166000908152600e602052604090205460ff16155b801561171557506009546001600160a01b03868116911614155b156117c7576103e86117296009600a612372565b611737906305f5e100612381565b61174290600f612381565b61174c9190612398565b6001600160a01b03861660009081526001602052604090205461176f9086612447565b11156117c75760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206d61782077616c6c657420616d6f756e7420657863656564656044820152601960fa1b6064820152608401610829565b60035460ff1680156117f257506001600160a01b03861660009081526005602052604090205460ff16155b801561181757506001600160a01b03851660009081526005602052604090205460ff16155b1561184e5760006118288787611c1b565b905061183381611c48565b6001600160a01b031660009081526006602052604090204390555b600b54610100900460ff1680156118685750600b5460ff16155b80156118a657507f0000000000000000000000000e416baedb7bafbbfaf0d16eef409759012832106001600160a01b0316866001600160a01b031614155b80156118cb57506001600160a01b0386166000908152600e602052604090205460ff16155b80156118f057506001600160a01b0385166000908152600e602052604090205460ff16155b156118fd576118fd61197a565b600b546001600160a01b0387166000908152600e602052604090205460ff9182161591168061194457506001600160a01b0386166000908152600e602052604090205460ff165b1561194d575060005b80156119665761195e878787611cea565b935050611971565b61195e878787611b1a565b50509392505050565b600b805460ff1916600117905560006119a8306001600160a01b031660009081526001602052604090205490565b90506127106119b96009600a612372565b6119c7906305f5e100612381565b6119d2906005612381565b6119dc9190612398565b8110806119ee57506119ec611d2d565b155b156119f95750611abe565b612710611a086009600a612372565b611a16906305f5e100612381565b611a21906005612381565b611a2b9190612398565b611a3690600e612381565b811115611a7d57612710611a4c6009600a612372565b611a5a906305f5e100612381565b611a65906005612381565b611a6f9190612398565b611a7a90600e612381565b90505b47611a8782611d52565b6000611a9382476123ef565b90508015611aba57611aba6003611aab836002612381565b611ab59190612398565b611edb565b5050505b600b805460ff19169055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03831660009081526001602052604081205482811015611b835760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a20696e73756666696369656e742042616c616e636500000000006044820152606401610829565b6001600160a01b038086166000908152600160205260408082208054879003905591861681529081208054859290611bbc908490612447565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611c0891815260200190565b60405180910390a3506001949350505050565b6000823b1580611c2a5750813b155b611c3357600080fd5b823b15611c415750806106e9565b50816106e9565b6001600160a01b0381166000908152600660205260408120541580611c9b5750611c73436001612447565b6004546001600160a01b038416600090815260066020526040902054611c999190612447565b105b9050806107e95760405162461bcd60e51b815260206004820152601a60248201527f4d6178207478206672657175656e6379206578636565646564210000000000006044820152606401610829565b600080611cf8858585611f34565b90508015611d1957611d0b853083611b1a565b50611d1681846123ef565b92505b611d24858585611b1a565b95945050505050565b6000600d5443118015610794575050436000908152600f602052604090205460021190565b436000908152600f60205260408120805491611d6d8361242e565b90915550506040805160028082526060820183526000926020830190803683370190505090503081600081518110611da757611da7612402565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3d9190612490565b81600181518110611e5057611e50612402565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611ea89085906000908690309042906004016124ad565b600060405180830381600087803b158015611ec257600080fd5b505af1925050508015611ed3575060015b6107e9575050565b600a546040516000916001600160a01b03169083908381818185875af1925050503d8060008114611f28576040519150601f19603f3d011682016040523d82523d6000602084013e611f2d565b606091505b5050505050565b6000600d546000108015611f49575043600d54105b15611fb05760647f0000000000000000000000000e416baedb7bafbbfaf0d16eef409759012832106001600160a01b0316846001600160a01b031614611f9157600754611f95565b6008545b611f9f9084612381565b611fa99190612398565b9050610981565b60647f0000000000000000000000000e416baedb7bafbbfaf0d16eef409759012832106001600160a01b0316856001600160a01b03161461200157600d5415611ffa576031612004565b6019612004565b60315b6120119060ff1684612381565b61097e9190612398565b600060208083528351808285015260005b818110156120485785810183015185820160400152820161202c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146107ed57600080fd5b6000806040838503121561209157600080fd5b823561209c81612069565b946020939093013593505050565b80151581146107ed57600080fd5b6000602082840312156120ca57600080fd5b8135610981816120aa565b6000602082840312156120e757600080fd5b813561098181612069565b60008060006060848603121561210757600080fd5b833561211281612069565b9250602084013561212281612069565b929592945050506040919091013590565b60006020828403121561214557600080fd5b5035919050565b6000806040838503121561215f57600080fd5b823561216a81612069565b9150602083013561217a816120aa565b809150509250929050565b6000806040838503121561219857600080fd5b50508035926020909101359150565b60008083601f8401126121b957600080fd5b50813567ffffffffffffffff8111156121d157600080fd5b6020830191508360208260051b85010111156121ec57600080fd5b9250929050565b60008060006040848603121561220857600080fd5b833567ffffffffffffffff81111561221f57600080fd5b61222b868287016121a7565b909450925050602084013561223f816120aa565b809150509250925092565b6000806040838503121561225d57600080fd5b823561226881612069565b9150602083013561217a81612069565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156122c95781600019048211156122af576122af612278565b808516156122bc57918102915b93841c9390800290612293565b509250929050565b6000826122e0575060016106e9565b816122ed575060006106e9565b8160018114612303576002811461230d57612329565b60019150506106e9565b60ff84111561231e5761231e612278565b50506001821b6106e9565b5060208310610133831016604e8410600b841016171561234c575081810a6106e9565b612356838361228e565b806000190482111561236a5761236a612278565b029392505050565b600061098160ff8416836122d1565b80820281158282048414176106e9576106e9612278565b6000826123b557634e487b7160e01b600052601260045260246000fd5b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b818103818111156106e9576106e9612278565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60006001820161244057612440612278565b5060010190565b808201808211156106e9576106e9612278565b60006020828403121561246c57600080fd5b5051919050565b60006020828403121561248557600080fd5b8151610981816120aa565b6000602082840312156124a257600080fd5b815161098181612069565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124fd5784516001600160a01b0316835293830193918301916001016124d8565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122031e6c0abf42dd466cea804b9389096fd694eb5a1ab704e49aadddd73bb0c156c64736f6c63430008130033

Deployed Bytecode Sourcemap

2438:13270:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5965:80;;;;;;;;;;-1:-1:-1;6037:5:0;;;;;;;;;;;;-1:-1:-1;;;6037:5:0;;;;5965:80;;;;;;;:::i;:::-;;;;;;;;6301:161;;;;;;;;;;-1:-1:-1;6301:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6301:161:0;1023:187:1;14683:176:0;;;;;;;;;;-1:-1:-1;14683:176:0;;;;;:::i;:::-;;:::i;:::-;;2894:63;;;;;;;;;;;;;:::i;:::-;;;1730:25:1;;;1718:2;1703:18;2894:63:0;1584:177:1;3741:99:0;;;;;;;;;;;;3797:42;3741:99;;;;;-1:-1:-1;;;;;1947:32:1;;;1929:51;;1917:2;1902:18;3741:99:0;1766:220:1;5695:88:0;;;;;;;;;;;;;:::i;13211:209::-;;;;;;;;;;-1:-1:-1;13211:209:0;;;;;:::i;:::-;;:::i;9426:180::-;;;;;;;;;;;;;:::i;6937:492::-;;;;;;;;;;-1:-1:-1;6937:492:0;;;;;:::i;:::-;;:::i;14867:352::-;;;;;;;;;;-1:-1:-1;14867:352:0;;;;;:::i;:::-;;:::i;5789:80::-;;;;;;;;;;-1:-1:-1;5789:80:0;;2613:1;3031:36:1;;3019:2;3004:18;5789:80:0;2889:184:1;3847:38:0;;;;;;;;;;;;;;;8910:123;;;;;;;;;;-1:-1:-1;8910:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;8999:26:0;8975:4;8999:26;;;:17;:26;;;;;;;;;8910:123;9996:164;;;;;;;;;;;;;:::i;7865:228::-;;;;;;;;;;-1:-1:-1;7865:228:0;;;;;:::i;:::-;;:::i;3920:30::-;;;;;;;;;;-1:-1:-1;3920:30:0;;;;;;;;;;;6051:103;;;;;;;;;;-1:-1:-1;6051:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;6134:18:0;6117:7;6134:18;;;:9;:18;;;;;;;6051:103;1956:94;;;;;;;;;;;;;:::i;3462:51::-;;;;;;;;;;-1:-1:-1;3462:51:0;;;;;;;;;;;;;3460:25:1;;;3516:2;3501:18;;3494:34;;;;3433:18;3462:51:0;3286:248:1;2827:60:0;;;;;;;;;;;;;:::i;1737:87::-;;;;;;;;;;-1:-1:-1;1783:7:0;1810:6;-1:-1:-1;;;;;1810:6:0;1737:87;;5875:84;;;;;;;;;;-1:-1:-1;5949:7:0;;;;;;;;;;;;-1:-1:-1;;;5949:7:0;;;;5875:84;;15227:222;;;;;;;;;;-1:-1:-1;15227:222:0;;;;;:::i;:::-;;:::i;8101:371::-;;;;;;;;;;-1:-1:-1;8101:371:0;;;;;:::i;:::-;;:::i;6786:143::-;;;;;;;;;;-1:-1:-1;6786:143:0;;;;;:::i;:::-;;:::i;9755:233::-;;;;;;;;;;-1:-1:-1;9755:233:0;;;;;:::i;:::-;;:::i;8480:422::-;;;;;;;;;;-1:-1:-1;8480:422:0;;;;;:::i;:::-;;:::i;15457:209::-;;;;;;;;;;;;;:::i;3553:179::-;;;;;;;;;;-1:-1:-1;3553:179:0;;;;;;-1:-1:-1;;;;;3553:179:0;;;;;;;;;;;-1:-1:-1;;;;;5923:15:1;;;5905:34;;5975:15;;;;5970:2;5955:18;;5948:43;5840:18;3553:179:0;5693:304:1;9614:133:0;;;;;;;;;;-1:-1:-1;9614:133:0;;;;;:::i;:::-;;:::i;6160:::-;;;;;;;;;;-1:-1:-1;6160:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;6262:19:0;;;6244:7;6262:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;6160:133;9041:377;;;;;;;;;;-1:-1:-1;9041:377:0;;;;;:::i;:::-;;:::i;2058:192::-;;;;;;;;;;-1:-1:-1;2058:192:0;;;;;:::i;:::-;;:::i;6301:161::-;6378:4;6395:37;6404:10;6416:7;6425:6;6395:8;:37::i;:::-;-1:-1:-1;6450:4:0;6301:161;;;;;:::o;14683:176::-;14761:7;:22;-1:-1:-1;;;;;14761:22:0;14747:10;:36;14739:45;;;;;;14795:7;:16;;-1:-1:-1;;14795:16:0;;;;;;;;;;14829:22;;;;-1:-1:-1;;14829:22:0;14683:176;:::o;2894:63::-;2954:3;3009:13;2613:1;3009:2;:13;:::i;:::-;2791:29;;:11;:29;:::i;:::-;2935:16;;:1;:16;:::i;:::-;:22;;;;:::i;:::-;2894:63;:::o;5695:88::-;5750:7;3009:13;2613:1;3009:2;:13;:::i;:::-;2791:29;;:11;:29;:::i;:::-;5761:19;;5695:88;:::o;13211:209::-;13268:10;13282:42;13268:56;13265:147;;13339:49;;-1:-1:-1;;;;;13339:24:0;;;13365:21;13339:49;;;;;;;;;13365:21;13339:24;:49;;;;;;;;;;;;;;;;;;;;;13211:209;:::o;13265:147::-;13211:209;:::o;9426:180::-;1881:10;1870:7;1783;1810:6;-1:-1:-1;;;;;1810:6:0;;1737:87;1870:7;-1:-1:-1;;;;;1870:21:0;;1862:66;;;;-1:-1:-1;;;1862:66:0;;;;;;;:::i;:::-;;;;;;;;;9508:1:::1;9484:21;:25;9476:60;;;::::0;-1:-1:-1;;;9476:60:0;;8868:2:1;9476:60:0::1;::::0;::::1;8850:21:1::0;8907:2;8887:18;;;8880:30;-1:-1:-1;;;8926:18:1;;;8919:52;8988:18;;9476:60:0::1;8666:346:1::0;9476:60:0::1;9547:51;::::0;9555:10:::1;::::0;9576:21:::1;9547:51:::0;::::1;;;::::0;::::1;::::0;;;9576:21;9555:10;9547:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;6937:492:::0;-1:-1:-1;;;;;7048:19:0;;7028:4;7048:19;;;:11;:19;;;;;;;;7068:10;7048:31;;;;;;;;-1:-1:-1;;7048:52:0;7045:323;;-1:-1:-1;;;;;7143:19:0;;7116:24;7143:19;;;:11;:19;;;;;;;;7163:10;7143:31;;;;;;;;7197:26;;;;7189:68;;;;-1:-1:-1;;;7189:68:0;;9219:2:1;7189:68:0;;;9201:21:1;9258:2;9238:18;;;9231:30;9297:31;9277:18;;;9270:59;9346:18;;7189:68:0;9017:353:1;7189:68:0;-1:-1:-1;;;;;;7300:19:0;;;;;;:11;:19;;;;;;;;7320:10;7300:31;;;;;;;:41;;;;;;;7045:323;7385:36;7395:6;7403:9;7414:6;7385:9;:36::i;:::-;7378:43;;6937:492;;;;;;:::o;14867:352::-;14961:7;:22;-1:-1:-1;;;;;14961:22:0;14947:10;:36;14939:45;;;;;;15022:1;15003:16;:20;:44;;;;;15046:1;15027:16;:20;15003:44;14995:117;;;;-1:-1:-1;;;14995:117:0;;9577:2:1;14995:117:0;;;9559:21:1;9616:2;9596:18;;;9589:30;9655:34;9635:18;;;9628:62;9726:30;9706:18;;;9699:58;9774:19;;14995:117:0;9375:424:1;14995:117:0;15123:13;:32;;;15173:38;;15139:16;;15173:38;;;;;14867:352;:::o;9996:164::-;1881:10;1870:7;1783;1810:6;-1:-1:-1;;;;;1810:6:0;;1737:87;1870:7;-1:-1:-1;;;;;1870:21:0;;1862:66;;;;-1:-1:-1;;;1862:66:0;;;;;;;:::i;:::-;10078:4:::1;10087:1;6134:18:::0;;;:9;:18;;;;;;10060:28:::1;10052:75;;;::::0;-1:-1:-1;;;10052:75:0;;10006:2:1;10052:75:0::1;::::0;::::1;9988:21:1::0;10045:2;10025:18;;;10018:30;10084:34;10064:18;;;10057:62;-1:-1:-1;;;10135:18:1;;;10128:32;10177:19;;10052:75:0::1;9804:398:1::0;10052:75:0::1;10138:14;:12;:14::i;:::-;9996:164::o:0;7865:228::-;1881:10;1870:7;1783;1810:6;-1:-1:-1;;;;;1810:6:0;;1737:87;1870:7;-1:-1:-1;;;;;1870:21:0;;1862:66;;;;-1:-1:-1;;;1862:66:0;;;;;;;:::i;:::-;7955:10:::1;7940:25;;:11;;;;;;;;;;;:25;;::::0;7932:77:::1;;;::::0;-1:-1:-1;;;7932:77:0;;10409:2:1;7932:77:0::1;::::0;::::1;10391:21:1::0;10448:2;10428:18;;;10421:30;10487:34;10467:18;;;10460:62;-1:-1:-1;;;10538:18:1;;;10531:37;10585:19;;7932:77:0::1;10207:403:1::0;7932:77:0::1;8020:11;:24:::0;;-1:-1:-1;;8020:24:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;8062:23:::1;::::0;::::1;::::0;-1:-1:-1;;8062:23:0::1;7865:228:::0;:::o;1956:94::-;1881:10;1870:7;1783;1810:6;-1:-1:-1;;;;;1810:6:0;;1737:87;1870:7;-1:-1:-1;;;;;1870:21:0;;1862:66;;;;-1:-1:-1;;;1862:66:0;;;;;;;:::i;:::-;2021:21:::1;2039:1;2021:9;:21::i;2827:60::-:0;2884:3;3009:13;2613:1;3009:2;:13;:::i;:::-;2791:29;;:11;:29;:::i;:::-;2864:17;;:2;:17;:::i;15227:222::-;1881:10;1870:7;1783;1810:6;-1:-1:-1;;;;;1810:6:0;;1737:87;1870:7;-1:-1:-1;;;;;1870:21:0;;1862:66;;;;-1:-1:-1;;;1862:66:0;;;;;;;:::i;:::-;15340:4:::1;-1:-1:-1::0;;;;;15321:24:0;::::1;::::0;15313:33:::1;;;::::0;::::1;;-1:-1:-1::0;;;;;15357:25:0;::::1;;::::0;;;:16:::1;:25;::::0;;;;;:33;;-1:-1:-1;;15357:33:0::1;::::0;::::1;;::::0;;::::1;::::0;;;15408;;15357;;:25;15408:33:::1;::::0;::::1;15227:222:::0;;:::o;8101:371::-;1881:10;1870:7;1783;1810:6;-1:-1:-1;;;;;1810:6:0;;1737:87;1870:7;-1:-1:-1;;;;;1870:21:0;;1862:66;;;;-1:-1:-1;;;1862:66:0;;;;;;;:::i;:::-;8205:11:::1;:18:::0;8194:29;::::1;;8186:68;;;::::0;-1:-1:-1;;;8186:68:0;;10817:2:1;8186:68:0::1;::::0;::::1;10799:21:1::0;10856:2;10836:18;;;10829:30;10895:28;10875:18;;;10868:56;10941:18;;8186:68:0::1;10615:350:1::0;8186:68:0::1;8285:19:::0;;8273:31;::::1;;8265:71;;;::::0;-1:-1:-1;;;8265:71:0;;11172:2:1;8265:71:0::1;::::0;::::1;11154:21:1::0;11211:2;11191:18;;;11184:30;11250:29;11230:18;;;11223:57;11297:18;;8265:71:0::1;10970:351:1::0;8265:71:0::1;8347:11;:28:::0;;;8386:19;:30;;;8434::::1;::::0;8408:8;;8368:7;;8434:30:::1;::::0;8347:18:::1;::::0;8434:30:::1;8101:371:::0;;:::o;6786:143::-;6857:4;6881:40;6891:10;6903:9;6914:6;6881:9;:40::i;9755:233::-;1881:10;1870:7;1783;1810:6;-1:-1:-1;;;;;1810:6:0;;1737:87;1870:7;-1:-1:-1;;;;;1870:21:0;;1862:66;;;;-1:-1:-1;;;1862:66:0;;;;;;;:::i;:::-;9865:10:::1;;9879:1;9865:15;:27;;;;;9885:7;9884:8;9865:27;9857:36;;;::::0;::::1;;9903:7:::0;;9911:16:::1;9926:1;9903:7:::0;9911:16:::1;:::i;:::-;9903:25;;;;;;;:::i;:::-;;;::::0;;;::::1;;9894:6;:34:::0;-1:-1:-1;9946:7:0;;9954:16:::1;9969:1;9946:7:::0;9954:16:::1;:::i;:::-;9946:25;;;;;;;:::i;:::-;;;;;;;9937:6;;:34;9930:42;;;;:::i;:::-;9755:233:::0;;;:::o;8480:422::-;1881:10;1870:7;1783;1810:6;-1:-1:-1;;;;;1810:6:0;;1737:87;1870:7;-1:-1:-1;;;;;1870:21:0;;1862:66;;;;-1:-1:-1;;;1862:66:0;;;;;;;:::i;:::-;8604:9:::1;8600:295;8619:19:::0;;::::1;8600:295;;;8702:13;8668:47;;:17;:30;8686:8;;8695:1;8686:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8668:30:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;8668:30:0;;::::1;;:47;;::::0;8660:98:::1;;;::::0;-1:-1:-1;;;8660:98:0;;11925:2:1;8660:98:0::1;::::0;::::1;11907:21:1::0;11964:2;11944:18;;;11937:30;12003:34;11983:18;;;11976:62;-1:-1:-1;;;12054:18:1;;;12047:36;12100:19;;8660:98:0::1;11723:402:1::0;8660:98:0::1;8806:13;8773:17;:30;8791:8;;8800:1;8791:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8773:30:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;8773:30:0;:46;;-1:-1:-1;;8773:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8839:44;::::1;;8856:8:::0;;8865:1;8856:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8839:44:0::1;;;;;;;;;;;8640:3:::0;::::1;::::0;::::1;:::i;:::-;;;;8600:295;;;;8480:422:::0;;;:::o;15457:209::-;1881:10;1870:7;1783;1810:6;-1:-1:-1;;;;;1810:6:0;;1737:87;1870:7;-1:-1:-1;;;;;1870:21:0;;1862:66;;;;-1:-1:-1;;;1862:66:0;;;;;;;:::i;:::-;15519:13:::1;::::0;;;::::1;;;15518:14;:33:::0;::::1;;;-1:-1:-1::0;15536:10:0::1;::::0;:15;::::1;15518:33;15510:42;;;::::0;::::1;;15588:6;::::0;15575:19:::1;::::0;:12:::1;:19;:::i;:::-;15563:10;;:31;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;15605:13:0::1;:20:::0;;-1:-1:-1;;15605:20:0::1;::::0;::::1;::::0;;15643:15:::1;::::0;::::1;::::0;15605:20;;15643:15:::1;15457:209::o:0;9614:133::-;1881:10;1870:7;1783;1810:6;-1:-1:-1;;;;;1810:6:0;;1737:87;1870:7;-1:-1:-1;;;;;1870:21:0;;1862:66;;;;-1:-1:-1;;;1862:66:0;;;;;;;:::i;:::-;9684:13:::1;::::0;;;::::1;;;9683:14;:22:::0;::::1;;;;9701:4;9683:22;9675:31;;;::::0;::::1;;-1:-1:-1::0;9730:1:0::1;9717:10;:14:::0;9614:133::o;9041:377::-;1881:10;1870:7;1783;1810:6;-1:-1:-1;;;;;1810:6:0;;1737:87;1870:7;-1:-1:-1;;;;;1870:21:0;;1862:66;;;;-1:-1:-1;;;1862:66:0;;;;;;;:::i;:::-;9146:4:::1;-1:-1:-1::0;;;;;9122:29:0;::::1;::::0;9114:75:::1;;;::::0;-1:-1:-1;;;9114:75:0;;12602:2:1;9114:75:0::1;::::0;::::1;12584:21:1::0;12641:2;12621:18;;;12614:30;12680:34;12660:18;;;12653:62;-1:-1:-1;;;12731:18:1;;;12724:31;12772:19;;9114:75:0::1;12400:397:1::0;9114:75:0::1;9224:45;::::0;-1:-1:-1;;;9224:45:0;;9263:4:::1;9224:45;::::0;::::1;1929:51:1::0;9200:21:0::1;::::0;-1:-1:-1;;;;;9224:30:0;::::1;::::0;::::1;::::0;1902:18:1;;9224:45:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9200:69;;9304:1;9288:13;:17;9280:63;;;::::0;-1:-1:-1;;;9280:63:0;;13193:2:1;9280:63:0::1;::::0;::::1;13175:21:1::0;13232:2;13212:18;;;13205:30;13271:34;13251:18;;;13244:62;-1:-1:-1;;;13322:18:1;;;13315:31;13363:19;;9280:63:0::1;12991:397:1::0;9280:63:0::1;9354:56;::::0;-1:-1:-1;;;9354:56:0;;9384:10:::1;9354:56;::::0;::::1;13567:51:1::0;13634:18;;;13627:34;;;-1:-1:-1;;;;;9354:29:0;::::1;::::0;::::1;::::0;13540:18:1;;9354:56:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2058:192::-:0;1881:10;1870:7;1783;1810:6;-1:-1:-1;;;;;1810:6:0;;1737:87;1870:7;-1:-1:-1;;;;;1870:21:0;;1862:66;;;;-1:-1:-1;;;1862:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2147:22:0;::::1;2139:73;;;::::0;-1:-1:-1;;;2139:73:0;;14124:2:1;2139:73:0::1;::::0;::::1;14106:21:1::0;14163:2;14143:18;;;14136:30;14202:34;14182:18;;;14175:62;-1:-1:-1;;;14253:18:1;;;14246:36;14299:19;;2139:73:0::1;13922:402:1::0;2139:73:0::1;2223:19;2233:8;2223:9;:19::i;6470:308::-:0;-1:-1:-1;;;;;6565:20:0;;6557:52;;;;-1:-1:-1;;;6557:52:0;;14531:2:1;6557:52:0;;;14513:21:1;14570:2;14550:18;;;14543:30;-1:-1:-1;;;14589:18:1;;;14582:49;14648:18;;6557:52:0;14329:343:1;6557:52:0;-1:-1:-1;;;;;6628:21:0;;6620:53;;;;-1:-1:-1;;;6620:53:0;;14531:2:1;6620:53:0;;;14513:21:1;14570:2;14550:18;;;14543:30;-1:-1:-1;;;14589:18:1;;;14582:49;14648:18;;6620:53:0;14329:343:1;6620:53:0;-1:-1:-1;;;;;6684:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;6737:33;;1730:25:1;;;6737:33:0;;1703:18:1;6737:33:0;;;;;;;6470:308;;;:::o;10168:1322::-;10269:4;10241;10247:2;4794:13;;;;;;;;;;;:47;;;-1:-1:-1;4819:7:0;:22;-1:-1:-1;;;;;4811:30:0;;;4819:22;;4811:30;4794:47;:74;;;-1:-1:-1;;;;;;4845:23:0;;;;;;:17;:23;;;;;;;;4794:74;4786:116;;;;-1:-1:-1;;;4786:116:0;;14879:2:1;4786:116:0;;;14861:21:1;14918:2;14898:18;;;14891:30;14957:31;14937:18;;;14930:59;15006:18;;4786:116:0;14677:353:1;4786:116:0;-1:-1:-1;;;;;10294:18:0;::::1;10286:68;;;::::0;-1:-1:-1;;;10286:68:0;;15237:2:1;10286:68:0::1;::::0;::::1;15219:21:1::0;15276:2;15256:18;;;15249:30;15315:34;15295:18;;;15288:62;-1:-1:-1;;;15366:18:1;;;15359:35;15411:19;;10286:68:0::1;15035:401:1::0;10286:68:0::1;-1:-1:-1::0;;;;;10373:16:0;::::1;10365:64;;;::::0;-1:-1:-1;;;10365:64:0;;15643:2:1;10365:64:0::1;::::0;::::1;15625:21:1::0;15682:2;15662:18;;;15655:30;15721:34;15701:18;;;15694:62;-1:-1:-1;;;15772:18:1;;;15765:33;15815:19;;10365:64:0::1;15441:399:1::0;10365:64:0::1;10453:11:::0;;;:21:::1;;-1:-1:-1::0;10468:6:0::1;::::0;::::1;;10453:21;10450:103;;;10498:32;10513:4;10519:2;10523:6;10498:14;:32::i;:::-;10491:39;;;;10450:103;10583:13;-1:-1:-1::0;;;;;10577:19:0::1;:2;-1:-1:-1::0;;;;;10577:19:0::1;;;:45;;;;-1:-1:-1::0;;;;;;10601:21:0;::::1;;::::0;;;:17:::1;:21;::::0;;;;;::::1;;10600:22;10577:45;:77;;;;-1:-1:-1::0;10632:7:0::1;:22:::0;-1:-1:-1;;;;;10626:28:0;;::::1;10632:22:::0;::::1;10626:28;;10577:77;10573:192;;;2884:3;3009:13;2613:1;3009:2;:13;:::i;:::-;2791:29;::::0;:11:::1;:29;:::i;:::-;2864:17;::::0;:2:::1;:17;:::i;:::-;:23;;;;:::i;:::-;-1:-1:-1::0;;;;;6134:18:0;;6117:7;6134:18;;;:9;:18;;;;;;10679:22:::1;::::0;:6;:22:::1;:::i;:::-;:36;;10671:82;;;::::0;-1:-1:-1;;;10671:82:0;;16047:2:1;10671:82:0::1;::::0;::::1;16029:21:1::0;16086:2;16066:18;;;16059:30;16125:34;16105:18;;;16098:62;-1:-1:-1;;;16176:18:1;;;16169:31;16217:19;;10671:82:0::1;15845:397:1::0;10671:82:0::1;10780:7;::::0;::::1;;:34:::0;::::1;;;-1:-1:-1::0;;;;;;10792:22:0;::::1;;::::0;;;:16:::1;:22;::::0;;;;;::::1;;10791:23;10780:34;:59;;;;-1:-1:-1::0;;;;;;10819:20:0;::::1;;::::0;;;:16:::1;:20;::::0;;;;;::::1;;10818:21;10780:59;10777:224;;;10855:13;10871:24;10886:4;10892:2;10871:14;:24::i;:::-;10855:40;;10910:27;10931:5;10910:20;:27::i;:::-;-1:-1:-1::0;;;;;10952:22:0::1;;::::0;;;:15:::1;:22;::::0;;;;10977:12:::1;10952:37:::0;;10777:224:::1;11022:11;::::0;::::1;::::0;::::1;;;:22:::0;::::1;;;-1:-1:-1::0;11038:6:0::1;::::0;::::1;;11037:7;11022:22;:47;;;;;11056:13;-1:-1:-1::0;;;;;11048:21:0::1;:4;-1:-1:-1::0;;;;;11048:21:0::1;;;11022:47;:75;;;;-1:-1:-1::0;;;;;;11074:23:0;::::1;;::::0;;;:17:::1;:23;::::0;;;;;::::1;;11073:24;11022:75;:101;;;;-1:-1:-1::0;;;;;;11102:21:0;::::1;;::::0;;;:17:::1;:21;::::0;;;;;::::1;;11101:22;11022:101;11019:146;;;11139:14;:12;:14::i;:::-;11202:6;::::0;-1:-1:-1;;;;;11222:23:0;::::1;11186:12;11222:23:::0;;;:17:::1;:23;::::0;;;;;11202:6:::1;::::0;;::::1;11201:7;::::0;11222:23:::1;::::0;:48:::1;;-1:-1:-1::0;;;;;;11249:21:0;::::1;;::::0;;;:17:::1;:21;::::0;;;;;::::1;;11222:48;11219:95;;;-1:-1:-1::0;11297:5:0::1;11219:95;11345:7;11342:132;;;11374:32;11389:4;11395:2;11399:6;11374:14;:32::i;:::-;11367:39;;;;;11342:132;11442:32;11457:4;11463:2;11467:6;11442:14;:32::i;4913:1::-;10168:1322:::0;;;;;;;:::o;12455:591::-;4662:6;:13;;-1:-1:-1;;4662:13:0;4671:4;4662:13;;;:6;12536:24:::1;12554:4;-1:-1:-1::0;;;;;6134:18:0;6117:7;6134:18;;;:9;:18;;;;;;;6051:103;12536:24:::1;12510:50:::0;-1:-1:-1;2954:3:0::1;3009:13;2613:1;3009:2;:13;:::i;:::-;2791:29;::::0;:11:::1;:29;:::i;:::-;2935:16;::::0;:1:::1;:16;:::i;:::-;:22;;;;:::i;:::-;12574:15;:32;:46;;;;12611:9;:7;:9::i;:::-;12610:10;12574:46;12571:177;;;12636:7;;;12571:177;2954:3;3009:13;2613:1;3009:2;:13;:::i;:::-;2791:29;::::0;:11:::1;:29;:::i;:::-;2935:16;::::0;:1:::1;:16;:::i;:::-;:22;;;;:::i;:::-;12679:19;::::0;12696:2:::1;12679:19;:::i;:::-;12661:15;:37;12658:90;;;2954:3;3009:13;2613:1;3009:2;:13;:::i;:::-;2791:29;::::0;:11:::1;:29;:::i;:::-;2935:16;::::0;:1:::1;:16;:::i;:::-;:22;;;;:::i;:::-;12729:19;::::0;12746:2:::1;12729:19;:::i;:::-;12711:37;;12658:90;12797:21;12831:33;12848:15:::0;12831:16:::1;:33::i;:::-;12886:18;12907:41;12931:17:::0;12907:21:::1;:41;:::i;:::-;12886:62:::0;-1:-1:-1;12962:14:0;;12959:80:::1;;13004:23;13025:1;13012:12;13014:10:::0;13012:1:::1;:12;:::i;:::-;:14;;;;:::i;:::-;13004:7;:23::i;:::-;12496:550;;;4686:1;4698:6:::0;:14;;-1:-1:-1;;4698:14:0;;;12455:591::o;2258:173::-;2314:16;2333:6;;-1:-1:-1;;;;;2350:17:0;;;-1:-1:-1;;;;;;2350:17:0;;;;;;2383:40;;2333:6;;;;;;;2383:40;;2314:16;2383:40;2303:128;2258:173;:::o;7437:420::-;-1:-1:-1;;;;;7571:17:0;;7530:4;7571:17;;;:9;:17;;;;;;7607:23;;;;7599:63;;;;-1:-1:-1;;;7599:63:0;;16449:2:1;7599:63:0;;;16431:21:1;16488:2;16468:18;;;16461:30;16527:29;16507:18;;;16500:57;16574:18;;7599:63:0;16247:351:1;7599:63:0;-1:-1:-1;;;;;7697:17:0;;;;;;;:9;:17;;;;;;:27;;;;;;;7746:20;;;;;;;;:30;;7718:6;;7697:17;7746:30;;7718:6;;7746:30;:::i;:::-;;;;;;;;7809:9;-1:-1:-1;;;;;7792:35:0;7801:6;-1:-1:-1;;;;;7792:35:0;;7820:6;7792:35;;;;1730:25:1;;1718:2;1703:18;;1584:177;7792:35:0;;;;;;;;-1:-1:-1;7845:4:0;;7437:420;-1:-1:-1;;;;7437:420:0:o;14191:219::-;14265:7;14119:20;;14167:8;;14293:38;;-1:-1:-1;14119:20:0;;14167:8;14293:38;14285:47;;;;;;14119:20;;14167:8;14343:59;;-1:-1:-1;14371:5:0;14364:12;;14343:59;-1:-1:-1;14399:3:0;14392:10;;14418:257;-1:-1:-1;;;;;14503:21:0;;14486:14;14503:21;;;:15;:21;;;;;;:26;;:105;;-1:-1:-1;14590:16:0;:12;14605:1;14590:16;:::i;:::-;14572:13;;-1:-1:-1;;;;;14548:21:0;;;;;;:15;:21;;;;;;:37;;14572:13;14548:37;:::i;:::-;14547:60;14503:105;14486:122;;14627:9;14619:48;;;;-1:-1:-1;;;14619:48:0;;16805:2:1;14619:48:0;;;16787:21:1;16844:2;16824:18;;;16817:30;16883:28;16863:18;;;16856:56;16929:18;;14619:48:0;16603:350:1;11498:326:0;11581:4;11598:12;11613:26;11622:4;11628:2;11632:6;11613:8;:26::i;:::-;11598:41;-1:-1:-1;11657:8:0;;11654:113;;11685:41;11700:4;11714;11721;11685:14;:41::i;:::-;-1:-1:-1;11741:14:0;11751:4;11741:14;;:::i;:::-;;;11654:113;11784:32;11799:4;11805:2;11809:6;11784:14;:32::i;:::-;11777:39;11498:326;-1:-1:-1;;;;;11498:326:0:o;12309:138::-;12350:4;12389:10;;12374:12;:25;:65;;;;-1:-1:-1;;12422:12:0;12403:32;;;;:18;:32;;;;;;12438:1;-1:-1:-1;;12309:138:0:o;13428:552::-;13513:12;13494:32;;;;:18;:32;;;;;:34;;;;;;:::i;:::-;;;;-1:-1:-1;;13623:16:0;;;13637:1;13623:16;;;;;;;;13599:21;;13623:16;;;;;;;;;;-1:-1:-1;13623:16:0;13599:40;;13668:4;13650;13655:1;13650:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;13650:23:0;;;-1:-1:-1;;;;;13650:23:0;;;;;3797:42;-1:-1:-1;;;;;13694:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13684:4;13689:1;13684:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13684:32:0;;;:7;;;;;;;;;;;:32;13733:214;;-1:-1:-1;;;13733:214:0;;3797:42;;13733:66;;:214;;13814:11;;13840:1;;13884:4;;13911;;13931:15;;13733:214;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13729:244;;13965:7;13428:552;:::o;13054:149::-;13135:23;;13127:59;;13110:12;;-1:-1:-1;;;;;13135:23:0;;13172:9;;13110:12;13127:59;13110:12;13127:59;13172:9;13135:23;13127:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13054:149:0:o;11832:469::-;11914:12;11946:10;;11942:1;:14;:43;;;;;11973:12;11960:10;;:25;11942:43;11939:355;;;3071:3;12024:13;-1:-1:-1;;;;;12018:19:0;:2;-1:-1:-1;;;;;12018:19:0;;:76;;12076:11;:18;12018:76;;;12054:19;;12018:76;12008:87;;:6;:87;:::i;:::-;:104;;;;:::i;:::-;12001:111;;11939:355;;;3071:3;12190:13;-1:-1:-1;;;;;12182:21:0;:4;-1:-1:-1;;;;;12182:21:0;;:70;;12226:10;;:15;:25;;12249:2;12182:70;;12226:25;12244:2;12182:70;;;12220:2;12182:70;12172:81;;;;:6;:81;:::i;:::-;:98;;;;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:118::-;1301:5;1294:13;1287:21;1280:5;1277:32;1267:60;;1323:1;1320;1313:12;1338:241;1394:6;1447:2;1435:9;1426:7;1422:23;1418:32;1415:52;;;1463:1;1460;1453:12;1415:52;1502:9;1489:23;1521:28;1543:5;1521:28;:::i;1991:247::-;2050:6;2103:2;2091:9;2082:7;2078:23;2074:32;2071:52;;;2119:1;2116;2109:12;2071:52;2158:9;2145:23;2177:31;2202:5;2177:31;:::i;2243:456::-;2320:6;2328;2336;2389:2;2377:9;2368:7;2364:23;2360:32;2357:52;;;2405:1;2402;2395:12;2357:52;2444:9;2431:23;2463:31;2488:5;2463:31;:::i;:::-;2513:5;-1:-1:-1;2570:2:1;2555:18;;2542:32;2583:33;2542:32;2583:33;:::i;:::-;2243:456;;2635:7;;-1:-1:-1;;;2689:2:1;2674:18;;;;2661:32;;2243:456::o;2704:180::-;2763:6;2816:2;2804:9;2795:7;2791:23;2787:32;2784:52;;;2832:1;2829;2822:12;2784:52;-1:-1:-1;2855:23:1;;2704:180;-1:-1:-1;2704:180:1:o;3539:382::-;3604:6;3612;3665:2;3653:9;3644:7;3640:23;3636:32;3633:52;;;3681:1;3678;3671:12;3633:52;3720:9;3707:23;3739:31;3764:5;3739:31;:::i;:::-;3789:5;-1:-1:-1;3846:2:1;3831:18;;3818:32;3859:30;3818:32;3859:30;:::i;:::-;3908:7;3898:17;;;3539:382;;;;;:::o;3926:248::-;3994:6;4002;4055:2;4043:9;4034:7;4030:23;4026:32;4023:52;;;4071:1;4068;4061:12;4023:52;-1:-1:-1;;4094:23:1;;;4164:2;4149:18;;;4136:32;;-1:-1:-1;3926:248:1:o;4179:367::-;4242:8;4252:6;4306:3;4299:4;4291:6;4287:17;4283:27;4273:55;;4324:1;4321;4314:12;4273:55;-1:-1:-1;4347:20:1;;4390:18;4379:30;;4376:50;;;4422:1;4419;4412:12;4376:50;4459:4;4451:6;4447:17;4435:29;;4519:3;4512:4;4502:6;4499:1;4495:14;4487:6;4483:27;4479:38;4476:47;4473:67;;;4536:1;4533;4526:12;4473:67;4179:367;;;;;:::o;4551:566::-;4643:6;4651;4659;4712:2;4700:9;4691:7;4687:23;4683:32;4680:52;;;4728:1;4725;4718:12;4680:52;4768:9;4755:23;4801:18;4793:6;4790:30;4787:50;;;4833:1;4830;4823:12;4787:50;4872:70;4934:7;4925:6;4914:9;4910:22;4872:70;:::i;:::-;4961:8;;-1:-1:-1;4846:96:1;-1:-1:-1;;5046:2:1;5031:18;;5018:32;5059:28;5018:32;5059:28;:::i;:::-;5106:5;5096:15;;;4551:566;;;;;:::o;6002:388::-;6070:6;6078;6131:2;6119:9;6110:7;6106:23;6102:32;6099:52;;;6147:1;6144;6137:12;6099:52;6186:9;6173:23;6205:31;6230:5;6205:31;:::i;:::-;6255:5;-1:-1:-1;6312:2:1;6297:18;;6284:32;6325:33;6284:32;6325:33;:::i;6395:127::-;6456:10;6451:3;6447:20;6444:1;6437:31;6487:4;6484:1;6477:15;6511:4;6508:1;6501:15;6527:422;6616:1;6659:5;6616:1;6673:270;6694:7;6684:8;6681:21;6673:270;;;6753:4;6749:1;6745:6;6741:17;6735:4;6732:27;6729:53;;;6762:18;;:::i;:::-;6812:7;6802:8;6798:22;6795:55;;;6832:16;;;;6795:55;6911:22;;;;6871:15;;;;6673:270;;;6677:3;6527:422;;;;;:::o;6954:806::-;7003:5;7033:8;7023:80;;-1:-1:-1;7074:1:1;7088:5;;7023:80;7122:4;7112:76;;-1:-1:-1;7159:1:1;7173:5;;7112:76;7204:4;7222:1;7217:59;;;;7290:1;7285:130;;;;7197:218;;7217:59;7247:1;7238:10;;7261:5;;;7285:130;7322:3;7312:8;7309:17;7306:43;;;7329:18;;:::i;:::-;-1:-1:-1;;7385:1:1;7371:16;;7400:5;;7197:218;;7499:2;7489:8;7486:16;7480:3;7474:4;7471:13;7467:36;7461:2;7451:8;7448:16;7443:2;7437:4;7434:12;7430:35;7427:77;7424:159;;;-1:-1:-1;7536:19:1;;;7568:5;;7424:159;7615:34;7640:8;7634:4;7615:34;:::i;:::-;7685:6;7681:1;7677:6;7673:19;7664:7;7661:32;7658:58;;;7696:18;;:::i;:::-;7734:20;;6954:806;-1:-1:-1;;;6954:806:1:o;7765:140::-;7823:5;7852:47;7893:4;7883:8;7879:19;7873:4;7852:47;:::i;7910:168::-;7983:9;;;8014;;8031:15;;;8025:22;;8011:37;8001:71;;8052:18;;:::i;8083:217::-;8123:1;8149;8139:132;;8193:10;8188:3;8184:20;8181:1;8174:31;8228:4;8225:1;8218:15;8256:4;8253:1;8246:15;8139:132;-1:-1:-1;8285:9:1;;8083:217::o;8305:356::-;8507:2;8489:21;;;8526:18;;;8519:30;8585:34;8580:2;8565:18;;8558:62;8652:2;8637:18;;8305:356::o;11326:128::-;11393:9;;;11414:11;;;11411:37;;;11428:18;;:::i;11459:127::-;11520:10;11515:3;11511:20;11508:1;11501:31;11551:4;11548:1;11541:15;11575:4;11572:1;11565:15;11591:127;11652:10;11647:3;11643:20;11640:1;11633:31;11683:4;11680:1;11673:15;11707:4;11704:1;11697:15;12130:135;12169:3;12190:17;;;12187:43;;12210:18;;:::i;:::-;-1:-1:-1;12257:1:1;12246:13;;12130:135::o;12270:125::-;12335:9;;;12356:10;;;12353:36;;;12369:18;;:::i;12802:184::-;12872:6;12925:2;12913:9;12904:7;12900:23;12896:32;12893:52;;;12941:1;12938;12931:12;12893:52;-1:-1:-1;12964:16:1;;12802:184;-1:-1:-1;12802:184:1:o;13672:245::-;13739:6;13792:2;13780:9;13771:7;13767:23;13763:32;13760:52;;;13808:1;13805;13798:12;13760:52;13840:9;13834:16;13859:28;13881:5;13859:28;:::i;17090:251::-;17160:6;17213:2;17201:9;17192:7;17188:23;17184:32;17181:52;;;17229:1;17226;17219:12;17181:52;17261:9;17255:16;17280:31;17305:5;17280:31;:::i;17346:980::-;17608:4;17656:3;17645:9;17641:19;17687:6;17676:9;17669:25;17713:2;17751:6;17746:2;17735:9;17731:18;17724:34;17794:3;17789:2;17778:9;17774:18;17767:31;17818:6;17853;17847:13;17884:6;17876;17869:22;17922:3;17911:9;17907:19;17900:26;;17961:2;17953:6;17949:15;17935:29;;17982:1;17992:195;18006:6;18003:1;18000:13;17992:195;;;18071:13;;-1:-1:-1;;;;;18067:39:1;18055:52;;18162:15;;;;18127:12;;;;18103:1;18021:9;17992:195;;;-1:-1:-1;;;;;;;18243:32:1;;;;18238:2;18223:18;;18216:60;-1:-1:-1;;;18307:3:1;18292:19;18285:35;18204:3;17346:980;-1:-1:-1;;;17346:980:1:o

Swarm Source

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