ETH Price: $3,325.99 (-4.01%)
Gas: 3 Gwei

Token

Give Me Eth (GME)
 

Overview

Max Total Supply

69,000,000 GME

Holders

48

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 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:
Gme

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-06-07
*/

//SPDX-License-Identifier: MIT
/*
GME Token stands for GIVE ME ETH – a cheeky nod to our favourite stock and the relentless drive of the ape community. 
Just like the original GME stock that sent Wall Street into a tailspin and made hedge funds weep, our token is here to shake things up in the crypto world. 
So buckle up, because this is going to be one wild ride!

Telegram- https://t.me/GiveMeEthCoin
Twitter- https://X.com/GiveMeEthCoin
Web- https://GiveMeEth.Com

*/
pragma solidity 0.8.21;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    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 IUniswapV2Factory { 
    function createPair(address tokenA, address tokenB) external returns (address pair); 
}
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    function WETH() external pure returns (address);
    function factory() 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);
}

abstract contract Auth {
    address internal _owner;
    constructor(address deployerWallet) { 
        _owner = deployerWallet; 
    }
    modifier onlyOwner() { 
        require(msg.sender == _owner, "Only owner can call this"); 
        _; 
    }
    function owner() public view returns (address) { 
        return _owner; 
    }
    function transferOwnership(address payable newOwner) external onlyOwner { 
        _owner = newOwner; 
        emit OwnershipTransferred(newOwner); 
    }
    function renounceOwnership() external onlyOwner { 
        _owner = address(0); 
        emit OwnershipTransferred(address(0)); 
    }
    event OwnershipTransferred(address _owner);
}

