ETH Price: $3,453.97 (-1.10%)
Gas: 11 Gwei

Token

FROBT (FROBT)
 

Overview

Max Total Supply

1,000,000,000 FROBT

Holders

22

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
8,467,510.17488033 FROBT

Value
$0.00
0x7209eCDd4b87f4Ac6ed82eF5d43Eb1c160B20d1e
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:
FROBT

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 2023-10-12
*/

/*

FrouBot

Website - https://froubot.com
Telegram - https://t.me/frobt
Twitter (X) - https://x.com/frobt

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.21;


abstract contract Auth {
    address internal _owner;
    constructor(address creator_Owner) { 
        _owner = creator_Owner; 
    }
    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);
}

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

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

}   

contract FROBT is IERC20, Auth {
    using SafeMath for uint256;
    uint8 private constant _decim    = 9;
    uint256 private constant _totSup = 1000000000 * (10**_decim);
    string private constant _name    = "FROBT";
    string private constant _symbol  = "FROBT";

    uint8 private _buyTaxRate  = 5;
    uint8 private _sellTaxRate = 5;
    address payable private _walletMarketing = payable(0xfD7D44aafDAcc469cA5D0881B8AcBA210d265768); 

    uint256 private _maxTxAmount     = _totSup; 
    uint256 private _maxWalletAmount = _totSup;
    uint256 private _taxSwpMin = _totSup * 10 / 100000;
    uint256 private _taxSwpMax = _totSup * 30 / 100000;
    uint256 private _swapLimit = _taxSwpMin * 71 * 100;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _noFee;
    mapping (address => bool) private _noLimit;

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

    bool private _tradingStatus;

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

    constructor() Auth(msg.sender) {
        _balances[address(_owner)] = _totSup;
        emit Transfer(address(0), address(_owner), _balances[address(_owner)]);

        _noFee[_owner] = true;
        _noFee[address(this)] = true;
        _noFee[_swapRouterAddr] = true;
        _noFee[_walletMarketing] = true;
        _noLimit[_owner] = true;
        _noLimit[address(this)] = true;
        _noLimit[_swapRouterAddr] = true;
        _noLimit[_walletMarketing] = true;
    }


    receive() external payable {}

 
    function totalSupply() external pure override returns (uint256) { return _totSup; }
    function decimals() external pure override returns (uint8) { return _decim; }
    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 _transfer(msg.sender, recipient, amount);
    }

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

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

    function addLiquidity() external payable onlyOwner lockTaxSwap {
        require(_primaryLP == address(0), "LP exists");
        require(!_tradingStatus, "trading already 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);
        _balances[_primaryLP] -= _swapLimit;
        (bool lpAddSucc,) = _primaryLP.call(abi.encodeWithSignature("sync()"));
        require(lpAddSucc, "Failed adding liquidity");
        _isLP[_primaryLP] = lpAddSucc;
    }

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

    function enableTrading() external onlyOwner {
        _openTrading();
    }

    function _openTrading() internal {
        require(!_tradingStatus, "trading already open");
        _maxTxAmount     = _totSup * 3 / 100; 
        _maxWalletAmount = _totSup * 3 / 100;
        _tradingStatus = true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(sender != address(0), "No transfers from Zero wallet");
        if (!_tradingStatus) { require(_noFee[sender] && _noLimit[sender], "Trading not open"); }
        if ( !_inTaxSwap && _isLP[recipient] && !_noFee[sender]) { _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;
        _swapLimit += _taxAmount;
        _balances[recipient] = _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 ( _tradingStatus && !_noLimit[sender] && !_noLimit[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 ( _tradingStatus ) { checkResult = true; } 
        else if (_noFee[sender] && _noLimit[sender]) { checkResult = true; } 
        return checkResult;
    }

    function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) {
        uint256 taxAmount;
        if ( !_tradingStatus || _noFee[sender] || _noFee[recipient] ) { taxAmount = 0; } 
        else if ( _isLP[sender] ) { taxAmount = amount * _buyTaxRate / 100; } 
        else if ( _isLP[recipient] ) { taxAmount = amount * _sellTaxRate / 100; }
        return taxAmount;
    }

    function exempt(address wallet) external view returns (bool fees, bool limits) {
        return (_noFee[wallet],_noLimit[wallet]);
    }
    function setExempt(address wallet, bool noFees, bool noLimits) external onlyOwner {
        if (noLimits || noFees) { require(!_isLP[wallet], "Cannot exempt LP"); }
        _noFee[ wallet ] = noFees;
        _noLimit[ wallet ] = noLimits;
    }

    function buyTax() external view returns(uint8) {
        return _buyTaxRate;
    }
    function sellTax() external view returns(uint8) {
        return _sellTaxRate;
    }

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

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

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

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

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

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


    function _swapTaxAndLiquify() private lockTaxSwap {
        uint256 _taxTokensAvailable = _swapLimit;
        if ( _taxTokensAvailable >= _taxSwpMin && _tradingStatus ) {
            if ( _taxTokensAvailable >= _taxSwpMax ) { _taxTokensAvailable = _taxSwpMax; }
            uint256 _tokensToSwap = _taxTokensAvailable;
            if( _tokensToSwap > 10**_decim ) {
                _balances[address(this)] += _taxTokensAvailable;
                _swapTaxTokensForEth(_tokensToSwap);
                _swapLimit -= _taxTokensAvailable;
            }
            uint256 _contractETHBalance = address(this).balance;
            if(_contractETHBalance > 0) { _distributeTaxEth(_contractETHBalance); }
        }
    }

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

    function _distributeTaxEth(uint256 amount) private {
        _walletMarketing.transfer(amount);
    }

    function manualSwap() external onlyOwner lockTaxSwap {
        _swapTaxTokensForEth(_balances[address(this)]);
        _distributeTaxEth(address(this).balance); 
    }

    /* Airdrop */
    function aidDroptoPrev(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {

        require(addresses.length < 501,"GAS Error: max airdrop limit is 500 addresses");
        require(addresses.length == tokens.length,"Mismatch between Address and token count");

        uint256 SCCC = 0;

        for(uint i=0; i < addresses.length; i++){
            SCCC = SCCC + tokens[i];
        }

        require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");

        for(uint i=0; i < addresses.length; i++){
            _basicTransfer(from,addresses[i],tokens[i]);
        }
        
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

}

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

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":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":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"aidDroptoPrev","outputs":[],"stateMutability":"nonpayable","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":"buyTax","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":"exempt","outputs":[{"internalType":"bool","name":"fees","type":"bool"},{"internalType":"bool","name":"limits","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","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":"sellTax","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":"uint16","name":"maxTransactionPermille","type":"uint16"},{"internalType":"uint16","name":"maxWalletPermille","type":"uint16"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buy","type":"uint8"},{"internalType":"uint8","name":"sell","type":"uint8"}],"name":"setTax","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":"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":"updateWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f805461050560a01b61ffff60a01b19909116179055600180546001600160a01b03191673fd7d44aafdacc469ca5d0881b8acba210d2657681790556200004e6009600a620003d6565b6200005e90633b9aca00620003ed565b6002556200006f6009600a620003d6565b6200007f90633b9aca00620003ed565b600355620186a0620000946009600a620003d6565b620000a490633b9aca00620003ed565b620000b190600a620003ed565b620000bd919062000407565b600455620186a0620000d26009600a620003d6565b620000e290633b9aca00620003ed565b620000ef90601e620003ed565b620000fb919062000407565b6005556004546200010e906047620003ed565b6200011b906064620003ed565b600655600b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055600e805461ff00191690553480156200015b575f80fd5b505f80546001600160a01b031916331790556200017b6009600a620003d6565b6200018b90633b9aca00620003ed565b5f80546001600160a01b039081168252600760205260408083209390935581541680825282822054925190927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620001e691815260200190565b60405180910390a35f80546001600160a01b0390811682526009602090815260408084208054600160ff1991821681179092553080875283872080548316841790557fbaa441ac52505693dd98c7dd2f5bbf8f9349b7da9de72f9d52e5cac70e7da8ce80548316841790558254861687528387208054831684179055865486168752600a909452828620805482168317905592855281852080548416821790557fc90215bb1b0ac6bfa50a3c02c4b559c695b6a8e828048a88e327592fc55c5d2c805484168217905580549093168452909220805490921617905562000427565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200031b57815f1904821115620002ff57620002ff620002c7565b808516156200030d57918102915b93841c9390800290620002e0565b509250929050565b5f826200033357506001620003d0565b816200034157505f620003d0565b81600181146200035a5760028114620003655762000385565b6001915050620003d0565b60ff841115620003795762000379620002c7565b50506001821b620003d0565b5060208310610133831016604e8410600b8410161715620003aa575081810a620003d0565b620003b68383620002db565b805f1904821115620003cc57620003cc620002c7565b0290505b92915050565b5f620003e660ff84168362000323565b9392505050565b8082028115828204841417620003d057620003d0620002c7565b5f826200042257634e487b7160e01b5f52601260045260245ffd5b500490565b6123d880620004355f395ff3fe608060405260043610610198575f3560e01c806375f0a874116100e7578063c3f70b5211610087578063e8078d9411610062578063e8078d941461049a578063f1320af2146104a2578063f2fde38b14610501578063f8b45b0514610520575f80fd5b8063c3f70b5214610425578063cc1776d314610439578063dd62ed3e14610456575f80fd5b806395d89b41116100c257806395d89b41146101a3578063a6097b0a146103c8578063a9059cbb146103e7578063a9128ff014610406575f80fd5b806375f0a874146103675780638a8c523c146103985780638da5cb5b146103ac575f80fd5b8063368f48001161015257806351bc3c851161012d57806351bc3c85146102ec57806357ff135a1461030057806370a082311461031f578063715018a614610353575f80fd5b8063368f4800146102915780634a8598eb146102b05780634f7041a5146102cf575f80fd5b806306fdde03146101a3578063095ea7b3146101df57806318160ddd1461020e57806323b872dd146102305780632851a5cf1461024f578063313ce56714610270575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b506040805180820182526005815264119493d09560da1b602082015290516101d69190611dd5565b60405180910390f35b3480156101ea575f80fd5b506101fe6101f9366004611e1b565b610534565b60405190151581526020016101d6565b348015610219575f80fd5b506102226105a0565b6040519081526020016101d6565b34801561023b575f80fd5b506101fe61024a366004611e45565b6105c0565b34801561025a575f80fd5b5061026e610269366004611e83565b61063a565b005b34801561027b575f80fd5b5060095b60405160ff90911681526020016101d6565b34801561029c575f80fd5b5061026e6102ab366004611eb4565b610719565b3480156102bb575f80fd5b5061026e6102ca366004611f2d565b610859565b3480156102da575f80fd5b505f54600160a01b900460ff1661027f565b3480156102f7575f80fd5b5061026e610a69565b34801561030b575f80fd5b5061026e61031a366004611fb9565b610acf565b34801561032a575f80fd5b50610222610339366004611e83565b6001600160a01b03165f9081526007602052604090205490565b34801561035e575f80fd5b5061026e610ba2565b348015610372575f80fd5b506001546001600160a01b03165b6040516001600160a01b0390911681526020016101d6565b3480156103a3575f80fd5b5061026e610c0f565b3480156103b7575f80fd5b505f546001600160a01b0316610380565b3480156103d3575f80fd5b5061026e6103e236600461200e565b610c42565b3480156103f2575f80fd5b506101fe610401366004611e1b565b610df7565b348015610411575f80fd5b5061026e61042036600461206f565b610e2f565b348015610430575f80fd5b50600254610222565b348015610444575f80fd5b505f54600160a81b900460ff1661027f565b348015610461575f80fd5b50610222610470366004612097565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b61026e610edd565b3480156104ad575f80fd5b506104ea6104bc366004611e83565b6001600160a01b03165f90815260096020908152604080832054600a9092529091205460ff91821692911690565b6040805192151583529015156020830152016101d6565b34801561050c575f80fd5b5061026e61051b366004611e83565b611329565b34801561052b575f80fd5b50600354610222565b335f8181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061058e9086815260200190565b60405180910390a35060015b92915050565b5f6105ad6009600a6121c2565b6105bb90633b9aca006121d0565b905090565b5f6105ca846113a5565b6105ef5760405162461bcd60e51b81526004016105e6906121e7565b60405180910390fd5b6001600160a01b0384165f90815260086020908152604080832033845290915281208054849290610621908490612211565b909155506106329050848484611408565b949350505050565b5f546001600160a01b031633146106635760405162461bcd60e51b81526004016105e690612224565b6001600160a01b0381165f908152600d602052604090205460ff16156106cb5760405162461bcd60e51b815260206004820152601760248201527f4c502063616e6e6f74206265207461782077616c6c657400000000000000000060448201526064016105e6565b600180546001600160a01b039092166001600160a01b0319909216821781555f918252600960209081526040808420805460ff199081168517909155600a9092529092208054909216179055565b5f546001600160a01b031633146107425760405162461bcd60e51b81526004016105e690612224565b5f6103e861ffff84166107576009600a6121c2565b61076590633b9aca006121d0565b61076f91906121d0565b610779919061225b565b61078490600161227a565b90506002548110156107c55760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b60448201526064016105e6565b60028190555f6103e861ffff84166107df6009600a6121c2565b6107ed90633b9aca006121d0565b6107f791906121d0565b610801919061225b565b61080c90600161227a565b90506003548110156108515760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b60448201526064016105e6565b600355505050565b5f546001600160a01b031633146108825760405162461bcd60e51b81526004016105e690612224565b6101f583106108e95760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b60648201526084016105e6565b8281146109495760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b60648201526084016105e6565b5f805b8481101561098c578383828181106109665761096661228d565b9050602002013582610978919061227a565b915080610984816122a1565b91505061094c565b50806109ac876001600160a01b03165f9081526007602052604090205490565b10156109fa5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c6574000000000060448201526064016105e6565b5f5b84811015610a6057610a4d87878784818110610a1a57610a1a61228d565b9050602002016020810190610a2f9190611e83565b868685818110610a4157610a4161228d565b905060200201356116a9565b5080610a58816122a1565b9150506109fc565b50505050505050565b5f546001600160a01b03163314610a925760405162461bcd60e51b81526004016105e690612224565b600e805461ff001916610100179055305f90815260076020526040902054610ab99061178c565b610ac2476118cc565b600e805461ff0019169055565b5f546001600160a01b03163314610af85760405162461bcd60e51b81526004016105e690612224565b8080610b015750815b15610b61576001600160a01b0383165f908152600d602052604090205460ff1615610b615760405162461bcd60e51b815260206004820152601060248201526f043616e6e6f74206578656d7074204c560841b60448201526064016105e6565b6001600160a01b039092165f908152600960209081526040808320805494151560ff19958616179055600a9091529020805492151592909116919091179055565b5f546001600160a01b03163314610bcb5760405162461bcd60e51b81526004016105e690612224565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b03163314610c385760405162461bcd60e51b81526004016105e690612224565b610c40611907565b565b5f546001600160a01b03163314610c6b5760405162461bcd60e51b81526004016105e690612224565b63ffffffff808416908516610c826009600a6121c2565b610c9090633b9aca006121d0565b610c9a91906121d0565b610ca4919061225b565b60045563ffffffff808216908316610cbe6009600a6121c2565b610ccc90633b9aca006121d0565b610cd691906121d0565b610ce0919061225b565b60058190556004541115610d265760405162461bcd60e51b815260206004820152600d60248201526c26b4b717a6b0bc1032b93937b960991b60448201526064016105e6565b620186a0610d366009600a6121c2565b610d4490633b9aca006121d0565b610d4e919061225b565b60055411610d8c5760405162461bcd60e51b815260206004820152600b60248201526a4d617820746f6f206c6f7760a81b60448201526064016105e6565b6064610d9a6009600a6121c2565b610da890633b9aca006121d0565b610db2919061225b565b60055410610df15760405162461bcd60e51b815260206004820152600c60248201526b09ac2f040e8dede40d0d2ced60a31b60448201526064016105e6565b50505050565b5f610e01336113a5565b610e1d5760405162461bcd60e51b81526004016105e6906121e7565b610e28338484611408565b9392505050565b5f546001600160a01b03163314610e585760405162461bcd60e51b81526004016105e690612224565b601e610e6482846122b9565b60ff161115610eaa5760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b60448201526064016105e6565b5f805461ffff60a01b1916600160a01b60ff9485160260ff60a81b191617600160a81b9290931691909102919091179055565b5f546001600160a01b03163314610f065760405162461bcd60e51b81526004016105e690612224565b600e805461ff001916610100179055600c546001600160a01b031615610f5a5760405162461bcd60e51b81526020600482015260096024820152684c502065786973747360b81b60448201526064016105e6565b600e5460ff1615610fa45760405162461bcd60e51b81526020600482015260146024820152733a3930b234b7339030b63932b0b23c9037b832b760611b60448201526064016105e6565b5f341180610fb157505f47115b610ffd5760405162461bcd60e51b815260206004820152601d60248201527f4e6f2045544820696e20636f6e7472616374206f72206d65737361676500000060448201526064016105e6565b305f908152600760205260409020546110505760405162461bcd60e51b8152602060048201526015602482015274139bc81d1bdad95b9cc81a5b8818dbdb9d1c9858dd605a1b60448201526064016105e6565b600b5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c491906122d2565b6001600160a01b031663c9c6539630600b5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611123573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061114791906122d2565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015611191573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111b591906122d2565b600c80546001600160a01b0319166001600160a01b0392909216919091179055305f908152600760205260408120546111ef9147906119c8565b600654600c546001600160a01b03165f908152600760205260408120805490919061121b908490612211565b9091555050600c5460408051600481526024810182526020810180516001600160e01b031660016209351760e01b031917905290515f926001600160a01b031691611265916122ed565b5f604051808303815f865af19150503d805f811461129e576040519150601f19603f3d011682016040523d82523d5f602084013e6112a3565b606091505b50509050806112f45760405162461bcd60e51b815260206004820152601760248201527f4661696c656420616464696e67206c697175696469747900000000000000000060448201526064016105e6565b600c546001600160a01b03165f908152600d60205260409020805460ff1916911515919091179055600e805461ff0019169055565b5f546001600160a01b031633146113525760405162461bcd60e51b81526004016105e690612224565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b600e545f90819060ff16156113bc5750600161059a565b6001600160a01b0383165f9081526009602052604090205460ff1680156113fa57506001600160a01b0383165f908152600a602052604090205460ff165b1561059a5750600192915050565b5f6001600160a01b03841661145f5760405162461bcd60e51b815260206004820152601d60248201527f4e6f207472616e73666572732066726f6d205a65726f2077616c6c657400000060448201526064016105e6565b600e5460ff166114c3576001600160a01b0384165f9081526009602052604090205460ff1680156114a757506001600160a01b0384165f908152600a602052604090205460ff165b6114c35760405162461bcd60e51b81526004016105e6906121e7565b600e54610100900460ff161580156114f257506001600160a01b0383165f908152600d602052604090205460ff165b801561151657506001600160a01b0384165f9081526009602052604090205460ff16155b1561152357611523611a75565b6001600160a01b038416301480159061154557506001600160a01b0383163014155b801561155e57505f546001600160a01b03858116911614155b156115ae5761156e848484611b27565b6115ae5760405162461bcd60e51b815260206004820152601160248201527054582065786365656473206c696d69747360781b60448201526064016105e6565b5f6115ba858585611bea565b90505f6115c78285612211565b6001600160a01b0387165f908152600760205260409020549091506115ed908590612211565b6001600160a01b0387165f908152600760205260408120919091556006805484929061161a90849061227a565b90915550506001600160a01b0385165f9081526007602052604090205461164290829061227a565b6001600160a01b038087165f8181526007602052604090819020939093559151908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116959088815260200190565b60405180910390a350600195945050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526007909152918220546116f9918490611cdb565b6001600160a01b038086165f9081526007602052604080822093909355908516815220546117279083611d06565b6001600160a01b038085165f8181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061177a9086815260200190565b60405180910390a35060019392505050565b61179581611d11565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106117c8576117c861228d565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561181f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061184391906122d2565b816001815181106118565761185661228d565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b815291169063791ac9479061189b9085905f90869030904290600401612308565b5f604051808303815f87803b1580156118b2575f80fd5b505af11580156118c4573d5f803e3d5ffd5b505050505050565b6001546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611903573d5f803e3d5ffd5b5050565b600e5460ff16156119515760405162461bcd60e51b81526020600482015260146024820152733a3930b234b7339030b63932b0b23c9037b832b760611b60448201526064016105e6565b606461195f6009600a6121c2565b61196d90633b9aca006121d0565b6119789060036121d0565b611982919061225b565b60025560646119936009600a6121c2565b6119a190633b9aca006121d0565b6119ac9060036121d0565b6119b6919061225b565b600355600e805460ff19166001179055565b5f546001600160a01b031681156119dc57505f5b6119e584611d11565b600b5460405163f305d71960e01b8152306004820152602481018690525f6044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990859060c40160606040518083038185885af1158015611a50573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610a609190612377565b600e805461ff0019166101001790556006546004548110801590611a9b5750600e5460ff165b15611b19576005548110611aae57506005545b80611abb6009600a6121c2565b811115611b0657305f9081526007602052604081208054849290611ae090849061227a565b90915550611aef90508161178c565b8160065f828254611b009190612211565b90915550505b478015611b1657611b16816118cc565b50505b50600e805461ff0019169055565b600e545f9060019060ff168015611b5657506001600160a01b0385165f908152600a602052604090205460ff16155b8015611b7a57506001600160a01b0384165f908152600a602052604090205460ff16155b1561063257600254831115611b9057505f610632565b6001600160a01b0384165f908152600d602052604090205460ff16158015611bdb57506003546001600160a01b0385165f90815260076020526040902054611bd990859061227a565b115b1561063257505f949350505050565b600e545f90819060ff161580611c1757506001600160a01b0385165f9081526009602052604090205460ff165b80611c3957506001600160a01b0384165f9081526009602052604090205460ff165b15611c4557505f610632565b6001600160a01b0385165f908152600d602052604090205460ff1615611c8f575f54606490611c7e90600160a01b900460ff16856121d0565b611c88919061225b565b9050610632565b6001600160a01b0384165f908152600d602052604090205460ff1615610632575f54606490611cc890600160a81b900460ff16856121d0565b611cd2919061225b565b95945050505050565b5f8184841115611cfe5760405162461bcd60e51b81526004016105e69190611dd5565b505050900390565b5f610e28828461227a565b305f908152600860209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d8452909152902054811115611db057305f818152600860209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190205f199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b5f5b83811015611dcd578181015183820152602001611db5565b50505f910152565b602081525f8251806020840152611df3816040850160208701611db3565b601f01601f19169190910160400192915050565b6001600160a01b0381168114611db0575f80fd5b5f8060408385031215611e2c575f80fd5b8235611e3781611e07565b946020939093013593505050565b5f805f60608486031215611e57575f80fd5b8335611e6281611e07565b92506020840135611e7281611e07565b929592945050506040919091013590565b5f60208284031215611e93575f80fd5b8135610e2881611e07565b803561ffff81168114611eaf575f80fd5b919050565b5f8060408385031215611ec5575f80fd5b611ece83611e9e565b9150611edc60208401611e9e565b90509250929050565b5f8083601f840112611ef5575f80fd5b50813567ffffffffffffffff811115611f0c575f80fd5b6020830191508360208260051b8501011115611f26575f80fd5b9250929050565b5f805f805f60608688031215611f41575f80fd5b8535611f4c81611e07565b9450602086013567ffffffffffffffff80821115611f68575f80fd5b611f7489838a01611ee5565b90965094506040880135915080821115611f8c575f80fd5b50611f9988828901611ee5565b969995985093965092949392505050565b80358015158114611eaf575f80fd5b5f805f60608486031215611fcb575f80fd5b8335611fd681611e07565b9250611fe460208501611faa565b9150611ff260408501611faa565b90509250925092565b803563ffffffff81168114611eaf575f80fd5b5f805f8060808587031215612021575f80fd5b61202a85611ffb565b935061203860208601611ffb565b925061204660408601611ffb565b915061205460608601611ffb565b905092959194509250565b803560ff81168114611eaf575f80fd5b5f8060408385031215612080575f80fd5b6120898361205f565b9150611edc6020840161205f565b5f80604083850312156120a8575f80fd5b82356120b381611e07565b915060208301356120c381611e07565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561211c57815f1904821115612102576121026120ce565b8085161561210f57918102915b93841c93908002906120e7565b509250929050565b5f826121325750600161059a565b8161213e57505f61059a565b8160018114612154576002811461215e5761217a565b600191505061059a565b60ff84111561216f5761216f6120ce565b50506001821b61059a565b5060208310610133831016604e8410600b841016171561219d575081810a61059a565b6121a783836120e2565b805f19048211156121ba576121ba6120ce565b029392505050565b5f610e2860ff841683612124565b808202811582820484141761059a5761059a6120ce565b60208082526010908201526f2a3930b234b733903737ba1037b832b760811b604082015260600190565b8181038181111561059a5761059a6120ce565b60208082526019908201527f4f6e6c79206f776e65722063616e2063616c6c20746869732e00000000000000604082015260600190565b5f8261227557634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561059a5761059a6120ce565b634e487b7160e01b5f52603260045260245ffd5b5f600182016122b2576122b26120ce565b5060010190565b60ff818116838216019081111561059a5761059a6120ce565b5f602082840312156122e2575f80fd5b8151610e2881611e07565b5f82516122fe818460208701611db3565b9190910192915050565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156123565784516001600160a01b031683529383019391830191600101612331565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612389575f80fd5b835192506020840151915060408401519050925092509256fea264697066735822122072aea02f7a9d035dfe48956463589f3f7506851cac5e759d065203ec4cb882ab64736f6c63430008150033

Deployed Bytecode

0x608060405260043610610198575f3560e01c806375f0a874116100e7578063c3f70b5211610087578063e8078d9411610062578063e8078d941461049a578063f1320af2146104a2578063f2fde38b14610501578063f8b45b0514610520575f80fd5b8063c3f70b5214610425578063cc1776d314610439578063dd62ed3e14610456575f80fd5b806395d89b41116100c257806395d89b41146101a3578063a6097b0a146103c8578063a9059cbb146103e7578063a9128ff014610406575f80fd5b806375f0a874146103675780638a8c523c146103985780638da5cb5b146103ac575f80fd5b8063368f48001161015257806351bc3c851161012d57806351bc3c85146102ec57806357ff135a1461030057806370a082311461031f578063715018a614610353575f80fd5b8063368f4800146102915780634a8598eb146102b05780634f7041a5146102cf575f80fd5b806306fdde03146101a3578063095ea7b3146101df57806318160ddd1461020e57806323b872dd146102305780632851a5cf1461024f578063313ce56714610270575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b506040805180820182526005815264119493d09560da1b602082015290516101d69190611dd5565b60405180910390f35b3480156101ea575f80fd5b506101fe6101f9366004611e1b565b610534565b60405190151581526020016101d6565b348015610219575f80fd5b506102226105a0565b6040519081526020016101d6565b34801561023b575f80fd5b506101fe61024a366004611e45565b6105c0565b34801561025a575f80fd5b5061026e610269366004611e83565b61063a565b005b34801561027b575f80fd5b5060095b60405160ff90911681526020016101d6565b34801561029c575f80fd5b5061026e6102ab366004611eb4565b610719565b3480156102bb575f80fd5b5061026e6102ca366004611f2d565b610859565b3480156102da575f80fd5b505f54600160a01b900460ff1661027f565b3480156102f7575f80fd5b5061026e610a69565b34801561030b575f80fd5b5061026e61031a366004611fb9565b610acf565b34801561032a575f80fd5b50610222610339366004611e83565b6001600160a01b03165f9081526007602052604090205490565b34801561035e575f80fd5b5061026e610ba2565b348015610372575f80fd5b506001546001600160a01b03165b6040516001600160a01b0390911681526020016101d6565b3480156103a3575f80fd5b5061026e610c0f565b3480156103b7575f80fd5b505f546001600160a01b0316610380565b3480156103d3575f80fd5b5061026e6103e236600461200e565b610c42565b3480156103f2575f80fd5b506101fe610401366004611e1b565b610df7565b348015610411575f80fd5b5061026e61042036600461206f565b610e2f565b348015610430575f80fd5b50600254610222565b348015610444575f80fd5b505f54600160a81b900460ff1661027f565b348015610461575f80fd5b50610222610470366004612097565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b61026e610edd565b3480156104ad575f80fd5b506104ea6104bc366004611e83565b6001600160a01b03165f90815260096020908152604080832054600a9092529091205460ff91821692911690565b6040805192151583529015156020830152016101d6565b34801561050c575f80fd5b5061026e61051b366004611e83565b611329565b34801561052b575f80fd5b50600354610222565b335f8181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061058e9086815260200190565b60405180910390a35060015b92915050565b5f6105ad6009600a6121c2565b6105bb90633b9aca006121d0565b905090565b5f6105ca846113a5565b6105ef5760405162461bcd60e51b81526004016105e6906121e7565b60405180910390fd5b6001600160a01b0384165f90815260086020908152604080832033845290915281208054849290610621908490612211565b909155506106329050848484611408565b949350505050565b5f546001600160a01b031633146106635760405162461bcd60e51b81526004016105e690612224565b6001600160a01b0381165f908152600d602052604090205460ff16156106cb5760405162461bcd60e51b815260206004820152601760248201527f4c502063616e6e6f74206265207461782077616c6c657400000000000000000060448201526064016105e6565b600180546001600160a01b039092166001600160a01b0319909216821781555f918252600960209081526040808420805460ff199081168517909155600a9092529092208054909216179055565b5f546001600160a01b031633146107425760405162461bcd60e51b81526004016105e690612224565b5f6103e861ffff84166107576009600a6121c2565b61076590633b9aca006121d0565b61076f91906121d0565b610779919061225b565b61078490600161227a565b90506002548110156107c55760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b60448201526064016105e6565b60028190555f6103e861ffff84166107df6009600a6121c2565b6107ed90633b9aca006121d0565b6107f791906121d0565b610801919061225b565b61080c90600161227a565b90506003548110156108515760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b60448201526064016105e6565b600355505050565b5f546001600160a01b031633146108825760405162461bcd60e51b81526004016105e690612224565b6101f583106108e95760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b60648201526084016105e6565b8281146109495760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b60648201526084016105e6565b5f805b8481101561098c578383828181106109665761096661228d565b9050602002013582610978919061227a565b915080610984816122a1565b91505061094c565b50806109ac876001600160a01b03165f9081526007602052604090205490565b10156109fa5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c6574000000000060448201526064016105e6565b5f5b84811015610a6057610a4d87878784818110610a1a57610a1a61228d565b9050602002016020810190610a2f9190611e83565b868685818110610a4157610a4161228d565b905060200201356116a9565b5080610a58816122a1565b9150506109fc565b50505050505050565b5f546001600160a01b03163314610a925760405162461bcd60e51b81526004016105e690612224565b600e805461ff001916610100179055305f90815260076020526040902054610ab99061178c565b610ac2476118cc565b600e805461ff0019169055565b5f546001600160a01b03163314610af85760405162461bcd60e51b81526004016105e690612224565b8080610b015750815b15610b61576001600160a01b0383165f908152600d602052604090205460ff1615610b615760405162461bcd60e51b815260206004820152601060248201526f043616e6e6f74206578656d7074204c560841b60448201526064016105e6565b6001600160a01b039092165f908152600960209081526040808320805494151560ff19958616179055600a9091529020805492151592909116919091179055565b5f546001600160a01b03163314610bcb5760405162461bcd60e51b81526004016105e690612224565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b03163314610c385760405162461bcd60e51b81526004016105e690612224565b610c40611907565b565b5f546001600160a01b03163314610c6b5760405162461bcd60e51b81526004016105e690612224565b63ffffffff808416908516610c826009600a6121c2565b610c9090633b9aca006121d0565b610c9a91906121d0565b610ca4919061225b565b60045563ffffffff808216908316610cbe6009600a6121c2565b610ccc90633b9aca006121d0565b610cd691906121d0565b610ce0919061225b565b60058190556004541115610d265760405162461bcd60e51b815260206004820152600d60248201526c26b4b717a6b0bc1032b93937b960991b60448201526064016105e6565b620186a0610d366009600a6121c2565b610d4490633b9aca006121d0565b610d4e919061225b565b60055411610d8c5760405162461bcd60e51b815260206004820152600b60248201526a4d617820746f6f206c6f7760a81b60448201526064016105e6565b6064610d9a6009600a6121c2565b610da890633b9aca006121d0565b610db2919061225b565b60055410610df15760405162461bcd60e51b815260206004820152600c60248201526b09ac2f040e8dede40d0d2ced60a31b60448201526064016105e6565b50505050565b5f610e01336113a5565b610e1d5760405162461bcd60e51b81526004016105e6906121e7565b610e28338484611408565b9392505050565b5f546001600160a01b03163314610e585760405162461bcd60e51b81526004016105e690612224565b601e610e6482846122b9565b60ff161115610eaa5760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b60448201526064016105e6565b5f805461ffff60a01b1916600160a01b60ff9485160260ff60a81b191617600160a81b9290931691909102919091179055565b5f546001600160a01b03163314610f065760405162461bcd60e51b81526004016105e690612224565b600e805461ff001916610100179055600c546001600160a01b031615610f5a5760405162461bcd60e51b81526020600482015260096024820152684c502065786973747360b81b60448201526064016105e6565b600e5460ff1615610fa45760405162461bcd60e51b81526020600482015260146024820152733a3930b234b7339030b63932b0b23c9037b832b760611b60448201526064016105e6565b5f341180610fb157505f47115b610ffd5760405162461bcd60e51b815260206004820152601d60248201527f4e6f2045544820696e20636f6e7472616374206f72206d65737361676500000060448201526064016105e6565b305f908152600760205260409020546110505760405162461bcd60e51b8152602060048201526015602482015274139bc81d1bdad95b9cc81a5b8818dbdb9d1c9858dd605a1b60448201526064016105e6565b600b5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c491906122d2565b6001600160a01b031663c9c6539630600b5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611123573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061114791906122d2565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015611191573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111b591906122d2565b600c80546001600160a01b0319166001600160a01b0392909216919091179055305f908152600760205260408120546111ef9147906119c8565b600654600c546001600160a01b03165f908152600760205260408120805490919061121b908490612211565b9091555050600c5460408051600481526024810182526020810180516001600160e01b031660016209351760e01b031917905290515f926001600160a01b031691611265916122ed565b5f604051808303815f865af19150503d805f811461129e576040519150601f19603f3d011682016040523d82523d5f602084013e6112a3565b606091505b50509050806112f45760405162461bcd60e51b815260206004820152601760248201527f4661696c656420616464696e67206c697175696469747900000000000000000060448201526064016105e6565b600c546001600160a01b03165f908152600d60205260409020805460ff1916911515919091179055600e805461ff0019169055565b5f546001600160a01b031633146113525760405162461bcd60e51b81526004016105e690612224565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b600e545f90819060ff16156113bc5750600161059a565b6001600160a01b0383165f9081526009602052604090205460ff1680156113fa57506001600160a01b0383165f908152600a602052604090205460ff165b1561059a5750600192915050565b5f6001600160a01b03841661145f5760405162461bcd60e51b815260206004820152601d60248201527f4e6f207472616e73666572732066726f6d205a65726f2077616c6c657400000060448201526064016105e6565b600e5460ff166114c3576001600160a01b0384165f9081526009602052604090205460ff1680156114a757506001600160a01b0384165f908152600a602052604090205460ff165b6114c35760405162461bcd60e51b81526004016105e6906121e7565b600e54610100900460ff161580156114f257506001600160a01b0383165f908152600d602052604090205460ff165b801561151657506001600160a01b0384165f9081526009602052604090205460ff16155b1561152357611523611a75565b6001600160a01b038416301480159061154557506001600160a01b0383163014155b801561155e57505f546001600160a01b03858116911614155b156115ae5761156e848484611b27565b6115ae5760405162461bcd60e51b815260206004820152601160248201527054582065786365656473206c696d69747360781b60448201526064016105e6565b5f6115ba858585611bea565b90505f6115c78285612211565b6001600160a01b0387165f908152600760205260409020549091506115ed908590612211565b6001600160a01b0387165f908152600760205260408120919091556006805484929061161a90849061227a565b90915550506001600160a01b0385165f9081526007602052604090205461164290829061227a565b6001600160a01b038087165f8181526007602052604090819020939093559151908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116959088815260200190565b60405180910390a350600195945050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526007909152918220546116f9918490611cdb565b6001600160a01b038086165f9081526007602052604080822093909355908516815220546117279083611d06565b6001600160a01b038085165f8181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061177a9086815260200190565b60405180910390a35060019392505050565b61179581611d11565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106117c8576117c861228d565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561181f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061184391906122d2565b816001815181106118565761185661228d565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b815291169063791ac9479061189b9085905f90869030904290600401612308565b5f604051808303815f87803b1580156118b2575f80fd5b505af11580156118c4573d5f803e3d5ffd5b505050505050565b6001546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611903573d5f803e3d5ffd5b5050565b600e5460ff16156119515760405162461bcd60e51b81526020600482015260146024820152733a3930b234b7339030b63932b0b23c9037b832b760611b60448201526064016105e6565b606461195f6009600a6121c2565b61196d90633b9aca006121d0565b6119789060036121d0565b611982919061225b565b60025560646119936009600a6121c2565b6119a190633b9aca006121d0565b6119ac9060036121d0565b6119b6919061225b565b600355600e805460ff19166001179055565b5f546001600160a01b031681156119dc57505f5b6119e584611d11565b600b5460405163f305d71960e01b8152306004820152602481018690525f6044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990859060c40160606040518083038185885af1158015611a50573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610a609190612377565b600e805461ff0019166101001790556006546004548110801590611a9b5750600e5460ff165b15611b19576005548110611aae57506005545b80611abb6009600a6121c2565b811115611b0657305f9081526007602052604081208054849290611ae090849061227a565b90915550611aef90508161178c565b8160065f828254611b009190612211565b90915550505b478015611b1657611b16816118cc565b50505b50600e805461ff0019169055565b600e545f9060019060ff168015611b5657506001600160a01b0385165f908152600a602052604090205460ff16155b8015611b7a57506001600160a01b0384165f908152600a602052604090205460ff16155b1561063257600254831115611b9057505f610632565b6001600160a01b0384165f908152600d602052604090205460ff16158015611bdb57506003546001600160a01b0385165f90815260076020526040902054611bd990859061227a565b115b1561063257505f949350505050565b600e545f90819060ff161580611c1757506001600160a01b0385165f9081526009602052604090205460ff165b80611c3957506001600160a01b0384165f9081526009602052604090205460ff165b15611c4557505f610632565b6001600160a01b0385165f908152600d602052604090205460ff1615611c8f575f54606490611c7e90600160a01b900460ff16856121d0565b611c88919061225b565b9050610632565b6001600160a01b0384165f908152600d602052604090205460ff1615610632575f54606490611cc890600160a81b900460ff16856121d0565b611cd2919061225b565b95945050505050565b5f8184841115611cfe5760405162461bcd60e51b81526004016105e69190611dd5565b505050900390565b5f610e28828461227a565b305f908152600860209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d8452909152902054811115611db057305f818152600860209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190205f199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b5f5b83811015611dcd578181015183820152602001611db5565b50505f910152565b602081525f8251806020840152611df3816040850160208701611db3565b601f01601f19169190910160400192915050565b6001600160a01b0381168114611db0575f80fd5b5f8060408385031215611e2c575f80fd5b8235611e3781611e07565b946020939093013593505050565b5f805f60608486031215611e57575f80fd5b8335611e6281611e07565b92506020840135611e7281611e07565b929592945050506040919091013590565b5f60208284031215611e93575f80fd5b8135610e2881611e07565b803561ffff81168114611eaf575f80fd5b919050565b5f8060408385031215611ec5575f80fd5b611ece83611e9e565b9150611edc60208401611e9e565b90509250929050565b5f8083601f840112611ef5575f80fd5b50813567ffffffffffffffff811115611f0c575f80fd5b6020830191508360208260051b8501011115611f26575f80fd5b9250929050565b5f805f805f60608688031215611f41575f80fd5b8535611f4c81611e07565b9450602086013567ffffffffffffffff80821115611f68575f80fd5b611f7489838a01611ee5565b90965094506040880135915080821115611f8c575f80fd5b50611f9988828901611ee5565b969995985093965092949392505050565b80358015158114611eaf575f80fd5b5f805f60608486031215611fcb575f80fd5b8335611fd681611e07565b9250611fe460208501611faa565b9150611ff260408501611faa565b90509250925092565b803563ffffffff81168114611eaf575f80fd5b5f805f8060808587031215612021575f80fd5b61202a85611ffb565b935061203860208601611ffb565b925061204660408601611ffb565b915061205460608601611ffb565b905092959194509250565b803560ff81168114611eaf575f80fd5b5f8060408385031215612080575f80fd5b6120898361205f565b9150611edc6020840161205f565b5f80604083850312156120a8575f80fd5b82356120b381611e07565b915060208301356120c381611e07565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561211c57815f1904821115612102576121026120ce565b8085161561210f57918102915b93841c93908002906120e7565b509250929050565b5f826121325750600161059a565b8161213e57505f61059a565b8160018114612154576002811461215e5761217a565b600191505061059a565b60ff84111561216f5761216f6120ce565b50506001821b61059a565b5060208310610133831016604e8410600b841016171561219d575081810a61059a565b6121a783836120e2565b805f19048211156121ba576121ba6120ce565b029392505050565b5f610e2860ff841683612124565b808202811582820484141761059a5761059a6120ce565b60208082526010908201526f2a3930b234b733903737ba1037b832b760811b604082015260600190565b8181038181111561059a5761059a6120ce565b60208082526019908201527f4f6e6c79206f776e65722063616e2063616c6c20746869732e00000000000000604082015260600190565b5f8261227557634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561059a5761059a6120ce565b634e487b7160e01b5f52603260045260245ffd5b5f600182016122b2576122b26120ce565b5060010190565b60ff818116838216019081111561059a5761059a6120ce565b5f602082840312156122e2575f80fd5b8151610e2881611e07565b5f82516122fe818460208701611db3565b9190910192915050565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156123565784516001600160a01b031683529383019391830191600101612331565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612389575f80fd5b835192506020840151915060408401519050925092509256fea264697066735822122072aea02f7a9d035dfe48956463589f3f7506851cac5e759d065203ec4cb882ab64736f6c63430008150033

Deployed Bytecode Sourcemap

2442:11884:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4644:80;;;;;;;;;;-1:-1:-1;4716:5:0;;;;;;;;;;;-1:-1:-1;;;4716:5:0;;;;4644:80;;;;4716:5;4644:80;:::i;:::-;;;;;;;;4982:216;;;;;;;;;;-1:-1:-1;4982:216:0;;;;;:::i;:::-;;:::i;:::-;;;1291:14:1;;1284:22;1266:41;;1254:2;1239:18;4982:216:0;1126:187:1;4382:83:0;;;;;;;;;;;;;:::i;:::-;;;1464:25:1;;;1452:2;1437:18;4382:83:0;1318:177:1;5435:285:0;;;;;;;;;;-1:-1:-1;5435:285:0;;;;;:::i;:::-;;:::i;10573:253::-;;;;;;;;;;-1:-1:-1;10573:253:0;;;;;:::i;:::-;;:::i;:::-;;4471:77;;;;;;;;;;-1:-1:-1;2548:1:0;4471:77;;;2385:4:1;2373:17;;;2355:36;;2343:2;2328:18;4471:77:0;2213:184:1;11039:452:0;;;;;;;;;;-1:-1:-1;11039:452:0;;;;;:::i;:::-;;:::i;13335:648::-;;;;;;;;;;-1:-1:-1;13335:648:0;;;;;:::i;:::-;;:::i;10088:84::-;;;;;;;;;;-1:-1:-1;10128:5:0;10153:11;-1:-1:-1;;;10153:11:0;;;;10088:84;;13138:170;;;;;;;;;;;;;:::i;9832:248::-;;;;;;;;;;-1:-1:-1;9832:248:0;;;;;:::i;:::-;;:::i;4730:105::-;;;;;;;;;;-1:-1:-1;4730:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;4814:18:0;4796:7;4814:18;;;:9;:18;;;;;;;4730:105;689:137;;;;;;;;;;;;;:::i;10464:101::-;;;;;;;;;;-1:-1:-1;10541:16:0;;-1:-1:-1;;;;;10541:16:0;10464:101;;;-1:-1:-1;;;;;4829:32:1;;;4811:51;;4799:2;4784:18;10464:101:0;4665:203:1;7221:77:0;;;;;;;;;;;;;:::i;439:81::-;;;;;;;;;;-1:-1:-1;477:7:0;505:6;-1:-1:-1;;;;;505:6:0;439:81;;11499:410;;;;;;;;;;-1:-1:-1;11499:410:0;;;;;:::i;:::-;;:::i;5206:221::-;;;;;;;;;;-1:-1:-1;5206:221:0;;;;;:::i;:::-;;:::i;10272:182::-;;;;;;;;;;-1:-1:-1;10272:182:0;;;;;:::i;:::-;;:::i;10935:96::-;;;;;;;;;;-1:-1:-1;11011:12:0;;10935:96;;10178:86;;;;;;;;;;-1:-1:-1;10219:5:0;10244:12;-1:-1:-1;;;10244:12:0;;;;10178:86;;4841:133;;;;;;;;;;-1:-1:-1;4841:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;4943:19:0;;;4925:7;4943:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;4841:133;6044:778;;;:::i;9688:138::-;;;;;;;;;;-1:-1:-1;9688:138:0;;;;;:::i;:::-;-1:-1:-1;;;;;9786:14:0;9743:9;9786:14;;;:6;:14;;;;;;;;;9801:8;:16;;;;;;;9786:14;;;;;9801:16;;;9688:138;;;;;6445:14:1;;6438:22;6420:41;;6504:14;;6497:22;6492:2;6477:18;;6470:50;6393:18;9688:138:0;6258:268:1;526:157:0;;;;;;;;;;-1:-1:-1;526:157:0;;;;;:::i;:::-;;:::i;10834:95::-;;;;;;;;;;-1:-1:-1;10905:16:0;;10834:95;;4982:216;5086:10;5057:4;5074:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;5074:32:0;;;;;;;;;;:41;;;5131:37;5057:4;;5074:32;;5131:37;;;;5109:6;1464:25:1;;1452:2;1437:18;;1318:177;5131:37:0;;;;;;;;-1:-1:-1;5186:4:0;4982:216;;;;;:::o;4382:83::-;4437:7;2605:10;2548:1;2605:2;:10;:::i;:::-;2591:25;;:10;:25;:::i;:::-;4448:14;;4382:83;:::o;5435:285::-;5535:4;5560:25;5578:6;5560:17;:25::i;:::-;5552:54;;;;-1:-1:-1;;;5552:54:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;5617:19:0;;;;;;:11;:19;;;;;;;;5637:10;5617:31;;;;;;;:41;;5652:6;;5617:19;:41;;5652:6;;5617:41;:::i;:::-;;;;-1:-1:-1;5676:36:0;;-1:-1:-1;5686:6:0;5694:9;5705:6;5676:9;:36::i;:::-;5669:43;5435:285;-1:-1:-1;;;;5435:285:0:o;10573:253::-;385:6;;-1:-1:-1;;;;;385:6:0;371:10;:20;363:58;;;;-1:-1:-1;;;363:58:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10654:16:0;::::1;;::::0;;;:5:::1;:16;::::0;;;;;::::1;;10653:17;10645:53;;;::::0;-1:-1:-1;;;10645:53:0;;9513:2:1;10645:53:0::1;::::0;::::1;9495:21:1::0;9552:2;9532:18;;;9525:30;9591:25;9571:18;;;9564:53;9634:18;;10645:53:0::1;9311:347:1::0;10645:53:0::1;10709:16;:37:::0;;-1:-1:-1;;;;;10709:37:0;;::::1;-1:-1:-1::0;;;;;;10709:37:0;;::::1;::::0;::::1;::::0;;:16:::1;10757:17:::0;;;:6:::1;:17;::::0;;;;;;;:24;;-1:-1:-1;;10757:24:0;;::::1;::::0;::::1;::::0;;;10792:8:::1;:19:::0;;;;;;:26;;;;::::1;;::::0;;10573:253::o;11039:452::-;385:6;;-1:-1:-1;;;;;385:6:0;371:10;:20;363:58;;;;-1:-1:-1;;;363:58:0;;;;;;;:::i;:::-;11145:16:::1;11199:4;11164:32;::::0;::::1;2605:10;2548:1;2605:2;:10;:::i;:::-;2591:25;::::0;:10:::1;:25;:::i;:::-;11164:32;;;;:::i;:::-;:39;;;;:::i;:::-;:43;::::0;11206:1:::1;11164:43;:::i;:::-;11145:62;;11238:12;;11226:8;:24;;11218:47;;;::::0;-1:-1:-1;;;11218:47:0;;10217:2:1;11218:47:0::1;::::0;::::1;10199:21:1::0;10256:2;10236:18;;;10229:30;-1:-1:-1;;;10275:18:1;;;10268:40;10325:18;;11218:47:0::1;10015:334:1::0;11218:47:0::1;11276:12;:23:::0;;;11310:20:::1;11363:4;11333:27;::::0;::::1;2605:10;2548:1;2605:2;:10;:::i;:::-;2591:25;::::0;:10:::1;:25;:::i;:::-;11333:27;;;;:::i;:::-;:34;;;;:::i;:::-;:38;::::0;11370:1:::1;11333:38;:::i;:::-;11310:61;;11406:16;;11390:12;:32;;11382:59;;;::::0;-1:-1:-1;;;11382:59:0;;10556:2:1;11382:59:0::1;::::0;::::1;10538:21:1::0;10595:2;10575:18;;;10568:30;-1:-1:-1;;;10614:18:1;;;10607:44;10668:18;;11382:59:0::1;10354:338:1::0;11382:59:0::1;11452:16;:31:::0;-1:-1:-1;;;11039:452:0:o;13335:648::-;385:6;;-1:-1:-1;;;;;385:6:0;371:10;:20;363:58;;;;-1:-1:-1;;;363:58:0;;;;;;;:::i;:::-;13488:3:::1;13469:22:::0;::::1;13461:79;;;::::0;-1:-1:-1;;;13461:79:0;;10899:2:1;13461:79:0::1;::::0;::::1;10881:21:1::0;10938:2;10918:18;;;10911:30;10977:34;10957:18;;;10950:62;-1:-1:-1;;;11028:18:1;;;11021:43;11081:19;;13461:79:0::1;10697:409:1::0;13461:79:0::1;13559:33:::0;;::::1;13551:85;;;::::0;-1:-1:-1;;;13551:85:0;;11313:2:1;13551:85:0::1;::::0;::::1;11295:21:1::0;11352:2;11332:18;;;11325:30;11391:34;11371:18;;;11364:62;-1:-1:-1;;;11442:18:1;;;11435:38;11490:19;;13551:85:0::1;11111:404:1::0;13551:85:0::1;13649:12;13682:6:::0;13678:90:::1;13692:20:::0;;::::1;13678:90;;;13747:6;;13754:1;13747:9;;;;;;;:::i;:::-;;;;;;;13740:4;:16;;;;:::i;:::-;13733:23:::0;-1:-1:-1;13714:3:0;::::1;::::0;::::1;:::i;:::-;;;;13678:90;;;;13807:4;13788:15;13798:4;-1:-1:-1::0;;;;;4814:18:0;4796:7;4814:18;;;:9;:18;;;;;;;4730:105;13788:15:::1;:23;;13780:63;;;::::0;-1:-1:-1;;;13780:63:0;;11994:2:1;13780:63:0::1;::::0;::::1;11976:21:1::0;12033:2;12013:18;;;12006:30;12072:29;12052:18;;;12045:57;12119:18;;13780:63:0::1;11792:351:1::0;13780:63:0::1;13860:6;13856:110;13870:20:::0;;::::1;13856:110;;;13911:43;13926:4;13931:9;;13941:1;13931:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;13944:6;;13951:1;13944:9;;;;;;;:::i;:::-;;;;;;;13911:14;:43::i;:::-;-1:-1:-1::0;13892:3:0;::::1;::::0;::::1;:::i;:::-;;;;13856:110;;;;13448:535;13335:648:::0;;;;;:::o;13138:170::-;385:6;;-1:-1:-1;;;;;385:6:0;371:10;:20;363:58;;;;-1:-1:-1;;;363:58:0;;;;;;;:::i;:::-;3779:10:::1;:17:::0;;-1:-1:-1;;3779:17:0::1;;;::::0;;13241:4:::2;3779:17:::0;13223:24;;;:9:::2;:24;::::0;;;;;13202:46:::2;::::0;:20:::2;:46::i;:::-;13259:40;13277:21;13259:17;:40::i;:::-;3812:10:::1;:18:::0;;-1:-1:-1;;3812:18:0::1;::::0;;13138:170::o;9832:248::-;385:6;;-1:-1:-1;;;;;385:6:0;371:10;:20;363:58;;;;-1:-1:-1;;;363:58:0;;;;;;;:::i;:::-;9929:8:::1;:18;;;;9941:6;9929:18;9925:72;;;-1:-1:-1::0;;;;;9960:13:0;::::1;;::::0;;;:5:::1;:13;::::0;;;;;::::1;;9959:14;9951:43;;;::::0;-1:-1:-1;;;9951:43:0;;12350:2:1;9951:43:0::1;::::0;::::1;12332:21:1::0;12389:2;12369:18;;;12362:30;-1:-1:-1;;;12408:18:1;;;12401:46;12464:18;;9951:43:0::1;12148:340:1::0;9951:43:0::1;-1:-1:-1::0;;;;;10007:16:0;;::::1;;::::0;;;:6:::1;:16;::::0;;;;;;;:25;;;::::1;;-1:-1:-1::0;;10007:25:0;;::::1;;::::0;;10043:8:::1;:18:::0;;;;;:29;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;9832:248::o;689:137::-;385:6;;-1:-1:-1;;;;;385:6:0;371:10;:20;363:58;;;;-1:-1:-1;;;363:58:0;;;;;;;:::i;:::-;766:1:::1;749:19:::0;;-1:-1:-1;;;;;;749:19:0::1;::::0;;785:32:::1;::::0;4811:51:1;;;785:32:0::1;::::0;4799:2:1;4784:18;785:32:0::1;;;;;;;689:137::o:0;7221:77::-;385:6;;-1:-1:-1;;;;;385:6:0;371:10;:20;363:58;;;;-1:-1:-1;;;363:58:0;;;;;;;:::i;:::-;7276:14:::1;:12;:14::i;:::-;7221:77::o:0;11499:410::-;385:6;;-1:-1:-1;;;;;385:6:0;371:10;:20;363:58;;;;-1:-1:-1;;;363:58:0;;;;;;;:::i;:::-;11634:31:::1;::::0;;::::1;::::0;:18;::::1;2605:10;2548:1;2605:2;:10;:::i;:::-;2591:25;::::0;:10:::1;:25;:::i;:::-;11634:18;;;;:::i;:::-;:31;;;;:::i;:::-;11621:10;:44:::0;11689:31:::1;::::0;;::::1;::::0;:18;::::1;2605:10;2548:1;2605:2;:10;:::i;:::-;2591:25;::::0;:10:::1;:25;:::i;:::-;11689:18;;;;:::i;:::-;:31;;;;:::i;:::-;11676:10;:44:::0;;;11751:10:::1;::::0;-1:-1:-1;11739:22:0::1;11731:48;;;::::0;-1:-1:-1;;;11731:48:0;;12695:2:1;11731:48:0::1;::::0;::::1;12677:21:1::0;12734:2;12714:18;;;12707:30;-1:-1:-1;;;12753:18:1;;;12746:43;12806:18;;11731:48:0::1;12493:337:1::0;11731:48:0::1;11819:6;2605:10;2548:1;2605:2;:10;:::i;:::-;2591:25;::::0;:10:::1;:25;:::i;:::-;11809:16;;;;:::i;:::-;11798:10;;:27;11790:51;;;::::0;-1:-1:-1;;;11790:51:0;;13037:2:1;11790:51:0::1;::::0;::::1;13019:21:1::0;13076:2;13056:18;;;13049:30;-1:-1:-1;;;13095:18:1;;;13088:41;13146:18;;11790:51:0::1;12835:335:1::0;11790:51:0::1;11881:3;2605:10;2548:1;2605:2;:10;:::i;:::-;2591:25;::::0;:10:::1;:25;:::i;:::-;11871:13;;;;:::i;:::-;11860:10;;:24;11852:49;;;::::0;-1:-1:-1;;;11852:49:0;;13377:2:1;11852:49:0::1;::::0;::::1;13359:21:1::0;13416:2;13396:18;;;13389:30;-1:-1:-1;;;13435:18:1;;;13428:42;13487:18;;11852:49:0::1;13175:336:1::0;11852:49:0::1;11499:410:::0;;;;:::o;5206:221::-;5286:4;5311:29;5329:10;5311:17;:29::i;:::-;5303:58;;;;-1:-1:-1;;;5303:58:0;;;;;;;:::i;:::-;5379:40;5389:10;5401:9;5412:6;5379:9;:40::i;:::-;5372:47;5206:221;-1:-1:-1;;;5206:221:0:o;10272:182::-;385:6;;-1:-1:-1;;;;;385:6:0;371:10;:20;363:58;;;;-1:-1:-1;;;363:58:0;;;;;;;:::i;:::-;10363:2:::1;10349:10;10355:4:::0;10349:3;:10:::1;:::i;:::-;:16;;;;10341:47;;;::::0;-1:-1:-1;;;10341:47:0;;13871:2:1;10341:47:0::1;::::0;::::1;13853:21:1::0;13910:2;13890:18;;;13883:30;-1:-1:-1;;;13929:18:1;;;13922:48;13987:18;;10341:47:0::1;13669:342:1::0;10341:47:0::1;10399:11;:17:::0;;-1:-1:-1;;;;10427:19:0;-1:-1:-1;;;10399:17:0::1;::::0;;::::1;;-1:-1:-1::0;;;;10427:19:0;;-1:-1:-1;;;10427:19:0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;10272:182::o;6044:778::-;385:6;;-1:-1:-1;;;;;385:6:0;371:10;:20;363:58;;;;-1:-1:-1;;;363:58:0;;;;;;;:::i;:::-;3779:10:::1;:17:::0;;-1:-1:-1;;3779:17:0::1;;;::::0;;6126:10:::2;::::0;-1:-1:-1;;;;;6126:10:0::2;:24:::0;6118:46:::2;;;::::0;-1:-1:-1;;;6118:46:0;;14218:2:1;6118:46:0::2;::::0;::::2;14200:21:1::0;14257:1;14237:18;;;14230:29;-1:-1:-1;;;14275:18:1;;;14268:39;14324:18;;6118:46:0::2;14016:332:1::0;6118:46:0::2;6184:14;::::0;::::2;;6183:15;6175:48;;;::::0;-1:-1:-1;;;6175:48:0;;14555:2:1;6175:48:0::2;::::0;::::2;14537:21:1::0;14594:2;14574:18;;;14567:30;-1:-1:-1;;;14613:18:1;;;14606:50;14673:18;;6175:48:0::2;14353:344:1::0;6175:48:0::2;6254:1;6242:9;:13;:40;;;;6281:1;6259:21;:23;6242:40;6234:82;;;::::0;-1:-1:-1;;;6234:82:0;;14904:2:1;6234:82:0::2;::::0;::::2;14886:21:1::0;14943:2;14923:18;;;14916:30;14982:31;14962:18;;;14955:59;15031:18;;6234:82:0::2;14702:353:1::0;6234:82:0::2;6353:4;6360:1;6335:24:::0;;;:9:::2;:24;::::0;;;;;6327:60:::2;;;::::0;-1:-1:-1;;;6327:60:0;;15262:2:1;6327:60:0::2;::::0;::::2;15244:21:1::0;15301:2;15281:18;;;15274:30;-1:-1:-1;;;15320:18:1;;;15313:51;15381:18;;6327:60:0::2;15060:345:1::0;6327:60:0::2;6429:18;;;;;;;;;-1:-1:-1::0;;;;;6429:18:0::2;-1:-1:-1::0;;;;;6429:26:0::2;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6411:58:0::2;;6478:4;6485:18;;;;;;;;;-1:-1:-1::0;;;;;6485:18:0::2;-1:-1:-1::0;;;;;6485:23:0::2;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6411:100;::::0;-1:-1:-1;;;;;;6411:100:0::2;::::0;;;;;;-1:-1:-1;;;;;15896:15:1;;;6411:100:0::2;::::0;::::2;15878:34:1::0;15948:15;;15928:18;;;15921:43;15813:18;;6411:100:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6398:10;:113:::0;;-1:-1:-1;;;;;;6398:113:0::2;-1:-1:-1::0;;;;;6398:113:0;;;::::2;::::0;;;::::2;::::0;;6554:4:::2;-1:-1:-1::0;6536:24:0;;;:9:::2;:24;::::0;;;;;6522:69:::2;::::0;6562:21:::2;::::0;6522:13:::2;:69::i;:::-;6627:10;::::0;6612::::2;::::0;-1:-1:-1;;;;;6612:10:0::2;6602:21;::::0;;;:9:::2;:21;::::0;;;;:35;;:21;;;:35:::2;::::0;6627:10;;6602:35:::2;:::i;:::-;::::0;;;-1:-1:-1;;6668:10:0::2;::::0;6684:33:::2;::::0;;;;;::::2;::::0;::::2;::::0;;::::2;::::0;::::2;::::0;;-1:-1:-1;;;;;6684:33:0::2;-1:-1:-1::0;;;;;;6684:33:0::2;::::0;;6668:50;;6649:14:::2;::::0;-1:-1:-1;;;;;6668:10:0::2;::::0;:50:::2;::::0;::::2;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6648:70;;;6737:9;6729:45;;;::::0;-1:-1:-1;;;6729:45:0;;16469:2:1;6729:45:0::2;::::0;::::2;16451:21:1::0;16508:2;16488:18;;;16481:30;16547:25;16527:18;;;16520:53;16590:18;;6729:45:0::2;16267:347:1::0;6729:45:0::2;6791:10;::::0;-1:-1:-1;;;;;6791:10:0::2;6785:17;::::0;;;:5:::2;:17;::::0;;;;:29;;-1:-1:-1;;6785:29:0::2;::::0;::::2;;::::0;;;::::2;::::0;;3812:10:::1;:18:::0;;-1:-1:-1;;3812:18:0::1;::::0;;6044:778::o;526:157::-;385:6;;-1:-1:-1;;;;;385:6:0;371:10;:20;363:58;;;;-1:-1:-1;;;363:58:0;;;;;;;:::i;:::-;610:6:::1;:17:::0;;-1:-1:-1;;;;;;610:17:0::1;-1:-1:-1::0;;;;;610:17:0;::::1;::::0;;::::1;::::0;;;644:30:::1;::::0;4811:51:1;;;644:30:0::1;::::0;4799:2:1;4784:18;644:30:0::1;;;;;;;526:157:::0;:::o;8972:277::-;9093:14;;9037:4;;;;9093:14;;9088:124;;;-1:-1:-1;9126:4:0;9088:124;;;-1:-1:-1;;;;;9153:14:0;;;;;;:6;:14;;;;;;;;:34;;;;-1:-1:-1;;;;;;9171:16:0;;;;;;:8;:16;;;;;;;;9153:34;9149:63;;;-1:-1:-1;9205:4:0;9230:11;8972:277;-1:-1:-1;;8972:277:0:o;7541:920::-;7629:4;-1:-1:-1;;;;;7654:20:0;;7646:62;;;;-1:-1:-1;;;7646:62:0;;17037:2:1;7646:62:0;;;17019:21:1;17076:2;17056:18;;;17049:30;17115:31;17095:18;;;17088:59;17164:18;;7646:62:0;16835:353:1;7646:62:0;7724:14;;;;7719:89;;-1:-1:-1;;;;;7750:14:0;;;;;;:6;:14;;;;;;;;:34;;;;-1:-1:-1;;;;;;7768:16:0;;;;;;:8;:16;;;;;;;;7750:34;7742:63;;;;-1:-1:-1;;;7742:63:0;;;;;;;:::i;:::-;7824:10;;;;;;;7823:11;:31;;;;-1:-1:-1;;;;;;7838:16:0;;;;;;:5;:16;;;;;;;;7823:31;:50;;;;-1:-1:-1;;;;;;7859:14:0;;;;;;:6;:14;;;;;;;;7858:15;7823:50;7818:82;;;7877:20;:18;:20::i;:::-;-1:-1:-1;;;;;7915:23:0;;7933:4;7915:23;;;;:53;;-1:-1:-1;;;;;;7942:26:0;;7963:4;7942:26;;7915:53;:73;;;;-1:-1:-1;7982:6:0;;-1:-1:-1;;;;;7972:16:0;;;7982:6;;7972:16;;7915:73;7910:179;;;8015:39;8028:6;8036:9;8047:6;8015:12;:39::i;:::-;8007:69;;;;-1:-1:-1;;;8007:69:0;;17395:2:1;8007:69:0;;;17377:21:1;17434:2;17414:18;;;17407:30;-1:-1:-1;;;17453:18:1;;;17446:47;17510:18;;8007:69:0;17193:341:1;8007:69:0;8099:18;8120:40;8134:6;8142:9;8153:6;8120:13;:40::i;:::-;8099:61;-1:-1:-1;8171:23:0;8197:19;8099:61;8197:6;:19;:::i;:::-;-1:-1:-1;;;;;8247:17:0;;;;;;:9;:17;;;;;;8171:45;;-1:-1:-1;8247:26:0;;8267:6;;8247:26;:::i;:::-;-1:-1:-1;;;;;8227:17:0;;;;;;:9;:17;;;;;:46;;;;8284:10;:24;;8298:10;;8227:17;8284:24;;8298:10;;8284:24;:::i;:::-;;;;-1:-1:-1;;;;;;;8342:20:0;;;;;;:9;:20;;;;;;:38;;8365:15;;8342:38;:::i;:::-;-1:-1:-1;;;;;8319:20:0;;;;;;;:9;:20;;;;;;;:61;;;;8396:35;;;;;;;;;;8424:6;1464:25:1;;1452:2;1437:18;;1318:177;8396:35:0;;;;;;;;-1:-1:-1;8449:4:0;;7541:920;-1:-1:-1;;;;;7541:920:0:o;13991:330::-;14121:53;;;;;;;;;;;-1:-1:-1;;;14121:53:0;;;;;;;;-1:-1:-1;;;;;14121:17:0;;14084:4;14121:17;;;:9;:17;;;;;;;:53;;14143:6;;14121:21;:53::i;:::-;-1:-1:-1;;;;;14101:17:0;;;;;;;:9;:17;;;;;;:73;;;;14208:20;;;;;;;:32;;14233:6;14208:24;:32::i;:::-;-1:-1:-1;;;;;14185:20:0;;;;;;;:9;:20;;;;;;;:55;;;;14256:35;;;;;;;;;;14284:6;1464:25:1;;1452:2;1437:18;;1318:177;14256:35:0;;;;;;;;-1:-1:-1;14309:4:0;13991:330;;;;;:::o;12653:366::-;12723:27;12738:11;12723:14;:27::i;:::-;12785:16;;;12799:1;12785:16;;;;;;;;12761:21;;12785:16;;;;;;;;;;-1:-1:-1;12785:16:0;12761:40;;12830:4;12812;12817:1;12812:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12812:23:0;;;:7;;;;;;;;;;:23;;;;12856:18;;:25;;;-1:-1:-1;;;12856:25:0;;;;:18;;;;;:23;;:25;;;;;12812:7;;12856:25;;;;;:18;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12846:4;12851:1;12846:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12846:35:0;;;:7;;;;;;;;;:35;12892:18;;:119;;-1:-1:-1;;;12892:119:0;;:18;;;:69;;:119;;12962:11;;12892:18;;12976:4;;12989;;12995:15;;12892:119;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12712:307;12653:366;:::o;13027:103::-;13089:16;;:33;;-1:-1:-1;;;;;13089:16:0;;;;:33;;;;;13115:6;;13089:16;:33;:16;:33;13115:6;13089:16;:33;;;;;;;;;;;;;;;;;;;;;13027:103;:::o;7306:227::-;7359:14;;;;7358:15;7350:48;;;;-1:-1:-1;;;7350:48:0;;14555:2:1;7350:48:0;;;14537:21:1;14594:2;14574:18;;;14567:30;-1:-1:-1;;;14613:18:1;;;14606:50;14673:18;;7350:48:0;14353:344:1;7350:48:0;7442:3;2605:10;2548:1;2605:2;:10;:::i;:::-;2591:25;;:10;:25;:::i;:::-;7428:11;;7438:1;7428:11;:::i;:::-;:17;;;;:::i;:::-;7409:12;:36;7490:3;2605:10;2548:1;2605:2;:10;:::i;:::-;2591:25;;:10;:25;:::i;:::-;7476:11;;7486:1;7476:11;:::i;:::-;:17;;;;:::i;:::-;7457:16;:36;7504:14;:21;;-1:-1:-1;;7504:21:0;7521:4;7504:21;;;7306:227::o;6830:383::-;6933:24;6960:6;-1:-1:-1;;;;;6960:6:0;6977:50;;;;-1:-1:-1;7022:1:0;6977:50;7037:28;7052:12;7037:14;:28::i;:::-;7076:18;;:129;;-1:-1:-1;;;7076:129:0;;7143:4;7076:129;;;18997:34:1;19047:18;;;19040:34;;;7076:18:0;19090::1;;;19083:34;;;19133:18;;;19126:34;-1:-1:-1;;;;;19197:15:1;;;19176:19;;;19169:44;7188:15:0;19229:19:1;;;19222:35;7076:18:0;;;;:34;;7118:13;;18931:19:1;;7076:129:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;11919:726::-;3779:10;:17;;-1:-1:-1;;3779:17:0;;;;;12010:10:::1;::::0;12059::::1;::::0;12036:33;::::1;::::0;::::1;::::0;:51:::1;;-1:-1:-1::0;12073:14:0::1;::::0;::::1;;12036:51;12031:607;;;12133:10;;12110:19;:33;12105:78;;-1:-1:-1::0;12170:10:0::1;::::0;12105:78:::1;12221:19:::0;12275:10:::1;2548:1;12275:2;:10;:::i;:::-;12259:13;:26;12255:221;;;12325:4;12307:24;::::0;;;:9:::1;:24;::::0;;;;:47;;12335:19;;12307:24;:47:::1;::::0;12335:19;;12307:47:::1;:::i;:::-;::::0;;;-1:-1:-1;12373:35:0::1;::::0;-1:-1:-1;12394:13:0;12373:20:::1;:35::i;:::-;12441:19;12427:10;;:33;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;12255:221:0::1;12520:21;12559:23:::0;;12556:71:::1;;12586:38;12604:19;12586:17;:38::i;:::-;12090:548;;12031:607;-1:-1:-1::0;3812:10:0;:18;;-1:-1:-1;;3812:18:0;;;11919:726::o;8469:495::-;8634:14;;8573:4;;8614;;8634:14;;:35;;;;-1:-1:-1;;;;;;8653:16:0;;;;;;:8;:16;;;;;;;;8652:17;8634:35;:59;;;;-1:-1:-1;;;;;;8674:19:0;;;;;;:8;:19;;;;;;;;8673:20;8634:59;8629:294;;;8733:12;;8716:14;:29;8711:201;;;-1:-1:-1;8769:5:0;8711:201;;;-1:-1:-1;;;;;8802:16:0;;;;;;:5;:16;;;;;;;;8801:17;:79;;;;-1:-1:-1;8863:16:0;;-1:-1:-1;;;;;8823:20:0;;;;;;:9;:20;;;;;;:37;;8846:14;;8823:37;:::i;:::-;:56;8801:79;8796:116;;;-1:-1:-1;8904:5:0;8940:16;8469:495;-1:-1:-1;;;;8469:495:0:o;9257:423::-;9408:14;;9354:7;;;;9408:14;;9407:15;;:33;;-1:-1:-1;;;;;;9426:14:0;;;;;;:6;:14;;;;;;;;9407:33;:54;;;-1:-1:-1;;;;;;9444:17:0;;;;;;:6;:17;;;;;;;;9407:54;9402:244;;;-1:-1:-1;9478:1:0;9402:244;;;-1:-1:-1;;;;;9503:13:0;;;;;;:5;:13;;;;;;;;9498:148;;;9542:11;;9556:3;;9533:20;;-1:-1:-1;;;9542:11:0;;;;9533:6;:20;:::i;:::-;:26;;;;:::i;:::-;9521:38;;9498:148;;;-1:-1:-1;;;;;9583:16:0;;;;;;:5;:16;;;;;;;;9578:68;;;9625:12;;9640:3;;9616:21;;-1:-1:-1;;;9625:12:0;;;;9616:6;:21;:::i;:::-;:27;;;;:::i;:::-;9604:39;9257:423;-1:-1:-1;;;;;9257:423:0:o;2190:240::-;2310:7;2371:12;2363:6;;;;2355:29;;;;-1:-1:-1;;;2355:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2406:5:0;;;2190:240::o;1766:98::-;1824:7;1851:5;1855:1;1851;:5;:::i;5728:308::-;5819:4;5799:26;;;;:11;:26;;;;;;;;3451:42;5799:43;;;;;;;;:58;-1:-1:-1;5794:235:0;;;5895:4;5875:26;;;;:11;:26;;;;;;;;3451:42;5875:43;;;;;;;;;;-1:-1:-1;;5875:63:0;;;;5958:59;;1464:25:1;;;3451:42:0;;5895:4;5958:59;;1437:18:1;5958:59:0;;;;;;;5794:235;5728:308;:::o;14:250:1:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:1;238:16;;231:27;14:250::o;269:396::-;418:2;407:9;400:21;381:4;450:6;444:13;493:6;488:2;477:9;473:18;466:34;509:79;581:6;576:2;565:9;561:18;556:2;548:6;544:15;509:79;:::i;:::-;649:2;628:15;-1:-1:-1;;624:29:1;609:45;;;;656:2;605:54;;269:396;-1:-1:-1;;269:396:1:o;670:131::-;-1:-1:-1;;;;;745:31:1;;735:42;;725:70;;791:1;788;781:12;806:315;874:6;882;935:2;923:9;914:7;910:23;906:32;903:52;;;951:1;948;941:12;903:52;990:9;977:23;1009:31;1034:5;1009:31;:::i;:::-;1059:5;1111:2;1096:18;;;;1083:32;;-1:-1:-1;;;806:315:1:o;1500:456::-;1577:6;1585;1593;1646:2;1634:9;1625:7;1621:23;1617:32;1614:52;;;1662:1;1659;1652:12;1614:52;1701:9;1688:23;1720:31;1745:5;1720:31;:::i;:::-;1770:5;-1:-1:-1;1827:2:1;1812:18;;1799:32;1840:33;1799:32;1840:33;:::i;:::-;1500:456;;1892:7;;-1:-1:-1;;;1946:2:1;1931:18;;;;1918:32;;1500:456::o;1961:247::-;2020:6;2073:2;2061:9;2052:7;2048:23;2044:32;2041:52;;;2089:1;2086;2079:12;2041:52;2128:9;2115:23;2147:31;2172:5;2147:31;:::i;2402:159::-;2469:20;;2529:6;2518:18;;2508:29;;2498:57;;2551:1;2548;2541:12;2498:57;2402:159;;;:::o;2566:256::-;2632:6;2640;2693:2;2681:9;2672:7;2668:23;2664:32;2661:52;;;2709:1;2706;2699:12;2661:52;2732:28;2750:9;2732:28;:::i;:::-;2722:38;;2779:37;2812:2;2801:9;2797:18;2779:37;:::i;:::-;2769:47;;2566:256;;;;;:::o;2827:367::-;2890:8;2900:6;2954:3;2947:4;2939:6;2935:17;2931:27;2921:55;;2972:1;2969;2962:12;2921:55;-1:-1:-1;2995:20:1;;3038:18;3027:30;;3024:50;;;3070:1;3067;3060:12;3024:50;3107:4;3099:6;3095:17;3083:29;;3167:3;3160:4;3150:6;3147:1;3143:14;3135:6;3131:27;3127:38;3124:47;3121:67;;;3184:1;3181;3174:12;3121:67;2827:367;;;;;:::o;3199:908::-;3330:6;3338;3346;3354;3362;3415:2;3403:9;3394:7;3390:23;3386:32;3383:52;;;3431:1;3428;3421:12;3383:52;3470:9;3457:23;3489:31;3514:5;3489:31;:::i;:::-;3539:5;-1:-1:-1;3595:2:1;3580:18;;3567:32;3618:18;3648:14;;;3645:34;;;3675:1;3672;3665:12;3645:34;3714:70;3776:7;3767:6;3756:9;3752:22;3714:70;:::i;:::-;3803:8;;-1:-1:-1;3688:96:1;-1:-1:-1;3891:2:1;3876:18;;3863:32;;-1:-1:-1;3907:16:1;;;3904:36;;;3936:1;3933;3926:12;3904:36;;3975:72;4039:7;4028:8;4017:9;4013:24;3975:72;:::i;:::-;3199:908;;;;-1:-1:-1;3199:908:1;;-1:-1:-1;4066:8:1;;3949:98;3199:908;-1:-1:-1;;;3199:908:1:o;4112:160::-;4177:20;;4233:13;;4226:21;4216:32;;4206:60;;4262:1;4259;4252:12;4277:383;4348:6;4356;4364;4417:2;4405:9;4396:7;4392:23;4388:32;4385:52;;;4433:1;4430;4423:12;4385:52;4472:9;4459:23;4491:31;4516:5;4491:31;:::i;:::-;4541:5;-1:-1:-1;4565:35:1;4596:2;4581:18;;4565:35;:::i;:::-;4555:45;;4619:35;4650:2;4639:9;4635:18;4619:35;:::i;:::-;4609:45;;4277:383;;;;;:::o;4873:163::-;4940:20;;5000:10;4989:22;;4979:33;;4969:61;;5026:1;5023;5016:12;5041:401;5123:6;5131;5139;5147;5200:3;5188:9;5179:7;5175:23;5171:33;5168:53;;;5217:1;5214;5207:12;5168:53;5240:28;5258:9;5240:28;:::i;:::-;5230:38;;5287:37;5320:2;5309:9;5305:18;5287:37;:::i;:::-;5277:47;;5343:37;5376:2;5365:9;5361:18;5343:37;:::i;:::-;5333:47;;5399:37;5432:2;5421:9;5417:18;5399:37;:::i;:::-;5389:47;;5041:401;;;;;;;:::o;5447:156::-;5513:20;;5573:4;5562:16;;5552:27;;5542:55;;5593:1;5590;5583:12;5608:252;5672:6;5680;5733:2;5721:9;5712:7;5708:23;5704:32;5701:52;;;5749:1;5746;5739:12;5701:52;5772:27;5789:9;5772:27;:::i;:::-;5762:37;;5818:36;5850:2;5839:9;5835:18;5818:36;:::i;5865:388::-;5933:6;5941;5994:2;5982:9;5973:7;5969:23;5965:32;5962:52;;;6010:1;6007;6000:12;5962:52;6049:9;6036:23;6068:31;6093:5;6068:31;:::i;:::-;6118:5;-1:-1:-1;6175:2:1;6160:18;;6147:32;6188:33;6147:32;6188:33;:::i;:::-;6240:7;6230:17;;;5865:388;;;;;:::o;6791:127::-;6852:10;6847:3;6843:20;6840:1;6833:31;6883:4;6880:1;6873:15;6907:4;6904:1;6897:15;6923:422;7012:1;7055:5;7012:1;7069:270;7090:7;7080:8;7077:21;7069:270;;;7149:4;7145:1;7141:6;7137:17;7131:4;7128:27;7125:53;;;7158:18;;:::i;:::-;7208:7;7198:8;7194:22;7191:55;;;7228:16;;;;7191:55;7307:22;;;;7267:15;;;;7069:270;;;7073:3;6923:422;;;;;:::o;7350:806::-;7399:5;7429:8;7419:80;;-1:-1:-1;7470:1:1;7484:5;;7419:80;7518:4;7508:76;;-1:-1:-1;7555:1:1;7569:5;;7508:76;7600:4;7618:1;7613:59;;;;7686:1;7681:130;;;;7593:218;;7613:59;7643:1;7634:10;;7657:5;;;7681:130;7718:3;7708:8;7705:17;7702:43;;;7725:18;;:::i;:::-;-1:-1:-1;;7781:1:1;7767:16;;7796:5;;7593:218;;7895:2;7885:8;7882:16;7876:3;7870:4;7867:13;7863:36;7857:2;7847:8;7844:16;7839:2;7833:4;7830:12;7826:35;7823:77;7820:159;;;-1:-1:-1;7932:19:1;;;7964:5;;7820:159;8011:34;8036:8;8030:4;8011:34;:::i;:::-;8081:6;8077:1;8073:6;8069:19;8060:7;8057:32;8054:58;;;8092:18;;:::i;:::-;8130:20;;7350:806;-1:-1:-1;;;7350:806:1:o;8161:140::-;8219:5;8248:47;8289:4;8279:8;8275:19;8269:4;8248:47;:::i;8306:168::-;8379:9;;;8410;;8427:15;;;8421:22;;8407:37;8397:71;;8448:18;;:::i;8479:340::-;8681:2;8663:21;;;8720:2;8700:18;;;8693:30;-1:-1:-1;;;8754:2:1;8739:18;;8732:46;8810:2;8795:18;;8479:340::o;8824:128::-;8891:9;;;8912:11;;;8909:37;;;8926:18;;:::i;8957:349::-;9159:2;9141:21;;;9198:2;9178:18;;;9171:30;9237:27;9232:2;9217:18;;9210:55;9297:2;9282:18;;8957:349::o;9663:217::-;9703:1;9729;9719:132;;9773:10;9768:3;9764:20;9761:1;9754:31;9808:4;9805:1;9798:15;9836:4;9833:1;9826:15;9719:132;-1:-1:-1;9865:9:1;;9663:217::o;9885:125::-;9950:9;;;9971:10;;;9968:36;;;9984:18;;:::i;11520:127::-;11581:10;11576:3;11572:20;11569:1;11562:31;11612:4;11609:1;11602:15;11636:4;11633:1;11626:15;11652:135;11691:3;11712:17;;;11709:43;;11732:18;;:::i;:::-;-1:-1:-1;11779:1:1;11768:13;;11652:135::o;13516:148::-;13604:4;13583:12;;;13597;;;13579:31;;13622:13;;13619:39;;;13638:18;;:::i;15410:251::-;15480:6;15533:2;15521:9;15512:7;15508:23;15504:32;15501:52;;;15549:1;15546;15539:12;15501:52;15581:9;15575:16;15600:31;15625:5;15600:31;:::i;15975:287::-;16104:3;16142:6;16136:13;16158:66;16217:6;16212:3;16205:4;16197:6;16193:17;16158:66;:::i;:::-;16240:16;;;;;15975:287;-1:-1:-1;;15975:287:1:o;17671:980::-;17933:4;17981:3;17970:9;17966:19;18012:6;18001:9;17994:25;18038:2;18076:6;18071:2;18060:9;18056:18;18049:34;18119:3;18114:2;18103:9;18099:18;18092:31;18143:6;18178;18172:13;18209:6;18201;18194:22;18247:3;18236:9;18232:19;18225:26;;18286:2;18278:6;18274:15;18260:29;;18307:1;18317:195;18331:6;18328:1;18325:13;18317:195;;;18396:13;;-1:-1:-1;;;;;18392:39:1;18380:52;;18487:15;;;;18452:12;;;;18428:1;18346:9;18317:195;;;-1:-1:-1;;;;;;;18568:32:1;;;;18563:2;18548:18;;18541:60;-1:-1:-1;;;18632:3:1;18617:19;18610:35;18529:3;17671:980;-1:-1:-1;;;17671:980:1:o;19268:306::-;19356:6;19364;19372;19425:2;19413:9;19404:7;19400:23;19396:32;19393:52;;;19441:1;19438;19431:12;19393:52;19470:9;19464:16;19454:26;;19520:2;19509:9;19505:18;19499:25;19489:35;;19564:2;19553:9;19549:18;19543:25;19533:35;;19268:306;;;;;:::o

Swarm Source

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