ETH Price: $3,485.19 (+2.07%)

Token

QueefBox (QB)
 

Overview

Max Total Supply

100,000,000 QB

Holders

134

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
106,408.286097723 QB

Value
$0.00
0xDEa3640ACb94A254C645FC500706480B25eAF96a
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:
QB

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-02-05
*/

/**
https://queefbox.io/

https://t.me/QueefBox
*/

// SPDX-License-Identifier: NOLICENSE
pragma solidity ^0.8.15;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint Liquidity);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}

library Address{
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}


contract QB is Context, IERC20, Ownable {
    using Address for address payable;
    
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    mapping (address => bool) isTimelockExempt;

    address[] private _excluded;
    bool public swapEnabled;
    bool private swapping;
    
    
    
    //Anti Dump
    bool public buyCooldownEnabled = false;
    uint8 public cooldownTimerInterval = 0;
    mapping (address => uint) private cooldownTimer;

    IRouter public router;
    address public pair;

    uint8 private constant _decimals = 9;
    uint256 private constant MAX = ~uint256(0);

    uint256 private _tTotal = 100_000_000 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    uint256 public swapTokensAtAmount = 200_001 * 10**9;
    uint256 public maxBuyLimit = 2_000_001  * 10**9;
    uint256 public maxSellLimit = 2_000_001 * 10**9;
    uint256 public maxWalletLimit = 2_000_001 * 10**9;
    
    bool public blacklistMode = true;
    mapping (address => bool) public isBlacklisted;

    bool public tradingOpen = false;
    uint256 launchBlock;

    uint256 gweiLimit = 1000 * (10 ** 9);
    uint256 gweiLimitBlocksAffected = 5;
    
    address public MarketingWallet = 0x28edd91Aa1F871af83cC4243E53DA38cD4485376;
    address public TeamWallet = 0x3322F081259079705b4ce3a92A0fcD42E2BD1209;
    address public DevWallet = 0x3322F081259079705b4ce3a92A0fcD42E2BD1209;

    string private constant _name = "QueefBox";
    string private constant _symbol = "QB";

    struct Taxes {
        uint256 Reflections;
        uint256 Marketing;
        uint256 Liquidity; 
        uint256 Team;
        uint256 Dev;
    }

    Taxes public buyTaxes = Taxes(0, 40, 0, 0, 0);
    Taxes public sellTaxes = Taxes(0, 40, 0, 0, 0);

    struct TotFeesPaidStruct{
        uint256 Reflections;
        uint256 Marketing;
        uint256 Liquidity; 
        uint256 Team;
        uint256 Dev;
    }
    
    TotFeesPaidStruct public totFeesPaid;

    struct valuesFromGetValues{
      uint256 rAmount;
      uint256 rTransferAmount;
      uint256 rReflections;
      uint256 rMarketing;
      uint256 rLiquidity;
      uint256 rTeam;
      uint256 rDev;
      uint256 tAmount;
      uint256 tTransferAmount;
      uint256 tReflections;
      uint256 tMarketing;
      uint256 tLiquidity;
      uint256 tTeam;
      uint256 tDev;
    }

    event FeesChanged();
    event UpdatedRouter(address oldRouter, address newRouter);

    modifier lockTheSwap {
        swapping = true;
        _;
        swapping = false;
    }

    constructor (address routerAddress) {
        IRouter _router = IRouter(routerAddress);
        address _pair = IFactory(_router.factory())
            .createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        
        excludeFromReward(pair);

        _tOwned[owner()] = _tTotal;
        _isExcluded[address(this)] = true;
        _isExcluded[owner()] = true;
        _isExcluded[MarketingWallet] = true;
        _isExcluded[TeamWallet] = true;
        _isExcluded[DevWallet] = true;

        _rOwned[owner()] = _rTotal;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[MarketingWallet] = true;
        _isExcludedFromFee[TeamWallet] = true;
        _isExcludedFromFee[DevWallet] = true;

        isTimelockExempt[address(this)] = true;
        isTimelockExempt[pair] = true;
        isTimelockExempt[owner()] = true;

        emit Transfer(address(0), owner(), _tTotal);
    }

    //std ERC20:
    function name() public pure returns (string memory) {
        return _name;
    }
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
    function decimals() public pure returns (uint8) {
        return _decimals;
    }

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

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[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;
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

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

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferReflections) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferReflections) {
            valuesFromGetValues memory s = _getValues(tAmount, true, false);
            return s.rAmount;
        } else {
            valuesFromGetValues memory s = _getValues(tAmount, true, false);
            return s.rTransferAmount;
        }
    }

    function EnableTrading() public onlyOwner {
        tradingOpen = true;
        launchBlock = block.number;
	swapEnabled = true;
    }

    // enable cooldown between trades
    function cooldownEnabled(bool _status, uint8 _interval) public onlyOwner {
        buyCooldownEnabled = _status;
        cooldownTimerInterval = _interval;
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount/currentRate;
    }

    //@Team kept original Reflections naming -> "reward" as in reflection
    function excludeFromReward(address account) public onlyOwner() {
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is not excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }


    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

    function setIsTimelockExempt(address holder, bool exempt) external onlyOwner {
        isTimelockExempt[holder] = exempt;
    }

    function setBuyTaxes(uint256 _Reflections, uint256 _Marketing, uint256 _Liquidity, uint256 _Team, uint256 _Dev) public onlyOwner {
       require(_Reflections+(_Marketing)+(_Liquidity)+(_Team)+(_Dev) <=60, "Buy Taxes cannot be higher than 60%");
       buyTaxes = Taxes(_Reflections,_Marketing,_Liquidity,_Team,_Dev);
        emit FeesChanged();
    }
    
    function setSellTaxes(uint256 _Reflections, uint256 _Marketing, uint256 _Liquidity, uint256 _Team, uint256 _Dev) public onlyOwner {
    require(_Reflections+(_Marketing)+(_Liquidity)+(_Team)+(_Dev) <=60, "Sell Taxes cannot be higher than 60%");
       sellTaxes = Taxes(_Reflections,_Marketing,_Liquidity,_Team,_Dev);
        emit FeesChanged();
    }

    function _reflectReflections(uint256 rReflections, uint256 tReflections) private {
        _rTotal -=rReflections;
        totFeesPaid.Reflections +=tReflections;
    }

    function _takeLiquidity(uint256 rLiquidity, uint256 tLiquidity) private {
        totFeesPaid.Liquidity +=tLiquidity;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tLiquidity;
        }
        _rOwned[address(this)] +=rLiquidity;
    }

    function _takeMarketing(uint256 rMarketing, uint256 tMarketing) private {
        totFeesPaid.Marketing +=tMarketing;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tMarketing;
        }
        _rOwned[address(this)] +=rMarketing;
    }
    
    function _takeTeam(uint256 rTeam, uint256 tTeam) private {
        totFeesPaid.Team +=tTeam;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tTeam;
        }
        _rOwned[address(this)] +=rTeam;
    }

    function _takeDev(uint256 rDev, uint256 tDev) private {
        totFeesPaid.Dev +=tDev;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tDev;
        }
        _rOwned[address(this)] +=rDev;
    }
    
    
    function _getValues(uint256 tAmount, bool takeFee, bool isSell) private view returns (valuesFromGetValues memory to_return) {
        to_return = _getTValues(tAmount, takeFee, isSell);
        (to_return.rAmount, to_return.rTransferAmount, to_return.rReflections, to_return.rMarketing, to_return.rLiquidity, to_return.rTeam, to_return.rDev) = _getRValues(to_return, tAmount, takeFee, _getRate());
        return to_return;
    }

    function _getTValues(uint256 tAmount, bool takeFee, bool isSell) private view returns (valuesFromGetValues memory s) {

        if(!takeFee) {
          s.tTransferAmount = tAmount;
          return s;
        }
        Taxes memory temp;
        if(isSell) temp = sellTaxes;
        else temp = buyTaxes;
        
        s.tReflections = tAmount*temp.Reflections/100;
        s.tMarketing = tAmount*temp.Marketing/100;
        s.tLiquidity = tAmount*temp.Liquidity/100;
        s.tTeam = tAmount*temp.Team/100;
        s.tDev = tAmount*temp.Dev/100;
        s.tTransferAmount = tAmount-s.tReflections-s.tMarketing-s.tLiquidity-s.tTeam-s.tDev;
        return s;
    }

    function _getRValues(valuesFromGetValues memory s, uint256 tAmount, bool takeFee, uint256 currentRate) private pure returns (uint256 rAmount, uint256 rTransferAmount, uint256 rReflections,uint256 rMarketing, uint256 rLiquidity, uint256 rTeam, uint256 rDev){
        rAmount = tAmount*currentRate;

        if(!takeFee) {
          return(rAmount, rAmount, 0,0,0,0,0);
        }

        rReflections = s.tReflections*currentRate;
        rMarketing = s.tMarketing*currentRate;
        rLiquidity = s.tLiquidity*currentRate;
        rTeam = s.tTeam*currentRate;
        rDev = s.tDev*currentRate;
        rTransferAmount =  rAmount-rReflections-rMarketing-rLiquidity-rTeam-rDev;
        return (rAmount, rTransferAmount, rReflections, rMarketing, rLiquidity, rTeam, rDev);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply/tSupply;
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply-_rOwned[_excluded[i]];
            tSupply = tSupply-_tOwned[_excluded[i]];
        }
        if (rSupply < _rTotal/_tTotal) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
    require(from != address(0), "ERC20: transfer from the zero address");
    require(to != address(0), "ERC20: transfer to the zero address");
    require(amount > 0, "Transfer amount must be greater than zero");
    require(amount <= balanceOf(from),"You are trying to transfer more than your balance");
    require(!isBlacklisted[from] && !isBlacklisted[to], "You are a bot");

    // Exclude wallet to wallet fees
    bool takeFee = true;
    if(from != pair && to != pair && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
        takeFee = false;
    }

    // Blacklist
    if(blacklistMode){
        require(!isBlacklisted[from] && !isBlacklisted[to],"Blacklisted");                
    }

    if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
        require(tradingOpen,"Trading not open yet");
        if(from == pair && launchBlock + gweiLimitBlocksAffected >= block.number && tx.gasprice >= gweiLimit){isBlacklisted[to] = true;}
    }
    
    if(from == pair && !_isExcludedFromFee[to] && !swapping){
        require(amount <= maxBuyLimit, "You are exceeding maxBuyLimit");
        require(balanceOf(to) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit");
    }
    
    if(from != pair && !_isExcludedFromFee[to] && !_isExcludedFromFee[from] && !swapping){
        require(amount <= maxSellLimit, "You are exceeding maxSellLimit");
        if(to != pair){
            require(balanceOf(to) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit");
        }
        if (from == pair &&
        buyCooldownEnabled &&
        !isTimelockExempt[to]) {
        require(cooldownTimer[to] < block.timestamp,"Please wait for 1min between two buys");
            cooldownTimer[to] = block.timestamp + cooldownTimerInterval;
        }
    }  
    
    bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;
    if(!swapping && swapEnabled && canSwap && from != pair && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
        if(to == pair)  swapAndLiquify(swapTokensAtAmount, sellTaxes);
        else  swapAndLiquify(swapTokensAtAmount, buyTaxes);
    }

    if(swapping || _isExcludedFromFee[from] || _isExcludedFromFee[to]) takeFee = false;
    
    _tokenTransfer(from, to, amount, takeFee, to == pair);
}


    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee, bool isSell) private {

        valuesFromGetValues memory s = _getValues(tAmount, takeFee, isSell);

        if (_isExcluded[sender] ) {  //from excluded
                _tOwned[sender] = _tOwned[sender]-tAmount;
        }
        if (_isExcluded[recipient]) { //to excluded
                _tOwned[recipient] = _tOwned[recipient]+s.tTransferAmount;
        }

        _rOwned[sender] = _rOwned[sender]-s.rAmount;
        _rOwned[recipient] = _rOwned[recipient]+s.rTransferAmount;
        
        if(s.rReflections > 0 || s.tReflections > 0) _reflectReflections(s.rReflections, s.tReflections);
        if(s.rLiquidity > 0 || s.tLiquidity > 0) {
            _takeLiquidity(s.rLiquidity,s.tLiquidity);
            emit Transfer(sender, address(this), s.tLiquidity + s.tMarketing + s.tTeam + s.tDev);
        }
        if(s.rMarketing > 0 || s.tMarketing > 0) _takeMarketing(s.rMarketing, s.tMarketing);
        if(s.rTeam > 0 || s.tTeam > 0) _takeTeam(s.rTeam, s.tTeam);
        if(s.rDev > 0 || s.tDev > 0) _takeDev(s.rDev, s.tDev);
        emit Transfer(sender, recipient, s.tTransferAmount);
        
    }

    function swapAndLiquify(uint256 contractBalance, Taxes memory temp) private lockTheSwap{
        uint256 denominator = (temp.Liquidity + temp.Marketing + temp.Team + temp.Dev) * 2;
        uint256 tokensToAddLiquidityWith = contractBalance * temp.Liquidity / denominator;
        uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

        uint256 initialBalance = address(this).balance;

        swapTokensForBNB(toSwap);

        uint256 deltaBalance = address(this).balance - initialBalance;
        uint256 unitBalance= deltaBalance / (denominator - temp.Liquidity);
        uint256 bnbToAddLiquidityWith = unitBalance * temp.Liquidity;

        if(bnbToAddLiquidityWith > 0){
            // Add Liquidity to pancake
            addLiquidity(tokensToAddLiquidityWith, bnbToAddLiquidityWith);
        }

        uint256 MarketingAmt = unitBalance * 2 * temp.Marketing;
        if(MarketingAmt > 0){
            payable(MarketingWallet).sendValue(MarketingAmt);
        }
        uint256 TeamAmt = unitBalance * 2 * temp.Team;
        if(TeamAmt > 0){
            payable(TeamWallet).sendValue(TeamAmt);
        }
        uint256 DevAmt = unitBalance * 2 * temp.Dev;
        if(DevAmt > 0){
            payable(DevWallet).sendValue(DevAmt);
        }
            
    }

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

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

    function swapTokensForBNB(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }
    
    
    function bulkExcludeFee(address[] memory accounts, bool state) external onlyOwner{
        for(uint256 i = 0; i < accounts.length; i++){
            _isExcludedFromFee[accounts[i]] = state;
        }
    }

    function updateMarketingWallet(address newWallet) external onlyOwner{
        MarketingWallet = newWallet;
    }
    
    function updateTeamWallet(address newWallet) external onlyOwner{
        TeamWallet = newWallet;
    }

    function updateDevWallet(address newWallet) external onlyOwner{
        DevWallet = newWallet;
    }
    
    function enable_blacklist(bool _status) public onlyOwner {
        blacklistMode = _status;
    }

    function manage_blacklist(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            isBlacklisted[addresses[i]] = status;
        }
    }

    function updateSwapTokensAtAmount(uint256 amount) external onlyOwner{
        swapTokensAtAmount = amount * 10**_decimals;
    }

    function updateSwapEnabled(bool _enabled) external onlyOwner{
        swapEnabled = _enabled;
    }
    
    function updateMaxTxLimit(uint256 maxBuy, uint256 maxSell) external onlyOwner{
        require(maxBuy * 10**_decimals >= _tTotal / 200, "Amount is less than 0.5% of total supply");
        require(maxSell * 10**_decimals >= _tTotal / 200, "Amount is less than 0.5% of total supply");
        maxBuyLimit = maxBuy * 10**decimals();
        maxSellLimit = maxSell * 10**decimals();
    }
    
    function updateMaxWalletlimit(uint256 amount) external onlyOwner{
        require(amount * 10**_decimals >= _tTotal / 200, "Amount is less than 0.5% of total supply");
        maxWalletLimit = amount * 10**decimals();
    }

    function updateRouterAndPair(address newRouter, address newPair) external onlyOwner{
        router = IRouter(newRouter);
        pair = newPair;
    }
    
    //Use this in case BNB are sent to the contract by mistake
    function rescueBNB(uint256 weiAmount) external onlyOwner{
        require(address(this).balance >= weiAmount, "insufficient BNB balance");
        payable(msg.sender).transfer(weiAmount);
    }
    

    function rescueAnyBEP20Tokens(address _tokenAddr, address _to, uint _amount) public onlyOwner {
        IERC20(_tokenAddr).transfer(_to, _amount);
    }

    receive() external payable{
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"routerAddress","type":"address"}],"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":[],"name":"FeesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldRouter","type":"address"},{"indexed":false,"internalType":"address","name":"newRouter","type":"address"}],"name":"UpdatedRouter","type":"event"},{"inputs":[],"name":"DevWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"MarketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TeamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkExcludeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTaxes","outputs":[{"internalType":"uint256","name":"Reflections","type":"uint256"},{"internalType":"uint256","name":"Marketing","type":"uint256"},{"internalType":"uint256","name":"Liquidity","type":"uint256"},{"internalType":"uint256","name":"Team","type":"uint256"},{"internalType":"uint256","name":"Dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_interval","type":"uint8"}],"name":"cooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferReflections","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueAnyBEP20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"Reflections","type":"uint256"},{"internalType":"uint256","name":"Marketing","type":"uint256"},{"internalType":"uint256","name":"Liquidity","type":"uint256"},{"internalType":"uint256","name":"Team","type":"uint256"},{"internalType":"uint256","name":"Dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Reflections","type":"uint256"},{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_Liquidity","type":"uint256"},{"internalType":"uint256","name":"_Team","type":"uint256"},{"internalType":"uint256","name":"_Dev","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTimelockExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Reflections","type":"uint256"},{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_Liquidity","type":"uint256"},{"internalType":"uint256","name":"_Team","type":"uint256"},{"internalType":"uint256","name":"_Dev","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"Reflections","type":"uint256"},{"internalType":"uint256","name":"Marketing","type":"uint256"},{"internalType":"uint256","name":"Liquidity","type":"uint256"},{"internalType":"uint256","name":"Team","type":"uint256"},{"internalType":"uint256","name":"Dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"}],"name":"updateMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletlimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526008805463ffff0000191690556200001f6009600a62000ab7565b6200002f906305f5e10062000ac7565b600c81905562000041905f1962000af5565b6200004e905f1962000b0b565b600d5565b5e65c8f4a00600e5566071afd8527ca00600f81905560108190556011556012805460ff1990811660011790915560148054909116905564e8d4a510006016556005601755601880546001600160a01b03199081167328edd91aa1f871af83cc4243e53da38cd448537617909155601980548216733322f081259079705b4ce3a92a0fcd42e2bd1209908117909155601a80549092161790556040805160a080820183525f8083526028602080850182905284860183905260608086018490526080958601849052601b849055601c839055601d849055601e849055601f8490558651948501875283855284820183905295840183905294830182905291909201829052918190556021919091556022819055602381905560245534801562000179575f80fd5b50604051620045be380380620045be8339810160408190526200019c9162000b21565b620001a7336200059d565b5f8190505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200020f919062000b21565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200025b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000281919062000b21565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002cc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002f2919062000b21565b600a80546001600160a01b038086166001600160a01b031992831617909255600b805492841692909116821790559091506200032e90620005ec565b600c5460025f620003465f546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120939093553083526005918290528220805460ff1916600190811790915591620003935f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055601854821681526005909352818320805485166001908117909155601954821684528284208054861682179055601a54909116835290822080549093168117909255600d549190620004195f546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120939093553083526004918290528220805460ff1916600190811790915591620004665f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790556018548216815260048452828120805486166001908117909155601954831682528382208054871682179055601a548316825283822080548716821790553082526006948590528382208054871682179055600b549092168152918220805490941681179093556200050c5f546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055620005455f546001600160a01b031690565b6001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c546040516200058c91815260200190565b60405180910390a350505062000b73565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f546001600160a01b031633146200064b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b0381165f9081526005602052604090205460ff1615620006b55760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640162000642565b6001600160a01b0381165f90815260016020526040902054156200070f576001600160a01b0381165f90815260016020526040902054620006f69062000774565b6001600160a01b0382165f908152600260205260409020555b6001600160a01b03165f818152600560205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b5f600d54821115620007dc5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840162000642565b5f620007e7620007fc565b9050620007f5818462000b49565b9392505050565b5f80806200080962000821565b90925090506200081a818362000b49565b9250505090565b600d54600c545f918291825b60075481101562000974578260015f6007848154811062000852576200085262000b5f565b5f9182526020808320909101546001600160a01b031683528201929092526040019020541180620008be57508160025f6007848154811062000898576200089862000b5f565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054115b15620008d557600d54600c54945094505050509091565b60015f60078381548110620008ee57620008ee62000b5f565b5f9182526020808320909101546001600160a01b031683528201929092526040019020546200091e908462000b0b565b925060025f6007838154811062000939576200093962000b5f565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205462000969908362000b0b565b91506001016200082d565b50600c54600d5462000987919062000b49565b8210156200099f57600d54600c549350935050509091565b90939092509050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620009fc57815f1904821115620009e057620009e0620009a8565b80851615620009ee57918102915b93841c9390800290620009c1565b509250929050565b5f8262000a145750600162000ab1565b8162000a2257505f62000ab1565b816001811462000a3b576002811462000a465762000a66565b600191505062000ab1565b60ff84111562000a5a5762000a5a620009a8565b50506001821b62000ab1565b5060208310610133831016604e8410600b841016171562000a8b575081810a62000ab1565b62000a978383620009bc565b805f190482111562000aad5762000aad620009a8565b0290505b92915050565b5f620007f560ff84168362000a04565b808202811582820484141762000ab15762000ab1620009a8565b634e487b7160e01b5f52601260045260245ffd5b5f8262000b065762000b0662000ae1565b500690565b8181038181111562000ab15762000ab1620009a8565b5f6020828403121562000b32575f80fd5b81516001600160a01b0381168114620007f5575f80fd5b5f8262000b5a5762000b5a62000ae1565b500490565b634e487b7160e01b5f52603260045260245ffd5b613a3d8062000b815f395ff3fe608060405260043610610374575f3560e01c806370a08231116101c8578063a8aa1b31116100fd578063dd62ed3e1161009d578063f66895a31161006d578063f66895a314610aa1578063f887ea4014610ac7578063fe575a8714610ae6578063ffb54a9914610b14575f80fd5b8063dd62ed3e14610a0a578063e2f4560514610a4e578063ea2f0b3714610a63578063f2fde38b14610a82575f80fd5b8063b115e4df116100d8578063b115e4df1461098e578063c791fc54146109ad578063d257b34f146109cc578063d8672e51146109eb575f80fd5b8063a8aa1b3114610931578063a9059cbb14610950578063aacebbe31461096f575f80fd5b80638da5cb5b11610168578063924de9b711610143578063924de9b7146108a357806395d89b41146108c25780639ba5e4d5146108ec578063a457c2d714610912575f80fd5b80638da5cb5b146108495780638e2839ff146108655780638e2eee8414610884575f80fd5b80637cb332bb116101a35780637cb332bb1461078c578063864701a5146107ab57806388f82020146107f9578063896648c114610830575f80fd5b806370a0823114610739578063715018a614610758578063722b62ad1461076c575f80fd5b8063437823ec116102a957806359759f611161024957806366a88d961161021957806366a88d96146106d7578063677a8870146106ec5780636aa5b37f1461070b5780636ddd171314610720575f80fd5b806359759f61146106655780635e562f3b14610684578063617fe0ed146106a3578063652e2f04146106c2575f80fd5b806347c230921161028457806347c23092146105d157806350db71fb146105f057806352390c021461060f5780635342acb41461062e575f80fd5b8063437823ec14610574578063441b1d30146105935780634549b039146105b2575f80fd5b80632d594567116103145780633685d419116102ef5780633685d419146104f8578063395093511461051757806340ac48d31461053657806340b28c2f14610555575f80fd5b80632d594567146104995780632d838119146104b8578063313ce567146104d7575f80fd5b80631816467f1161034f5780631816467f1461040e5780631d97b7cd1461042f57806323b872dd146104435780632598cdb214610462575f80fd5b806306fdde031461037f578063095ea7b3146103c157806318160ddd146103f0575f80fd5b3661037b57005b5f80fd5b34801561038a575f80fd5b506040805180820190915260088152670a2eacacacc84def60c31b60208201525b6040516103b89190613382565b60405180910390f35b3480156103cc575f80fd5b506103e06103db3660046133f2565b610b2d565b60405190151581526020016103b8565b3480156103fb575f80fd5b50600c545b6040519081526020016103b8565b348015610419575f80fd5b5061042d61042836600461341c565b610b6d565b005b34801561043a575f80fd5b5061042d610bc1565b34801561044e575f80fd5b506103e061045d366004613437565b610c0d565b34801561046d575f80fd5b50601854610481906001600160a01b031681565b6040516001600160a01b0390911681526020016103b8565b3480156104a4575f80fd5b5061042d6104b336600461348d565b610cbe565b3480156104c3575f80fd5b506104006104d23660046134c9565b610d1c565b3480156104e2575f80fd5b5060095b60405160ff90911681526020016103b8565b348015610503575f80fd5b5061042d61051236600461341c565b610d97565b348015610522575f80fd5b506103e06105313660046133f2565b610f3b565b348015610541575f80fd5b5061042d6105503660046134e0565b610f71565b348015610560575f80fd5b5061042d61056f366004613517565b61108e565b34801561057f575f80fd5b5061042d61058e36600461341c565b6110e5565b34801561059e575f80fd5b5061042d6105ad3660046134c9565b611131565b3480156105bd575f80fd5b506104006105cc366004613543565b6111d4565b3480156105dc575f80fd5b5061042d6105eb366004613437565b61125d565b3480156105fb575f80fd5b5061042d61060a366004613566565b6112fc565b34801561061a575f80fd5b5061042d61062936600461341c565b61134f565b348015610639575f80fd5b506103e061064836600461341c565b6001600160a01b03165f9081526004602052604090205460ff1690565b348015610670575f80fd5b5061042d61067f366004613592565b61149c565b34801561068f575f80fd5b5061042d61069e3660046135b2565b611581565b3480156106ae575f80fd5b506008546103e09062010000900460ff1681565b3480156106cd575f80fd5b5061040060105481565b3480156106e2575f80fd5b5061040060115481565b3480156106f7575f80fd5b50601954610481906001600160a01b031681565b348015610716575f80fd5b50610400600f5481565b34801561072b575f80fd5b506008546103e09060ff1681565b348015610744575f80fd5b5061040061075336600461341c565b6115bd565b348015610763575f80fd5b5061042d611619565b348015610777575f80fd5b506008546104e6906301000000900460ff1681565b348015610797575f80fd5b5061042d6107a636600461341c565b61164d565b3480156107b6575f80fd5b50601b54601c54601d54601e54601f546107d1949392919085565b604080519586526020860194909452928401919091526060830152608082015260a0016103b8565b348015610804575f80fd5b506103e061081336600461341c565b6001600160a01b03165f9081526005602052604090205460ff1690565b34801561083b575f80fd5b506012546103e09060ff1681565b348015610854575f80fd5b505f546001600160a01b0316610481565b348015610870575f80fd5b5061042d61087f3660046135e1565b611698565b34801561088f575f80fd5b5061042d61089e3660046136b3565b611720565b3480156108ae575f80fd5b5061042d6108bd3660046135b2565b6117ad565b3480156108cd575f80fd5b5060408051808201909152600281526128a160f11b60208201526103ab565b3480156108f7575f80fd5b506025546026546027546028546029546107d1949392919085565b34801561091d575f80fd5b506103e061092c3660046133f2565b6117e9565b34801561093c575f80fd5b50600b54610481906001600160a01b031681565b34801561095b575f80fd5b506103e061096a3660046133f2565b611883565b34801561097a575f80fd5b5061042d61098936600461341c565b61188f565b348015610999575f80fd5b50601a54610481906001600160a01b031681565b3480156109b8575f80fd5b5061042d6109c73660046134e0565b6118da565b3480156109d7575f80fd5b5061042d6109e63660046134c9565b6119f8565b3480156109f6575f80fd5b5061042d610a053660046134c9565b611a3d565b348015610a15575f80fd5b50610400610a24366004613517565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610a59575f80fd5b50610400600e5481565b348015610a6e575f80fd5b5061042d610a7d36600461341c565b611ac5565b348015610a8d575f80fd5b5061042d610a9c36600461341c565b611b0e565b348015610aac575f80fd5b506020546021546022546023546024546107d1949392919085565b348015610ad2575f80fd5b50600a54610481906001600160a01b031681565b348015610af1575f80fd5b506103e0610b0036600461341c565b60136020525f908152604090205460ff1681565b348015610b1f575f80fd5b506014546103e09060ff1681565b335f9081526003602090815260408083206001600160a01b03861684529091528120829055610b63610b5c3390565b8484611ba8565b5060015b92915050565b5f546001600160a01b03163314610b9f5760405162461bcd60e51b8152600401610b9690613732565b60405180910390fd5b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610bea5760405162461bcd60e51b8152600401610b9690613732565b60148054600160ff19918216811790925543601555600880549091169091179055565b5f610c19848484611ccb565b6001600160a01b0384165f90815260036020908152604080832033845290915290205482811015610c9d5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610b96565b610cb18533610cac868561377b565b611ba8565b60019150505b9392505050565b5f546001600160a01b03163314610ce75760405162461bcd60e51b8152600401610b9690613732565b6008805463ffff00001916620100009315159390930263ff000000191692909217630100000060ff9290921691909102179055565b5f600d54821115610d825760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b96565b5f610d8b6125be565b9050610cb7818461378e565b5f546001600160a01b03163314610dc05760405162461bcd60e51b8152600401610b9690613732565b6001600160a01b0381165f9081526005602052604090205460ff16610e275760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610b96565b5f5b600754811015610f3757816001600160a01b031660078281548110610e5057610e506137ad565b5f918252602090912001546001600160a01b031603610f2f5760078054610e799060019061377b565b81548110610e8957610e896137ad565b5f91825260209091200154600780546001600160a01b039092169183908110610eb457610eb46137ad565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556007805480610f0b57610f0b6137c1565b5f8281526020902081015f1990810180546001600160a01b03191690550190555050565b600101610e29565b5050565b335f8181526003602090815260408083206001600160a01b03871684529091528120549091610b63918590610cac9086906137d5565b5f546001600160a01b03163314610f9a5760405162461bcd60e51b8152600401610b9690613732565b603c818385610fa9888a6137d5565b610fb391906137d5565b610fbd91906137d5565b610fc791906137d5565b11156110215760405162461bcd60e51b815260206004820152602360248201527f4275792054617865732063616e6e6f7420626520686967686572207468616e2060448201526236302560e81b6064820152608401610b96565b6040805160a0810182528681526020810186905280820185905260608101849052608001829052601b869055601c859055601d849055601e839055601f829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de15905f90a15050505050565b5f546001600160a01b031633146110b75760405162461bcd60e51b8152600401610b9690613732565b600a80546001600160a01b039384166001600160a01b031991821617909155600b8054929093169116179055565b5f546001600160a01b0316331461110e5760405162461bcd60e51b8152600401610b9690613732565b6001600160a01b03165f908152600460205260409020805460ff19166001179055565b5f546001600160a01b0316331461115a5760405162461bcd60e51b8152600401610b9690613732565b804710156111aa5760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420424e422062616c616e636500000000000000006044820152606401610b96565b604051339082156108fc029083905f818181858888f19350505050158015610f37573d5f803e3d5ffd5b5f600c548311156112275760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b96565b81611243575f6112398460015f6125df565b519150610b679050565b5f6112508460015f6125df565b602001519150610b679050565b5f546001600160a01b031633146112865760405162461bcd60e51b8152600401610b9690613732565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303815f875af11580156112d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112f691906137e8565b50505050565b5f546001600160a01b031633146113255760405162461bcd60e51b8152600401610b9690613732565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146113785760405162461bcd60e51b8152600401610b9690613732565b6001600160a01b0381165f9081526005602052604090205460ff16156113e05760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b96565b6001600160a01b0381165f9081526001602052604090205415611437576001600160a01b0381165f9081526001602052604090205461141e90610d1c565b6001600160a01b0382165f908152600260205260409020555b6001600160a01b03165f818152600560205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b5f546001600160a01b031633146114c55760405162461bcd60e51b8152600401610b9690613732565b60c8600c546114d4919061378e565b6114e06009600a6138e3565b6114ea90846138f1565b10156115085760405162461bcd60e51b8152600401610b9690613908565b60c8600c54611517919061378e565b6115236009600a6138e3565b61152d90836138f1565b101561154b5760405162461bcd60e51b8152600401610b9690613908565b6115576009600a6138e3565b61156190836138f1565b600f556115706009600a6138e3565b61157a90826138f1565b6010555050565b5f546001600160a01b031633146115aa5760405162461bcd60e51b8152600401610b9690613732565b6012805460ff1916911515919091179055565b6001600160a01b0381165f9081526005602052604081205460ff16156115f857506001600160a01b03165f9081526002602052604090205490565b6001600160a01b0382165f90815260016020526040902054610b6790610d1c565b5f546001600160a01b031633146116425760405162461bcd60e51b8152600401610b9690613732565b61164b5f61262e565b565b5f546001600160a01b031633146116765760405162461bcd60e51b8152600401610b9690613732565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146116c15760405162461bcd60e51b8152600401610b9690613732565b5f5b825181101561171b578160045f8584815181106116e2576116e26137ad565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790556001016116c3565b505050565b5f546001600160a01b031633146117495760405162461bcd60e51b8152600401610b9690613732565b5f5b828110156112f6578160135f868685818110611769576117696137ad565b905060200201602081019061177e919061341c565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905560010161174b565b5f546001600160a01b031633146117d65760405162461bcd60e51b8152600401610b9690613732565b6008805460ff1916911515919091179055565b335f9081526003602090815260408083206001600160a01b03861684529091528120548281101561186a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b96565b6118793385610cac868561377b565b5060019392505050565b5f610b63338484611ccb565b5f546001600160a01b031633146118b85760405162461bcd60e51b8152600401610b9690613732565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146119035760405162461bcd60e51b8152600401610b9690613732565b603c818385611912888a6137d5565b61191c91906137d5565b61192691906137d5565b61193091906137d5565b111561198a5760405162461bcd60e51b8152602060048201526024808201527f53656c6c2054617865732063616e6e6f7420626520686967686572207468616e6044820152632036302560e01b6064820152608401610b96565b6040805160a08101825286815260208082018790528183018690526060820185905260809091018390528690556021859055602284905560238390556024829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de15905f90a15050505050565b5f546001600160a01b03163314611a215760405162461bcd60e51b8152600401610b9690613732565b611a2d6009600a6138e3565b611a3790826138f1565b600e5550565b5f546001600160a01b03163314611a665760405162461bcd60e51b8152600401610b9690613732565b60c8600c54611a75919061378e565b611a816009600a6138e3565b611a8b90836138f1565b1015611aa95760405162461bcd60e51b8152600401610b9690613908565b611ab56009600a6138e3565b611abf90826138f1565b60115550565b5f546001600160a01b03163314611aee5760405162461bcd60e51b8152600401610b9690613732565b6001600160a01b03165f908152600460205260409020805460ff19169055565b5f546001600160a01b03163314611b375760405162461bcd60e51b8152600401610b9690613732565b6001600160a01b038116611b9c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b96565b611ba58161262e565b50565b6001600160a01b038316611c0a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b96565b6001600160a01b038216611c6b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b96565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d2f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b96565b6001600160a01b038216611d915760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b96565b5f8111611df25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b96565b611dfb836115bd565b811115611e645760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610b96565b6001600160a01b0383165f9081526013602052604090205460ff16158015611ea457506001600160a01b0382165f9081526013602052604090205460ff16155b611ee05760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b6044820152606401610b96565b600b546001906001600160a01b03858116911614801590611f0f5750600b546001600160a01b03848116911614155b8015611f3357506001600160a01b0384165f9081526004602052604090205460ff16155b8015611f5757506001600160a01b0383165f9081526004602052604090205460ff16155b15611f5f57505f5b60125460ff1615611fe4576001600160a01b0384165f9081526013602052604090205460ff16158015611faa57506001600160a01b0383165f9081526013602052604090205460ff16155b611fe45760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610b96565b6001600160a01b0384165f9081526004602052604090205460ff1615801561202457506001600160a01b0383165f9081526004602052604090205460ff16155b156120d45760145460ff166120725760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610b96565b600b546001600160a01b03858116911614801561209e57504360175460155461209b91906137d5565b10155b80156120ac57506016543a10155b156120d4576001600160a01b0383165f908152601360205260409020805460ff191660011790555b600b546001600160a01b03858116911614801561210957506001600160a01b0383165f9081526004602052604090205460ff16155b801561211d5750600854610100900460ff16155b156121d957600f548211156121745760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610b96565b60115482612181856115bd565b61218b91906137d5565b11156121d95760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610b96565b600b546001600160a01b0385811691161480159061220f57506001600160a01b0383165f9081526004602052604090205460ff16155b801561223357506001600160a01b0384165f9081526004602052604090205460ff16155b80156122475750600854610100900460ff16155b1561240a5760105482111561229e5760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610b96565b600b546001600160a01b0384811691161461231857601154826122c0856115bd565b6122ca91906137d5565b11156123185760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610b96565b600b546001600160a01b03858116911614801561233d575060085462010000900460ff165b801561236157506001600160a01b0383165f9081526006602052604090205460ff16155b1561240a576001600160a01b0383165f9081526009602052604090205442116123da5760405162461bcd60e51b815260206004820152602560248201527f506c65617365207761697420666f7220316d696e206265747765656e2074776f604482015264206275797360d81b6064820152608401610b96565b6008546123f1906301000000900460ff16426137d5565b6001600160a01b0384165f908152600960205260409020555b5f600e54612417306115bd565b6008549111159150610100900460ff16158015612436575060085460ff165b801561243f5750805b80156124595750600b546001600160a01b03868116911614155b801561247d57506001600160a01b0385165f9081526004602052604090205460ff16155b80156124a157506001600160a01b0384165f9081526004602052604090205460ff16155b1561253d57600b546001600160a01b03908116908516036124ff57600e546040805160a0810182526020805482526021549082015260225491810191909152602354606082015260245460808201526124fa919061267d565b61253d565b600e546040805160a081018252601b548152601c546020820152601d5491810191909152601e546060820152601f54608082015261253d919061267d565b600854610100900460ff168061256a57506001600160a01b0385165f9081526004602052604090205460ff165b8061258c57506001600160a01b0384165f9081526004602052604090205460ff165b15612595575f91505b600b546125b79086908690869086906001600160a01b03808516911614612817565b5050505050565b5f805f6125c9612b15565b90925090506125d8818361378e565b9250505090565b6125e7613321565b6125f2848484612c85565b90506126078185856126026125be565b612e3d565b60c088015260a0870152608086015260608501526040840152602083015281529392505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6008805461ff00191661010017905560808101516060820151602083015160408401515f9392916126ad916137d5565b6126b791906137d5565b6126c191906137d5565b6126cc9060026138f1565b90505f818360400151856126e091906138f1565b6126ea919061378e565b90505f6126f7828661377b565b90504761270382612f11565b5f61270e824761377b565b90505f866040015186612721919061377b565b61272b908361378e565b90505f87604001518261273e91906138f1565b90508015612750576127508682613061565b60208801515f906127628460026138f1565b61276c91906138f1565b9050801561278a5760185461278a906001600160a01b03168261312b565b60608901515f9061279c8560026138f1565b6127a691906138f1565b905080156127c4576019546127c4906001600160a01b03168261312b565b60808a01515f906127d68660026138f1565b6127e091906138f1565b905080156127fe57601a546127fe906001600160a01b03168261312b565b50506008805461ff001916905550505050505050505050565b5f6128238484846125df565b6001600160a01b0387165f9081526005602052604090205490915060ff1615612882576001600160a01b0386165f9081526002602052604090205461286990859061377b565b6001600160a01b0387165f908152600260205260409020555b6001600160a01b0385165f9081526005602052604090205460ff16156128e3576101008101516001600160a01b0386165f908152600260205260409020546128ca91906137d5565b6001600160a01b0386165f908152600260205260409020555b80516001600160a01b0387165f90815260016020526040902054612907919061377b565b6001600160a01b038088165f908152600160209081526040808320949094558401519188168152919091205461293d91906137d5565b6001600160a01b0386165f90815260016020526040908190209190915581015115158061296e57505f816101200151115b15612986576129868160400151826101200151613240565b5f8160800151118061299c57505f816101600151115b15612a31576129b48160800151826101600151613273565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101a00151846101800151856101400151866101600151612a0b91906137d5565b612a1591906137d5565b612a1f91906137d5565b60405190815260200160405180910390a35b5f81606001511180612a4757505f816101400151115b15612a5f57612a5f81606001518261014001516132e5565b5f8160a001511180612a7557505f816101800151115b15612a8d57612a8d8160a001518261018001516132f9565b5f8160c001511180612aa357505f816101a00151115b15612abb57612abb8160c00151826101a0015161330d565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101000151604051612b0591815260200190565b60405180910390a3505050505050565b600d54600c545f918291825b600754811015612c54578260015f60078481548110612b4257612b426137ad565b5f9182526020808320909101546001600160a01b031683528201929092526040019020541180612baa57508160025f60078481548110612b8457612b846137ad565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054115b15612bc057600d54600c54945094505050509091565b60015f60078381548110612bd657612bd66137ad565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054612c04908461377b565b925060025f60078381548110612c1c57612c1c6137ad565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054612c4a908361377b565b9150600101612b21565b50600c54600d54612c65919061378e565b821015612c7c57600d54600c549350935050509091565b90939092509050565b612c8d613321565b82612c9f576101008101849052610cb7565b612ccc6040518060a001604052805f81526020015f81526020015f81526020015f81526020015f81525090565b8215612d0957506040805160a081018252602080548252602154908201526022549181019190915260235460608201526024546080820152612d3c565b506040805160a081018252601b548152601c546020820152601d5491810191909152601e546060820152601f5460808201525b8051606490612d4b90876138f1565b612d55919061378e565b6101208301526020810151606490612d6d90876138f1565b612d77919061378e565b6101408301526040810151606490612d8f90876138f1565b612d99919061378e565b6101608301526060810151606490612db190876138f1565b612dbb919061378e565b6101808301526080810151606490612dd390876138f1565b612ddd919061378e565b6101a08301819052610180830151610160840151610140850151610120860151612e07908a61377b565b612e11919061377b565b612e1b919061377b565b612e25919061377b565b612e2f919061377b565b610100830152509392505050565b5f808080808080612e4e888b6138f1565b965088612e6b57508594505f935083925082915081905080612f03565b878b6101200151612e7c91906138f1565b9450878b6101400151612e8f91906138f1565b9350878b6101600151612ea291906138f1565b9250878b6101800151612eb591906138f1565b9150878b6101a00151612ec891906138f1565b905080828486612ed8898c61377b565b612ee2919061377b565b612eec919061377b565b612ef6919061377b565b612f00919061377b565b95505b949950949992975094509450565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110612f4457612f446137ad565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612f9b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fbf9190613950565b81600181518110612fd257612fd26137ad565b6001600160a01b039283166020918202929092010152600a54612ff89130911684611ba8565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac947906130309085905f9086903090429060040161396b565b5f604051808303815f87803b158015613047575f80fd5b505af1158015613059573d5f803e3d5ffd5b505050505050565b600a546130799030906001600160a01b031684611ba8565b600a546001600160a01b031663f305d7198230855f806130a05f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015613106573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906125b791906139dc565b8047101561317b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610b96565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146131c4576040519150601f19603f3d011682016040523d82523d5f602084013e6131c9565b606091505b505090508061171b5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610b96565b81600d5f828254613251919061377b565b9091555050602580548291905f9061326a9084906137d5565b90915550505050565b8060256002015f82825461328791906137d5565b9091555050305f9081526005602052604090205460ff16156132c757305f90815260026020526040812080548392906132c19084906137d5565b90915550505b305f908152600160205260408120805484929061326a9084906137d5565b8060256001015f82825461328791906137d5565b8060256003015f82825461328791906137d5565b8060256004015f82825461328791906137d5565b604051806101c001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f602080835283518060208501525f5b818110156133ae57858101830151858201604001528201613392565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611ba5575f80fd5b80356133ed816133ce565b919050565b5f8060408385031215613403575f80fd5b823561340e816133ce565b946020939093013593505050565b5f6020828403121561342c575f80fd5b8135610cb7816133ce565b5f805f60608486031215613449575f80fd5b8335613454816133ce565b92506020840135613464816133ce565b929592945050506040919091013590565b8015158114611ba5575f80fd5b80356133ed81613475565b5f806040838503121561349e575f80fd5b82356134a981613475565b9150602083013560ff811681146134be575f80fd5b809150509250929050565b5f602082840312156134d9575f80fd5b5035919050565b5f805f805f60a086880312156134f4575f80fd5b505083359560208501359550604085013594606081013594506080013592509050565b5f8060408385031215613528575f80fd5b8235613533816133ce565b915060208301356134be816133ce565b5f8060408385031215613554575f80fd5b8235915060208301356134be81613475565b5f8060408385031215613577575f80fd5b8235613582816133ce565b915060208301356134be81613475565b5f80604083850312156135a3575f80fd5b50508035926020909101359150565b5f602082840312156135c2575f80fd5b8135610cb781613475565b634e487b7160e01b5f52604160045260245ffd5b5f80604083850312156135f2575f80fd5b823567ffffffffffffffff80821115613609575f80fd5b818501915085601f83011261361c575f80fd5b8135602082821115613630576136306135cd565b8160051b604051601f19603f83011681018181108682111715613655576136556135cd565b604052928352818301935084810182019289841115613672575f80fd5b948201945b8386101561369757613688866133e2565b85529482019493820193613677565b96506136a69050878201613482565b9450505050509250929050565b5f805f604084860312156136c5575f80fd5b833567ffffffffffffffff808211156136dc575f80fd5b818601915086601f8301126136ef575f80fd5b8135818111156136fd575f80fd5b8760208260051b8501011115613711575f80fd5b6020928301955093505084013561372781613475565b809150509250925092565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610b6757610b67613767565b5f826137a857634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b80820180821115610b6757610b67613767565b5f602082840312156137f8575f80fd5b8151610cb781613475565b600181815b8085111561383d57815f190482111561382357613823613767565b8085161561383057918102915b93841c9390800290613808565b509250929050565b5f8261385357506001610b67565b8161385f57505f610b67565b8160018114613875576002811461387f5761389b565b6001915050610b67565b60ff84111561389057613890613767565b50506001821b610b67565b5060208310610133831016604e8410600b84101617156138be575081810a610b67565b6138c88383613803565b805f19048211156138db576138db613767565b029392505050565b5f610cb760ff841683613845565b8082028115828204841417610b6757610b67613767565b60208082526028908201527f416d6f756e74206973206c657373207468616e20302e3525206f6620746f74616040820152676c20737570706c7960c01b606082015260800190565b5f60208284031215613960575f80fd5b8151610cb7816133ce565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156139bb5784516001600160a01b031683529383019391830191600101613996565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156139ee575f80fd5b835192506020840151915060408401519050925092509256fea26469706673582212200729b0608ccfe0c4f9630c262e6cf159f499cb7626fefc163e95fd3f541fae5064736f6c634300081800330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x608060405260043610610374575f3560e01c806370a08231116101c8578063a8aa1b31116100fd578063dd62ed3e1161009d578063f66895a31161006d578063f66895a314610aa1578063f887ea4014610ac7578063fe575a8714610ae6578063ffb54a9914610b14575f80fd5b8063dd62ed3e14610a0a578063e2f4560514610a4e578063ea2f0b3714610a63578063f2fde38b14610a82575f80fd5b8063b115e4df116100d8578063b115e4df1461098e578063c791fc54146109ad578063d257b34f146109cc578063d8672e51146109eb575f80fd5b8063a8aa1b3114610931578063a9059cbb14610950578063aacebbe31461096f575f80fd5b80638da5cb5b11610168578063924de9b711610143578063924de9b7146108a357806395d89b41146108c25780639ba5e4d5146108ec578063a457c2d714610912575f80fd5b80638da5cb5b146108495780638e2839ff146108655780638e2eee8414610884575f80fd5b80637cb332bb116101a35780637cb332bb1461078c578063864701a5146107ab57806388f82020146107f9578063896648c114610830575f80fd5b806370a0823114610739578063715018a614610758578063722b62ad1461076c575f80fd5b8063437823ec116102a957806359759f611161024957806366a88d961161021957806366a88d96146106d7578063677a8870146106ec5780636aa5b37f1461070b5780636ddd171314610720575f80fd5b806359759f61146106655780635e562f3b14610684578063617fe0ed146106a3578063652e2f04146106c2575f80fd5b806347c230921161028457806347c23092146105d157806350db71fb146105f057806352390c021461060f5780635342acb41461062e575f80fd5b8063437823ec14610574578063441b1d30146105935780634549b039146105b2575f80fd5b80632d594567116103145780633685d419116102ef5780633685d419146104f8578063395093511461051757806340ac48d31461053657806340b28c2f14610555575f80fd5b80632d594567146104995780632d838119146104b8578063313ce567146104d7575f80fd5b80631816467f1161034f5780631816467f1461040e5780631d97b7cd1461042f57806323b872dd146104435780632598cdb214610462575f80fd5b806306fdde031461037f578063095ea7b3146103c157806318160ddd146103f0575f80fd5b3661037b57005b5f80fd5b34801561038a575f80fd5b506040805180820190915260088152670a2eacacacc84def60c31b60208201525b6040516103b89190613382565b60405180910390f35b3480156103cc575f80fd5b506103e06103db3660046133f2565b610b2d565b60405190151581526020016103b8565b3480156103fb575f80fd5b50600c545b6040519081526020016103b8565b348015610419575f80fd5b5061042d61042836600461341c565b610b6d565b005b34801561043a575f80fd5b5061042d610bc1565b34801561044e575f80fd5b506103e061045d366004613437565b610c0d565b34801561046d575f80fd5b50601854610481906001600160a01b031681565b6040516001600160a01b0390911681526020016103b8565b3480156104a4575f80fd5b5061042d6104b336600461348d565b610cbe565b3480156104c3575f80fd5b506104006104d23660046134c9565b610d1c565b3480156104e2575f80fd5b5060095b60405160ff90911681526020016103b8565b348015610503575f80fd5b5061042d61051236600461341c565b610d97565b348015610522575f80fd5b506103e06105313660046133f2565b610f3b565b348015610541575f80fd5b5061042d6105503660046134e0565b610f71565b348015610560575f80fd5b5061042d61056f366004613517565b61108e565b34801561057f575f80fd5b5061042d61058e36600461341c565b6110e5565b34801561059e575f80fd5b5061042d6105ad3660046134c9565b611131565b3480156105bd575f80fd5b506104006105cc366004613543565b6111d4565b3480156105dc575f80fd5b5061042d6105eb366004613437565b61125d565b3480156105fb575f80fd5b5061042d61060a366004613566565b6112fc565b34801561061a575f80fd5b5061042d61062936600461341c565b61134f565b348015610639575f80fd5b506103e061064836600461341c565b6001600160a01b03165f9081526004602052604090205460ff1690565b348015610670575f80fd5b5061042d61067f366004613592565b61149c565b34801561068f575f80fd5b5061042d61069e3660046135b2565b611581565b3480156106ae575f80fd5b506008546103e09062010000900460ff1681565b3480156106cd575f80fd5b5061040060105481565b3480156106e2575f80fd5b5061040060115481565b3480156106f7575f80fd5b50601954610481906001600160a01b031681565b348015610716575f80fd5b50610400600f5481565b34801561072b575f80fd5b506008546103e09060ff1681565b348015610744575f80fd5b5061040061075336600461341c565b6115bd565b348015610763575f80fd5b5061042d611619565b348015610777575f80fd5b506008546104e6906301000000900460ff1681565b348015610797575f80fd5b5061042d6107a636600461341c565b61164d565b3480156107b6575f80fd5b50601b54601c54601d54601e54601f546107d1949392919085565b604080519586526020860194909452928401919091526060830152608082015260a0016103b8565b348015610804575f80fd5b506103e061081336600461341c565b6001600160a01b03165f9081526005602052604090205460ff1690565b34801561083b575f80fd5b506012546103e09060ff1681565b348015610854575f80fd5b505f546001600160a01b0316610481565b348015610870575f80fd5b5061042d61087f3660046135e1565b611698565b34801561088f575f80fd5b5061042d61089e3660046136b3565b611720565b3480156108ae575f80fd5b5061042d6108bd3660046135b2565b6117ad565b3480156108cd575f80fd5b5060408051808201909152600281526128a160f11b60208201526103ab565b3480156108f7575f80fd5b506025546026546027546028546029546107d1949392919085565b34801561091d575f80fd5b506103e061092c3660046133f2565b6117e9565b34801561093c575f80fd5b50600b54610481906001600160a01b031681565b34801561095b575f80fd5b506103e061096a3660046133f2565b611883565b34801561097a575f80fd5b5061042d61098936600461341c565b61188f565b348015610999575f80fd5b50601a54610481906001600160a01b031681565b3480156109b8575f80fd5b5061042d6109c73660046134e0565b6118da565b3480156109d7575f80fd5b5061042d6109e63660046134c9565b6119f8565b3480156109f6575f80fd5b5061042d610a053660046134c9565b611a3d565b348015610a15575f80fd5b50610400610a24366004613517565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610a59575f80fd5b50610400600e5481565b348015610a6e575f80fd5b5061042d610a7d36600461341c565b611ac5565b348015610a8d575f80fd5b5061042d610a9c36600461341c565b611b0e565b348015610aac575f80fd5b506020546021546022546023546024546107d1949392919085565b348015610ad2575f80fd5b50600a54610481906001600160a01b031681565b348015610af1575f80fd5b506103e0610b0036600461341c565b60136020525f908152604090205460ff1681565b348015610b1f575f80fd5b506014546103e09060ff1681565b335f9081526003602090815260408083206001600160a01b03861684529091528120829055610b63610b5c3390565b8484611ba8565b5060015b92915050565b5f546001600160a01b03163314610b9f5760405162461bcd60e51b8152600401610b9690613732565b60405180910390fd5b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610bea5760405162461bcd60e51b8152600401610b9690613732565b60148054600160ff19918216811790925543601555600880549091169091179055565b5f610c19848484611ccb565b6001600160a01b0384165f90815260036020908152604080832033845290915290205482811015610c9d5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610b96565b610cb18533610cac868561377b565b611ba8565b60019150505b9392505050565b5f546001600160a01b03163314610ce75760405162461bcd60e51b8152600401610b9690613732565b6008805463ffff00001916620100009315159390930263ff000000191692909217630100000060ff9290921691909102179055565b5f600d54821115610d825760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b96565b5f610d8b6125be565b9050610cb7818461378e565b5f546001600160a01b03163314610dc05760405162461bcd60e51b8152600401610b9690613732565b6001600160a01b0381165f9081526005602052604090205460ff16610e275760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610b96565b5f5b600754811015610f3757816001600160a01b031660078281548110610e5057610e506137ad565b5f918252602090912001546001600160a01b031603610f2f5760078054610e799060019061377b565b81548110610e8957610e896137ad565b5f91825260209091200154600780546001600160a01b039092169183908110610eb457610eb46137ad565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556007805480610f0b57610f0b6137c1565b5f8281526020902081015f1990810180546001600160a01b03191690550190555050565b600101610e29565b5050565b335f8181526003602090815260408083206001600160a01b03871684529091528120549091610b63918590610cac9086906137d5565b5f546001600160a01b03163314610f9a5760405162461bcd60e51b8152600401610b9690613732565b603c818385610fa9888a6137d5565b610fb391906137d5565b610fbd91906137d5565b610fc791906137d5565b11156110215760405162461bcd60e51b815260206004820152602360248201527f4275792054617865732063616e6e6f7420626520686967686572207468616e2060448201526236302560e81b6064820152608401610b96565b6040805160a0810182528681526020810186905280820185905260608101849052608001829052601b869055601c859055601d849055601e839055601f829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de15905f90a15050505050565b5f546001600160a01b031633146110b75760405162461bcd60e51b8152600401610b9690613732565b600a80546001600160a01b039384166001600160a01b031991821617909155600b8054929093169116179055565b5f546001600160a01b0316331461110e5760405162461bcd60e51b8152600401610b9690613732565b6001600160a01b03165f908152600460205260409020805460ff19166001179055565b5f546001600160a01b0316331461115a5760405162461bcd60e51b8152600401610b9690613732565b804710156111aa5760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420424e422062616c616e636500000000000000006044820152606401610b96565b604051339082156108fc029083905f818181858888f19350505050158015610f37573d5f803e3d5ffd5b5f600c548311156112275760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b96565b81611243575f6112398460015f6125df565b519150610b679050565b5f6112508460015f6125df565b602001519150610b679050565b5f546001600160a01b031633146112865760405162461bcd60e51b8152600401610b9690613732565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303815f875af11580156112d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112f691906137e8565b50505050565b5f546001600160a01b031633146113255760405162461bcd60e51b8152600401610b9690613732565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146113785760405162461bcd60e51b8152600401610b9690613732565b6001600160a01b0381165f9081526005602052604090205460ff16156113e05760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b96565b6001600160a01b0381165f9081526001602052604090205415611437576001600160a01b0381165f9081526001602052604090205461141e90610d1c565b6001600160a01b0382165f908152600260205260409020555b6001600160a01b03165f818152600560205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b5f546001600160a01b031633146114c55760405162461bcd60e51b8152600401610b9690613732565b60c8600c546114d4919061378e565b6114e06009600a6138e3565b6114ea90846138f1565b10156115085760405162461bcd60e51b8152600401610b9690613908565b60c8600c54611517919061378e565b6115236009600a6138e3565b61152d90836138f1565b101561154b5760405162461bcd60e51b8152600401610b9690613908565b6115576009600a6138e3565b61156190836138f1565b600f556115706009600a6138e3565b61157a90826138f1565b6010555050565b5f546001600160a01b031633146115aa5760405162461bcd60e51b8152600401610b9690613732565b6012805460ff1916911515919091179055565b6001600160a01b0381165f9081526005602052604081205460ff16156115f857506001600160a01b03165f9081526002602052604090205490565b6001600160a01b0382165f90815260016020526040902054610b6790610d1c565b5f546001600160a01b031633146116425760405162461bcd60e51b8152600401610b9690613732565b61164b5f61262e565b565b5f546001600160a01b031633146116765760405162461bcd60e51b8152600401610b9690613732565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146116c15760405162461bcd60e51b8152600401610b9690613732565b5f5b825181101561171b578160045f8584815181106116e2576116e26137ad565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790556001016116c3565b505050565b5f546001600160a01b031633146117495760405162461bcd60e51b8152600401610b9690613732565b5f5b828110156112f6578160135f868685818110611769576117696137ad565b905060200201602081019061177e919061341c565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905560010161174b565b5f546001600160a01b031633146117d65760405162461bcd60e51b8152600401610b9690613732565b6008805460ff1916911515919091179055565b335f9081526003602090815260408083206001600160a01b03861684529091528120548281101561186a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b96565b6118793385610cac868561377b565b5060019392505050565b5f610b63338484611ccb565b5f546001600160a01b031633146118b85760405162461bcd60e51b8152600401610b9690613732565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146119035760405162461bcd60e51b8152600401610b9690613732565b603c818385611912888a6137d5565b61191c91906137d5565b61192691906137d5565b61193091906137d5565b111561198a5760405162461bcd60e51b8152602060048201526024808201527f53656c6c2054617865732063616e6e6f7420626520686967686572207468616e6044820152632036302560e01b6064820152608401610b96565b6040805160a08101825286815260208082018790528183018690526060820185905260809091018390528690556021859055602284905560238390556024829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de15905f90a15050505050565b5f546001600160a01b03163314611a215760405162461bcd60e51b8152600401610b9690613732565b611a2d6009600a6138e3565b611a3790826138f1565b600e5550565b5f546001600160a01b03163314611a665760405162461bcd60e51b8152600401610b9690613732565b60c8600c54611a75919061378e565b611a816009600a6138e3565b611a8b90836138f1565b1015611aa95760405162461bcd60e51b8152600401610b9690613908565b611ab56009600a6138e3565b611abf90826138f1565b60115550565b5f546001600160a01b03163314611aee5760405162461bcd60e51b8152600401610b9690613732565b6001600160a01b03165f908152600460205260409020805460ff19169055565b5f546001600160a01b03163314611b375760405162461bcd60e51b8152600401610b9690613732565b6001600160a01b038116611b9c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b96565b611ba58161262e565b50565b6001600160a01b038316611c0a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b96565b6001600160a01b038216611c6b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b96565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d2f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b96565b6001600160a01b038216611d915760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b96565b5f8111611df25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b96565b611dfb836115bd565b811115611e645760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610b96565b6001600160a01b0383165f9081526013602052604090205460ff16158015611ea457506001600160a01b0382165f9081526013602052604090205460ff16155b611ee05760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b6044820152606401610b96565b600b546001906001600160a01b03858116911614801590611f0f5750600b546001600160a01b03848116911614155b8015611f3357506001600160a01b0384165f9081526004602052604090205460ff16155b8015611f5757506001600160a01b0383165f9081526004602052604090205460ff16155b15611f5f57505f5b60125460ff1615611fe4576001600160a01b0384165f9081526013602052604090205460ff16158015611faa57506001600160a01b0383165f9081526013602052604090205460ff16155b611fe45760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610b96565b6001600160a01b0384165f9081526004602052604090205460ff1615801561202457506001600160a01b0383165f9081526004602052604090205460ff16155b156120d45760145460ff166120725760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610b96565b600b546001600160a01b03858116911614801561209e57504360175460155461209b91906137d5565b10155b80156120ac57506016543a10155b156120d4576001600160a01b0383165f908152601360205260409020805460ff191660011790555b600b546001600160a01b03858116911614801561210957506001600160a01b0383165f9081526004602052604090205460ff16155b801561211d5750600854610100900460ff16155b156121d957600f548211156121745760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610b96565b60115482612181856115bd565b61218b91906137d5565b11156121d95760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610b96565b600b546001600160a01b0385811691161480159061220f57506001600160a01b0383165f9081526004602052604090205460ff16155b801561223357506001600160a01b0384165f9081526004602052604090205460ff16155b80156122475750600854610100900460ff16155b1561240a5760105482111561229e5760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610b96565b600b546001600160a01b0384811691161461231857601154826122c0856115bd565b6122ca91906137d5565b11156123185760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610b96565b600b546001600160a01b03858116911614801561233d575060085462010000900460ff165b801561236157506001600160a01b0383165f9081526006602052604090205460ff16155b1561240a576001600160a01b0383165f9081526009602052604090205442116123da5760405162461bcd60e51b815260206004820152602560248201527f506c65617365207761697420666f7220316d696e206265747765656e2074776f604482015264206275797360d81b6064820152608401610b96565b6008546123f1906301000000900460ff16426137d5565b6001600160a01b0384165f908152600960205260409020555b5f600e54612417306115bd565b6008549111159150610100900460ff16158015612436575060085460ff165b801561243f5750805b80156124595750600b546001600160a01b03868116911614155b801561247d57506001600160a01b0385165f9081526004602052604090205460ff16155b80156124a157506001600160a01b0384165f9081526004602052604090205460ff16155b1561253d57600b546001600160a01b03908116908516036124ff57600e546040805160a0810182526020805482526021549082015260225491810191909152602354606082015260245460808201526124fa919061267d565b61253d565b600e546040805160a081018252601b548152601c546020820152601d5491810191909152601e546060820152601f54608082015261253d919061267d565b600854610100900460ff168061256a57506001600160a01b0385165f9081526004602052604090205460ff165b8061258c57506001600160a01b0384165f9081526004602052604090205460ff165b15612595575f91505b600b546125b79086908690869086906001600160a01b03808516911614612817565b5050505050565b5f805f6125c9612b15565b90925090506125d8818361378e565b9250505090565b6125e7613321565b6125f2848484612c85565b90506126078185856126026125be565b612e3d565b60c088015260a0870152608086015260608501526040840152602083015281529392505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6008805461ff00191661010017905560808101516060820151602083015160408401515f9392916126ad916137d5565b6126b791906137d5565b6126c191906137d5565b6126cc9060026138f1565b90505f818360400151856126e091906138f1565b6126ea919061378e565b90505f6126f7828661377b565b90504761270382612f11565b5f61270e824761377b565b90505f866040015186612721919061377b565b61272b908361378e565b90505f87604001518261273e91906138f1565b90508015612750576127508682613061565b60208801515f906127628460026138f1565b61276c91906138f1565b9050801561278a5760185461278a906001600160a01b03168261312b565b60608901515f9061279c8560026138f1565b6127a691906138f1565b905080156127c4576019546127c4906001600160a01b03168261312b565b60808a01515f906127d68660026138f1565b6127e091906138f1565b905080156127fe57601a546127fe906001600160a01b03168261312b565b50506008805461ff001916905550505050505050505050565b5f6128238484846125df565b6001600160a01b0387165f9081526005602052604090205490915060ff1615612882576001600160a01b0386165f9081526002602052604090205461286990859061377b565b6001600160a01b0387165f908152600260205260409020555b6001600160a01b0385165f9081526005602052604090205460ff16156128e3576101008101516001600160a01b0386165f908152600260205260409020546128ca91906137d5565b6001600160a01b0386165f908152600260205260409020555b80516001600160a01b0387165f90815260016020526040902054612907919061377b565b6001600160a01b038088165f908152600160209081526040808320949094558401519188168152919091205461293d91906137d5565b6001600160a01b0386165f90815260016020526040908190209190915581015115158061296e57505f816101200151115b15612986576129868160400151826101200151613240565b5f8160800151118061299c57505f816101600151115b15612a31576129b48160800151826101600151613273565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101a00151846101800151856101400151866101600151612a0b91906137d5565b612a1591906137d5565b612a1f91906137d5565b60405190815260200160405180910390a35b5f81606001511180612a4757505f816101400151115b15612a5f57612a5f81606001518261014001516132e5565b5f8160a001511180612a7557505f816101800151115b15612a8d57612a8d8160a001518261018001516132f9565b5f8160c001511180612aa357505f816101a00151115b15612abb57612abb8160c00151826101a0015161330d565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101000151604051612b0591815260200190565b60405180910390a3505050505050565b600d54600c545f918291825b600754811015612c54578260015f60078481548110612b4257612b426137ad565b5f9182526020808320909101546001600160a01b031683528201929092526040019020541180612baa57508160025f60078481548110612b8457612b846137ad565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054115b15612bc057600d54600c54945094505050509091565b60015f60078381548110612bd657612bd66137ad565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054612c04908461377b565b925060025f60078381548110612c1c57612c1c6137ad565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054612c4a908361377b565b9150600101612b21565b50600c54600d54612c65919061378e565b821015612c7c57600d54600c549350935050509091565b90939092509050565b612c8d613321565b82612c9f576101008101849052610cb7565b612ccc6040518060a001604052805f81526020015f81526020015f81526020015f81526020015f81525090565b8215612d0957506040805160a081018252602080548252602154908201526022549181019190915260235460608201526024546080820152612d3c565b506040805160a081018252601b548152601c546020820152601d5491810191909152601e546060820152601f5460808201525b8051606490612d4b90876138f1565b612d55919061378e565b6101208301526020810151606490612d6d90876138f1565b612d77919061378e565b6101408301526040810151606490612d8f90876138f1565b612d99919061378e565b6101608301526060810151606490612db190876138f1565b612dbb919061378e565b6101808301526080810151606490612dd390876138f1565b612ddd919061378e565b6101a08301819052610180830151610160840151610140850151610120860151612e07908a61377b565b612e11919061377b565b612e1b919061377b565b612e25919061377b565b612e2f919061377b565b610100830152509392505050565b5f808080808080612e4e888b6138f1565b965088612e6b57508594505f935083925082915081905080612f03565b878b6101200151612e7c91906138f1565b9450878b6101400151612e8f91906138f1565b9350878b6101600151612ea291906138f1565b9250878b6101800151612eb591906138f1565b9150878b6101a00151612ec891906138f1565b905080828486612ed8898c61377b565b612ee2919061377b565b612eec919061377b565b612ef6919061377b565b612f00919061377b565b95505b949950949992975094509450565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110612f4457612f446137ad565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612f9b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fbf9190613950565b81600181518110612fd257612fd26137ad565b6001600160a01b039283166020918202929092010152600a54612ff89130911684611ba8565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac947906130309085905f9086903090429060040161396b565b5f604051808303815f87803b158015613047575f80fd5b505af1158015613059573d5f803e3d5ffd5b505050505050565b600a546130799030906001600160a01b031684611ba8565b600a546001600160a01b031663f305d7198230855f806130a05f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015613106573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906125b791906139dc565b8047101561317b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610b96565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146131c4576040519150601f19603f3d011682016040523d82523d5f602084013e6131c9565b606091505b505090508061171b5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610b96565b81600d5f828254613251919061377b565b9091555050602580548291905f9061326a9084906137d5565b90915550505050565b8060256002015f82825461328791906137d5565b9091555050305f9081526005602052604090205460ff16156132c757305f90815260026020526040812080548392906132c19084906137d5565b90915550505b305f908152600160205260408120805484929061326a9084906137d5565b8060256001015f82825461328791906137d5565b8060256003015f82825461328791906137d5565b8060256004015f82825461328791906137d5565b604051806101c001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f602080835283518060208501525f5b818110156133ae57858101830151858201604001528201613392565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611ba5575f80fd5b80356133ed816133ce565b919050565b5f8060408385031215613403575f80fd5b823561340e816133ce565b946020939093013593505050565b5f6020828403121561342c575f80fd5b8135610cb7816133ce565b5f805f60608486031215613449575f80fd5b8335613454816133ce565b92506020840135613464816133ce565b929592945050506040919091013590565b8015158114611ba5575f80fd5b80356133ed81613475565b5f806040838503121561349e575f80fd5b82356134a981613475565b9150602083013560ff811681146134be575f80fd5b809150509250929050565b5f602082840312156134d9575f80fd5b5035919050565b5f805f805f60a086880312156134f4575f80fd5b505083359560208501359550604085013594606081013594506080013592509050565b5f8060408385031215613528575f80fd5b8235613533816133ce565b915060208301356134be816133ce565b5f8060408385031215613554575f80fd5b8235915060208301356134be81613475565b5f8060408385031215613577575f80fd5b8235613582816133ce565b915060208301356134be81613475565b5f80604083850312156135a3575f80fd5b50508035926020909101359150565b5f602082840312156135c2575f80fd5b8135610cb781613475565b634e487b7160e01b5f52604160045260245ffd5b5f80604083850312156135f2575f80fd5b823567ffffffffffffffff80821115613609575f80fd5b818501915085601f83011261361c575f80fd5b8135602082821115613630576136306135cd565b8160051b604051601f19603f83011681018181108682111715613655576136556135cd565b604052928352818301935084810182019289841115613672575f80fd5b948201945b8386101561369757613688866133e2565b85529482019493820193613677565b96506136a69050878201613482565b9450505050509250929050565b5f805f604084860312156136c5575f80fd5b833567ffffffffffffffff808211156136dc575f80fd5b818601915086601f8301126136ef575f80fd5b8135818111156136fd575f80fd5b8760208260051b8501011115613711575f80fd5b6020928301955093505084013561372781613475565b809150509250925092565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610b6757610b67613767565b5f826137a857634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b80820180821115610b6757610b67613767565b5f602082840312156137f8575f80fd5b8151610cb781613475565b600181815b8085111561383d57815f190482111561382357613823613767565b8085161561383057918102915b93841c9390800290613808565b509250929050565b5f8261385357506001610b67565b8161385f57505f610b67565b8160018114613875576002811461387f5761389b565b6001915050610b67565b60ff84111561389057613890613767565b50506001821b610b67565b5060208310610133831016604e8410600b84101617156138be575081810a610b67565b6138c88383613803565b805f19048211156138db576138db613767565b029392505050565b5f610cb760ff841683613845565b8082028115828204841417610b6757610b67613767565b60208082526028908201527f416d6f756e74206973206c657373207468616e20302e3525206f6620746f74616040820152676c20737570706c7960c01b606082015260800190565b5f60208284031215613960575f80fd5b8151610cb7816133ce565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156139bb5784516001600160a01b031683529383019391830191600101613996565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156139ee575f80fd5b835192506020840151915060408401519050925092509256fea26469706673582212200729b0608ccfe0c4f9630c262e6cf159f499cb7626fefc163e95fd3f541fae5064736f6c63430008180033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

-----Decoded View---------------
Arg [0] : routerAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d


Deployed Bytecode Sourcemap

3256:22265:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7179:83;;;;;;;;;;-1:-1:-1;7249:5:0;;;;;;;;;;;;-1:-1:-1;;;7249:5:0;;;;7179:83;;;;;;;:::i;:::-;;;;;;;;7939:214;;;;;;;;;;-1:-1:-1;7939:214:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;7939:214:0;1162:187:1;7475:95:0;;;;;;;;;;-1:-1:-1;7555:7:0;;7475:95;;;1500:25:1;;;1488:2;1473:18;7475:95:0;1354:177:1;23556:102:0;;;;;;;;;;-1:-1:-1;23556:102:0;;;;;:::i;:::-;;:::i;:::-;;9976:138;;;;;;;;;;;;;:::i;8161:414::-;;;;;;;;;;-1:-1:-1;8161:414:0;;;;;:::i;:::-;;:::i;4709:75::-;;;;;;;;;;-1:-1:-1;4709:75:0;;;;-1:-1:-1;;;;;4709:75:0;;;;;;-1:-1:-1;;;;;2413:32:1;;;2395:51;;2383:2;2368:18;4709:75:0;2249:203:1;10161:164:0;;;;;;;;;;-1:-1:-1;10161:164:0;;;;;:::i;:::-;;:::i;10333:248::-;;;;;;;;;;-1:-1:-1;10333:248:0;;;;;:::i;:::-;;:::i;7361:83::-;;;;;;;;;;-1:-1:-1;4053:1:0;7361:83;;;3481:4:1;3469:17;;;3451:36;;3439:2;3424:18;7361:83:0;3309:184:1;11005:475:0;;;;;;;;;;-1:-1:-1;11005:475:0;;;;;:::i;:::-;;:::i;8583:207::-;;;;;;;;;;-1:-1:-1;8583:207:0;;;;;:::i;:::-;;:::i;11995:355::-;;;;;;;;;;-1:-1:-1;11995:355:0;;;;;:::i;:::-;;:::i;24882:154::-;;;;;;;;;;-1:-1:-1;24882:154:0;;;;;:::i;:::-;;:::i;11488:111::-;;;;;;;;;;-1:-1:-1;11488:111:0;;;;;:::i;:::-;;:::i;25112:196::-;;;;;;;;;;-1:-1:-1;25112:196:0;;;;;:::i;:::-;;:::i;9482:486::-;;;;;;;;;;-1:-1:-1;9482:486:0;;;;;:::i;:::-;;:::i;25322:154::-;;;;;;;;;;-1:-1:-1;25322:154:0;;;;;:::i;:::-;;:::i;11858:129::-;;;;;;;;;;-1:-1:-1;11858:129:0;;;;;:::i;:::-;;:::i;10664:333::-;;;;;;;;;;-1:-1:-1;10664:333:0;;;;;:::i;:::-;;:::i;11727:123::-;;;;;;;;;;-1:-1:-1;11727:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;11815:27:0;11791:4;11815:27;;;:18;:27;;;;;;;;;11727:123;24246:390;;;;;;;;;;-1:-1:-1;24246:390:0;;;;;:::i;:::-;;:::i;23670:99::-;;;;;;;;;;-1:-1:-1;23670:99:0;;;;;:::i;:::-;;:::i;3816:38::-;;;;;;;;;;-1:-1:-1;3816:38:0;;;;;;;;;;;4342:47;;;;;;;;;;;;;;;;4396:49;;;;;;;;;;;;;;;;4791:70;;;;;;;;;;-1:-1:-1;4791:70:0;;;;-1:-1:-1;;;;;4791:70:0;;;4288:47;;;;;;;;;;;;;;;;3723:23;;;;;;;;;;-1:-1:-1;3723:23:0;;;;;;;;7578:198;;;;;;;;;;-1:-1:-1;7578:198:0;;;;;:::i;:::-;;:::i;1685:94::-;;;;;;;;;;;;;:::i;3861:38::-;;;;;;;;;;-1:-1:-1;3861:38:0;;;;;;;;;;;23444:104;;;;;;;;;;-1:-1:-1;23444:104:0;;;;;:::i;:::-;;:::i;5203:45::-;;;;;;;;;;-1:-1:-1;5203:45:0;;;;;;;;;;;;;;;;;;;;;;5809:25:1;;;5865:2;5850:18;;5843:34;;;;5893:18;;;5886:34;;;;5951:2;5936:18;;5929:34;5994:3;5979:19;;5972:35;5796:3;5781:19;5203:45:0;5550:463:1;9354:120:0;;;;;;;;;;-1:-1:-1;9354:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;9446:20:0;9422:4;9446:20;;;:11;:20;;;;;;;;;9354:120;4458:32;;;;;;;;;;-1:-1:-1;4458:32:0;;;;;;;;1462:87;;;;;;;;;;-1:-1:-1;1508:7:0;1535:6;-1:-1:-1;;;;;1535:6:0;1462:87;;23101:209;;;;;;;;;;-1:-1:-1;23101:209:0;;;;;:::i;:::-;;:::i;23777:210::-;;;;;;;;;;-1:-1:-1;23777:210:0;;;;;:::i;:::-;;:::i;24133:101::-;;;;;;;;;;-1:-1:-1;24133:101:0;;;;;:::i;:::-;;:::i;7268:87::-;;;;;;;;;;-1:-1:-1;7340:7:0;;;;;;;;;;;;-1:-1:-1;;;7340:7:0;;;;7268:87;;5486:36;;;;;;;;;;-1:-1:-1;5486:36:0;;;;;;;;;;;;;;;;;;8798:369;;;;;;;;;;-1:-1:-1;8798:369:0;;;;;:::i;:::-;;:::i;3990:19::-;;;;;;;;;;-1:-1:-1;3990:19:0;;;;-1:-1:-1;;;;;3990:19:0;;;9179:167;;;;;;;;;;-1:-1:-1;9179:167:0;;;;;:::i;:::-;;:::i;23318:114::-;;;;;;;;;;-1:-1:-1;23318:114:0;;;;;:::i;:::-;;:::i;4868:69::-;;;;;;;;;;-1:-1:-1;4868:69:0;;;;-1:-1:-1;;;;;4868:69:0;;;12362:355;;;;;;;;;;-1:-1:-1;12362:355:0;;;;;:::i;:::-;;:::i;23995:130::-;;;;;;;;;;-1:-1:-1;23995:130:0;;;;;:::i;:::-;;:::i;24648:226::-;;;;;;;;;;-1:-1:-1;24648:226:0;;;;;:::i;:::-;;:::i;7788:143::-;;;;;;;;;;-1:-1:-1;7788:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7900:19:0;;;7872:7;7900:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;7788:143;4230:51;;;;;;;;;;;;;;;;11607:110;;;;;;;;;;-1:-1:-1;11607:110:0;;;;;:::i;:::-;;:::i;1787:192::-;;;;;;;;;;-1:-1:-1;1787:192:0;;;;;:::i;:::-;;:::i;5255:46::-;;;;;;;;;;-1:-1:-1;5255:46:0;;;;;;;;;;;;;;;;;;3962:21;;;;;;;;;;-1:-1:-1;3962:21:0;;;;-1:-1:-1;;;;;3962:21:0;;;4497:46;;;;;;;;;;-1:-1:-1;4497:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4552:31;;;;;;;;;;-1:-1:-1;4552:31:0;;;;;;;;7939:214;8044:10;8015:4;8032:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;8032:32:0;;;;;;;;;:41;;;8084:39;8093:12;963:10;;883:98;8093:12;8107:7;8116:6;8084:8;:39::i;:::-;-1:-1:-1;8141:4:0;7939:214;;;;;:::o;23556:102::-;1508:7;1535:6;-1:-1:-1;;;;;1535:6:0;963:10;1597:23;1589:68;;;;-1:-1:-1;;;1589:68:0;;;;;;;:::i;:::-;;;;;;;;;23629:9:::1;:21:::0;;-1:-1:-1;;;;;;23629:21:0::1;-1:-1:-1::0;;;;;23629:21:0;;;::::1;::::0;;;::::1;::::0;;23556:102::o;9976:138::-;1508:7;1535:6;-1:-1:-1;;;;;1535:6:0;963:10;1597:23;1589:68;;;;-1:-1:-1;;;1589:68:0;;;;;;;:::i;:::-;10029:11:::1;:18:::0;;10043:4:::1;-1:-1:-1::0;;10029:18:0;;::::1;::::0;::::1;::::0;;;10072:12:::1;10058:11;:26:::0;10088:11:::1;:18:::0;;;;::::1;::::0;;::::1;::::0;;9976:138::o;8161:414::-;8259:4;8276:36;8286:6;8294:9;8305:6;8276:9;:36::i;:::-;-1:-1:-1;;;;;8352:19:0;;8325:24;8352:19;;;:11;:19;;;;;;;;963:10;8352:33;;;;;;;;8404:26;;;;8396:79;;;;-1:-1:-1;;;8396:79:0;;8887:2:1;8396:79:0;;;8869:21:1;8926:2;8906:18;;;8899:30;8965:34;8945:18;;;8938:62;-1:-1:-1;;;9016:18:1;;;9009:38;9064:19;;8396:79:0;8685:404:1;8396:79:0;8486:57;8495:6;963:10;8517:25;8536:6;8517:16;:25;:::i;:::-;8486:8;:57::i;:::-;8563:4;8556:11;;;8161:414;;;;;;:::o;10161:164::-;1508:7;1535:6;-1:-1:-1;;;;;1535:6:0;963:10;1597:23;1589:68;;;;-1:-1:-1;;;1589:68:0;;;;;;;:::i;:::-;10245:18:::1;:28:::0;;-1:-1:-1;;10284:33:0;10245:28;;::::1;;::::0;;;::::1;-1:-1:-1::0;;10284:33:0;;;;;;10245:28:::1;10284:33:::0;;;::::1;::::0;;;::::1;;::::0;;10161:164::o;10333:248::-;10399:7;10438;;10427;:18;;10419:73;;;;-1:-1:-1;;;10419:73:0;;9561:2:1;10419:73:0;;;9543:21:1;9600:2;9580:18;;;9573:30;9639:34;9619:18;;;9612:62;-1:-1:-1;;;9690:18:1;;;9683:40;9740:19;;10419:73:0;9359:406:1;10419:73:0;10503:19;10526:10;:8;:10::i;:::-;10503:33;-1:-1:-1;10554:19:0;10503:33;10554:7;:19;:::i;11005:475::-;1508:7;1535:6;-1:-1:-1;;;;;1535:6:0;963:10;1597:23;1589:68;;;;-1:-1:-1;;;1589:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11087:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;11079:56;;;::::0;-1:-1:-1;;;11079:56:0;;10194:2:1;11079:56:0::1;::::0;::::1;10176:21:1::0;10233:2;10213:18;;;10206:30;10272:25;10252:18;;;10245:53;10315:18;;11079:56:0::1;9992:347:1::0;11079:56:0::1;11151:9;11146:327;11170:9;:16:::0;11166:20;::::1;11146:327;;;11228:7;-1:-1:-1::0;;;;;11212:23:0::1;:9;11222:1;11212:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;11212:12:0::1;:23:::0;11208:254:::1;;11271:9;11281:16:::0;;:20:::1;::::0;11300:1:::1;::::0;11281:20:::1;:::i;:::-;11271:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;11256:9:::1;:12:::0;;-1:-1:-1;;;;;11271:31:0;;::::1;::::0;11266:1;;11256:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;11256:46:0::1;-1:-1:-1::0;;;;;11256:46:0;;::::1;;::::0;;11321:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;11360:11:::1;:20:::0;;;;:28;;-1:-1:-1;;11360:28:0::1;::::0;;11407:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;11407:15:0;;;;;-1:-1:-1;;;;;;11407:15:0::1;::::0;;;;;11146:327:::1;11005:475:::0;:::o;11208:254::-:1;11188:3;;11146:327;;;;11005:475:::0;:::o;8583:207::-;963:10;8663:4;8712:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8712:34:0;;;;;;;;;;8663:4;;8680:80;;8703:7;;8712:47;;8749:10;;8712:47;:::i;11995:355::-;1508:7;1535:6;-1:-1:-1;;;;;1535:6:0;963:10;1597:23;1589:68;;;;-1:-1:-1;;;1589:68:0;;;;;;;:::i;:::-;12198:2:::1;12190:4:::0;12182:5;12169:10;12142:25:::1;12156:10:::0;12142:12;:25:::1;:::i;:::-;:38;;;;:::i;:::-;:46;;;;:::i;:::-;:53;;;;:::i;:::-;:58;;12134:106;;;::::0;-1:-1:-1;;;12134:106:0;;10940:2:1;12134:106:0::1;::::0;::::1;10922:21:1::0;10979:2;10959:18;;;10952:30;11018:34;10998:18;;;10991:62;-1:-1:-1;;;11069:18:1;;;11062:33;11112:19;;12134:106:0::1;10738:399:1::0;12134:106:0::1;12261:52;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;12250:8:::1;:63:::0;;;;;;;;;;;;;;;;;;;12329:13;::::1;::::0;-1:-1:-1;;12329:13:0::1;11995:355:::0;;;;;:::o;24882:154::-;1508:7;1535:6;-1:-1:-1;;;;;1535:6:0;963:10;1597:23;1589:68;;;;-1:-1:-1;;;1589:68:0;;;;;;;:::i;:::-;24976:6:::1;:27:::0;;-1:-1:-1;;;;;24976:27:0;;::::1;-1:-1:-1::0;;;;;;24976:27:0;;::::1;;::::0;;;25014:4:::1;:14:::0;;;;;::::1;::::0;::::1;;::::0;;24882:154::o;11488:111::-;1508:7;1535:6;-1:-1:-1;;;;;1535:6:0;963:10;1597:23;1589:68;;;;-1:-1:-1;;;1589:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11557:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;11557:34:0::1;11587:4;11557:34;::::0;;11488:111::o;25112:196::-;1508:7;1535:6;-1:-1:-1;;;;;1535:6:0;963:10;1597:23;1589:68;;;;-1:-1:-1;;;1589:68:0;;;;;;;:::i;:::-;25212:9:::1;25187:21;:34;;25179:71;;;::::0;-1:-1:-1;;;25179:71:0;;11344:2:1;25179:71:0::1;::::0;::::1;11326:21:1::0;11383:2;11363:18;;;11356:30;11422:26;11402:18;;;11395:54;11466:18;;25179:71:0::1;11142:348:1::0;25179:71:0::1;25261:39;::::0;25269:10:::1;::::0;25261:39;::::1;;;::::0;25290:9;;25261:39:::1;::::0;;;25290:9;25269:10;25261:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;9482:486:::0;9580:7;9619;;9608;:18;;9600:62;;;;-1:-1:-1;;;9600:62:0;;11697:2:1;9600:62:0;;;11679:21:1;11736:2;11716:18;;;11709:30;11775:33;11755:18;;;11748:61;11826:18;;9600:62:0;11495:355:1;9600:62:0;9678:25;9673:288;;9720:28;9751:32;9762:7;9771:4;9777:5;9751:10;:32::i;:::-;9805:9;;-1:-1:-1;9798:16:0;;-1:-1:-1;9798:16:0;9673:288;9847:28;9878:32;9889:7;9898:4;9904:5;9878:10;:32::i;:::-;9932:17;;;;-1:-1:-1;9925:24:0;;-1:-1:-1;9925:24:0;25322:154;1508:7;1535:6;-1:-1:-1;;;;;1535:6:0;963:10;1597:23;1589:68;;;;-1:-1:-1;;;1589:68:0;;;;;;;:::i;:::-;25427:41:::1;::::0;-1:-1:-1;;;25427:41:0;;-1:-1:-1;;;;;12047:32:1;;;25427:41:0::1;::::0;::::1;12029:51:1::0;12096:18;;;12089:34;;;25427:27:0;::::1;::::0;::::1;::::0;12002:18:1;;25427:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25322:154:::0;;;:::o;11858:129::-;1508:7;1535:6;-1:-1:-1;;;;;1535:6:0;963:10;1597:23;1589:68;;;;-1:-1:-1;;;1589:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11946:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;11946:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11858:129::o;10664:333::-;1508:7;1535:6;-1:-1:-1;;;;;1535:6:0;963:10;1597:23;1589:68;;;;-1:-1:-1;;;1589:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10747:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;10746:21;10738:61;;;::::0;-1:-1:-1;;;10738:61:0;;12586:2:1;10738:61:0::1;::::0;::::1;12568:21:1::0;12625:2;12605:18;;;12598:30;12664:29;12644:18;;;12637:57;12711:18;;10738:61:0::1;12384:351:1::0;10738:61:0::1;-1:-1:-1::0;;;;;10813:16:0;::::1;10832:1;10813:16:::0;;;:7:::1;:16;::::0;;;;;:20;10810:108:::1;;-1:-1:-1::0;;;;;10889:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;10869:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;10850:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;10810:108:::1;-1:-1:-1::0;;;;;10928:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;10928:27:0::1;10951:4;10928:27:::0;;::::1;::::0;;;10966:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;10966:23:0::1;::::0;;::::1;::::0;;10664:333::o;24246:390::-;1508:7;1535:6;-1:-1:-1;;;;;1535:6:0;963:10;1597:23;1589:68;;;;-1:-1:-1;;;1589:68:0;;;;;;;:::i;:::-;24378:3:::1;24368:7;;:13;;;;:::i;:::-;24351;4053:1;24351:2;:13;:::i;:::-;24342:22;::::0;:6;:22:::1;:::i;:::-;:39;;24334:92;;;;-1:-1:-1::0;;;24334:92:0::1;;;;;;;:::i;:::-;24482:3;24472:7;;:13;;;;:::i;:::-;24455;4053:1;24455:2;:13;:::i;:::-;24445:23;::::0;:7;:23:::1;:::i;:::-;:40;;24437:93;;;;-1:-1:-1::0;;;24437:93:0::1;;;;;;;:::i;:::-;24564:14;4053:1:::0;24564:2:::1;:14;:::i;:::-;24555:23;::::0;:6;:23:::1;:::i;:::-;24541:11;:37:::0;24614:14:::1;4053:1:::0;24614:2:::1;:14;:::i;:::-;24604:24;::::0;:7;:24:::1;:::i;:::-;24589:12;:39:::0;-1:-1:-1;;24246:390:0:o;23670:99::-;1508:7;1535:6;-1:-1:-1;;;;;1535:6:0;963:10;1597:23;1589:68;;;;-1:-1:-1;;;1589:68:0;;;;;;;:::i;:::-;23738:13:::1;:23:::0;;-1:-1:-1;;23738:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23670:99::o;7578:198::-;-1:-1:-1;;;;;7668:20:0;;7644:7;7668:20;;;:11;:20;;;;;;;;7664:49;;;-1:-1:-1;;;;;;7697:16:0;;;;;:7;:16;;;;;;;7578:198::o;7664:49::-;-1:-1:-1;;;;;7751:16:0;;;;;;:7;:16;;;;;;7731:37;;:19;:37::i;1685:94::-;1508:7;1535:6;-1:-1:-1;;;;;1535:6:0;963:10;1597:23;1589:68;;;;-1:-1:-1;;;1589:68:0;;;;;;;:::i;:::-;1750:21:::1;1768:1;1750:9;:21::i;:::-;1685:94::o:0;23444:104::-;1508:7;1535:6;-1:-1:-1;;;;;1535:6:0;963:10;1597:23;1589:68;;;;-1:-1:-1;;;1589:68:0;;;;;;;:::i;:::-;23518:10:::1;:22:::0;;-1:-1:-1;;;;;;23518:22:0::1;-1:-1:-1::0;;;;;23518:22:0;;;::::1;::::0;;;::::1;::::0;;23444:104::o;23101:209::-;1508:7;1535:6;-1:-1:-1;;;;;1535:6:0;963:10;1597:23;1589:68;;;;-1:-1:-1;;;1589:68:0;;;;;;;:::i;:::-;23197:9:::1;23193:110;23216:8;:15;23212:1;:19;23193:110;;;23286:5;23252:18;:31;23271:8;23280:1;23271:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;23252:31:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;23252:31:0;:39;;-1:-1:-1;;23252:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;23233:3:0::1;23193:110;;;;23101:209:::0;;:::o;23777:210::-;1508:7;1535:6;-1:-1:-1;;;;;1535:6:0;963:10;1597:23;1589:68;;;;-1:-1:-1;;;1589:68:0;;;;;;;:::i;:::-;23879:9:::1;23874:106;23890:20:::0;;::::1;23874:106;;;23962:6;23932:13;:27;23946:9;;23956:1;23946:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23932:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;23932:27:0;:36;;-1:-1:-1;;23932:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;23912:3:0::1;23874:106;;24133:101:::0;1508:7;1535:6;-1:-1:-1;;;;;1535:6:0;963:10;1597:23;1589:68;;;;-1:-1:-1;;;1589:68:0;;;;;;;:::i;:::-;24204:11:::1;:22:::0;;-1:-1:-1;;24204:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24133:101::o;8798:369::-;963:10;8883:4;8927:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8927:34:0;;;;;;;;;;8980:35;;;;8972:85;;;;-1:-1:-1;;;8972:85:0;;14901:2:1;8972:85:0;;;14883:21:1;14940:2;14920:18;;;14913:30;14979:34;14959:18;;;14952:62;-1:-1:-1;;;15030:18:1;;;15023:35;15075:19;;8972:85:0;14699:401:1;8972:85:0;9068:67;963:10;9091:7;9100:34;9119:15;9100:16;:34;:::i;9068:67::-;-1:-1:-1;9155:4:0;;8798:369;-1:-1:-1;;;8798:369:0:o;9179:167::-;9257:4;9278:40;9288:10;9300:9;9311:6;9278:9;:40::i;23318:114::-;1508:7;1535:6;-1:-1:-1;;;;;1535:6:0;963:10;1597:23;1589:68;;;;-1:-1:-1;;;1589:68:0;;;;;;;:::i;:::-;23397:15:::1;:27:::0;;-1:-1:-1;;;;;;23397:27:0::1;-1:-1:-1::0;;;;;23397:27:0;;;::::1;::::0;;;::::1;::::0;;23318:114::o;12362:355::-;1508:7;1535:6;-1:-1:-1;;;;;1535:6:0;963:10;1597:23;1589:68;;;;-1:-1:-1;;;1589:68:0;;;;;;;:::i;:::-;12563:2:::1;12555:4:::0;12547:5;12534:10;12507:25:::1;12521:10:::0;12507:12;:25:::1;:::i;:::-;:38;;;;:::i;:::-;:46;;;;:::i;:::-;:53;;;;:::i;:::-;:58;;12499:107;;;::::0;-1:-1:-1;;;12499:107:0;;15307:2:1;12499:107:0::1;::::0;::::1;15289:21:1::0;15346:2;15326:18;;;15319:30;15385:34;15365:18;;;15358:62;-1:-1:-1;;;15436:18:1;;;15429:34;15480:19;;12499:107:0::1;15105:400:1::0;12499:107:0::1;12628:52;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;12616:64;;;;;;;;;;;;;;;;;;;12696:13;::::1;::::0;-1:-1:-1;;12696:13:0::1;12362:355:::0;;;;;:::o;23995:130::-;1508:7;1535:6;-1:-1:-1;;;;;1535:6:0;963:10;1597:23;1589:68;;;;-1:-1:-1;;;1589:68:0;;;;;;;:::i;:::-;24104:13:::1;4053:1;24104:2;:13;:::i;:::-;24095:22;::::0;:6;:22:::1;:::i;:::-;24074:18;:43:::0;-1:-1:-1;23995:130:0:o;24648:226::-;1508:7;1535:6;-1:-1:-1;;;;;1535:6:0;963:10;1597:23;1589:68;;;;-1:-1:-1;;;1589:68:0;;;;;;;:::i;:::-;24767:3:::1;24757:7;;:13;;;;:::i;:::-;24740;4053:1;24740:2;:13;:::i;:::-;24731:22;::::0;:6;:22:::1;:::i;:::-;:39;;24723:92;;;;-1:-1:-1::0;;;24723:92:0::1;;;;;;;:::i;:::-;24852:14;4053:1:::0;24852:2:::1;:14;:::i;:::-;24843:23;::::0;:6;:23:::1;:::i;:::-;24826:14;:40:::0;-1:-1:-1;24648:226:0:o;11607:110::-;1508:7;1535:6;-1:-1:-1;;;;;1535:6:0;963:10;1597:23;1589:68;;;;-1:-1:-1;;;1589:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11674:27:0::1;11704:5;11674:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;11674:35:0::1;::::0;;11607:110::o;1787:192::-;1508:7;1535:6;-1:-1:-1;;;;;1535:6:0;963:10;1597:23;1589:68;;;;-1:-1:-1;;;1589:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1876:22:0;::::1;1868:73;;;::::0;-1:-1:-1;;;1868:73:0;;15712:2:1;1868:73:0::1;::::0;::::1;15694:21:1::0;15751:2;15731:18;;;15724:30;15790:34;15770:18;;;15763:62;-1:-1:-1;;;15841:18:1;;;15834:36;15887:19;;1868:73:0::1;15510:402:1::0;1868:73:0::1;1952:19;1962:8;1952:9;:19::i;:::-;1787:192:::0;:::o;16655:335::-;-1:-1:-1;;;;;16748:19:0;;16740:68;;;;-1:-1:-1;;;16740:68:0;;16119:2:1;16740:68:0;;;16101:21:1;16158:2;16138:18;;;16131:30;16197:34;16177:18;;;16170:62;-1:-1:-1;;;16248:18:1;;;16241:34;16292:19;;16740:68:0;15917:400:1;16740:68:0;-1:-1:-1;;;;;16827:21:0;;16819:68;;;;-1:-1:-1;;;16819:68:0;;16524:2:1;16819:68:0;;;16506:21:1;16563:2;16543:18;;;16536:30;16602:34;16582:18;;;16575:62;-1:-1:-1;;;16653:18:1;;;16646:32;16695:19;;16819:68:0;16322:398:1;16819:68:0;-1:-1:-1;;;;;16898:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16950:32;;1500:25:1;;;16950:32:0;;1473:18:1;16950:32:0;;;;;;;16655:335;;;:::o;16998:2385::-;-1:-1:-1;;;;;17082:18:0;;17074:68;;;;-1:-1:-1;;;17074:68:0;;16927:2:1;17074:68:0;;;16909:21:1;16966:2;16946:18;;;16939:30;17005:34;16985:18;;;16978:62;-1:-1:-1;;;17056:18:1;;;17049:35;17101:19;;17074:68:0;16725:401:1;17074:68:0;-1:-1:-1;;;;;17157:16:0;;17149:64;;;;-1:-1:-1;;;17149:64:0;;17333:2:1;17149:64:0;;;17315:21:1;17372:2;17352:18;;;17345:30;17411:34;17391:18;;;17384:62;-1:-1:-1;;;17462:18:1;;;17455:33;17505:19;;17149:64:0;17131:399:1;17149:64:0;17237:1;17228:6;:10;17220:64;;;;-1:-1:-1;;;17220:64:0;;17737:2:1;17220:64:0;;;17719:21:1;17776:2;17756:18;;;17749:30;17815:34;17795:18;;;17788:62;-1:-1:-1;;;17866:18:1;;;17859:39;17915:19;;17220:64:0;17535:405:1;17220:64:0;17309:15;17319:4;17309:9;:15::i;:::-;17299:6;:25;;17291:86;;;;-1:-1:-1;;;17291:86:0;;18147:2:1;17291:86:0;;;18129:21:1;18186:2;18166:18;;;18159:30;18225:34;18205:18;;;18198:62;-1:-1:-1;;;18276:18:1;;;18269:47;18333:19;;17291:86:0;17945:413:1;17291:86:0;-1:-1:-1;;;;;17393:19:0;;;;;;:13;:19;;;;;;;;17392:20;:42;;;;-1:-1:-1;;;;;;17417:17:0;;;;;;:13;:17;;;;;;;;17416:18;17392:42;17384:68;;;;-1:-1:-1;;;17384:68:0;;18565:2:1;17384:68:0;;;18547:21:1;18604:2;18584:18;;;18577:30;-1:-1:-1;;;18623:18:1;;;18616:43;18676:18;;17384:68:0;18363:337:1;17384:68:0;17536:4;;17514;;-1:-1:-1;;;;;17528:12:0;;;17536:4;;17528:12;;;;:26;;-1:-1:-1;17550:4:0;;-1:-1:-1;;;;;17544:10:0;;;17550:4;;17544:10;;17528:26;:55;;;;-1:-1:-1;;;;;;17559:24:0;;;;;;:18;:24;;;;;;;;17558:25;17528:55;:82;;;;-1:-1:-1;;;;;;17588:22:0;;;;;;:18;:22;;;;;;;;17587:23;17528:82;17525:120;;;-1:-1:-1;17632:5:0;17525:120;17674:13;;;;17671:117;;;-1:-1:-1;;;;;17708:19:0;;;;;;:13;:19;;;;;;;;17707:20;:42;;;;-1:-1:-1;;;;;;17732:17:0;;;;;;:13;:17;;;;;;;;17731:18;17707:42;17699:65;;;;-1:-1:-1;;;17699:65:0;;18907:2:1;17699:65:0;;;18889:21:1;18946:2;18926:18;;;18919:30;-1:-1:-1;;;18965:18:1;;;18958:41;19016:18;;17699:65:0;18705:335:1;17699:65:0;-1:-1:-1;;;;;17800:24:0;;;;;;:18;:24;;;;;;;;17799:25;:52;;;;-1:-1:-1;;;;;;17829:22:0;;;;;;:18;:22;;;;;;;;17828:23;17799:52;17796:256;;;17871:11;;;;17863:43;;;;-1:-1:-1;;;17863:43:0;;19247:2:1;17863:43:0;;;19229:21:1;19286:2;19266:18;;;19259:30;-1:-1:-1;;;19305:18:1;;;19298:50;19365:18;;17863:43:0;19045:344:1;17863:43:0;17928:4;;-1:-1:-1;;;;;17920:12:0;;;17928:4;;17920:12;:69;;;;;17977:12;17950:23;;17936:11;;:37;;;;:::i;:::-;:53;;17920:69;:97;;;;;18008:9;;17993:11;:24;;17920:97;17917:128;;;-1:-1:-1;;;;;18019:17:0;;;;;;:13;:17;;;;;:24;;-1:-1:-1;;18019:24:0;18039:4;18019:24;;;17917:128;18075:4;;-1:-1:-1;;;;;18067:12:0;;;18075:4;;18067:12;:39;;;;-1:-1:-1;;;;;;18084:22:0;;;;;;:18;:22;;;;;;;;18083:23;18067:39;:52;;;;-1:-1:-1;18111:8:0;;;;;;;18110:9;18067:52;18064:234;;;18149:11;;18139:6;:21;;18131:63;;;;-1:-1:-1;;;18131:63:0;;19596:2:1;18131:63:0;;;19578:21:1;19635:2;19615:18;;;19608:30;19674:31;19654:18;;;19647:59;19723:18;;18131:63:0;19394:353:1;18131:63:0;18239:14;;18229:6;18213:13;18223:2;18213:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;18205:85;;;;-1:-1:-1;;;18205:85:0;;19954:2:1;18205:85:0;;;19936:21:1;;;19973:18;;;19966:30;20032:34;20012:18;;;20005:62;20084:18;;18205:85:0;19752:356:1;18205:85:0;18321:4;;-1:-1:-1;;;;;18313:12:0;;;18321:4;;18313:12;;;;:39;;-1:-1:-1;;;;;;18330:22:0;;;;;;:18;:22;;;;;;;;18329:23;18313:39;:68;;;;-1:-1:-1;;;;;;18357:24:0;;;;;;:18;:24;;;;;;;;18356:25;18313:68;:81;;;;-1:-1:-1;18386:8:0;;;;;;;18385:9;18313:81;18310:579;;;18424:12;;18414:6;:22;;18406:65;;;;-1:-1:-1;;;18406:65:0;;20315:2:1;18406:65:0;;;20297:21:1;20354:2;20334:18;;;20327:30;20393:32;20373:18;;;20366:60;20443:18;;18406:65:0;20113:354:1;18406:65:0;18491:4;;-1:-1:-1;;;;;18485:10:0;;;18491:4;;18485:10;18482:126;;18545:14;;18535:6;18519:13;18529:2;18519:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;18511:85;;;;-1:-1:-1;;;18511:85:0;;19954:2:1;18511:85:0;;;19936:21:1;;;19973:18;;;19966:30;20032:34;20012:18;;;20005:62;20084:18;;18511:85:0;19752:356:1;18511:85:0;18630:4;;-1:-1:-1;;;;;18622:12:0;;;18630:4;;18622:12;:43;;;;-1:-1:-1;18647:18:0;;;;;;;18622:43;:77;;;;-1:-1:-1;;;;;;18679:20:0;;;;;;:16;:20;;;;;;;;18678:21;18622:77;18618:264;;;-1:-1:-1;;;;;18720:17:0;;;;;;:13;:17;;;;;;18740:15;-1:-1:-1;18712:84:0;;;;-1:-1:-1;;;18712:84:0;;20674:2:1;18712:84:0;;;20656:21:1;20713:2;20693:18;;;20686:30;20752:34;20732:18;;;20725:62;-1:-1:-1;;;20803:18:1;;;20796:35;20848:19;;18712:84:0;20472:401:1;18712:84:0;18849:21;;18831:39;;18849:21;;;;;18831:15;:39;:::i;:::-;-1:-1:-1;;;;;18811:17:0;;;;;;:13;:17;;;;;:59;18618:264;18903:12;18946:18;;18918:24;18936:4;18918:9;:24::i;:::-;18975:8;;-1:-1:-1;;18918:46:0;;-1:-1:-1;18975:8:0;;;;;18974:9;:24;;;;-1:-1:-1;18987:11:0;;;;18974:24;:35;;;;;19002:7;18974:35;:51;;;;-1:-1:-1;19021:4:0;;-1:-1:-1;;;;;19013:12:0;;;19021:4;;19013:12;;18974:51;:80;;;;-1:-1:-1;;;;;;19030:24:0;;;;;;:18;:24;;;;;;;;19029:25;18974:80;:107;;;;-1:-1:-1;;;;;;19059:22:0;;;;;;:18;:22;;;;;;;;19058:23;18974:107;18971:252;;;19102:4;;-1:-1:-1;;;;;19102:4:0;;;19096:10;;;;19093:122;;19124:18;;19109:45;;;;;;;;19144:9;19109:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19124:18;19109:14;:45::i;:::-;19093:122;;;19186:18;;19171:44;;;;;;;;19206:8;19171:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19186:18;19171:14;:44::i;:::-;19234:8;;;;;;;;:36;;-1:-1:-1;;;;;;19246:24:0;;;;;;:18;:24;;;;;;;;19234:36;:62;;;-1:-1:-1;;;;;;19274:22:0;;;;;;:18;:22;;;;;;;;19234:62;19231:82;;;19308:5;19298:15;;19231:82;19374:4;;19326:53;;19341:4;;19347:2;;19351:6;;19359:7;;-1:-1:-1;;;;;19368:10:0;;;19374:4;;19368:10;19326:14;:53::i;:::-;17067:2316;;16998:2385;;;:::o;15941:158::-;15982:7;16003:15;16020;16039:19;:17;:19::i;:::-;16002:56;;-1:-1:-1;16002:56:0;-1:-1:-1;16076:15:0;16002:56;;16076:15;:::i;:::-;16069:22;;;;15941:158;:::o;14009:432::-;14095:36;;:::i;:::-;14156:37;14168:7;14177;14186:6;14156:11;:37::i;:::-;14144:49;;14354:52;14366:9;14377:7;14386;14395:10;:8;:10::i;:::-;14354:11;:52::i;:::-;14336:14;;;14204:202;14319:15;;;14204:202;14297:20;;;14204:202;14275:20;;;14204:202;14251:22;;;14204:202;14224:25;;;14204:202;;;14009:432;;;;;:::o;1987:173::-;2043:16;2062:6;;-1:-1:-1;;;;;2079:17:0;;;-1:-1:-1;;;;;;2079:17:0;;;;;;2112:40;;2062:6;;;;;;;2112:40;;2043:16;2112:40;2032:128;1987:173;:::o;20698:1312::-;6061:8;:15;;-1:-1:-1;;6061:15:0;;;;;20865:8:::1;::::0;::::1;::::0;20853:9:::1;::::0;::::1;::::0;20836:14:::1;::::0;::::1;::::0;20819::::1;::::0;::::1;::::0;6061:15;;20865:8;20853:9;20819:31:::1;::::0;::::1;:::i;:::-;:43;;;;:::i;:::-;:54;;;;:::i;:::-;20818:60;::::0;20877:1:::1;20818:60;:::i;:::-;20796:82;;20889:32;20959:11;20942:4;:14;;;20924:15;:32;;;;:::i;:::-;:46;;;;:::i;:::-;20889:81:::0;-1:-1:-1;20981:14:0::1;20998:42;20889:81:::0;20998:15;:42:::1;:::i;:::-;20981:59:::0;-1:-1:-1;21078:21:0::1;21112:24;20981:59:::0;21112:16:::1;:24::i;:::-;21149:20;21172:38;21196:14:::0;21172:21:::1;:38;:::i;:::-;21149:61;;21221:19;21272:4;:14;;;21258:11;:28;;;;:::i;:::-;21242:45;::::0;:12;:45:::1;:::i;:::-;21221:66;;21298:29;21344:4;:14;;;21330:11;:28;;;;:::i;:::-;21298:60:::0;-1:-1:-1;21374:25:0;;21371:158:::1;;21456:61;21469:24;21495:21;21456:12;:61::i;:::-;21582:14;::::0;::::1;::::0;21541:20:::1;::::0;21564:15:::1;:11:::0;21578:1:::1;21564:15;:::i;:::-;:32;;;;:::i;:::-;21541:55:::0;-1:-1:-1;21610:16:0;;21607:95:::1;;21650:15;::::0;21642:48:::1;::::0;-1:-1:-1;;;;;21650:15:0::1;21677:12:::0;21642:34:::1;:48::i;:::-;21748:9;::::0;::::1;::::0;21712:15:::1;::::0;21730::::1;:11:::0;21744:1:::1;21730:15;:::i;:::-;:27;;;;:::i;:::-;21712:45:::0;-1:-1:-1;21771:11:0;;21768:80:::1;;21806:10;::::0;21798:38:::1;::::0;-1:-1:-1;;;;;21806:10:0::1;21828:7:::0;21798:29:::1;:38::i;:::-;21893:8;::::0;::::1;::::0;21858:14:::1;::::0;21875:15:::1;:11:::0;21889:1:::1;21875:15;:::i;:::-;:26;;;;:::i;:::-;21858:43:::0;-1:-1:-1;21915:10:0;;21912:77:::1;;21949:9;::::0;21941:36:::1;::::0;-1:-1:-1;;;;;21949:9:0::1;21970:6:::0;21941:28:::1;:36::i;:::-;-1:-1:-1::0;;6099:8:0;:16;;-1:-1:-1;;6099:16:0;;;-1:-1:-1;;;;;;;;;;20698:1312:0:o;19466:1224::-;19590:28;19621:36;19632:7;19641;19650:6;19621:10;:36::i;:::-;-1:-1:-1;;;;;19674:19:0;;;;;;:11;:19;;;;;;19590:67;;-1:-1:-1;19674:19:0;;19670:115;;;-1:-1:-1;;;;;19750:15:0;;;;;;:7;:15;;;;;;:23;;19766:7;;19750:23;:::i;:::-;-1:-1:-1;;;;;19732:15:0;;;;;;:7;:15;;;;;:41;19670:115;-1:-1:-1;;;;;19799:22:0;;;;;;:11;:22;;;;;;;;19795:130;;;19896:17;;;;-1:-1:-1;;;;;19877:18:0;;;;;;:7;:18;;;;;;:36;;19896:17;19877:36;:::i;:::-;-1:-1:-1;;;;;19856:18:0;;;;;;:7;:18;;;;;:57;19795:130;19971:9;;-1:-1:-1;;;;;19955:15:0;;19971:9;19955:15;;;:7;:15;;;;;;:25;;19971:9;19955:25;:::i;:::-;-1:-1:-1;;;;;19937:15:0;;;;;;;:7;:15;;;;;;;;:43;;;;20031:17;;;20012:18;;;;;;;;;;:36;;20031:17;20012:36;:::i;:::-;-1:-1:-1;;;;;19991:18:0;;;;;;:7;:18;;;;;;;:57;;;;20072:14;;;:18;;;:40;;;20111:1;20094;:14;;;:18;20072:40;20069:96;;;20114:51;20134:1;:14;;;20150:1;:14;;;20114:19;:51::i;:::-;20194:1;20179;:12;;;:16;:36;;;;20214:1;20199;:12;;;:16;20179:36;20176:208;;;20232:41;20247:1;:12;;;20260:1;:12;;;20232:14;:41::i;:::-;20318:4;-1:-1:-1;;;;;20293:79:0;20302:6;-1:-1:-1;;;;;20293:79:0;;20365:1;:6;;;20355:1;:7;;;20340:1;:12;;;20325:1;:12;;;:27;;;;:::i;:::-;:37;;;;:::i;:::-;:46;;;;:::i;:::-;20293:79;;1500:25:1;;;1488:2;1473:18;20293:79:0;;;;;;;20176:208;20412:1;20397;:12;;;:16;:36;;;;20432:1;20417;:12;;;:16;20397:36;20394:83;;;20435:42;20450:1;:12;;;20464:1;:12;;;20435:14;:42::i;:::-;20501:1;20491;:7;;;:11;:26;;;;20516:1;20506;:7;;;:11;20491:26;20488:58;;;20519:27;20529:1;:7;;;20538:1;:7;;;20519:9;:27::i;:::-;20569:1;20560;:6;;;:10;:24;;;;20583:1;20574;:6;;;:10;20560:24;20557:53;;;20586:24;20595:1;:6;;;20603:1;:6;;;20586:8;:24::i;:::-;20643:9;-1:-1:-1;;;;;20626:46:0;20635:6;-1:-1:-1;;;;;20626:46:0;;20654:1;:17;;;20626:46;;;;1500:25:1;;1488:2;1473:18;;1354:177;20626:46:0;;;;;;;;19577:1113;19466:1224;;;;;:::o;16107:540::-;16204:7;;16240;;16157;;;;;16258:279;16282:9;:16;16278:20;;16258:279;;;16348:7;16324;:21;16332:9;16342:1;16332:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16332:12:0;16324:21;;;;;;;;;;;;;:31;;:66;;;16383:7;16359;:21;16367:9;16377:1;16367:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16367:12:0;16359:21;;;;;;;;;;;;;:31;16324:66;16320:97;;;16400:7;;16409;;16392:25;;;;;;;16107:540;;:::o;16320:97::-;16450:7;:21;16458:9;16468:1;16458:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16458:12:0;16450:21;;;;;;;;;;;;;16442:29;;:7;:29;:::i;:::-;16432:39;;16504:7;:21;16512:9;16522:1;16512:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16512:12:0;16504:21;;;;;;;;;;;;;16496:29;;:7;:29;:::i;:::-;16486:39;-1:-1:-1;16300:3:0;;16258:279;;;;16569:7;;16561;;:15;;;;:::i;:::-;16551:7;:25;16547:56;;;16586:7;;16595;;16578:25;;;;;;16107:540;;:::o;16547:56::-;16622:7;;16631;;-1:-1:-1;16107:540:0;-1:-1:-1;16107:540:0:o;14449:685::-;14536:28;;:::i;:::-;14583:7;14579:86;;14605:17;;;:27;;;14645:8;;14579:86;14675:17;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14675:17:0;14706:6;14703:58;;;-1:-1:-1;14714:16:0;;;;;;;;14721:9;14714:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14703:58;;;-1:-1:-1;14746:15:0;;;;;;;;14753:8;14746:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14703:58;14807:16;;14824:3;;14799:24;;:7;:24;:::i;:::-;:28;;;;:::i;:::-;14782:14;;;:45;14861:14;;;;14876:3;;14853:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;14838:12;;;:41;14913:14;;;;14928:3;;14905:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;14890:12;;;:41;14960:9;;;;14970:3;;14952:17;;:7;:17;:::i;:::-;:21;;;;:::i;:::-;14942:7;;;:31;15001:8;;;;15010:3;;14993:16;;:7;:16;:::i;:::-;:20;;;;:::i;:::-;14984:6;;;:29;;;15093:7;;;;15080:12;;;;15067;;;;15052:14;;;;15044:22;;:7;:22;:::i;:::-;:35;;;;:::i;:::-;:48;;;;:::i;:::-;:56;;;;:::i;:::-;:63;;;;:::i;:::-;15024:17;;;:83;-1:-1:-1;14449:685:0;;;;;:::o;15142:791::-;15267:15;;;;;;;15419:19;15427:11;15419:7;:19;:::i;:::-;15409:29;;15455:7;15451:73;;-1:-1:-1;15484:7:0;;-1:-1:-1;15502:1:0;;-1:-1:-1;15502:1:0;;-1:-1:-1;15502:1:0;;-1:-1:-1;15502:1:0;;-1:-1:-1;15502:1:0;15477:35;;15451:73;15566:11;15551:1;:14;;;:26;;;;:::i;:::-;15536:41;;15614:11;15601:1;:12;;;:24;;;;:::i;:::-;15588:37;;15662:11;15649:1;:12;;;:24;;;;:::i;:::-;15636:37;;15700:11;15692:1;:7;;;:19;;;;:::i;:::-;15684:27;;15736:11;15729:1;:6;;;:18;;;;:::i;:::-;15722:25;-1:-1:-1;15722:25:0;15820:5;15809:10;15798;15777:20;15785:12;15777:7;:20;:::i;:::-;:31;;;;:::i;:::-;:42;;;;:::i;:::-;:48;;;;:::i;:::-;:53;;;;:::i;:::-;15758:72;;15142:791;;;;;;;;;;;;;:::o;22521:562::-;22671:16;;;22685:1;22671:16;;;;;;;;22647:21;;22671:16;;;;;;;;;;-1:-1:-1;22671:16:0;22647:40;;22716:4;22698;22703:1;22698:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22698:23:0;;;:7;;;;;;;;;;:23;;;;22742:6;;:13;;;-1:-1:-1;;;22742:13:0;;;;:6;;;;;:11;;:13;;;;;22698:7;;22742:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22732:4;22737:1;22732:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22732:23:0;;;:7;;;;;;;;;:23;22800:6;;22768:53;;22785:4;;22800:6;22809:11;22768:8;:53::i;:::-;22860:6;;:215;;-1:-1:-1;;;22860:215:0;;-1:-1:-1;;;;;22860:6:0;;;;:57;;:215;;22932:11;;22860:6;;23002:4;;23029;;23049:15;;22860:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22576:507;22521:562;:::o;22018:495::-;22198:6;;22166:53;;22183:4;;-1:-1:-1;;;;;22198:6:0;22207:11;22166:8;:53::i;:::-;22262:6;;-1:-1:-1;;;;;22262:6:0;:22;22292:9;22325:4;22345:11;22262:6;;22457:7;1508;1535:6;-1:-1:-1;;;;;1535:6:0;;1462:87;22457:7;22262:243;;;;;;-1:-1:-1;;;;;;22262:243:0;;;-1:-1:-1;;;;;22478:15:1;;;22262:243:0;;;22460:34:1;22510:18;;;22503:34;;;;22553:18;;;22546:34;;;;22596:18;;;22589:34;22660:15;;;22639:19;;;22632:44;22479:15:0;22692:19:1;;;22685:35;22394:19;;22262:243:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2930:317::-;3045:6;3020:21;:31;;3012:73;;;;-1:-1:-1;;;3012:73:0;;23244:2:1;3012:73:0;;;23226:21:1;23283:2;23263:18;;;23256:30;23322:31;23302:18;;;23295:59;23371:18;;3012:73:0;23042:353:1;3012:73:0;3099:12;3117:9;-1:-1:-1;;;;;3117:14:0;3139:6;3117:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3098:52;;;3169:7;3161:78;;;;-1:-1:-1;;;3161:78:0;;23812:2:1;3161:78:0;;;23794:21:1;23851:2;23831:18;;;23824:30;23890:34;23870:18;;;23863:62;23961:28;23941:18;;;23934:56;24007:19;;3161:78:0;23610:422:1;12725:171:0;12827:12;12817:7;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;12850:11:0;:38;;12876:12;;12850:11;:23;;:38;;12876:12;;12850:38;:::i;:::-;;;;-1:-1:-1;;;;12725:171:0:o;12904:284::-;13011:10;12987:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;13057:4:0;13037:26;;;;:11;:26;;;;;;;;13034:101;;;13105:4;13089:22;;;;:7;:22;;;;;:34;;13113:10;;13089:22;:34;;13113:10;;13089:34;:::i;:::-;;;;-1:-1:-1;;13034:101:0;13161:4;13145:22;;;;:7;:22;;;;;:35;;13170:10;;13145:22;:35;;13170:10;;13145:35;:::i;13196:284::-;13303:10;13279:11;:21;;;:34;;;;;;;:::i;13492:249::-;13579:5;13560:11;:16;;;:24;;;;;;;:::i;13749:242::-;13832:4;13814:11;:15;;;:22;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::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:134;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1536:247::-;1595:6;1648:2;1636:9;1627:7;1623:23;1619:32;1616:52;;;1664:1;1661;1654:12;1616:52;1703:9;1690:23;1722:31;1747:5;1722:31;:::i;1788:456::-;1865:6;1873;1881;1934:2;1922:9;1913:7;1909:23;1905:32;1902:52;;;1950:1;1947;1940:12;1902:52;1989:9;1976:23;2008:31;2033:5;2008:31;:::i;:::-;2058:5;-1:-1:-1;2115:2:1;2100:18;;2087:32;2128:33;2087:32;2128:33;:::i;:::-;1788:456;;2180:7;;-1:-1:-1;;;2234:2:1;2219:18;;;;2206:32;;1788:456::o;2457:118::-;2543:5;2536:13;2529:21;2522:5;2519:32;2509:60;;2565:1;2562;2555:12;2580:128;2645:20;;2674:28;2645:20;2674:28;:::i;2713:406::-;2776:6;2784;2837:2;2825:9;2816:7;2812:23;2808:32;2805:52;;;2853:1;2850;2843:12;2805:52;2892:9;2879:23;2911:28;2933:5;2911:28;:::i;:::-;2958:5;-1:-1:-1;3015:2:1;3000:18;;2987:32;3063:4;3050:18;;3038:31;;3028:59;;3083:1;3080;3073:12;3028:59;3106:7;3096:17;;;2713:406;;;;;:::o;3124:180::-;3183:6;3236:2;3224:9;3215:7;3211:23;3207:32;3204:52;;;3252:1;3249;3242:12;3204:52;-1:-1:-1;3275:23:1;;3124:180;-1:-1:-1;3124:180:1:o;3498:454::-;3593:6;3601;3609;3617;3625;3678:3;3666:9;3657:7;3653:23;3649:33;3646:53;;;3695:1;3692;3685:12;3646:53;-1:-1:-1;;3718:23:1;;;3788:2;3773:18;;3760:32;;-1:-1:-1;3839:2:1;3824:18;;3811:32;;3890:2;3875:18;;3862:32;;-1:-1:-1;3941:3:1;3926:19;3913:33;;-1:-1:-1;3498:454:1;-1:-1:-1;3498:454:1:o;3957:388::-;4025:6;4033;4086:2;4074:9;4065:7;4061:23;4057:32;4054:52;;;4102:1;4099;4092:12;4054:52;4141:9;4128:23;4160:31;4185:5;4160:31;:::i;:::-;4210:5;-1:-1:-1;4267:2:1;4252:18;;4239:32;4280:33;4239:32;4280:33;:::i;4350:309::-;4415:6;4423;4476:2;4464:9;4455:7;4451:23;4447:32;4444:52;;;4492:1;4489;4482:12;4444:52;4528:9;4515:23;4505:33;;4588:2;4577:9;4573:18;4560:32;4601:28;4623:5;4601:28;:::i;4664:382::-;4729:6;4737;4790:2;4778:9;4769:7;4765:23;4761:32;4758:52;;;4806:1;4803;4796:12;4758:52;4845:9;4832:23;4864:31;4889:5;4864:31;:::i;:::-;4914:5;-1:-1:-1;4971:2:1;4956:18;;4943:32;4984:30;4943:32;4984:30;:::i;5051:248::-;5119:6;5127;5180:2;5168:9;5159:7;5155:23;5151:32;5148:52;;;5196:1;5193;5186:12;5148:52;-1:-1:-1;;5219:23:1;;;5289:2;5274:18;;;5261:32;;-1:-1:-1;5051:248:1:o;5304:241::-;5360:6;5413:2;5401:9;5392:7;5388:23;5384:32;5381:52;;;5429:1;5426;5419:12;5381:52;5468:9;5455:23;5487:28;5509:5;5487:28;:::i;6018:127::-;6079:10;6074:3;6070:20;6067:1;6060:31;6110:4;6107:1;6100:15;6134:4;6131:1;6124:15;6150:1191;6240:6;6248;6301:2;6289:9;6280:7;6276:23;6272:32;6269:52;;;6317:1;6314;6307:12;6269:52;6357:9;6344:23;6386:18;6427:2;6419:6;6416:14;6413:34;;;6443:1;6440;6433:12;6413:34;6481:6;6470:9;6466:22;6456:32;;6526:7;6519:4;6515:2;6511:13;6507:27;6497:55;;6548:1;6545;6538:12;6497:55;6584:2;6571:16;6606:4;6629:2;6625;6622:10;6619:36;;;6635:18;;:::i;:::-;6681:2;6678:1;6674:10;6713:2;6707:9;6776:2;6772:7;6767:2;6763;6759:11;6755:25;6747:6;6743:38;6831:6;6819:10;6816:22;6811:2;6799:10;6796:18;6793:46;6790:72;;;6842:18;;:::i;:::-;6878:2;6871:22;6928:18;;;6962:15;;;;-1:-1:-1;7004:11:1;;;7000:20;;;7032:19;;;7029:39;;;7064:1;7061;7054:12;7029:39;7088:11;;;;7108:148;7124:6;7119:3;7116:15;7108:148;;;7190:23;7209:3;7190:23;:::i;:::-;7178:36;;7141:12;;;;7234;;;;7108:148;;;7275:6;-1:-1:-1;7300:35:1;;-1:-1:-1;7316:18:1;;;7300:35;:::i;:::-;7290:45;;;;;;6150:1191;;;;;:::o;7346:750::-;7438:6;7446;7454;7507:2;7495:9;7486:7;7482:23;7478:32;7475:52;;;7523:1;7520;7513:12;7475:52;7563:9;7550:23;7592:18;7633:2;7625:6;7622:14;7619:34;;;7649:1;7646;7639:12;7619:34;7687:6;7676:9;7672:22;7662:32;;7732:7;7725:4;7721:2;7717:13;7713:27;7703:55;;7754:1;7751;7744:12;7703:55;7794:2;7781:16;7820:2;7812:6;7809:14;7806:34;;;7836:1;7833;7826:12;7806:34;7891:7;7884:4;7874:6;7871:1;7867:14;7863:2;7859:23;7855:34;7852:47;7849:67;;;7912:1;7909;7902:12;7849:67;7943:4;7935:13;;;;-1:-1:-1;7967:6:1;-1:-1:-1;;8008:20:1;;7995:34;8038:28;7995:34;8038:28;:::i;:::-;8085:5;8075:15;;;7346:750;;;;;:::o;8324:356::-;8526:2;8508:21;;;8545:18;;;8538:30;8604:34;8599:2;8584:18;;8577:62;8671:2;8656:18;;8324:356::o;9094:127::-;9155:10;9150:3;9146:20;9143:1;9136:31;9186:4;9183:1;9176:15;9210:4;9207:1;9200:15;9226:128;9293:9;;;9314:11;;;9311:37;;;9328:18;;:::i;9770:217::-;9810:1;9836;9826:132;;9880:10;9875:3;9871:20;9868:1;9861:31;9915:4;9912:1;9905:15;9943:4;9940:1;9933:15;9826:132;-1:-1:-1;9972:9:1;;9770:217::o;10344:127::-;10405:10;10400:3;10396:20;10393:1;10386:31;10436:4;10433:1;10426:15;10460:4;10457:1;10450:15;10476:127;10537:10;10532:3;10528:20;10525:1;10518:31;10568:4;10565:1;10558:15;10592:4;10589:1;10582:15;10608:125;10673:9;;;10694:10;;;10691:36;;;10707:18;;:::i;12134:245::-;12201:6;12254:2;12242:9;12233:7;12229:23;12225:32;12222:52;;;12270:1;12267;12260:12;12222:52;12302:9;12296:16;12321:28;12343:5;12321:28;:::i;12740:416::-;12829:1;12866:5;12829:1;12880:270;12901:7;12891:8;12888:21;12880:270;;;12960:4;12956:1;12952:6;12948:17;12942:4;12939:27;12936:53;;;12969:18;;:::i;:::-;13019:7;13009:8;13005:22;13002:55;;;13039:16;;;;13002:55;13118:22;;;;13078:15;;;;12880:270;;;12884:3;12740:416;;;;;:::o;13161:806::-;13210:5;13240:8;13230:80;;-1:-1:-1;13281:1:1;13295:5;;13230:80;13329:4;13319:76;;-1:-1:-1;13366:1:1;13380:5;;13319:76;13411:4;13429:1;13424:59;;;;13497:1;13492:130;;;;13404:218;;13424:59;13454:1;13445:10;;13468:5;;;13492:130;13529:3;13519:8;13516:17;13513:43;;;13536:18;;:::i;:::-;-1:-1:-1;;13592:1:1;13578:16;;13607:5;;13404:218;;13706:2;13696:8;13693:16;13687:3;13681:4;13678:13;13674:36;13668:2;13658:8;13655:16;13650:2;13644:4;13641:12;13637:35;13634:77;13631:159;;;-1:-1:-1;13743:19:1;;;13775:5;;13631:159;13822:34;13847:8;13841:4;13822:34;:::i;:::-;13892:6;13888:1;13884:6;13880:19;13871:7;13868:32;13865:58;;;13903:18;;:::i;:::-;13941:20;;13161:806;-1:-1:-1;;;13161:806:1:o;13972:140::-;14030:5;14059:47;14100:4;14090:8;14086:19;14080:4;14059:47;:::i;14117:168::-;14190:9;;;14221;;14238:15;;;14232:22;;14218:37;14208:71;;14259:18;;:::i;14290:404::-;14492:2;14474:21;;;14531:2;14511:18;;;14504:30;14570:34;14565:2;14550:18;;14543:62;-1:-1:-1;;;14636:2:1;14621:18;;14614:38;14684:3;14669:19;;14290:404::o;20878:251::-;20948:6;21001:2;20989:9;20980:7;20976:23;20972:32;20969:52;;;21017:1;21014;21007:12;20969:52;21049:9;21043:16;21068:31;21093:5;21068:31;:::i;21134:980::-;21396:4;21444:3;21433:9;21429:19;21475:6;21464:9;21457:25;21501:2;21539:6;21534:2;21523:9;21519:18;21512:34;21582:3;21577:2;21566:9;21562:18;21555:31;21606:6;21641;21635:13;21672:6;21664;21657:22;21710:3;21699:9;21695:19;21688:26;;21749:2;21741:6;21737:15;21723:29;;21770:1;21780:195;21794:6;21791:1;21788:13;21780:195;;;21859:13;;-1:-1:-1;;;;;21855:39:1;21843:52;;21950:15;;;;21915:12;;;;21891:1;21809:9;21780:195;;;-1:-1:-1;;;;;;;22031:32:1;;;;22026:2;22011:18;;22004:60;-1:-1:-1;;;22095:3:1;22080:19;22073:35;21992:3;21134:980;-1:-1:-1;;;21134:980:1:o;22731:306::-;22819:6;22827;22835;22888:2;22876:9;22867:7;22863:23;22859:32;22856:52;;;22904:1;22901;22894:12;22856:52;22933:9;22927:16;22917:26;;22983:2;22972:9;22968:18;22962:25;22952:35;;23027:2;23016:9;23012:18;23006:25;22996:35;;22731:306;;;;;:::o

Swarm Source

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