contract Gme is IERC20, Auth {
    uint8 private constant _decimals      = 9;
    uint256 private constant _totalSupply = 69000000 * (10**_decimals);
    string private constant _name         = "Give Me Eth";
    string private constant _symbol       = "GME";

    uint8 private antiSnipeTax1 = 35;
    uint8 private antiSnipeTax2 = 30;
    uint8 private antiSnipeBlocks1 = 1;
    uint8 private antiSnipeBlocks2 = 2;

    uint8 private _buyTaxRate  = 20;
    uint8 private _sellTaxRate = 20;

    address payable private _walletMarketing = payable(0x0759b527af8364CeCCDB6E3A075429F99350073d); 

    uint256 private _launchBlock;
    uint256 private _maxTxAmount = _totalSupply * 1 / 100; 
    uint256 private _maxWalletAmount = _totalSupply * 1 / 100;
    uint256 private _taxSwapMin = _totalSupply * 10 / 100000;
    uint256 private _taxSwapMax = _totalSupply * 475 / 100000;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _noFees;
    mapping (address => bool) private _noLimits;

    address private _lpOwner;

    address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    IUniswapV2Router02 private _primarySwapRouter = IUniswapV2Router02(_swapRouterAddress);
    address private _primaryLP;
    mapping (address => bool) private _isLP;

    bool private _tradingOpen;

    bool private _inTaxSwap = false;
    modifier lockTaxSwap { 
        _inTaxSwap = true; 
        _; 
        _inTaxSwap = false; 
    }

    event TokensAirdropped(uint256 totalWallets, uint256 totalTokens);
    event TokensBurned(address indexed burnedByWallet, uint256 tokenAmount);

    constructor() Auth(msg.sender) {
        _lpOwner = msg.sender;

        _balances[_owner] = _totalSupply;
        emit Transfer(address(0), _owner, _balances[_owner]);

        _noFees[_owner] = true;
        _noFees[address(this)] = true;
        _noFees[_swapRouterAddress] = true;
        _noFees[_walletMarketing] = true;
        _noLimits[_owner] = true;
        _noLimits[address(this)] = true;
        _noLimits[_swapRouterAddress] = true;
        _noLimits[_walletMarketing] = true;
    }

    receive() external payable {}
    
    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) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(msg.sender), "Trading not open");
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(sender), "Trading not open");
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] -= amount;
        }
        return _transferFrom(sender, recipient, amount);
    }

    function _approveRouter(uint256 _tokenAmount) internal {
        if ( _allowances[address(this)][_swapRouterAddress] < _tokenAmount ) {
            _allowances[address(this)][_swapRouterAddress] = type(uint256).max;
            emit Approval(address(this), _swapRouterAddress, type(uint256).max);
        }
    }

    function addLiquidity() external payable onlyOwner lockTaxSwap {
        require(_primaryLP == address(0), "LP exists");
        require(!_tradingOpen, "trading is open");
        require(msg.value > 0 || address(this).balance>0, "No ETH in contract or message");
        require(_balances[address(this)]>0, "No tokens in contract");
        _primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), _primarySwapRouter.WETH());
        _addLiquidity(_balances[address(this)], address(this).balance, false);
        _isLP[_primaryLP] = true;
    }

    function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei, bool autoburn) internal {
        address lpTokenRecipient = _lpOwner;
        if ( autoburn ) { lpTokenRecipient = address(0); }
        _approveRouter(_tokenAmount);
        _primarySwapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, lpTokenRecipient, block.timestamp );
    }

    function enableTrading() external onlyOwner {
        require(!_tradingOpen, "trading is open");
        _openTrading();
    }

    function _openTrading() internal {
        _tradingOpen = true;
        _launchBlock = block.number;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(sender != address(0), "No transfers from Zero wallet");
        if (!_tradingOpen) { require(_noFees[sender] && _noLimits[sender], "Trading not open"); }
        if ( !_inTaxSwap && _isLP[recipient] ) { _swapTaxAndLiquify(); }
        
        if ( sender != address(this) && recipient != address(this) && sender != _owner ) { 
            require(_checkLimits(sender, recipient, amount), "TX exceeds limits"); 
        }
        uint256 _taxAmount = _calculateTax(sender, recipient, amount);
        uint256 _transferAmount = amount - _taxAmount;
        _balances[sender] = _balances[sender] - amount;
        if ( _taxAmount > 0 ) { _balances[address(this)] += _taxAmount; }
        _balances[recipient] += _transferAmount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function _checkLimits(address sender, address recipient, uint256 transferAmount) internal view returns (bool) {
        bool limitCheckPassed = true;
        if ( _tradingOpen && !_noLimits[sender] && !_noLimits[recipient] ) {
            if ( transferAmount > _maxTxAmount ) { 
                limitCheckPassed = false; 
            }
            else if ( !_isLP[recipient] && (_balances[recipient] + transferAmount > _maxWalletAmount) ) { 
                limitCheckPassed = false; 
            }
        }
        return limitCheckPassed;
    }

    function _checkTradingOpen(address sender) private view returns (bool){
        bool checkResult = false;
        if ( _tradingOpen ) { checkResult = true; } 
        else if (_noFees[sender] && _noLimits[sender]) { checkResult = true; } 
        return checkResult;
    }

    function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) {
        uint256 taxAmount;
        if ( !_tradingOpen || _noFees[sender] || _noFees[recipient] ) { 
            taxAmount = 0; 
        } else if ( _isLP[sender] ) { 
            if ( block.number >= _launchBlock + antiSnipeBlocks1 + antiSnipeBlocks2 ) {
                taxAmount = amount * _buyTaxRate / 100; 
            } else if ( block.number >= _launchBlock + antiSnipeBlocks1 ) {
                taxAmount = amount * antiSnipeTax2 / 100;
            } else if ( block.number >= _launchBlock) {
                taxAmount = amount * antiSnipeTax1 / 100;
            }
        } else if ( _isLP[recipient] ) { 
            taxAmount = amount * _sellTaxRate / 100; 
        }
        return taxAmount;
    }

    function exemptFromFees(address wallet) external view returns (bool) {
        return _noFees[wallet];
    } 
    function exemptFromLimits(address wallet) external view returns (bool) {
        return _noLimits[wallet];
    } 
    function setExempt(address wallet, bool noFees, bool noLimits) external onlyOwner {
        if (noLimits || noFees) { require(!_isLP[wallet], "Cannot exempt LP"); }
        _noFees[ wallet ] = noFees;
        _noLimits[ wallet ] = noLimits;
    }

    function buyFee() external view returns(uint8) {
        return _buyTaxRate;
    }
    function sellFee() external view returns(uint8) {
        return _sellTaxRate;
    }

    function setFees(uint8 buy, uint8 sell) external onlyOwner {
        require(buy + sell <= 35, "Roundtrip too high");
        _buyTaxRate = buy;
        _sellTaxRate = sell;
    }  

    function marketingWallet() external view returns (address) {
        return _walletMarketing;
    }

    function updateWallet(address marketing) external onlyOwner {
        require(!_isLP[marketing], "LP cannot be tax wallet");
        _walletMarketing = payable(marketing);
        _noFees[marketing] = true;
        _noLimits[marketing] = true;
    }

    function maxWallet() external view returns (uint256) {
        return _maxWalletAmount;
    }
    function maxTransaction() external view returns (uint256) {
        return _maxTxAmount;
    }

    function swapAtMin() external view returns (uint256) {
        return _taxSwapMin;
    }
    function swapAtMax() external view returns (uint256) {
        return _taxSwapMax;
    }

    function setLimits(uint16 maxTransactionPermille, uint16 maxWalletPermille) external onlyOwner {
        uint256 newTxAmt = _totalSupply * maxTransactionPermille / 1000 + 1;
        require(newTxAmt >= _maxTxAmount, "tx too low");
        _maxTxAmount = newTxAmt;
        uint256 newWalletAmt = _totalSupply * maxWalletPermille / 1000 + 1;
        require(newWalletAmt >= _maxWalletAmount, "wallet too low");
        _maxWalletAmount = newWalletAmt;
    }

    function setTaxSwap(uint32 minValue, uint32 minDivider, uint32 maxValue, uint32 maxDivider) external onlyOwner {
        _taxSwapMin = _totalSupply * minValue / minDivider;
        _taxSwapMax = _totalSupply * maxValue / maxDivider;
        require(_taxSwapMax>=_taxSwapMin, "Min/Max error");
        require(_taxSwapMax>_totalSupply / 100000, "Max too low");
        require(_taxSwapMax<_totalSupply / 100, "Max too high");
    }

    function _swapTaxAndLiquify() private lockTaxSwap {
        uint256 _taxTokensAvailable = balanceOf(address(this));

        if ( _taxTokensAvailable >= _taxSwapMin && _tradingOpen ) {
            if ( _taxTokensAvailable >= _taxSwapMax ) { _taxTokensAvailable = _taxSwapMax; }
            uint256 _tokensToSwap = _taxTokensAvailable;
            if( _tokensToSwap > 10**_decimals ) {
                _swapTaxTokensForEth(_tokensToSwap);
            }
            uint256 _contractETHBalance = address(this).balance;
            if(_contractETHBalance > 0) { _walletMarketing.transfer(_contractETHBalance); }
        }
    }

    function _swapTaxTokensForEth(uint256 tokenAmt) private {
        _approveRouter(tokenAmt);
        address[] memory swappath = new address[](2);
        swappath[0] = address(this); swappath[1] = _primarySwapRouter.WETH();
        _primarySwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmt,0,swappath,address(this),block.timestamp);
    }

    function manualTaxSwapAndSend(uint8 swapTokenPercent, bool sendEth) external onlyOwner lockTaxSwap {
        require(swapTokenPercent <= 100, "Cannot swap more than 100%");
        uint256 tokensToSwap = balanceOf(address(this)) * swapTokenPercent / 100;
        if (tokensToSwap > 10 ** _decimals) {
            _swapTaxTokensForEth(tokensToSwap);
        }
        if (sendEth) { 
            uint256 ethBalance = address(this).balance;
            require(ethBalance > 0, "No ETH");
            _walletMarketing.transfer(ethBalance);
        }
    }

    function burn(uint256 amount) external onlyOwner {
        uint256 _tokensAvailable = balanceOf(msg.sender);
        require(amount <= _tokensAvailable, "balance too low");
        if ( amount > 0 ) {
            _balances[msg.sender] -= amount;
            _balances[address(0)] += amount;
            emit Transfer(msg.sender, address(0), amount);
            emit TokensBurned(msg.sender, amount);
        }
    }
}

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":false,"internalType":"address","name":"_owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"totalWallets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalTokens","type":"uint256"}],"name":"TokensAirdropped","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"burnedByWallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"TokensBurned","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":"addLiquidity","outputs":[],"stateMutability":"payable","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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"exemptFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"exemptFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"swapTokenPercent","type":"uint8"},{"internalType":"bool","name":"sendEth","type":"bool"}],"name":"manualTaxSwapAndSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"name":"setExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buy","type":"uint8"},{"internalType":"uint8","name":"sell","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTransactionPermille","type":"uint16"},{"internalType":"uint16","name":"maxWalletPermille","type":"uint16"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minValue","type":"uint32"},{"internalType":"uint32","name":"minDivider","type":"uint32"},{"internalType":"uint32","name":"maxValue","type":"uint32"},{"internalType":"uint32","name":"maxDivider","type":"uint32"}],"name":"setTaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAtMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAtMin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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 payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketing","type":"address"}],"name":"updateWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f805465141402011e2360a01b65ffffffffffff60a01b19909116179055600180546001600160a01b031916730759b527af8364ceccdb6e3a075429f99350073d1790556064620000586009600a62000405565b620000689063041cdb406200041c565b620000759060016200041c565b62000081919062000436565b6003556064620000946009600a62000405565b620000a49063041cdb406200041c565b620000b19060016200041c565b620000bd919062000436565b600455620186a0620000d26009600a62000405565b620000e29063041cdb406200041c565b620000ef90600a6200041c565b620000fb919062000436565b600555620186a0620001106009600a62000405565b620001209063041cdb406200041c565b6200012e906101db6200041c565b6200013a919062000436565b600655600c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055600f805461ff00191690553480156200017a575f80fd5b505f8054336001600160a01b03199182168117909255600b80549091169091179055620001aa6009600a62000405565b620001ba9063041cdb406200041c565b5f80546001600160a01b039081168252600760205260408083209390935581541680825282822054925190927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916200021591815260200190565b60405180910390a35f80546001600160a01b0390811682526009602090815260408084208054600160ff1991821681179092553080875283872080548316841790557fbaa441ac52505693dd98c7dd2f5bbf8f9349b7da9de72f9d52e5cac70e7da8ce80548316841790558254861687528387208054831684179055865486168752600a909452828620805482168317905592855281852080548416821790557fc90215bb1b0ac6bfa50a3c02c4b559c695b6a8e828048a88e327592fc55c5d2c805484168217905580549093168452909220805490921617905562000456565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200034a57815f19048211156200032e576200032e620002f6565b808516156200033c57918102915b93841c93908002906200030f565b509250929050565b5f826200036257506001620003ff565b816200037057505f620003ff565b81600181146200038957600281146200039457620003b4565b6001915050620003ff565b60ff841115620003a857620003a8620002f6565b50506001821b620003ff565b5060208310610133831016604e8410600b8410161715620003d9575081810a620003ff565b620003e583836200030a565b805f1904821115620003fb57620003fb620002f6565b0290505b92915050565b5f6200041560ff84168362000352565b9392505050565b8082028115828204841417620003ff57620003ff620002f6565b5f826200045157634e487b7160e01b5f52601260045260245ffd5b500490565b6121d980620004645f395ff3fe6080604052600436106101c8575f3560e01c806370a08231116100f257806395d89b4111610092578063dd62ed3e11610062578063dd62ed3e1461055b578063e8078d941461059f578063f2fde38b146105a7578063f8b45b05146105c6575f80fd5b806395d89b41146104de578063a6097b0a14610509578063a9059cbb14610528578063c3f70b5214610547575f80fd5b8063848b86e3116100cd578063848b86e3146104585780638a8c523c146104775780638d3e6e401461048b5780638da5cb5b146104c2575f80fd5b806370a08231146103df578063715018a61461041357806375f0a87414610427575f80fd5b8063368f4800116101685780634d4ce935116101385780634d4ce935146103565780634fcd24461461036a57806357ff135a146103895780635a90a49e146103a8575f80fd5b8063368f4800146102e757806342966c681461030657806346b89834146103255780634706240214610339575f80fd5b806323b872dd116101a357806323b872dd146102695780632b14ca56146102885780632fb528ba146102b3578063313ce567146102d4575f80fd5b806306fdde03146101d3578063095ea7b31461021857806318160ddd14610247575f80fd5b366101cf57005b5f80fd5b3480156101de575f80fd5b5060408051808201909152600b81526a08ed2ecca409aca408ae8d60ab1b60208201525b60405161020f9190611c76565b60405180910390f35b348015610223575f80fd5b50610237610232366004611cd5565b6105da565b604051901515815260200161020f565b348015610252575f80fd5b5061025b610646565b60405190815260200161020f565b348015610274575f80fd5b50610237610283366004611cff565b610666565b348015610293575f80fd5b505f54600160c81b900460ff165b60405160ff909116815260200161020f565b3480156102be575f80fd5b506102d26102cd366004611d61565b61070a565b005b3480156102df575f80fd5b5060096102a1565b3480156102f2575f80fd5b506102d2610301366004611da3565b610865565b348015610311575f80fd5b506102d2610320366004611dcb565b6109a5565b348015610330575f80fd5b5060055461025b565b348015610344575f80fd5b505f54600160c01b900460ff166102a1565b348015610361575f80fd5b5060065461025b565b348015610375575f80fd5b506102d2610384366004611de2565b610af8565b348015610394575f80fd5b506102d26103a3366004611e0a565b610ba6565b3480156103b3575f80fd5b506102376103c2366004611e4c565b6001600160a01b03165f9081526009602052604090205460ff1690565b3480156103ea575f80fd5b5061025b6103f9366004611e4c565b6001600160a01b03165f9081526007602052604090205490565b34801561041e575f80fd5b506102d2610c79565b348015610432575f80fd5b506001546001600160a01b03165b6040516001600160a01b03909116815260200161020f565b348015610463575f80fd5b506102d2610472366004611e4c565b610ce6565b348015610482575f80fd5b506102d2610dc5565b348015610496575f80fd5b506102376104a5366004611e4c565b6001600160a01b03165f908152600a602052604090205460ff1690565b3480156104cd575f80fd5b505f546001600160a01b0316610440565b3480156104e9575f80fd5b50604080518082019091526003815262474d4560e81b6020820152610202565b348015610514575f80fd5b506102d2610523366004611e7a565b610e4b565b348015610533575f80fd5b50610237610542366004611cd5565b611000565b348015610552575f80fd5b5060035461025b565b348015610566575f80fd5b5061025b610575366004611ecb565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b6102d2611038565b3480156105b2575f80fd5b506102d26105c1366004611e4c565b611376565b3480156105d1575f80fd5b5060045461025b565b335f8181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106349086815260200190565b60405180910390a35060015b92915050565b5f6106536009600a611ff6565b6106619063041cdb40612004565b905090565b5f610670846113f2565b6106955760405162461bcd60e51b815260040161068c9061201b565b60405180910390fd5b6001600160a01b0384165f9081526008602090815260408083203384529091529020545f19146106f7576001600160a01b0384165f908152600860209081526040808320338452909152812080548492906106f1908490612045565b90915550505b610702848484611455565b949350505050565b5f546001600160a01b031633146107335760405162461bcd60e51b815260040161068c90612058565b600f805461ff001916610100179055606460ff831611156107965760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f742073776170206d6f7265207468616e2031303025000000000000604482015260640161068c565b305f908152600760205260408120546064906107b69060ff861690612004565b6107c0919061208f565b90506107ce6009600a611ff6565b8111156107de576107de816116df565b811561085557478061081b5760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b604482015260640161068c565b6001546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610852573d5f803e3d5ffd5b50505b5050600f805461ff001916905550565b5f546001600160a01b0316331461088e5760405162461bcd60e51b815260040161068c90612058565b5f6103e861ffff84166108a36009600a611ff6565b6108b19063041cdb40612004565b6108bb9190612004565b6108c5919061208f565b6108d09060016120ae565b90506003548110156109115760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b604482015260640161068c565b60038190555f6103e861ffff841661092b6009600a611ff6565b6109399063041cdb40612004565b6109439190612004565b61094d919061208f565b6109589060016120ae565b905060045481101561099d5760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b604482015260640161068c565b600455505050565b5f546001600160a01b031633146109ce5760405162461bcd60e51b815260040161068c90612058565b335f9081526007602052604090205480821115610a1f5760405162461bcd60e51b815260206004820152600f60248201526e62616c616e636520746f6f206c6f7760881b604482015260640161068c565b8115610af457335f9081526007602052604081208054849290610a43908490612045565b90915550505f80805260076020527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df8054849290610a829084906120ae565b90915550506040518281525f9033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a360405182815233907ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb69060200160405180910390a25b5050565b5f546001600160a01b03163314610b215760405162461bcd60e51b815260040161068c90612058565b6023610b2d82846120c1565b60ff161115610b735760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b604482015260640161068c565b5f805461ffff60c01b1916600160c01b60ff9485160260ff60c81b191617600160c81b9290931691909102919091179055565b5f546001600160a01b03163314610bcf5760405162461bcd60e51b815260040161068c90612058565b8080610bd85750815b15610c38576001600160a01b0383165f908152600e602052604090205460ff1615610c385760405162461bcd60e51b815260206004820152601060248201526f043616e6e6f74206578656d7074204c560841b604482015260640161068c565b6001600160a01b039092165f908152600960209081526040808320805494151560ff19958616179055600a9091529020805492151592909116919091179055565b5f546001600160a01b03163314610ca25760405162461bcd60e51b815260040161068c90612058565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b03163314610d0f5760405162461bcd60e51b815260040161068c90612058565b6001600160a01b0381165f908152600e602052604090205460ff1615610d775760405162461bcd60e51b815260206004820152601760248201527f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000604482015260640161068c565b600180546001600160a01b039092166001600160a01b0319909216821781555f918252600960209081526040808420805460ff199081168517909155600a9092529092208054909216179055565b5f546001600160a01b03163314610dee5760405162461bcd60e51b815260040161068c90612058565b600f5460ff1615610e335760405162461bcd60e51b815260206004820152600f60248201526e3a3930b234b7339034b99037b832b760891b604482015260640161068c565b610e49600f805460ff1916600117905543600255565b565b5f546001600160a01b03163314610e745760405162461bcd60e51b815260040161068c90612058565b63ffffffff808416908516610e8b6009600a611ff6565b610e999063041cdb40612004565b610ea39190612004565b610ead919061208f565b60055563ffffffff808216908316610ec76009600a611ff6565b610ed59063041cdb40612004565b610edf9190612004565b610ee9919061208f565b60068190556005541115610f2f5760405162461bcd60e51b815260206004820152600d60248201526c26b4b717a6b0bc1032b93937b960991b604482015260640161068c565b620186a0610f3f6009600a611ff6565b610f4d9063041cdb40612004565b610f57919061208f565b60065411610f955760405162461bcd60e51b815260206004820152600b60248201526a4d617820746f6f206c6f7760a81b604482015260640161068c565b6064610fa36009600a611ff6565b610fb19063041cdb40612004565b610fbb919061208f565b60065410610ffa5760405162461bcd60e51b815260206004820152600c60248201526b09ac2f040e8dede40d0d2ced60a31b604482015260640161068c565b50505050565b5f61100a336113f2565b6110265760405162461bcd60e51b815260040161068c9061201b565b611031338484611455565b9392505050565b5f546001600160a01b031633146110615760405162461bcd60e51b815260040161068c90612058565b600f805461ff001916610100179055600d546001600160a01b0316156110b55760405162461bcd60e51b81526020600482015260096024820152684c502065786973747360b81b604482015260640161068c565b600f5460ff16156110fa5760405162461bcd60e51b815260206004820152600f60248201526e3a3930b234b7339034b99037b832b760891b604482015260640161068c565b5f34118061110757505f47115b6111535760405162461bcd60e51b815260206004820152601d60248201527f4e6f2045544820696e20636f6e7472616374206f72206d657373616765000000604482015260640161068c565b305f908152600760205260409020546111a65760405162461bcd60e51b8152602060048201526015602482015274139bc81d1bdad95b9cc81a5b8818dbdb9d1c9858dd605a1b604482015260640161068c565b600c5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111f6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061121a91906120da565b6001600160a01b031663c9c6539630600c5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611279573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061129d91906120da565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156112e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061130b91906120da565b600d80546001600160a01b0319166001600160a01b0392909216919091179055305f9081526007602052604081205461134591479061181f565b600d546001600160a01b03165f908152600e60205260409020805460ff19166001179055600f805461ff0019169055565b5f546001600160a01b0316331461139f5760405162461bcd60e51b815260040161068c90612058565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b600f545f90819060ff161561140957506001610640565b6001600160a01b0383165f9081526009602052604090205460ff16801561144757506001600160a01b0383165f908152600a602052604090205460ff165b156106405750600192915050565b5f6001600160a01b0384166114ac5760405162461bcd60e51b815260206004820152601d60248201527f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000604482015260640161068c565b600f5460ff16611510576001600160a01b0384165f9081526009602052604090205460ff1680156114f457506001600160a01b0384165f908152600a602052604090205460ff165b6115105760405162461bcd60e51b815260040161068c9061201b565b600f54610100900460ff1615801561153f57506001600160a01b0383165f908152600e602052604090205460ff165b1561154c5761154c6118d6565b6001600160a01b038416301480159061156e57506001600160a01b0383163014155b801561158757505f546001600160a01b03858116911614155b156115d75761159784848461198b565b6115d75760405162461bcd60e51b815260206004820152601160248201527054582065786365656473206c696d69747360781b604482015260640161068c565b5f6115e3858585611a4e565b90505f6115f08285612045565b6001600160a01b0387165f90815260076020526040902054909150611616908590612045565b6001600160a01b0387165f90815260076020526040902055811561165857305f90815260076020526040812080548492906116529084906120ae565b90915550505b6001600160a01b0385165f908152600760205260408120805483929061167f9084906120ae565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516116cb91815260200190565b60405180910390a350600195945050505050565b6116e881611bd4565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061171b5761171b6120f5565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611772573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061179691906120da565b816001815181106117a9576117a96120f5565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b815291169063791ac947906117ee9085905f90869030904290600401612109565b5f604051808303815f87803b158015611805575f80fd5b505af1158015611817573d5f803e3d5ffd5b505050505050565b600b546001600160a01b0316811561183457505f5b61183d84611bd4565b600c5460405163f305d71960e01b8152306004820152602481018690525f6044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990859060c40160606040518083038185885af11580156118a8573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906118cd9190612178565b50505050505050565b600f805461ff001916610100179055305f908152600760205260408120549050600554811015801561190a5750600f5460ff165b1561197d57600654811061191d57506006545b8061192a6009600a611ff6565b81111561193a5761193a816116df565b47801561197a576001546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611978573d5f803e3d5ffd5b505b50505b50600f805461ff0019169055565b600f545f9060019060ff1680156119ba57506001600160a01b0385165f908152600a602052604090205460ff16155b80156119de57506001600160a01b0384165f908152600a602052604090205460ff16155b15610702576003548311156119f457505f610702565b6001600160a01b0384165f908152600e602052604090205460ff16158015611a3f57506004546001600160a01b0385165f90815260076020526040902054611a3d9085906120ae565b115b1561070257505f949350505050565b600f545f90819060ff161580611a7b57506001600160a01b0385165f9081526009602052604090205460ff165b80611a9d57506001600160a01b0384165f9081526009602052604090205460ff165b15611aa957505f610702565b6001600160a01b0385165f908152600e602052604090205460ff1615611b88575f5460025460ff600160b81b8304811692611aef92600160b01b909104909116906120ae565b611af991906120ae565b4310611b29575f54606490611b1890600160c01b900460ff1685612004565b611b22919061208f565b9050610702565b5f54600254611b4291600160b01b900460ff16906120ae565b4310611b61575f54606490611b1890600160a81b900460ff1685612004565b6002544310611b83575f54606490611b1890600160a01b900460ff1685612004565b610702565b6001600160a01b0384165f908152600e602052604090205460ff1615610702575f54606490611bc190600160c81b900460ff1685612004565b611bcb919061208f565b95945050505050565b305f908152600860209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d8452909152902054811115611c7357305f818152600860209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190205f199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b5f6020808352835180828501525f5b81811015611ca157858101830151858201604001528201611c85565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611c73575f80fd5b5f8060408385031215611ce6575f80fd5b8235611cf181611cc1565b946020939093013593505050565b5f805f60608486031215611d11575f80fd5b8335611d1c81611cc1565b92506020840135611d2c81611cc1565b929592945050506040919091013590565b803560ff81168114611d4d575f80fd5b919050565b80358015158114611d4d575f80fd5b5f8060408385031215611d72575f80fd5b611d7b83611d3d565b9150611d8960208401611d52565b90509250929050565b803561ffff81168114611d4d575f80fd5b5f8060408385031215611db4575f80fd5b611dbd83611d92565b9150611d8960208401611d92565b5f60208284031215611ddb575f80fd5b5035919050565b5f8060408385031215611df3575f80fd5b611dfc83611d3d565b9150611d8960208401611d3d565b5f805f60608486031215611e1c575f80fd5b8335611e2781611cc1565b9250611e3560208501611d52565b9150611e4360408501611d52565b90509250925092565b5f60208284031215611e5c575f80fd5b813561103181611cc1565b803563ffffffff81168114611d4d575f80fd5b5f805f8060808587031215611e8d575f80fd5b611e9685611e67565b9350611ea460208601611e67565b9250611eb260408601611e67565b9150611ec060608601611e67565b905092959194509250565b5f8060408385031215611edc575f80fd5b8235611ee781611cc1565b91506020830135611ef781611cc1565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611f5057815f1904821115611f3657611f36611f02565b80851615611f4357918102915b93841c9390800290611f1b565b509250929050565b5f82611f6657506001610640565b81611f7257505f610640565b8160018114611f885760028114611f9257611fae565b6001915050610640565b60ff841115611fa357611fa3611f02565b50506001821b610640565b5060208310610133831016604e8410600b8410161715611fd1575081810a610640565b611fdb8383611f16565b805f1904821115611fee57611fee611f02565b029392505050565b5f61103160ff841683611f58565b808202811582820484141761064057610640611f02565b60208082526010908201526f2a3930b234b733903737ba1037b832b760811b604082015260600190565b8181038181111561064057610640611f02565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b5f826120a957634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561064057610640611f02565b60ff818116838216019081111561064057610640611f02565b5f602082840312156120ea575f80fd5b815161103181611cc1565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156121575784516001600160a01b031683529383019391830191600101612132565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f6060848603121561218a575f80fd5b835192506020840151915060408401519050925092509256fea264697066735822122099fbfff93201ae0416a50aecae59aa36b3524630dab4a81c5327ae6d938751e464736f6c63430008150033

Deployed Bytecode

0x6080604052600436106101c8575f3560e01c806370a08231116100f257806395d89b4111610092578063dd62ed3e11610062578063dd62ed3e1461055b578063e8078d941461059f578063f2fde38b146105a7578063f8b45b05146105c6575f80fd5b806395d89b41146104de578063a6097b0a14610509578063a9059cbb14610528578063c3f70b5214610547575f80fd5b8063848b86e3116100cd578063848b86e3146104585780638a8c523c146104775780638d3e6e401461048b5780638da5cb5b146104c2575f80fd5b806370a08231146103df578063715018a61461041357806375f0a87414610427575f80fd5b8063368f4800116101685780634d4ce935116101385780634d4ce935146103565780634fcd24461461036a57806357ff135a146103895780635a90a49e146103a8575f80fd5b8063368f4800146102e757806342966c681461030657806346b89834146103255780634706240214610339575f80fd5b806323b872dd116101a357806323b872dd146102695780632b14ca56146102885780632fb528ba146102b3578063313ce567146102d4575f80fd5b806306fdde03146101d3578063095ea7b31461021857806318160ddd14610247575f80fd5b366101cf57005b5f80fd5b3480156101de575f80fd5b5060408051808201909152600b81526a08ed2ecca409aca408ae8d60ab1b60208201525b60405161020f9190611c76565b60405180910390f35b348015610223575f80fd5b50610237610232366004611cd5565b6105da565b604051901515815260200161020f565b348015610252575f80fd5b5061025b610646565b60405190815260200161020f565b348015610274575f80fd5b50610237610283366004611cff565b610666565b348015610293575f80fd5b505f54600160c81b900460ff165b60405160ff909116815260200161020f565b3480156102be575f80fd5b506102d26102cd366004611d61565b61070a565b005b3480156102df575f80fd5b5060096102a1565b3480156102f2575f80fd5b506102d2610301366004611da3565b610865565b348015610311575f80fd5b506102d2610320366004611dcb565b6109a5565b348015610330575f80fd5b5060055461025b565b348015610344575f80fd5b505f54600160c01b900460ff166102a1565b348015610361575f80fd5b5060065461025b565b348015610375575f80fd5b506102d2610384366004611de2565b610af8565b348015610394575f80fd5b506102d26103a3366004611e0a565b610ba6565b3480156103b3575f80fd5b506102376103c2366004611e4c565b6001600160a01b03165f9081526009602052604090205460ff1690565b3480156103ea575f80fd5b5061025b6103f9366004611e4c565b6001600160a01b03165f9081526007602052604090205490565b34801561041e575f80fd5b506102d2610c79565b348015610432575f80fd5b506001546001600160a01b03165b6040516001600160a01b03909116815260200161020f565b348015610463575f80fd5b506102d2610472366004611e4c565b610ce6565b348015610482575f80fd5b506102d2610dc5565b348015610496575f80fd5b506102376104a5366004611e4c565b6001600160a01b03165f908152600a602052604090205460ff1690565b3480156104cd575f80fd5b505f546001600160a01b0316610440565b3480156104e9575f80fd5b50604080518082019091526003815262474d4560e81b6020820152610202565b348015610514575f80fd5b506102d2610523366004611e7a565b610e4b565b348015610533575f80fd5b50610237610542366004611cd5565b611000565b348015610552575f80fd5b5060035461025b565b348015610566575f80fd5b5061025b610575366004611ecb565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b6102d2611038565b3480156105b2575f80fd5b506102d26105c1366004611e4c565b611376565b3480156105d1575f80fd5b5060045461025b565b335f8181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106349086815260200190565b60405180910390a35060015b92915050565b5f6106536009600a611ff6565b6106619063041cdb40612004565b905090565b5f610670846113f2565b6106955760405162461bcd60e51b815260040161068c9061201b565b60405180910390fd5b6001600160a01b0384165f9081526008602090815260408083203384529091529020545f19146106f7576001600160a01b0384165f908152600860209081526040808320338452909152812080548492906106f1908490612045565b90915550505b610702848484611455565b949350505050565b5f546001600160a01b031633146107335760405162461bcd60e51b815260040161068c90612058565b600f805461ff001916610100179055606460ff831611156107965760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f742073776170206d6f7265207468616e2031303025000000000000604482015260640161068c565b305f908152600760205260408120546064906107b69060ff861690612004565b6107c0919061208f565b90506107ce6009600a611ff6565b8111156107de576107de816116df565b811561085557478061081b5760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b604482015260640161068c565b6001546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610852573d5f803e3d5ffd5b50505b5050600f805461ff001916905550565b5f546001600160a01b0316331461088e5760405162461bcd60e51b815260040161068c90612058565b5f6103e861ffff84166108a36009600a611ff6565b6108b19063041cdb40612004565b6108bb9190612004565b6108c5919061208f565b6108d09060016120ae565b90506003548110156109115760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b604482015260640161068c565b60038190555f6103e861ffff841661092b6009600a611ff6565b6109399063041cdb40612004565b6109439190612004565b61094d919061208f565b6109589060016120ae565b905060045481101561099d5760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b604482015260640161068c565b600455505050565b5f546001600160a01b031633146109ce5760405162461bcd60e51b815260040161068c90612058565b335f9081526007602052604090205480821115610a1f5760405162461bcd60e51b815260206004820152600f60248201526e62616c616e636520746f6f206c6f7760881b604482015260640161068c565b8115610af457335f9081526007602052604081208054849290610a43908490612045565b90915550505f80805260076020527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df8054849290610a829084906120ae565b90915550506040518281525f9033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a360405182815233907ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb69060200160405180910390a25b5050565b5f546001600160a01b03163314610b215760405162461bcd60e51b815260040161068c90612058565b6023610b2d82846120c1565b60ff161115610b735760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b604482015260640161068c565b5f805461ffff60c01b1916600160c01b60ff9485160260ff60c81b191617600160c81b9290931691909102919091179055565b5f546001600160a01b03163314610bcf5760405162461bcd60e51b815260040161068c90612058565b8080610bd85750815b15610c38576001600160a01b0383165f908152600e602052604090205460ff1615610c385760405162461bcd60e51b815260206004820152601060248201526f043616e6e6f74206578656d7074204c560841b604482015260640161068c565b6001600160a01b039092165f908152600960209081526040808320805494151560ff19958616179055600a9091529020805492151592909116919091179055565b5f546001600160a01b03163314610ca25760405162461bcd60e51b815260040161068c90612058565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b03163314610d0f5760405162461bcd60e51b815260040161068c90612058565b6001600160a01b0381165f908152600e602052604090205460ff1615610d775760405162461bcd60e51b815260206004820152601760248201527f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000604482015260640161068c565b600180546001600160a01b039092166001600160a01b0319909216821781555f918252600960209081526040808420805460ff199081168517909155600a9092529092208054909216179055565b5f546001600160a01b03163314610dee5760405162461bcd60e51b815260040161068c90612058565b600f5460ff1615610e335760405162461bcd60e51b815260206004820152600f60248201526e3a3930b234b7339034b99037b832b760891b604482015260640161068c565b610e49600f805460ff1916600117905543600255565b565b5f546001600160a01b03163314610e745760405162461bcd60e51b815260040161068c90612058565b63ffffffff808416908516610e8b6009600a611ff6565b610e999063041cdb40612004565b610ea39190612004565b610ead919061208f565b60055563ffffffff808216908316610ec76009600a611ff6565b610ed59063041cdb40612004565b610edf9190612004565b610ee9919061208f565b60068190556005541115610f2f5760405162461bcd60e51b815260206004820152600d60248201526c26b4b717a6b0bc1032b93937b960991b604482015260640161068c565b620186a0610f3f6009600a611ff6565b610f4d9063041cdb40612004565b610f57919061208f565b60065411610f955760405162461bcd60e51b815260206004820152600b60248201526a4d617820746f6f206c6f7760a81b604482015260640161068c565b6064610fa36009600a611ff6565b610fb19063041cdb40612004565b610fbb919061208f565b60065410610ffa5760405162461bcd60e51b815260206004820152600c60248201526b09ac2f040e8dede40d0d2ced60a31b604482015260640161068c565b50505050565b5f61100a336113f2565b6110265760405162461bcd60e51b815260040161068c9061201b565b611031338484611455565b9392505050565b5f546001600160a01b031633146110615760405162461bcd60e51b815260040161068c90612058565b600f805461ff001916610100179055600d546001600160a01b0316156110b55760405162461bcd60e51b81526020600482015260096024820152684c502065786973747360b81b604482015260640161068c565b600f5460ff16156110fa5760405162461bcd60e51b815260206004820152600f60248201526e3a3930b234b7339034b99037b832b760891b604482015260640161068c565b5f34118061110757505f47115b6111535760405162461bcd60e51b815260206004820152601d60248201527f4e6f2045544820696e20636f6e7472616374206f72206d657373616765000000604482015260640161068c565b305f908152600760205260409020546111a65760405162461bcd60e51b8152602060048201526015602482015274139bc81d1bdad95b9cc81a5b8818dbdb9d1c9858dd605a1b604482015260640161068c565b600c5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111f6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061121a91906120da565b6001600160a01b031663c9c6539630600c5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611279573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061129d91906120da565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156112e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061130b91906120da565b600d80546001600160a01b0319166001600160a01b0392909216919091179055305f9081526007602052604081205461134591479061181f565b600d546001600160a01b03165f908152600e60205260409020805460ff19166001179055600f805461ff0019169055565b5f546001600160a01b0316331461139f5760405162461bcd60e51b815260040161068c90612058565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b600f545f90819060ff161561140957506001610640565b6001600160a01b0383165f9081526009602052604090205460ff16801561144757506001600160a01b0383165f908152600a602052604090205460ff165b156106405750600192915050565b5f6001600160a01b0384166114ac5760405162461bcd60e51b815260206004820152601d60248201527f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000604482015260640161068c565b600f5460ff16611510576001600160a01b0384165f9081526009602052604090205460ff1680156114f457506001600160a01b0384165f908152600a602052604090205460ff165b6115105760405162461bcd60e51b815260040161068c9061201b565b600f54610100900460ff1615801561153f57506001600160a01b0383165f908152600e602052604090205460ff165b1561154c5761154c6118d6565b6001600160a01b038416301480159061156e57506001600160a01b0383163014155b801561158757505f546001600160a01b03858116911614155b156115d75761159784848461198b565b6115d75760405162461bcd60e51b815260206004820152601160248201527054582065786365656473206c696d69747360781b604482015260640161068c565b5f6115e3858585611a4e565b90505f6115f08285612045565b6001600160a01b0387165f90815260076020526040902054909150611616908590612045565b6001600160a01b0387165f90815260076020526040902055811561165857305f90815260076020526040812080548492906116529084906120ae565b90915550505b6001600160a01b0385165f908152600760205260408120805483929061167f9084906120ae565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516116cb91815260200190565b60405180910390a350600195945050505050565b6116e881611bd4565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061171b5761171b6120f5565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611772573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061179691906120da565b816001815181106117a9576117a96120f5565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b815291169063791ac947906117ee9085905f90869030904290600401612109565b5f604051808303815f87803b158015611805575f80fd5b505af1158015611817573d5f803e3d5ffd5b505050505050565b600b546001600160a01b0316811561183457505f5b61183d84611bd4565b600c5460405163f305d71960e01b8152306004820152602481018690525f6044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990859060c40160606040518083038185885af11580156118a8573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906118cd9190612178565b50505050505050565b600f805461ff001916610100179055305f908152600760205260408120549050600554811015801561190a5750600f5460ff165b1561197d57600654811061191d57506006545b8061192a6009600a611ff6565b81111561193a5761193a816116df565b47801561197a576001546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611978573d5f803e3d5ffd5b505b50505b50600f805461ff0019169055565b600f545f9060019060ff1680156119ba57506001600160a01b0385165f908152600a602052604090205460ff16155b80156119de57506001600160a01b0384165f908152600a602052604090205460ff16155b15610702576003548311156119f457505f610702565b6001600160a01b0384165f908152600e602052604090205460ff16158015611a3f57506004546001600160a01b0385165f90815260076020526040902054611a3d9085906120ae565b115b1561070257505f949350505050565b600f545f90819060ff161580611a7b57506001600160a01b0385165f9081526009602052604090205460ff165b80611a9d57506001600160a01b0384165f9081526009602052604090205460ff165b15611aa957505f610702565b6001600160a01b0385165f908152600e602052604090205460ff1615611b88575f5460025460ff600160b81b8304811692611aef92600160b01b909104909116906120ae565b611af991906120ae565b4310611b29575f54606490611b1890600160c01b900460ff1685612004565b611b22919061208f565b9050610702565b5f54600254611b4291600160b01b900460ff16906120ae565b4310611b61575f54606490611b1890600160a81b900460ff1685612004565b6002544310611b83575f54606490611b1890600160a01b900460ff1685612004565b610702565b6001600160a01b0384165f908152600e602052604090205460ff1615610702575f54606490611bc190600160c81b900460ff1685612004565b611bcb919061208f565b95945050505050565b305f908152600860209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d8452909152902054811115611c7357305f818152600860209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190205f199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b5f6020808352835180828501525f5b81811015611ca157858101830151858201604001528201611c85565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611c73575f80fd5b5f8060408385031215611ce6575f80fd5b8235611cf181611cc1565b946020939093013593505050565b5f805f60608486031215611d11575f80fd5b8335611d1c81611cc1565b92506020840135611d2c81611cc1565b929592945050506040919091013590565b803560ff81168114611d4d575f80fd5b919050565b80358015158114611d4d575f80fd5b5f8060408385031215611d72575f80fd5b611d7b83611d3d565b9150611d8960208401611d52565b90509250929050565b803561ffff81168114611d4d575f80fd5b5f8060408385031215611db4575f80fd5b611dbd83611d92565b9150611d8960208401611d92565b5f60208284031215611ddb575f80fd5b5035919050565b5f8060408385031215611df3575f80fd5b611dfc83611d3d565b9150611d8960208401611d3d565b5f805f60608486031215611e1c575f80fd5b8335611e2781611cc1565b9250611e3560208501611d52565b9150611e4360408501611d52565b90509250925092565b5f60208284031215611e5c575f80fd5b813561103181611cc1565b803563ffffffff81168114611d4d575f80fd5b5f805f8060808587031215611e8d575f80fd5b611e9685611e67565b9350611ea460208601611e67565b9250611eb260408601611e67565b9150611ec060608601611e67565b905092959194509250565b5f8060408385031215611edc575f80fd5b8235611ee781611cc1565b91506020830135611ef781611cc1565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611f5057815f1904821115611f3657611f36611f02565b80851615611f4357918102915b93841c9390800290611f1b565b509250929050565b5f82611f6657506001610640565b81611f7257505f610640565b8160018114611f885760028114611f9257611fae565b6001915050610640565b60ff841115611fa357611fa3611f02565b50506001821b610640565b5060208310610133831016604e8410600b8410161715611fd1575081810a610640565b611fdb8383611f16565b805f1904821115611fee57611fee611f02565b029392505050565b5f61103160ff841683611f58565b808202811582820484141761064057610640611f02565b60208082526010908201526f2a3930b234b733903737ba1037b832b760811b604082015260600190565b8181038181111561064057610640611f02565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b5f826120a957634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561064057610640611f02565b60ff818116838216019081111561064057610640611f02565b5f602082840312156120ea575f80fd5b815161103181611cc1565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156121575784516001600160a01b031683529383019391830191600101612132565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f6060848603121561218a575f80fd5b835192506020840151915060408401519050925092509256fea264697066735822122099fbfff93201ae0416a50aecae59aa36b3524630dab4a81c5327ae6d938751e464736f6c63430008150033

Deployed Bytecode Sourcemap

2727:12554:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5335:80;;;;;;;;;;-1:-1:-1;5407:5:0;;;;;;;;;;;;-1:-1:-1;;;5407:5:0;;;;5335:80;;;;;;;:::i;:::-;;;;;;;;5673:216;;;;;;;;;;-1:-1:-1;5673:216:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;5673:216:0;1023:187:1;5065:88:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;5065:88:0;1215:177:1;6130:371:0;;;;;;;;;;-1:-1:-1;6130:371:0;;;;;:::i;:::-;;:::i;11295:86::-;;;;;;;;;;-1:-1:-1;11336:5:0;11361:12;-1:-1:-1;;;11361:12:0;;;;11295:86;;;2030:4:1;2018:17;;;2000:36;;1988:2;1973:18;11295:86:0;1858:184:1;14282:563:0;;;;;;;;;;-1:-1:-1;14282:563:0;;;;;:::i;:::-;;:::i;:::-;;5159:80;;;;;;;;;;-1:-1:-1;2803:1:0;5159:80;;12352:462;;;;;;;;;;-1:-1:-1;12352:462:0;;;;;:::i;:::-;;:::i;14853:425::-;;;;;;;;;;-1:-1:-1;14853:425:0;;;;;:::i;:::-;;:::i;12158:90::-;;;;;;;;;;-1:-1:-1;12229:11:0;;12158:90;;11205:84;;;;;;;;;;-1:-1:-1;11245:5:0;11270:11;-1:-1:-1;;;11270:11:0;;;;11205:84;;12254:90;;;;;;;;;;-1:-1:-1;12325:11:0;;12254:90;;11389:183;;;;;;;;;;-1:-1:-1;11389:183:0;;;;;:::i;:::-;;:::i;10947:250::-;;;;;;;;;;-1:-1:-1;10947:250:0;;;;;:::i;:::-;;:::i;10709:110::-;;;;;;;;;;-1:-1:-1;10709:110:0;;;;;:::i;:::-;-1:-1:-1;;;;;10796:15:0;10772:4;10796:15;;;:7;:15;;;;;;;;;10709:110;5421:105;;;;;;;;;;-1:-1:-1;5421:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;5505:18:0;5487:7;5505:18;;;:9;:18;;;;;;;5421:105;2534:137;;;;;;;;;;;;;:::i;11582:101::-;;;;;;;;;;-1:-1:-1;11659:16:0;;-1:-1:-1;;;;;11659:16:0;11582:101;;;-1:-1:-1;;;;;4299:32:1;;;4281:51;;4269:2;4254:18;11582:101:0;4135:203:1;11691:254:0;;;;;;;;;;-1:-1:-1;11691:254:0;;;;;:::i;:::-;;:::i;7818:129::-;;;;;;;;;;;;;:::i;10826:114::-;;;;;;;;;;-1:-1:-1;10826:114:0;;;;;:::i;:::-;-1:-1:-1;;;;;10915:17:0;10891:4;10915:17;;;:9;:17;;;;;;;;;10826:114;2284:81;;;;;;;;;;-1:-1:-1;2322:7:0;2350:6;-1:-1:-1;;;;;2350:6:0;2284:81;;5245:84;;;;;;;;;;-1:-1:-1;5319:7:0;;;;;;;;;;;;-1:-1:-1;;;5319:7:0;;;;5245:84;;12822:436;;;;;;;;;;-1:-1:-1;12822:436:0;;;;;:::i;:::-;;:::i;5897:225::-;;;;;;;;;;-1:-1:-1;5897:225:0;;;;;:::i;:::-;;:::i;12054:96::-;;;;;;;;;;-1:-1:-1;12130:12:0;;12054:96;;5532:133;;;;;;;;;;-1:-1:-1;5532:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;5634:19:0;;;5616:7;5634:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;5532:133;6834:583;;;:::i;2371:157::-;;;;;;;;;;-1:-1:-1;2371:157:0;;;;;:::i;:::-;;:::i;11953:95::-;;;;;;;;;;-1:-1:-1;12024:16:0;;11953:95;;5673:216;5777:10;5748:4;5765:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;5765:32:0;;;;;;;;;;:41;;;5822:37;5748:4;;5765:32;;5822:37;;;;5800:6;1361:25:1;;1349:2;1334:18;;1215:177;5822:37:0;;;;;;;;-1:-1:-1;5877:4:0;5673:216;;;;;:::o;5065:88::-;5120:7;2863:13;2803:1;2863:2;:13;:::i;:::-;2851:26;;:8;:26;:::i;:::-;5131:19;;5065:88;:::o;6130:371::-;6230:4;6255:25;6273:6;6255:17;:25::i;:::-;6247:54;;;;-1:-1:-1;;;6247:54:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;6315:19:0;;;;;;:11;:19;;;;;;;;6335:10;6315:31;;;;;;;;-1:-1:-1;;6315:52:0;6312:124;;-1:-1:-1;;;;;6383:19:0;;;;;;:11;:19;;;;;;;;6403:10;6383:31;;;;;;;:41;;6418:6;;6383:19;:41;;6418:6;;6383:41;:::i;:::-;;;;-1:-1:-1;;6312:124:0;6453:40;6467:6;6475:9;6486:6;6453:13;:40::i;:::-;6446:47;6130:371;-1:-1:-1;;;;6130:371:0:o;14282:563::-;2221:6;;-1:-1:-1;;;;;2221:6:0;2207:10;:20;2199:57;;;;-1:-1:-1;;;2199:57:0;;;;;;;:::i;:::-;4276:10:::1;:17:::0;;-1:-1:-1;;4276:17:0::1;;;::::0;;14420:3:::2;4276:17:::1;14400:23:::0;::::2;;;14392:62;;;::::0;-1:-1:-1;;;14392:62:0;;8291:2:1;14392:62:0::2;::::0;::::2;8273:21:1::0;8330:2;8310:18;;;8303:30;8369:28;8349:18;;;8342:56;8415:18;;14392:62:0::2;8089:350:1::0;14392:62:0::2;14506:4;14465:20;5505:18:::0;;;:9;:18;;;;;;14534:3:::2;::::0;14488:43:::2;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;:49;;;;:::i;:::-;14465:72:::0;-1:-1:-1;14567:15:0::2;2803:1;14567:2;:15;:::i;:::-;14552:12;:30;14548:97;;;14599:34;14620:12;14599:20;:34::i;:::-;14659:7;14655:183;;;14705:21;14749:14:::0;14741:33:::2;;;::::0;-1:-1:-1;;;14741:33:0;;8868:2:1;14741:33:0::2;::::0;::::2;8850:21:1::0;8907:1;8887:18;;;8880:29;-1:-1:-1;;;8925:18:1;;;8918:36;8971:18;;14741:33:0::2;8666:329:1::0;14741:33:0::2;14789:16;::::0;:37:::2;::::0;-1:-1:-1;;;;;14789:16:0;;::::2;::::0;:37;::::2;;;::::0;14815:10;;14789:16:::2;:37:::0;:16;:37;14815:10;14789:16;:37;::::2;;;;;;;;;;;;;::::0;::::2;;;;;;14668:170;14655:183;-1:-1:-1::0;;4318:10:0::1;:18:::0;;-1:-1:-1;;4318:18:0::1;::::0;;-1:-1:-1;14282:563:0:o;12352:462::-;2221:6;;-1:-1:-1;;;;;2221:6:0;2207:10;:20;2199:57;;;;-1:-1:-1;;;2199:57:0;;;;;;;:::i;:::-;12458:16:::1;12517:4;12477:37;::::0;::::1;2863:13;2803:1;2863:2;:13;:::i;:::-;2851:26;::::0;:8:::1;:26;:::i;:::-;12477:37;;;;:::i;:::-;:44;;;;:::i;:::-;:48;::::0;12524:1:::1;12477:48;:::i;:::-;12458:67;;12556:12;;12544:8;:24;;12536:47;;;::::0;-1:-1:-1;;;12536:47:0;;9332:2:1;12536:47:0::1;::::0;::::1;9314:21:1::0;9371:2;9351:18;;;9344:30;-1:-1:-1;;;9390:18:1;;;9383:40;9440:18;;12536:47:0::1;9130:334:1::0;12536:47:0::1;12594:12;:23:::0;;;12628:20:::1;12686:4;12651:32;::::0;::::1;2863:13;2803:1;2863:2;:13;:::i;:::-;2851:26;::::0;:8:::1;:26;:::i;:::-;12651:32;;;;:::i;:::-;:39;;;;:::i;:::-;:43;::::0;12693:1:::1;12651:43;:::i;:::-;12628:66;;12729:16;;12713:12;:32;;12705:59;;;::::0;-1:-1:-1;;;12705:59:0;;9671:2:1;12705:59:0::1;::::0;::::1;9653:21:1::0;9710:2;9690:18;;;9683:30;-1:-1:-1;;;9729:18:1;;;9722:44;9783:18;;12705:59:0::1;9469:338:1::0;12705:59:0::1;12775:16;:31:::0;-1:-1:-1;;;12352:462:0:o;14853:425::-;2221:6;;-1:-1:-1;;;;;2221:6:0;2207:10;:20;2199:57;;;;-1:-1:-1;;;2199:57:0;;;;;;;:::i;:::-;14950:10:::1;14913:24;5505:18:::0;;;:9;:18;;;;;;14980:26;;::::1;;14972:54;;;::::0;-1:-1:-1;;;14972:54:0;;10014:2:1;14972:54:0::1;::::0;::::1;9996:21:1::0;10053:2;10033:18;;;10026:30;-1:-1:-1;;;10072:18:1;;;10065:45;10127:18;;14972:54:0::1;9812:339:1::0;14972:54:0::1;15042:10:::0;;15037:234:::1;;15080:10;15070:21;::::0;;;:9:::1;:21;::::0;;;;:31;;15095:6;;15070:21;:31:::1;::::0;15095:6;;15070:31:::1;:::i;:::-;::::0;;;-1:-1:-1;;15116:21:0::1;::::0;;;:9:::1;:21;::::0;;:31;;15141:6;;15116:21;:31:::1;::::0;15141:6;;15116:31:::1;:::i;:::-;::::0;;;-1:-1:-1;;15167:40:0::1;::::0;1361:25:1;;;15196:1:0::1;::::0;15176:10:::1;::::0;15167:40:::1;::::0;1349:2:1;1334:18;15167:40:0::1;;;;;;;15227:32;::::0;1361:25:1;;;15240:10:0::1;::::0;15227:32:::1;::::0;1349:2:1;1334:18;15227:32:0::1;;;;;;;15037:234;14902:376;14853:425:::0;:::o;11389:183::-;2221:6;;-1:-1:-1;;;;;2221:6:0;2207:10;:20;2199:57;;;;-1:-1:-1;;;2199:57:0;;;;;;;:::i;:::-;11481:2:::1;11467:10;11473:4:::0;11467:3;:10:::1;:::i;:::-;:16;;;;11459:47;;;::::0;-1:-1:-1;;;11459:47:0;;10511:2:1;11459:47:0::1;::::0;::::1;10493:21:1::0;10550:2;10530:18;;;10523:30;-1:-1:-1;;;10569:18:1;;;10562:48;10627:18;;11459:47:0::1;10309:342:1::0;11459:47:0::1;11517:11;:17:::0;;-1:-1:-1;;;;11545:19:0;-1:-1:-1;;;11517:17:0::1;::::0;;::::1;;-1:-1:-1::0;;;;11545:19:0;;-1:-1:-1;;;11545:19:0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;11389:183::o;10947:250::-;2221:6;;-1:-1:-1;;;;;2221:6:0;2207:10;:20;2199:57;;;;-1:-1:-1;;;2199:57:0;;;;;;;:::i;:::-;11044:8:::1;:18;;;;11056:6;11044:18;11040:72;;;-1:-1:-1::0;;;;;11075:13:0;::::1;;::::0;;;:5:::1;:13;::::0;;;;;::::1;;11074:14;11066:43;;;::::0;-1:-1:-1;;;11066:43:0;;10858:2:1;11066:43:0::1;::::0;::::1;10840:21:1::0;10897:2;10877:18;;;10870:30;-1:-1:-1;;;10916:18:1;;;10909:46;10972:18;;11066:43:0::1;10656:340:1::0;11066:43:0::1;-1:-1:-1::0;;;;;11122:17:0;;::::1;;::::0;;;:7:::1;:17;::::0;;;;;;;:26;;;::::1;;-1:-1:-1::0;;11122:26:0;;::::1;;::::0;;11159:9:::1;:19:::0;;;;;:30;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;10947:250::o;2534:137::-;2221:6;;-1:-1:-1;;;;;2221:6:0;2207:10;:20;2199:57;;;;-1:-1:-1;;;2199:57:0;;;;;;;:::i;:::-;2611:1:::1;2594:19:::0;;-1:-1:-1;;;;;;2594:19:0::1;::::0;;2630:32:::1;::::0;4281:51:1;;;2630:32:0::1;::::0;4269:2:1;4254:18;2630:32:0::1;;;;;;;2534:137::o:0;11691:254::-;2221:6;;-1:-1:-1;;;;;2221:6:0;2207:10;:20;2199:57;;;;-1:-1:-1;;;2199:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11771:16:0;::::1;;::::0;;;:5:::1;:16;::::0;;;;;::::1;;11770:17;11762:53;;;::::0;-1:-1:-1;;;11762:53:0;;11203:2:1;11762:53:0::1;::::0;::::1;11185:21:1::0;11242:2;11222:18;;;11215:30;11281:25;11261:18;;;11254:53;11324:18;;11762:53:0::1;11001:347:1::0;11762:53:0::1;11826:16;:37:::0;;-1:-1:-1;;;;;11826:37:0;;::::1;-1:-1:-1::0;;;;;;11826:37:0;;::::1;::::0;::::1;::::0;;:16:::1;11874:18:::0;;;:7:::1;:18;::::0;;;;;;;:25;;-1:-1:-1;;11874:25:0;;::::1;::::0;::::1;::::0;;;11910:9:::1;:20:::0;;;;;;:27;;;;::::1;;::::0;;11691:254::o;7818:129::-;2221:6;;-1:-1:-1;;;;;2221:6:0;2207:10;:20;2199:57;;;;-1:-1:-1;;;2199:57:0;;;;;;;:::i;:::-;7882:12:::1;::::0;::::1;;7881:13;7873:41;;;::::0;-1:-1:-1;;;7873:41:0;;11555:2:1;7873:41:0::1;::::0;::::1;11537:21:1::0;11594:2;11574:18;;;11567:30;-1:-1:-1;;;11613:18:1;;;11606:45;11668:18;;7873:41:0::1;11353:339:1::0;7873:41:0::1;7925:14;7999:12:::0;:19;;-1:-1:-1;;7999:19:0;8014:4;7999:19;;;8044:12;8029;:27;7955:109;7925:14:::1;7818:129::o:0;12822:436::-;2221:6;;-1:-1:-1;;;;;2221:6:0;2207:10;:20;2199:57;;;;-1:-1:-1;;;2199:57:0;;;;;;;:::i;:::-;12958:36:::1;::::0;;::::1;::::0;:23;::::1;2863:13;2803:1;2863:2;:13;:::i;:::-;2851:26;::::0;:8:::1;:26;:::i;:::-;12958:23;;;;:::i;:::-;:36;;;;:::i;:::-;12944:11;:50:::0;13019:36:::1;::::0;;::::1;::::0;:23;::::1;2863:13;2803:1;2863:2;:13;:::i;:::-;2851:26;::::0;:8:::1;:26;:::i;:::-;13019:23;;;;:::i;:::-;:36;;;;:::i;:::-;13005:11;:50:::0;;;13087:11:::1;::::0;-1:-1:-1;13074:24:0::1;13066:50;;;::::0;-1:-1:-1;;;13066:50:0;;11899:2:1;13066:50:0::1;::::0;::::1;11881:21:1::0;11938:2;11918:18;;;11911:30;-1:-1:-1;;;11957:18:1;;;11950:43;12010:18;;13066:50:0::1;11697:337:1::0;13066:50:0::1;13162:6;2863:13;2803:1;2863:2;:13;:::i;:::-;2851:26;::::0;:8:::1;:26;:::i;:::-;13147:21;;;;:::i;:::-;13135:11;;:33;13127:57;;;::::0;-1:-1:-1;;;13127:57:0;;12241:2:1;13127:57:0::1;::::0;::::1;12223:21:1::0;12280:2;12260:18;;;12253:30;-1:-1:-1;;;12299:18:1;;;12292:41;12350:18;;13127:57:0::1;12039:335:1::0;13127:57:0::1;13230:3;2863:13;2803:1;2863:2;:13;:::i;:::-;2851:26;::::0;:8:::1;:26;:::i;:::-;13215:18;;;;:::i;:::-;13203:11;;:30;13195:55;;;::::0;-1:-1:-1;;;13195:55:0;;12581:2:1;13195:55:0::1;::::0;::::1;12563:21:1::0;12620:2;12600:18;;;12593:30;-1:-1:-1;;;12639:18:1;;;12632:42;12691:18;;13195:55:0::1;12379:336:1::0;13195:55:0::1;12822:436:::0;;;;:::o;5897:225::-;5977:4;6002:29;6020:10;6002:17;:29::i;:::-;5994:58;;;;-1:-1:-1;;;5994:58:0;;;;;;;:::i;:::-;6070:44;6084:10;6096:9;6107:6;6070:13;:44::i;:::-;6063:51;5897:225;-1:-1:-1;;;5897:225:0:o;6834:583::-;2221:6;;-1:-1:-1;;;;;2221:6:0;2207:10;:20;2199:57;;;;-1:-1:-1;;;2199:57:0;;;;;;;:::i;:::-;4276:10:::1;:17:::0;;-1:-1:-1;;4276:17:0::1;;;::::0;;6916:10:::2;::::0;-1:-1:-1;;;;;6916:10:0::2;:24:::0;6908:46:::2;;;::::0;-1:-1:-1;;;6908:46:0;;12922:2:1;6908:46:0::2;::::0;::::2;12904:21:1::0;12961:1;12941:18;;;12934:29;-1:-1:-1;;;12979:18:1;;;12972:39;13028:18;;6908:46:0::2;12720:332:1::0;6908:46:0::2;6974:12;::::0;::::2;;6973:13;6965:41;;;::::0;-1:-1:-1;;;6965:41:0;;11555:2:1;6965:41:0::2;::::0;::::2;11537:21:1::0;11594:2;11574:18;;;11567:30;-1:-1:-1;;;11613:18:1;;;11606:45;11668:18;;6965:41:0::2;11353:339:1::0;6965:41:0::2;7037:1;7025:9;:13;:40;;;;7064:1;7042:21;:23;7025:40;7017:82;;;::::0;-1:-1:-1;;;7017:82:0;;13259:2:1;7017:82:0::2;::::0;::::2;13241:21:1::0;13298:2;13278:18;;;13271:30;13337:31;13317:18;;;13310:59;13386:18;;7017:82:0::2;13057:353:1::0;7017:82:0::2;7136:4;7143:1;7118:24:::0;;;:9:::2;:24;::::0;;;;;7110:60:::2;;;::::0;-1:-1:-1;;;7110:60:0;;13617:2:1;7110:60:0::2;::::0;::::2;13599:21:1::0;13656:2;13636:18;;;13629:30;-1:-1:-1;;;13675:18:1;;;13668:51;13736:18;;7110:60:0::2;13415:345:1::0;7110:60:0::2;7212:18;;;;;;;;;-1:-1:-1::0;;;;;7212:18:0::2;-1:-1:-1::0;;;;;7212:26:0::2;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7194:58:0::2;;7261:4;7268:18;;;;;;;;;-1:-1:-1::0;;;;;7268:18:0::2;-1:-1:-1::0;;;;;7268:23:0::2;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7194:100;::::0;-1:-1:-1;;;;;;7194:100:0::2;::::0;;;;;;-1:-1:-1;;;;;14251:15:1;;;7194:100:0::2;::::0;::::2;14233:34:1::0;14303:15;;14283:18;;;14276:43;14168:18;;7194:100:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7181:10;:113:::0;;-1:-1:-1;;;;;;7181:113:0::2;-1:-1:-1::0;;;;;7181:113:0;;;::::2;::::0;;;::::2;::::0;;7337:4:::2;-1:-1:-1::0;7319:24:0;;;:9:::2;:24;::::0;;;;;7305:69:::2;::::0;7345:21:::2;::::0;7305:13:::2;:69::i;:::-;7391:10;::::0;-1:-1:-1;;;;;7391:10:0::2;7385:17;::::0;;;:5:::2;:17;::::0;;;;:24;;-1:-1:-1;;7385:24:0::2;7405:4;7385:24;::::0;;4318:10:::1;:18:::0;;-1:-1:-1;;4318:18:0::1;::::0;;6834:583::o;2371:157::-;2221:6;;-1:-1:-1;;;;;2221:6:0;2207:10;:20;2199:57;;;;-1:-1:-1;;;2199:57:0;;;;;;;:::i;:::-;2455:6:::1;:17:::0;;-1:-1:-1;;;;;;2455:17:0::1;-1:-1:-1::0;;;;;2455:17:0;::::1;::::0;;::::1;::::0;;;2489:30:::1;::::0;4281:51:1;;;2489:30:0::1;::::0;4269:2:1;4254:18;2489:30:0::1;;;;;;;2371:157:::0;:::o;9581:277::-;9702:12;;9646:4;;;;9702:12;;9697:124;;;-1:-1:-1;9733:4:0;9697:124;;;-1:-1:-1;;;;;9760:15:0;;;;;;:7;:15;;;;;;;;:36;;;;-1:-1:-1;;;;;;9779:17:0;;;;;;:9;:17;;;;;;;;9760:36;9756:65;;;-1:-1:-1;9814:4:0;9839:11;9581:277;-1:-1:-1;;9581:277:0:o;8072:934::-;8164:4;-1:-1:-1;;;;;8189:20:0;;8181:62;;;;-1:-1:-1;;;8181:62:0;;14748:2:1;8181:62:0;;;14730:21:1;14787:2;14767:18;;;14760:30;14826:31;14806:18;;;14799:59;14875:18;;8181:62:0;14546:353:1;8181:62:0;8259:12;;;;8254:89;;-1:-1:-1;;;;;8283:15:0;;;;;;:7;:15;;;;;;;;:36;;;;-1:-1:-1;;;;;;8302:17:0;;;;;;:9;:17;;;;;;;;8283:36;8275:65;;;;-1:-1:-1;;;8275:65:0;;;;;;;:::i;:::-;8359:10;;;;;;;8358:11;:31;;;;-1:-1:-1;;;;;;8373:16:0;;;;;;:5;:16;;;;;;;;8358:31;8353:64;;;8394:20;:18;:20::i;:::-;-1:-1:-1;;;;;8442:23:0;;8460:4;8442:23;;;;:53;;-1:-1:-1;;;;;;8469:26:0;;8490:4;8469:26;;8442:53;:73;;;;-1:-1:-1;8509:6:0;;-1:-1:-1;;;;;8499:16:0;;;8509:6;;8499:16;;8442:73;8437:179;;;8542:39;8555:6;8563:9;8574:6;8542:12;:39::i;:::-;8534:69;;;;-1:-1:-1;;;8534:69:0;;15106:2:1;8534:69:0;;;15088:21:1;15145:2;15125:18;;;15118:30;-1:-1:-1;;;15164:18:1;;;15157:47;15221:18;;8534:69:0;14904:341:1;8534:69:0;8626:18;8647:40;8661:6;8669:9;8680:6;8647:13;:40::i;:::-;8626:61;-1:-1:-1;8698:23:0;8724:19;8626:61;8724:6;:19;:::i;:::-;-1:-1:-1;;;;;8774:17:0;;;;;;:9;:17;;;;;;8698:45;;-1:-1:-1;8774:26:0;;8794:6;;8774:26;:::i;:::-;-1:-1:-1;;;;;8754:17:0;;;;;;:9;:17;;;;;:46;8816:14;;8811:65;;8853:4;8835:24;;;;:9;:24;;;;;:38;;8863:10;;8835:24;:38;;8863:10;;8835:38;:::i;:::-;;;;-1:-1:-1;;8811:65:0;-1:-1:-1;;;;;8886:20:0;;;;;;:9;:20;;;;;:39;;8910:15;;8886:20;:39;;8910:15;;8886:39;:::i;:::-;;;;;;;;8958:9;-1:-1:-1;;;;;8941:35:0;8950:6;-1:-1:-1;;;;;8941:35:0;;8969:6;8941:35;;;;1361:25:1;;1349:2;1334:18;;1215:177;8941:35:0;;;;;;;;-1:-1:-1;8994:4:0;;8072:934;-1:-1:-1;;;;;8072:934:0:o;13910:364::-;13977:24;13992:8;13977:14;:24::i;:::-;14040:16;;;14054:1;14040:16;;;;;;;;14012:25;;14040:16;;;;;;;;;;-1:-1:-1;14040:16:0;14012:44;;14089:4;14067:8;14076:1;14067:11;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14067:27:0;;;:11;;;;;;;;;;:27;;;;14110:18;;:25;;;-1:-1:-1;;;14110:25:0;;;;:18;;;;;:23;;:25;;;;;14067:11;;14110:25;;;;;:18;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14096:8;14105:1;14096:11;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14096:39:0;;;:11;;;;;;;;;:39;14146:18;;:120;;-1:-1:-1;;;14146:120:0;;:18;;;:69;;:120;;14216:8;;14146:18;;14227:8;;14244:4;;14250:15;;14146:120;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13966:308;13910:364;:::o;7425:385::-;7555:8;;-1:-1:-1;;;;;7555:8:0;7574:50;;;;-1:-1:-1;7619:1:0;7574:50;7634:28;7649:12;7634:14;:28::i;:::-;7673:18;;:129;;-1:-1:-1;;;7673:129:0;;7740:4;7673:129;;;16840:34:1;16890:18;;;16883:34;;;7673:18:0;16933::1;;;16926:34;;;16976:18;;;16969:34;-1:-1:-1;;;;;17040:15:1;;;17019:19;;;17012:44;7785:15:0;17072:19:1;;;17065:35;7673:18:0;;;;:34;;7715:13;;16774:19:1;;7673:129:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7517:293;7425:385;;;:::o;13266:636::-;4276:10;:17;;-1:-1:-1;;4276:17:0;;;;;13375:4:::1;-1:-1:-1::0;5505:18:0;;;:9;:18;;;;;;13327:54:::1;;13422:11;;13399:19;:34;;:50;;;;-1:-1:-1::0;13437:12:0::1;::::0;::::1;;13399:50;13394:501;;;13495:11;;13472:19;:34;13467:80;;-1:-1:-1::0;13533:11:0::1;::::0;13467:80:::1;13585:19:::0;13639:13:::1;2803:1;13639:2;:13;:::i;:::-;13623;:29;13619:106;;;13674:35;13695:13;13674:20;:35::i;:::-;13769:21;13808:23:::0;;13805:79:::1;;13835:16;::::0;:46:::1;::::0;-1:-1:-1;;;;;13835:16:0;;::::1;::::0;:46;::::1;;;::::0;13861:19;;13835:16:::1;:46:::0;:16;:46;13861:19;13835:16;:46;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;13805:79;13452:443;;13394:501;-1:-1:-1::0;4318:10:0;:18;;-1:-1:-1;;4318:18:0;;;13266:636::o;9014:559::-;9179:12;;9118:4;;9159;;9179:12;;:34;;;;-1:-1:-1;;;;;;9196:17:0;;;;;;:9;:17;;;;;;;;9195:18;9179:34;:59;;;;-1:-1:-1;;;;;;9218:20:0;;;;;;:9;:20;;;;;;;;9217:21;9179:59;9174:358;;;9278:12;;9261:14;:29;9256:265;;;-1:-1:-1;9332:5:0;9256:265;;;-1:-1:-1;;;;;9379:16:0;;;;;;:5;:16;;;;;;;;9378:17;:79;;;;-1:-1:-1;9440:16:0;;-1:-1:-1;;;;;9400:20:0;;;;;;:9;:20;;;;;;:37;;9423:14;;9400:37;:::i;:::-;:56;9378:79;9373:148;;;-1:-1:-1;9499:5:0;9549:16;9014:559;-1:-1:-1;;;;9014:559:0:o;9866:835::-;10017:12;;9963:7;;;;10017:12;;10016:13;;:32;;-1:-1:-1;;;;;;10033:15:0;;;;;;:7;:15;;;;;;;;10016:32;:54;;;-1:-1:-1;;;;;;10052:18:0;;;;;;:7;:18;;;;;;;;10016:54;10011:656;;;-1:-1:-1;10101:1:0;10011:656;;;-1:-1:-1;;;;;10126:13:0;;;;;;:5;:13;;;;;;;;10121:546;;;10213:16;;10179:12;;10213:16;-1:-1:-1;;;10213:16:0;;;;;10179:31;;-1:-1:-1;;;10194:16:0;;;;;;;10179:31;:::i;:::-;:50;;;;:::i;:::-;10163:12;:66;10158:400;;10272:11;;10286:3;;10263:20;;-1:-1:-1;;;10272:11:0;;;;10263:6;:20;:::i;:::-;:26;;;;:::i;:::-;10251:38;;10121:546;;10158:400;10348:16;;10333:12;;:31;;-1:-1:-1;;;10348:16:0;;;;;10333:31;:::i;:::-;10317:12;:47;10312:246;;10407:13;;10423:3;;10398:22;;-1:-1:-1;;;10407:13:0;;;;10398:6;:22;:::i;10312:246::-;10469:12;;10453;:28;10448:110;;10523:13;;10539:3;;10514:22;;-1:-1:-1;;;10523:13:0;;;;10514:6;:22;:::i;10448:110::-;10121:546;;;-1:-1:-1;;;;;10580:16:0;;;;;;:5;:16;;;;;;;;10575:92;;;10636:12;;10651:3;;10627:21;;-1:-1:-1;;;10636:12:0;;;;10627:6;:21;:::i;:::-;:27;;;;:::i;:::-;10615:39;9866:835;-1:-1:-1;;;;;9866:835:0:o;6509:317::-;6600:4;6580:26;;;;:11;:26;;;;;;;;3947:42;6580:46;;;;;;;;:61;-1:-1:-1;6575:244:0;;;6679:4;6659:26;;;;:11;:26;;;;;;;;3947:42;6659:46;;;;;;;;;;-1:-1:-1;;6659:66:0;;;;6745:62;;1361:25:1;;;3947:42:0;;6679:4;6745:62;;1334:18:1;6745:62:0;;;;;;;6575:244;6509:317;:::o;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;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:156::-;2113:20;;2173:4;2162:16;;2152:27;;2142:55;;2193:1;2190;2183:12;2142:55;2047:156;;;:::o;2208:160::-;2273:20;;2329:13;;2322:21;2312:32;;2302:60;;2358:1;2355;2348:12;2373:250;2436:6;2444;2497:2;2485:9;2476:7;2472:23;2468:32;2465:52;;;2513:1;2510;2503:12;2465:52;2536:27;2553:9;2536:27;:::i;:::-;2526:37;;2582:35;2613:2;2602:9;2598:18;2582:35;:::i;:::-;2572:45;;2373:250;;;;;:::o;2628:159::-;2695:20;;2755:6;2744:18;;2734:29;;2724:57;;2777:1;2774;2767:12;2792:256;2858:6;2866;2919:2;2907:9;2898:7;2894:23;2890:32;2887:52;;;2935:1;2932;2925:12;2887:52;2958:28;2976:9;2958:28;:::i;:::-;2948:38;;3005:37;3038:2;3027:9;3023:18;3005:37;:::i;3053:180::-;3112:6;3165:2;3153:9;3144:7;3140:23;3136:32;3133:52;;;3181:1;3178;3171:12;3133:52;-1:-1:-1;3204:23:1;;3053:180;-1:-1:-1;3053:180:1:o;3238:252::-;3302:6;3310;3363:2;3351:9;3342:7;3338:23;3334:32;3331:52;;;3379:1;3376;3369:12;3331:52;3402:27;3419:9;3402:27;:::i;:::-;3392:37;;3448:36;3480:2;3469:9;3465:18;3448:36;:::i;3495:383::-;3566:6;3574;3582;3635:2;3623:9;3614:7;3610:23;3606:32;3603:52;;;3651:1;3648;3641:12;3603:52;3690:9;3677:23;3709:31;3734:5;3709:31;:::i;:::-;3759:5;-1:-1:-1;3783:35:1;3814:2;3799:18;;3783:35;:::i;:::-;3773:45;;3837:35;3868:2;3857:9;3853:18;3837:35;:::i;:::-;3827:45;;3495:383;;;;;:::o;3883:247::-;3942:6;3995:2;3983:9;3974:7;3970:23;3966:32;3963:52;;;4011:1;4008;4001:12;3963:52;4050:9;4037:23;4069:31;4094:5;4069:31;:::i;4343:163::-;4410:20;;4470:10;4459:22;;4449:33;;4439:61;;4496:1;4493;4486:12;4511:401;4593:6;4601;4609;4617;4670:3;4658:9;4649:7;4645:23;4641:33;4638:53;;;4687:1;4684;4677:12;4638:53;4710:28;4728:9;4710:28;:::i;:::-;4700:38;;4757:37;4790:2;4779:9;4775:18;4757:37;:::i;:::-;4747:47;;4813:37;4846:2;4835:9;4831:18;4813:37;:::i;:::-;4803:47;;4869:37;4902:2;4891:9;4887:18;4869:37;:::i;:::-;4859:47;;4511:401;;;;;;;:::o;4917:388::-;4985:6;4993;5046:2;5034:9;5025:7;5021:23;5017:32;5014:52;;;5062:1;5059;5052:12;5014:52;5101:9;5088:23;5120:31;5145:5;5120:31;:::i;:::-;5170:5;-1:-1:-1;5227:2:1;5212:18;;5199:32;5240:33;5199:32;5240:33;:::i;:::-;5292:7;5282:17;;;4917:388;;;;;:::o;5570:127::-;5631:10;5626:3;5622:20;5619:1;5612:31;5662:4;5659:1;5652:15;5686:4;5683:1;5676:15;5702:422;5791:1;5834:5;5791:1;5848:270;5869:7;5859:8;5856:21;5848:270;;;5928:4;5924:1;5920:6;5916:17;5910:4;5907:27;5904:53;;;5937:18;;:::i;:::-;5987:7;5977:8;5973:22;5970:55;;;6007:16;;;;5970:55;6086:22;;;;6046:15;;;;5848:270;;;5852:3;5702:422;;;;;:::o;6129:806::-;6178:5;6208:8;6198:80;;-1:-1:-1;6249:1:1;6263:5;;6198:80;6297:4;6287:76;;-1:-1:-1;6334:1:1;6348:5;;6287:76;6379:4;6397:1;6392:59;;;;6465:1;6460:130;;;;6372:218;;6392:59;6422:1;6413:10;;6436:5;;;6460:130;6497:3;6487:8;6484:17;6481:43;;;6504:18;;:::i;:::-;-1:-1:-1;;6560:1:1;6546:16;;6575:5;;6372:218;;6674:2;6664:8;6661:16;6655:3;6649:4;6646:13;6642:36;6636:2;6626:8;6623:16;6618:2;6612:4;6609:12;6605:35;6602:77;6599:159;;;-1:-1:-1;6711:19:1;;;6743:5;;6599:159;6790:34;6815:8;6809:4;6790:34;:::i;:::-;6860:6;6856:1;6852:6;6848:19;6839:7;6836:32;6833:58;;;6871:18;;:::i;:::-;6909:20;;6129:806;-1:-1:-1;;;6129:806:1:o;6940:140::-;6998:5;7027:47;7068:4;7058:8;7054:19;7048:4;7027:47;:::i;7085:168::-;7158:9;;;7189;;7206:15;;;7200:22;;7186:37;7176:71;;7227:18;;:::i;7258:340::-;7460:2;7442:21;;;7499:2;7479:18;;;7472:30;-1:-1:-1;;;7533:2:1;7518:18;;7511:46;7589:2;7574:18;;7258:340::o;7603:128::-;7670:9;;;7691:11;;;7688:37;;;7705:18;;:::i;7736:348::-;7938:2;7920:21;;;7977:2;7957:18;;;7950:30;8016:26;8011:2;7996:18;;7989:54;8075:2;8060:18;;7736:348::o;8444:217::-;8484:1;8510;8500:132;;8554:10;8549:3;8545:20;8542:1;8535:31;8589:4;8586:1;8579:15;8617:4;8614:1;8607:15;8500:132;-1:-1:-1;8646:9:1;;8444:217::o;9000:125::-;9065:9;;;9086:10;;;9083:36;;;9099:18;;:::i;10156:148::-;10244:4;10223:12;;;10237;;;10219:31;;10262:13;;10259:39;;;10278:18;;:::i;13765:251::-;13835:6;13888:2;13876:9;13867:7;13863:23;13859:32;13856:52;;;13904:1;13901;13894:12;13856:52;13936:9;13930:16;13955:31;13980:5;13955:31;:::i;15382:127::-;15443:10;15438:3;15434:20;15431:1;15424:31;15474:4;15471:1;15464:15;15498:4;15495:1;15488:15;15514:980;15776:4;15824:3;15813:9;15809:19;15855:6;15844:9;15837:25;15881:2;15919:6;15914:2;15903:9;15899:18;15892:34;15962:3;15957:2;15946:9;15942:18;15935:31;15986:6;16021;16015:13;16052:6;16044;16037:22;16090:3;16079:9;16075:19;16068:26;;16129:2;16121:6;16117:15;16103:29;;16150:1;16160:195;16174:6;16171:1;16168:13;16160:195;;;16239:13;;-1:-1:-1;;;;;16235:39:1;16223:52;;16330:15;;;;16295:12;;;;16271:1;16189:9;16160:195;;;-1:-1:-1;;;;;;;16411:32:1;;;;16406:2;16391:18;;16384:60;-1:-1:-1;;;16475:3:1;16460:19;16453:35;16372:3;15514:980;-1:-1:-1;;;15514:980:1:o;17111:306::-;17199:6;17207;17215;17268:2;17256:9;17247:7;17243:23;17239:32;17236:52;;;17284:1;17281;17274:12;17236:52;17313:9;17307:16;17297:26;;17363:2;17352:9;17348:18;17342:25;17332:35;;17407:2;17396:9;17392:18;17386:25;17376:35;;17111:306;;;;;:::o

Swarm Source

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