ETH Price: $3,420.01 (+1.04%)
Gas: 3 Gwei

Token

Rune Nodes (RUNO)
 

Overview

Max Total Supply

1,000,000 RUNO

Holders

184

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
10 RUNO

Value
$0.00
0x66d64e0eb8caf4f120d8945f00c3a56d9b6d4a36
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:
RUNOV2

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: NOLICENSE

/*

Welcome to Rune Nodes – Your Digital Mark, Permanently Engraved

Rune Nodes is changing how we use the Bitcoin blockchain by enabling users to inscribe runes — permanent messages, symbols, or artworks. Our platform offers a robust and secure way to preserve your digital legacy.

Introducing RUNO: The Power Behind Rune Nodes

RUNO, our native token on the Ethereum blockchain, grants access to premium features:

Efficient Inscriptions: Use our optimized Bitcoin Nodes for fast and secure inscriptions.
Governance Participation: Influence future developments by voting on key platform decisions.
Exclusive Rewards: Engage with our community and earn rewards for active participation.
Why Choose Rune Nodes?

Rune Nodes is more than a platform; it’s a commitment to immortalizing creativity on the blockchain. Whether you're an artist, thinker, or visionary, our tools empower you to make a lasting impact.

Join Our Community

Invest in RUNO and join a movement dedicated to permanent, blockchain-based expression. Visit https://runenodes.io to start your journey with us.

Website : https://runenodes.io
Twitter : https://twitter.com/RuneNodes
Telegram : https://t.me/RuneNodesERC
Whitepaper : https://rune-nodes.gitbook.io/rune-nodes

*/


pragma solidity ^0.8.21;

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 RUNOV2 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) public allowedTransfer;
    mapping (address => bool) private _isBlacklisted;

    address[] private _excluded;

    bool public tradingEnabled;
    bool public swapEnabled;
    bool private swapping;
    
    
    
    //Anti Dump
    mapping(address => uint256) private _lastSell;
    bool public coolDownEnabled = false;
    uint256 public coolDownTime = 0 seconds;
    
    modifier antiBot(address account){
        require(tradingEnabled || allowedTransfer[account], "Trading not enabled yet");
        _;
    }

    IRouter public router;
    address public pair;

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

    uint256 private _tTotal = 1e6 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    uint256 public swapTokensAtAmount = 10_000 * 10**9;
    uint256 public maxBuyLimit = 10_000 * 10**9;
    uint256 public maxSellLimit = 10_000 * 10**9;
    uint256 public maxWalletLimit = 10_000 * 10**9;
    
    uint256 public genesis_block;
    
    address public marketingWallet = 0xFE164eF4C91e6Fa66E2Bac68bf2Ab02c787D476C;
    address public devWallet = 0xFE164eF4C91e6Fa66E2Bac68bf2Ab02c787D476C;
    address public nodesWallet = 0xFE164eF4C91e6Fa66E2Bac68bf2Ab02c787D476C;

    string private constant _name = "Rune Nodes";
    string private constant _symbol = "RUNO";

    struct Taxes {
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity; 
        uint256 dev;
        uint256 nodes;
    }

    Taxes public taxes = Taxes(0, 35, 0, 0,0);
    Taxes public sellTaxes = Taxes(0, 40, 0, 0,0);

    struct TotFeesPaidStruct{
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity; 
        uint256 dev;
        uint256 nodes;
    }
    
    TotFeesPaidStruct public totFeesPaid;

    struct valuesFromGetValues{
      uint256 rAmount;
      uint256 rTransferAmount;
      uint256 rRfi;
      uint256 rMarketing;
      uint256 rLiquidity;
      uint256 rDev;
      uint256 rNodes;
      uint256 tTransferAmount;
      uint256 tRfi;
      uint256 tMarketing;
      uint256 tLiquidity;
      uint256 tDev;
      uint256 tNodes;
    }

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

        _rOwned[owner()] = _rTotal;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[marketingWallet] = true;
        _isExcludedFromFee[devWallet] = true;
        _isExcludedFromFee[nodesWallet] = true;
        
        allowedTransfer[address(this)] = true;
        allowedTransfer[owner()] = true;
        allowedTransfer[pair] = true;
        allowedTransfer[marketingWallet] = true;
        allowedTransfer[devWallet] = true;
        allowedTransfer[nodesWallet] = 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 owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

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

    function transferFrom(address sender, address recipient, uint256 amount) public override antiBot(sender) 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  antiBot(msg.sender) returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public  antiBot(msg.sender) 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 antiBot(msg.sender) 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 deductTransferRfi) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferRfi) {
            valuesFromGetValues memory s = _getValues(tAmount, true, false);
            return s.rAmount;
        } else {
            valuesFromGetValues memory s = _getValues(tAmount, true, false);
            return s.rTransferAmount;
        }
    }

    function setTradingStatus(bool state) external onlyOwner{
        tradingEnabled = state;
        swapEnabled = state;
        if(state == true && genesis_block == 0) genesis_block = block.number;
    }

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

    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 setTaxes(uint256 _rfi, uint256 _marketing, uint256 _liquidity, uint256 _dev, uint256 _nodes) public onlyOwner {
       taxes = Taxes(_rfi,_marketing,_liquidity,_dev,_nodes);
        emit FeesChanged();
    }
    
    function setSellTaxes(uint256 _rfi, uint256 _marketing, uint256 _liquidity, uint256 _dev, uint256 _nodes) public onlyOwner {
       sellTaxes = Taxes(_rfi,_marketing,_liquidity,_dev,_nodes);
        emit FeesChanged();
    }

    function _reflectRfi(uint256 rRfi, uint256 tRfi) private {
        _rTotal -=rRfi;
        totFeesPaid.rfi +=tRfi;
    }

    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 _takeDev(uint256 rDev, uint256 tDev) private {
        totFeesPaid.dev +=tDev;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tDev;
        }
        _rOwned[address(this)] +=rDev;
    }

    function _takeNodes(uint256 rNodes, uint256 tNodes) private {
        totFeesPaid.nodes +=tNodes;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tNodes;
        }
        _rOwned[address(this)] +=rNodes;
    }



    
    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.rRfi, to_return.rMarketing, to_return.rLiquidity) = _getRValues1(to_return, tAmount, takeFee, _getRate());
        (to_return.rDev) = _getRValues2(to_return, 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 = taxes;
        
        s.tRfi = tAmount*temp.rfi/100;
        s.tMarketing = tAmount*temp.marketing/100;
        s.tLiquidity = tAmount*temp.liquidity/100;
        s.tDev = tAmount*temp.dev/100;
        s.tTransferAmount = tAmount-s.tRfi-s.tMarketing-s.tLiquidity-s.tDev;
        return s;
    }

    function _getRValues1(valuesFromGetValues memory s, uint256 tAmount, bool takeFee, uint256 currentRate) private pure returns (uint256 rAmount, uint256 rTransferAmount, uint256 rRfi,uint256 rMarketing, uint256 rLiquidity){
        rAmount = tAmount*currentRate;

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

        rRfi = s.tRfi*currentRate;
        rMarketing = s.tMarketing*currentRate;
        rLiquidity = s.tLiquidity*currentRate;
        uint256 rDev = s.tDev*currentRate;
        rTransferAmount =  rAmount-rRfi-rMarketing-rLiquidity-rDev;
        return (rAmount, rTransferAmount, rRfi,rMarketing,rLiquidity);
    }
    
    function _getRValues2(valuesFromGetValues memory s, bool takeFee, uint256 currentRate) private pure returns (uint256 rDev) {

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

        rDev = s.tDev*currentRate;
        return (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");
        
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            require(tradingEnabled, "Trading not active");
        }
        
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to] && block.number <= genesis_block + 3) {
            require(to != pair, "Sells not allowed for first 3 blocks");
        }
        
        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(coolDownEnabled){
                uint256 timePassed = block.timestamp - _lastSell[from];
                require(timePassed >= coolDownTime, "Cooldown enabled");
                _lastSell[from] = block.timestamp;
            }
        }
        
        
        if(balanceOf(from) - amount <= 10 *  10**decimals()) amount -= (10 * 10**decimals() + amount - balanceOf(from));
        
       
        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, taxes);
        }
        bool takeFee = true;
        bool isSell = false;
        if(swapping || _isExcludedFromFee[from] || _isExcludedFromFee[to]) takeFee = false;
        if(to == pair) isSell = true;

        _tokenTransfer(from, to, amount, takeFee, isSell);
    }


    //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.rRfi > 0 || s.tRfi > 0) _reflectRfi(s.rRfi, s.tRfi);
        if(s.rLiquidity > 0 || s.tLiquidity > 0) {
            _takeLiquidity(s.rLiquidity,s.tLiquidity);
            emit Transfer(sender, address(this), s.tLiquidity + s.tMarketing + s.tDev);
        }
        if(s.rMarketing > 0 || s.tMarketing > 0) _takeMarketing(s.rMarketing, s.tMarketing);
        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.dev) * 2;
        uint256 tokensToAddLiquidityWith = contractBalance * temp.liquidity / denominator;
        uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

        uint256 initialBalance = address(this).balance;

        swapTokensForETH(toSwap);

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

        if(ethToAddLiquidityWith > 0){
            // Add liquidity to sushi
            addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
        }

        uint256 marketingAmt = unitBalance * 2 * temp.marketing;
        if(marketingAmt > 0){
            payable(marketingWallet).sendValue(marketingAmt);
        }
        uint256 devAmt = unitBalance * 2 * temp.dev;
        if(devAmt > 0){
            payable(devWallet).sendValue(devAmt);
        }
    }

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

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

    function swapTokensForETH(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 airdropTokens(address[] memory accounts, uint256[] memory amounts) external onlyOwner{
        require(accounts.length == amounts.length, "Arrays must have same size");
        for(uint256 i = 0; i < accounts.length; i++){
            _tokenTransfer(msg.sender, accounts[i], amounts[i], false, false);
        }
    }
    
    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 updatedevWallet(address newWallet) external onlyOwner{
        devWallet = newWallet;
    }

    
    function updateCooldown(bool state, uint256 time) external onlyOwner{
        coolDownTime = time * 1 seconds;
        coolDownEnabled = state;
    }

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

    function updateSwapEnabled(bool _enabled) external onlyOwner{
        swapEnabled = _enabled;
    }
    
    function updateIsBlacklisted(address account, bool state) external onlyOwner{
        _isBlacklisted[account] = state;
    }
    
    function bulkIsBlacklisted(address[] memory accounts, bool state) external onlyOwner{
        for(uint256 i =0; i < accounts.length; i++){
            _isBlacklisted[accounts[i]] = state;

        }
    }
    
    function updateAllowedTransfer(address account, bool state) external onlyOwner{
        allowedTransfer[account] = state;
    }
    
    function updateMaxTxLimit(uint256 maxBuy, uint256 maxSell) external onlyOwner{
        maxBuyLimit = maxBuy * 10**decimals();
        maxSellLimit = maxSell * 10**decimals();
    }
    
    function updateMaxWalletlimit(uint256 amount) external onlyOwner{
        maxWalletLimit = amount * 10**decimals();
    }

    function updateRouterAndPair(address newRouter, address newPair) external onlyOwner{
        router = IRouter(newRouter);
        pair = newPair;
    }
    
    //Use this in case ETH are sent to the contract by mistake
    function rescueETH(uint256 weiAmount) external onlyOwner{
        require(address(this).balance >= weiAmount, "insufficient ETH 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":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdropTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"allowedTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkExcludeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkIsBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"coolDownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coolDownTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"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":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"nodesWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","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":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"nodes","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"},{"internalType":"uint256","name":"_nodes","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"},{"internalType":"uint256","name":"_nodes","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setTradingStatus","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":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"nodes","type":"uint256"}],"stateMutability":"view","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":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"nodes","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateAllowedTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"updateCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateIsBlacklisted","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":"updatedevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600b805460ff191690555f600c5561001e6009600a61098b565b61002b90620f4240610999565b600f81905561003b905f196109c4565b610046905f196109d7565b6010556509184e72a0006011819055601281905560138190556014556016805473fe164ef4c91e6fa66e2bac68bf2ab02c787d476c6001600160a01b03199182168117909255601780548216831790556018805490911690911790556040805160a080820183525f80835260236020808501829052848601839052606080860184905260809586018490526019849055601a92909255601b839055601c839055601d83905585519384018652828452602884820181905295840183905290830182905291909201829052601e829055601f92909255908190556021819055602255348015610132575f80fd5b50604051614358380380614358833981016040819052610151916109ea565b61015a336104b1565b5f8190505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561019b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101bf91906109ea565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561020a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061022e91906109ea565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610278573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061029c91906109ea565b600d80546001600160a01b038086166001600160a01b031992831617909255600e805492841692909116821790559091506102d690610500565b60105460015f6102ed5f546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120939093553083526004918290528220805460ff19166001908117909155916103395f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055601654821681526004845282812080548616600190811790915560175483168252838220805487168217905560185490921681528281208054861683179055308152600693849052918220805490941681179093556103cc5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055600e5482168152600690935281832080548516600190811790915560165482168452828420805486168217905560175482168452828420805486168217905560185490911683529120805490921617905561045b5f546001600160a01b031690565b6001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600f546040516104a191815260200190565b60405180910390a3505050610a37565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f546001600160a01b0316331461055e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b0381165f9081526005602052604090205460ff16156105c65760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610555565b6001600160a01b0381165f908152600160205260409020541561061d576001600160a01b0381165f9081526001602052604090205461060490610682565b6001600160a01b0382165f908152600260205260409020555b6001600160a01b03165f818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b5f6010548211156106e85760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610555565b5f6106f1610704565b90506106fd8184610a10565b9392505050565b5f808061070f610725565b909250905061071e8183610a10565b9250505090565b601054600f545f918291825b600854811015610864578260015f6008848154811061075257610752610a23565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205411806107ba57508160025f6008848154811061079457610794610a23565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054115b156107d057601054600f54945094505050509091565b60015f600883815481106107e6576107e6610a23565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205461081490846109d7565b925060025f6008838154811061082c5761082c610a23565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205461085a90836109d7565b9150600101610731565b50600f546010546108759190610a10565b82101561088c57601054600f549350935050509091565b90939092509050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156108e357815f19048211156108c9576108c9610895565b808516156108d657918102915b93841c93908002906108ae565b509250929050565b5f826108f957506001610985565b8161090557505f610985565b816001811461091b576002811461092557610941565b6001915050610985565b60ff84111561093657610936610895565b50506001821b610985565b5060208310610133831016604e8410600b8410161715610964575081810a610985565b61096e83836108a9565b805f190482111561098157610981610895565b0290505b92915050565b5f6106fd60ff8416836108eb565b808202811582820484141761098557610985610895565b634e487b7160e01b5f52601260045260245ffd5b5f826109d2576109d26109b0565b500690565b8181038181111561098557610985610895565b5f602082840312156109fa575f80fd5b81516001600160a01b03811681146106fd575f80fd5b5f82610a1e57610a1e6109b0565b500490565b634e487b7160e01b5f52603260045260245ffd5b61391480610a445f395ff3fe608060405260043610610374575f3560e01c8063715018a6116101c8578063aacebbe3116100fd578063e2f456051161009d578063f2fde38b1161006d578063f2fde38b14610aa3578063f66895a314610ac2578063f887ea4014610ae8578063fc17044114610b07575f80fd5b8063e2f4560514610a37578063e517f2b914610a4c578063ea2f0b3714610a6b578063ee36e35914610a8a575f80fd5b8063d257b34f116100d8578063d257b34f146109a0578063d2ce0db2146109bf578063d8672e51146109d4578063dd62ed3e146109f3575f80fd5b8063aacebbe314610943578063b5c5714514610962578063c791fc5414610981575f80fd5b8063924de9b7116101685780639e252f00116101435780639e252f00146108c7578063a457c2d7146108e6578063a8aa1b3114610905578063a9059cbb14610924575f80fd5b8063924de9b71461085657806395d89b41146108755780639ba5e4d5146108a1575f80fd5b806388f82020116101a357806388f82020146107c55780638da5cb5b146107fc5780638e2839ff146108185780638ea5220f14610837575f80fd5b8063715018a614610744578063728f8eea1461075857806375f0a874146107a6575f80fd5b80634549b039116102a95780635fcefa42116102495780636aa5b37f116102195780636aa5b37f146106d35780636ddd1713146106e8578063706f69371461070657806370a0823114610725575f80fd5b80635fcefa421461065c57806362695eae1461067b578063652e2f04146106a957806366a88d96146106be575f80fd5b806352390c021161028457806352390c02146105c85780635342acb4146105e757806359759f611461061e5780635b24ea5e1461063d575f80fd5b80634549b0391461057157806347c23092146105905780634ada218b146105af575f80fd5b80632d83811911610314578063379ba1d9116102ef578063379ba1d9146104f5578063395093511461051457806340b28c2f14610533578063437823ec14610552575f80fd5b80632d8381191461049c578063313ce567146104bb5780633685d419146104d6575f80fd5b806318160ddd1161034f57806318160ddd1461041357806323b872dd14610431578063274a533c146104505780632b87b8c514610465575f80fd5b806306fdde031461037f578063095ea7b3146103c357806313f97a8e146103f2575f80fd5b3661037b57005b5f80fd5b34801561038a575f80fd5b5060408051808201909152600a81526952756e65204e6f64657360b01b60208201525b6040516103ba9190613240565b60405180910390f35b3480156103ce575f80fd5b506103e26103dd366004613289565b610b26565b60405190151581526020016103ba565b3480156103fd575f80fd5b5061041161040c36600461339d565b610b8c565b005b34801561041e575f80fd5b50600f545b6040519081526020016103ba565b34801561043c575f80fd5b506103e261044b3660046133ec565b610c14565b34801561045b575f80fd5b5061042360155481565b348015610470575f80fd5b50601854610484906001600160a01b031681565b6040516001600160a01b0390911681526020016103ba565b3480156104a7575f80fd5b506104236104b636600461342a565b610d0b565b3480156104c6575f80fd5b50604051600981526020016103ba565b3480156104e1575f80fd5b506104116104f0366004613441565b610d8d565b348015610500575f80fd5b5061041161050f36600461345c565b610f31565b34801561051f575f80fd5b506103e261052e366004613289565b610f96565b34801561053e575f80fd5b5061041161054d366004613477565b611013565b34801561055d575f80fd5b5061041161056c366004613441565b61106a565b34801561057c575f80fd5b5061042361058b3660046134a3565b6110b6565b34801561059b575f80fd5b506104116105aa3660046133ec565b611145565b3480156105ba575f80fd5b506009546103e29060ff1681565b3480156105d3575f80fd5b506104116105e2366004613441565b6111e4565b3480156105f2575f80fd5b506103e2610601366004613441565b6001600160a01b03165f9081526004602052604090205460ff1690565b348015610629575f80fd5b506104116106383660046134c6565b611331565b348015610648575f80fd5b506104116106573660046134e6565b611390565b348015610667575f80fd5b50610411610676366004613512565b6113e3565b348015610686575f80fd5b506103e2610695366004613441565b60066020525f908152604090205460ff1681565b3480156106b4575f80fd5b5061042360135481565b3480156106c9575f80fd5b5061042360145481565b3480156106de575f80fd5b5061042360125481565b3480156106f3575f80fd5b506009546103e290610100900460ff1681565b348015610711575f80fd5b50610411610720366004613549565b611479565b348015610730575f80fd5b5061042361073f366004613441565b611545565b34801561074f575f80fd5b506104116115a1565b348015610763575f80fd5b50601954601a54601b54601c54601d5461077e949392919085565b604080519586526020860194909452928401919091526060830152608082015260a0016103ba565b3480156107b1575f80fd5b50601654610484906001600160a01b031681565b3480156107d0575f80fd5b506103e26107df366004613441565b6001600160a01b03165f9081526005602052604090205460ff1690565b348015610807575f80fd5b505f546001600160a01b0316610484565b348015610823575f80fd5b5061041161083236600461339d565b6115d5565b348015610842575f80fd5b50601754610484906001600160a01b031681565b348015610861575f80fd5b5061041161087036600461345c565b611658565b348015610880575f80fd5b5060408051808201909152600481526352554e4f60e01b60208201526103ad565b3480156108ac575f80fd5b5060235460245460255460265460275461077e949392919085565b3480156108d2575f80fd5b506104116108e136600461342a565b61169b565b3480156108f1575f80fd5b506103e2610900366004613289565b61173e565b348015610910575f80fd5b50600e54610484906001600160a01b031681565b34801561092f575f80fd5b506103e261093e366004613289565b611821565b34801561094e575f80fd5b5061041161095d366004613441565b611874565b34801561096d575f80fd5b5061041161097c3660046134e6565b6118bf565b34801561098c575f80fd5b5061041161099b366004613512565b611912565b3480156109ab575f80fd5b506104116109ba36600461342a565b6119a9565b3480156109ca575f80fd5b50610423600c5481565b3480156109df575f80fd5b506104116109ee36600461342a565b6119ee565b3480156109fe575f80fd5b50610423610a0d366004613477565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610a42575f80fd5b5061042360115481565b348015610a57575f80fd5b50610411610a663660046135fe565b611a33565b348015610a76575f80fd5b50610411610a85366004613441565b611a7e565b348015610a95575f80fd5b50600b546103e29060ff1681565b348015610aae575f80fd5b50610411610abd366004613441565b611ac7565b348015610acd575f80fd5b50601e54601f5460205460215460225461077e949392919085565b348015610af3575f80fd5b50600d54610484906001600160a01b031681565b348015610b12575f80fd5b50610411610b21366004613441565b611b5e565b6009545f90339060ff1680610b5257506001600160a01b0381165f9081526006602052604090205460ff165b610b775760405162461bcd60e51b8152600401610b6e9061361a565b60405180910390fd5b610b82338585611ba9565b5060019392505050565b5f546001600160a01b03163314610bb55760405162461bcd60e51b8152600401610b6e90613651565b5f5b8251811015610c0f578160075f858481518110610bd657610bd6613686565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610bb7565b505050565b6009545f90849060ff1680610c4057506001600160a01b0381165f9081526006602052604090205460ff165b610c5c5760405162461bcd60e51b8152600401610b6e9061361a565b610c67858585611ccc565b6001600160a01b0385165f90815260036020908152604080832033845290915290205483811015610ceb5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610b6e565b610cff8633610cfa87856136ae565b611ba9565b50600195945050505050565b5f601054821115610d715760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b6e565b5f610d7a612545565b9050610d8681846136c1565b9392505050565b5f546001600160a01b03163314610db65760405162461bcd60e51b8152600401610b6e90613651565b6001600160a01b0381165f9081526005602052604090205460ff16610e1d5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610b6e565b5f5b600854811015610f2d57816001600160a01b031660088281548110610e4657610e46613686565b5f918252602090912001546001600160a01b031603610f255760088054610e6f906001906136ae565b81548110610e7f57610e7f613686565b5f91825260209091200154600880546001600160a01b039092169183908110610eaa57610eaa613686565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556008805480610f0157610f016136e0565b5f8281526020902081015f1990810180546001600160a01b03191690550190555050565b600101610e1f565b5050565b5f546001600160a01b03163314610f5a5760405162461bcd60e51b8152600401610b6e90613651565b6009805461ffff191661ff0019831515908116919091176101008202179091556001148015610f895750601554155b15610f9357436015555b50565b6009545f90339060ff1680610fc257506001600160a01b0381165f9081526006602052604090205460ff165b610fde5760405162461bcd60e51b8152600401610b6e9061361a565b335f8181526003602090815260408083206001600160a01b0389168452909152902054610b8291908690610cfa9087906136f4565b5f546001600160a01b0316331461103c5760405162461bcd60e51b8152600401610b6e90613651565b600d80546001600160a01b039384166001600160a01b031991821617909155600e8054929093169116179055565b5f546001600160a01b031633146110935760405162461bcd60e51b8152600401610b6e90613651565b6001600160a01b03165f908152600460205260409020805460ff19166001179055565b5f600f548311156111095760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b6e565b81611125575f61111b8460015f612566565b51915061113f9050565b5f6111328460015f612566565b60200151915061113f9050565b92915050565b5f546001600160a01b0316331461116e5760405162461bcd60e51b8152600401610b6e90613651565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303815f875af11580156111ba573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111de9190613707565b50505050565b5f546001600160a01b0316331461120d5760405162461bcd60e51b8152600401610b6e90613651565b6001600160a01b0381165f9081526005602052604090205460ff16156112755760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b6e565b6001600160a01b0381165f90815260016020526040902054156112cc576001600160a01b0381165f908152600160205260409020546112b390610d0b565b6001600160a01b0382165f908152600260205260409020555b6001600160a01b03165f818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b5f546001600160a01b0316331461135a5760405162461bcd60e51b8152600401610b6e90613651565b6113666009600a613802565b6113709083613810565b60125561137f6009600a613802565b6113899082613810565b6013555050565b5f546001600160a01b031633146113b95760405162461bcd60e51b8152600401610b6e90613651565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f546001600160a01b0316331461140c5760405162461bcd60e51b8152600401610b6e90613651565b6040805160a08101825286815260208101869052808201859052606081018490526080018290526019869055601a859055601b849055601c839055601d829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de15905f90a15050505050565b5f546001600160a01b031633146114a25760405162461bcd60e51b8152600401610b6e90613651565b80518251146114f35760405162461bcd60e51b815260206004820152601a60248201527f417272617973206d75737420686176652073616d652073697a650000000000006044820152606401610b6e565b5f5b8251811015610c0f5761153d3384838151811061151457611514613686565b602002602001015184848151811061152e5761152e613686565b60200260200101515f806125c2565b6001016114f5565b6001600160a01b0381165f9081526005602052604081205460ff161561158057506001600160a01b03165f9081526002602052604090205490565b6001600160a01b0382165f9081526001602052604090205461113f90610d0b565b5f546001600160a01b031633146115ca5760405162461bcd60e51b8152600401610b6e90613651565b6115d35f612880565b565b5f546001600160a01b031633146115fe5760405162461bcd60e51b8152600401610b6e90613651565b5f5b8251811015610c0f578160045f85848151811061161f5761161f613686565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101611600565b5f546001600160a01b031633146116815760405162461bcd60e51b8152600401610b6e90613651565b600980549115156101000261ff0019909216919091179055565b5f546001600160a01b031633146116c45760405162461bcd60e51b8152600401610b6e90613651565b804710156117145760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e74204554482062616c616e636500000000000000006044820152606401610b6e565b604051339082156108fc029083905f818181858888f19350505050158015610f2d573d5f803e3d5ffd5b6009545f90339060ff168061176a57506001600160a01b0381165f9081526006602052604090205460ff165b6117865760405162461bcd60e51b8152600401610b6e9061361a565b335f9081526003602090815260408083206001600160a01b0388168452909152902054838110156118075760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b6e565b6118163386610cfa87856136ae565b506001949350505050565b6009545f90339060ff168061184d57506001600160a01b0381165f9081526006602052604090205460ff165b6118695760405162461bcd60e51b8152600401610b6e9061361a565b610b82338585611ccc565b5f546001600160a01b0316331461189d5760405162461bcd60e51b8152600401610b6e90613651565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146118e85760405162461bcd60e51b8152600401610b6e90613651565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b5f546001600160a01b0316331461193b5760405162461bcd60e51b8152600401610b6e90613651565b6040805160a0810182528681526020808201879052818301869052606082018590526080909101839052601e879055601f86905584905560218390556022829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de15905f90a15050505050565b5f546001600160a01b031633146119d25760405162461bcd60e51b8152600401610b6e90613651565b6119de6009600a613802565b6119e89082613810565b60115550565b5f546001600160a01b03163314611a175760405162461bcd60e51b8152600401610b6e90613651565b611a236009600a613802565b611a2d9082613810565b60145550565b5f546001600160a01b03163314611a5c5760405162461bcd60e51b8152600401610b6e90613651565b611a67816001613810565b600c5550600b805460ff1916911515919091179055565b5f546001600160a01b03163314611aa75760405162461bcd60e51b8152600401610b6e90613651565b6001600160a01b03165f908152600460205260409020805460ff19169055565b5f546001600160a01b03163314611af05760405162461bcd60e51b8152600401610b6e90613651565b6001600160a01b038116611b555760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b6e565b610f9381612880565b5f546001600160a01b03163314611b875760405162461bcd60e51b8152600401610b6e90613651565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611c0b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b6e565b6001600160a01b038216611c6c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b6e565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d305760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b6e565b6001600160a01b038216611d925760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b6e565b5f8111611df35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b6e565b611dfc83611545565b811115611e655760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610b6e565b6001600160a01b0383165f9081526007602052604090205460ff16158015611ea557506001600160a01b0382165f9081526007602052604090205460ff16155b611ee15760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b6044820152606401610b6e565b6001600160a01b0383165f9081526004602052604090205460ff16158015611f2157506001600160a01b0382165f9081526004602052604090205460ff16155b15611f6d5760095460ff16611f6d5760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401610b6e565b6001600160a01b0383165f9081526004602052604090205460ff16158015611fad57506001600160a01b0382165f9081526004602052604090205460ff16155b8015611fc65750601554611fc29060036136f4565b4311155b1561203557600e546001600160a01b03908116908316036120355760405162461bcd60e51b8152602060048201526024808201527f53656c6c73206e6f7420616c6c6f77656420666f72206669727374203320626c6044820152636f636b7360e01b6064820152608401610b6e565b600e546001600160a01b03848116911614801561206a57506001600160a01b0382165f9081526004602052604090205460ff16155b801561207f575060095462010000900460ff16155b1561213b576012548111156120d65760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610b6e565b601454816120e384611545565b6120ed91906136f4565b111561213b5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610b6e565b600e546001600160a01b0384811691161480159061217157506001600160a01b0382165f9081526004602052604090205460ff16155b801561219557506001600160a01b0383165f9081526004602052604090205460ff16155b80156121aa575060095462010000900460ff16155b1561230b576013548111156122015760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610b6e565b600e546001600160a01b0383811691161461227b576014548161222384611545565b61222d91906136f4565b111561227b5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610b6e565b600b5460ff161561230b576001600160a01b0383165f908152600a60205260408120546122a890426136ae565b9050600c548110156122ef5760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b6044820152606401610b6e565b506001600160a01b0383165f908152600a602052604090204290555b6123176009600a613802565b61232290600a613810565b8161232c85611545565b61233691906136ae565b1161237d5761234483611545565b816123516009600a613802565b61235c90600a613810565b61236691906136f4565b61237091906136ae565b61237a90826136ae565b90505b5f60115461238a30611545565b600954911115915062010000900460ff161580156123af5750600954610100900460ff165b80156123b85750805b80156123d25750600e546001600160a01b03858116911614155b80156123f657506001600160a01b0384165f9081526004602052604090205460ff16155b801561241a57506001600160a01b0383165f9081526004602052604090205460ff16155b156124b857600e546001600160a01b039081169084160361247a576011546040805160a081018252601e548152601f5460208083019190915254918101919091526021546060820152602254608082015261247591906128cf565b6124b8565b6011546040805160a0810182526019548152601a546020820152601b5491810191909152601c546060820152601d5460808201526124b891906128cf565b6009546001905f9062010000900460ff16806124eb57506001600160a01b0386165f9081526004602052604090205460ff165b8061250d57506001600160a01b0385165f9081526004602052604090205460ff165b15612516575f91505b600e546001600160a01b0390811690861603612530575060015b61253d86868685856125c2565b505050505050565b5f805f612550612a21565b909250905061255f81836136c1565b9250505090565b61256e6131e5565b612579848484612b91565b905061258e818585612589612545565b612d17565b608086015260608501526040840152602083015281526125b681846125b1612545565b612dc4565b60a08201529392505050565b5f6125ce848484612566565b6001600160a01b0387165f9081526005602052604090205490915060ff161561262d576001600160a01b0386165f908152600260205260409020546126149085906136ae565b6001600160a01b0387165f908152600260205260409020555b6001600160a01b0385165f9081526005602052604090205460ff161561268d5760e08101516001600160a01b0386165f9081526002602052604090205461267491906136f4565b6001600160a01b0386165f908152600260205260409020555b80516001600160a01b0387165f908152600160205260409020546126b191906136ae565b6001600160a01b038088165f90815260016020908152604080832094909455840151918816815291909120546126e791906136f4565b6001600160a01b0386165f90815260016020526040908190209190915581015115158061271857505f816101000151115b15612730576127308160400151826101000151612dea565b5f8160800151118061274657505f816101400151115b156127cb5761275e8160800151826101400151612e1d565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8361016001518461012001518561014001516127af91906136f4565b6127b991906136f4565b60405190815260200160405180910390a35b5f816060015111806127e157505f816101200151115b156127f9576127f98160600151826101200151612e8f565b5f8160a00151118061280f57505f816101600151115b15612827576128278160a00151826101600151612ea3565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360e0015160405161287091815260200190565b60405180910390a3505050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6009805462ff00001916620100001790556060810151602082015160408301515f92916128fb916136f4565b61290591906136f4565b612910906002613810565b90505f818360400151856129249190613810565b61292e91906136c1565b90505f61293b82866136ae565b90504761294782612eb7565b5f61295282476136ae565b90505f86604001518661296591906136ae565b61296f90836136c1565b90505f8760400151826129829190613810565b90508015612994576129948682612fff565b60208801515f906129a6846002613810565b6129b09190613810565b905080156129ce576016546129ce906001600160a01b0316826130d0565b60608901515f906129e0856002613810565b6129ea9190613810565b90508015612a0857601754612a08906001600160a01b0316826130d0565b50506009805462ff000019169055505050505050505050565b601054600f545f918291825b600854811015612b60578260015f60088481548110612a4e57612a4e613686565b5f9182526020808320909101546001600160a01b031683528201929092526040019020541180612ab657508160025f60088481548110612a9057612a90613686565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054115b15612acc57601054600f54945094505050509091565b60015f60088381548110612ae257612ae2613686565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054612b1090846136ae565b925060025f60088381548110612b2857612b28613686565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054612b5690836136ae565b9150600101612a2d565b50600f54601054612b7191906136c1565b821015612b8857601054600f549350935050509091565b90939092509050565b612b996131e5565b82612baa5760e08101849052610d86565b612bd76040518060a001604052805f81526020015f81526020015f81526020015f81526020015f81525090565b8215612c1657506040805160a081018252601e548152601f54602080830191909152549181019190915260215460608201526022546080820152612c49565b506040805160a0810182526019548152601a546020820152601b5491810191909152601c546060820152601d5460808201525b8051606490612c589087613810565b612c6291906136c1565b6101008301526020810151606490612c7a9087613810565b612c8491906136c1565b6101208301526040810151606490612c9c9087613810565b612ca691906136c1565b6101408301526060810151606490612cbe9087613810565b612cc891906136c1565b6101608301819052610140830151610120840151610100850151612cec90896136ae565b612cf691906136ae565b612d0091906136ae565b612d0a91906136ae565b60e0830152509392505050565b5f80808080612d268689613810565b945086612d3d57508392505f915081905080612db9565b85896101000151612d4e9190613810565b925085896101200151612d619190613810565b915085896101400151612d749190613810565b90505f868a6101600151612d889190613810565b9050808284612d97878a6136ae565b612da191906136ae565b612dab91906136ae565b612db591906136ae565b9450505b945094509450945094565b5f82612dd157505f610d86565b81846101600151612de29190613810565b949350505050565b8160105f828254612dfb91906136ae565b9091555050602380548291905f90612e149084906136f4565b90915550505050565b8060236002015f828254612e3191906136f4565b9091555050305f9081526005602052604090205460ff1615612e7157305f9081526002602052604081208054839290612e6b9084906136f4565b90915550505b305f9081526001602052604081208054849290612e149084906136f4565b8060236001015f828254612e3191906136f4565b8060236003015f828254612e3191906136f4565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110612eea57612eea613686565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612f41573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f659190613827565b81600181518110612f7857612f78613686565b6001600160a01b039283166020918202929092010152600d54612f9e9130911684611ba9565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac94790612fd69085905f90869030904290600401613842565b5f604051808303815f87803b158015612fed575f80fd5b505af115801561253d573d5f803e3d5ffd5b600d546130179030906001600160a01b031684611ba9565b600d546001600160a01b031663f305d7198230855f8061303e5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156130a4573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906130c991906138b3565b5050505050565b804710156131205760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610b6e565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114613169576040519150601f19603f3d011682016040523d82523d5f602084013e61316e565b606091505b5050905080610c0f5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610b6e565b604051806101a001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610f93575f80fd5b5f806040838503121561329a575f80fd5b82356132a581613275565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156132f0576132f06132b3565b604052919050565b5f67ffffffffffffffff821115613311576133116132b3565b5060051b60200190565b5f82601f83011261332a575f80fd5b8135602061333f61333a836132f8565b6132c7565b8083825260208201915060208460051b870101935086841115613360575f80fd5b602086015b8481101561338557803561337881613275565b8352918301918301613365565b509695505050505050565b8015158114610f93575f80fd5b5f80604083850312156133ae575f80fd5b823567ffffffffffffffff8111156133c4575f80fd5b6133d08582860161331b565b92505060208301356133e181613390565b809150509250929050565b5f805f606084860312156133fe575f80fd5b833561340981613275565b9250602084013561341981613275565b929592945050506040919091013590565b5f6020828403121561343a575f80fd5b5035919050565b5f60208284031215613451575f80fd5b8135610d8681613275565b5f6020828403121561346c575f80fd5b8135610d8681613390565b5f8060408385031215613488575f80fd5b823561349381613275565b915060208301356133e181613275565b5f80604083850312156134b4575f80fd5b8235915060208301356133e181613390565b5f80604083850312156134d7575f80fd5b50508035926020909101359150565b5f80604083850312156134f7575f80fd5b823561350281613275565b915060208301356133e181613390565b5f805f805f60a08688031215613526575f80fd5b505083359560208501359550604085013594606081013594506080013592509050565b5f806040838503121561355a575f80fd5b823567ffffffffffffffff80821115613571575f80fd5b61357d8683870161331b565b9350602091508185013581811115613593575f80fd5b85019050601f810186136135a5575f80fd5b80356135b361333a826132f8565b81815260059190911b820183019083810190888311156135d1575f80fd5b928401925b828410156135ef578335825292840192908401906135d6565b80955050505050509250929050565b5f806040838503121561360f575f80fd5b82356132a581613390565b60208082526017908201527f54726164696e67206e6f7420656e61626c656420796574000000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8181038181111561113f5761113f61369a565b5f826136db57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603160045260245ffd5b8082018082111561113f5761113f61369a565b5f60208284031215613717575f80fd5b8151610d8681613390565b600181815b8085111561375c57815f19048211156137425761374261369a565b8085161561374f57918102915b93841c9390800290613727565b509250929050565b5f826137725750600161113f565b8161377e57505f61113f565b8160018114613794576002811461379e576137ba565b600191505061113f565b60ff8411156137af576137af61369a565b50506001821b61113f565b5060208310610133831016604e8410600b84101617156137dd575081810a61113f565b6137e78383613722565b805f19048211156137fa576137fa61369a565b029392505050565b5f610d8660ff841683613764565b808202811582820484141761113f5761113f61369a565b5f60208284031215613837575f80fd5b8151610d8681613275565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156138925784516001600160a01b03168352938301939183019160010161386d565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156138c5575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220a012a061f1a25d84565427eee965f808ad656fd5a8b3ca449cd9969bc2699ff564736f6c634300081900330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x608060405260043610610374575f3560e01c8063715018a6116101c8578063aacebbe3116100fd578063e2f456051161009d578063f2fde38b1161006d578063f2fde38b14610aa3578063f66895a314610ac2578063f887ea4014610ae8578063fc17044114610b07575f80fd5b8063e2f4560514610a37578063e517f2b914610a4c578063ea2f0b3714610a6b578063ee36e35914610a8a575f80fd5b8063d257b34f116100d8578063d257b34f146109a0578063d2ce0db2146109bf578063d8672e51146109d4578063dd62ed3e146109f3575f80fd5b8063aacebbe314610943578063b5c5714514610962578063c791fc5414610981575f80fd5b8063924de9b7116101685780639e252f00116101435780639e252f00146108c7578063a457c2d7146108e6578063a8aa1b3114610905578063a9059cbb14610924575f80fd5b8063924de9b71461085657806395d89b41146108755780639ba5e4d5146108a1575f80fd5b806388f82020116101a357806388f82020146107c55780638da5cb5b146107fc5780638e2839ff146108185780638ea5220f14610837575f80fd5b8063715018a614610744578063728f8eea1461075857806375f0a874146107a6575f80fd5b80634549b039116102a95780635fcefa42116102495780636aa5b37f116102195780636aa5b37f146106d35780636ddd1713146106e8578063706f69371461070657806370a0823114610725575f80fd5b80635fcefa421461065c57806362695eae1461067b578063652e2f04146106a957806366a88d96146106be575f80fd5b806352390c021161028457806352390c02146105c85780635342acb4146105e757806359759f611461061e5780635b24ea5e1461063d575f80fd5b80634549b0391461057157806347c23092146105905780634ada218b146105af575f80fd5b80632d83811911610314578063379ba1d9116102ef578063379ba1d9146104f5578063395093511461051457806340b28c2f14610533578063437823ec14610552575f80fd5b80632d8381191461049c578063313ce567146104bb5780633685d419146104d6575f80fd5b806318160ddd1161034f57806318160ddd1461041357806323b872dd14610431578063274a533c146104505780632b87b8c514610465575f80fd5b806306fdde031461037f578063095ea7b3146103c357806313f97a8e146103f2575f80fd5b3661037b57005b5f80fd5b34801561038a575f80fd5b5060408051808201909152600a81526952756e65204e6f64657360b01b60208201525b6040516103ba9190613240565b60405180910390f35b3480156103ce575f80fd5b506103e26103dd366004613289565b610b26565b60405190151581526020016103ba565b3480156103fd575f80fd5b5061041161040c36600461339d565b610b8c565b005b34801561041e575f80fd5b50600f545b6040519081526020016103ba565b34801561043c575f80fd5b506103e261044b3660046133ec565b610c14565b34801561045b575f80fd5b5061042360155481565b348015610470575f80fd5b50601854610484906001600160a01b031681565b6040516001600160a01b0390911681526020016103ba565b3480156104a7575f80fd5b506104236104b636600461342a565b610d0b565b3480156104c6575f80fd5b50604051600981526020016103ba565b3480156104e1575f80fd5b506104116104f0366004613441565b610d8d565b348015610500575f80fd5b5061041161050f36600461345c565b610f31565b34801561051f575f80fd5b506103e261052e366004613289565b610f96565b34801561053e575f80fd5b5061041161054d366004613477565b611013565b34801561055d575f80fd5b5061041161056c366004613441565b61106a565b34801561057c575f80fd5b5061042361058b3660046134a3565b6110b6565b34801561059b575f80fd5b506104116105aa3660046133ec565b611145565b3480156105ba575f80fd5b506009546103e29060ff1681565b3480156105d3575f80fd5b506104116105e2366004613441565b6111e4565b3480156105f2575f80fd5b506103e2610601366004613441565b6001600160a01b03165f9081526004602052604090205460ff1690565b348015610629575f80fd5b506104116106383660046134c6565b611331565b348015610648575f80fd5b506104116106573660046134e6565b611390565b348015610667575f80fd5b50610411610676366004613512565b6113e3565b348015610686575f80fd5b506103e2610695366004613441565b60066020525f908152604090205460ff1681565b3480156106b4575f80fd5b5061042360135481565b3480156106c9575f80fd5b5061042360145481565b3480156106de575f80fd5b5061042360125481565b3480156106f3575f80fd5b506009546103e290610100900460ff1681565b348015610711575f80fd5b50610411610720366004613549565b611479565b348015610730575f80fd5b5061042361073f366004613441565b611545565b34801561074f575f80fd5b506104116115a1565b348015610763575f80fd5b50601954601a54601b54601c54601d5461077e949392919085565b604080519586526020860194909452928401919091526060830152608082015260a0016103ba565b3480156107b1575f80fd5b50601654610484906001600160a01b031681565b3480156107d0575f80fd5b506103e26107df366004613441565b6001600160a01b03165f9081526005602052604090205460ff1690565b348015610807575f80fd5b505f546001600160a01b0316610484565b348015610823575f80fd5b5061041161083236600461339d565b6115d5565b348015610842575f80fd5b50601754610484906001600160a01b031681565b348015610861575f80fd5b5061041161087036600461345c565b611658565b348015610880575f80fd5b5060408051808201909152600481526352554e4f60e01b60208201526103ad565b3480156108ac575f80fd5b5060235460245460255460265460275461077e949392919085565b3480156108d2575f80fd5b506104116108e136600461342a565b61169b565b3480156108f1575f80fd5b506103e2610900366004613289565b61173e565b348015610910575f80fd5b50600e54610484906001600160a01b031681565b34801561092f575f80fd5b506103e261093e366004613289565b611821565b34801561094e575f80fd5b5061041161095d366004613441565b611874565b34801561096d575f80fd5b5061041161097c3660046134e6565b6118bf565b34801561098c575f80fd5b5061041161099b366004613512565b611912565b3480156109ab575f80fd5b506104116109ba36600461342a565b6119a9565b3480156109ca575f80fd5b50610423600c5481565b3480156109df575f80fd5b506104116109ee36600461342a565b6119ee565b3480156109fe575f80fd5b50610423610a0d366004613477565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610a42575f80fd5b5061042360115481565b348015610a57575f80fd5b50610411610a663660046135fe565b611a33565b348015610a76575f80fd5b50610411610a85366004613441565b611a7e565b348015610a95575f80fd5b50600b546103e29060ff1681565b348015610aae575f80fd5b50610411610abd366004613441565b611ac7565b348015610acd575f80fd5b50601e54601f5460205460215460225461077e949392919085565b348015610af3575f80fd5b50600d54610484906001600160a01b031681565b348015610b12575f80fd5b50610411610b21366004613441565b611b5e565b6009545f90339060ff1680610b5257506001600160a01b0381165f9081526006602052604090205460ff165b610b775760405162461bcd60e51b8152600401610b6e9061361a565b60405180910390fd5b610b82338585611ba9565b5060019392505050565b5f546001600160a01b03163314610bb55760405162461bcd60e51b8152600401610b6e90613651565b5f5b8251811015610c0f578160075f858481518110610bd657610bd6613686565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610bb7565b505050565b6009545f90849060ff1680610c4057506001600160a01b0381165f9081526006602052604090205460ff165b610c5c5760405162461bcd60e51b8152600401610b6e9061361a565b610c67858585611ccc565b6001600160a01b0385165f90815260036020908152604080832033845290915290205483811015610ceb5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610b6e565b610cff8633610cfa87856136ae565b611ba9565b50600195945050505050565b5f601054821115610d715760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b6e565b5f610d7a612545565b9050610d8681846136c1565b9392505050565b5f546001600160a01b03163314610db65760405162461bcd60e51b8152600401610b6e90613651565b6001600160a01b0381165f9081526005602052604090205460ff16610e1d5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610b6e565b5f5b600854811015610f2d57816001600160a01b031660088281548110610e4657610e46613686565b5f918252602090912001546001600160a01b031603610f255760088054610e6f906001906136ae565b81548110610e7f57610e7f613686565b5f91825260209091200154600880546001600160a01b039092169183908110610eaa57610eaa613686565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556008805480610f0157610f016136e0565b5f8281526020902081015f1990810180546001600160a01b03191690550190555050565b600101610e1f565b5050565b5f546001600160a01b03163314610f5a5760405162461bcd60e51b8152600401610b6e90613651565b6009805461ffff191661ff0019831515908116919091176101008202179091556001148015610f895750601554155b15610f9357436015555b50565b6009545f90339060ff1680610fc257506001600160a01b0381165f9081526006602052604090205460ff165b610fde5760405162461bcd60e51b8152600401610b6e9061361a565b335f8181526003602090815260408083206001600160a01b0389168452909152902054610b8291908690610cfa9087906136f4565b5f546001600160a01b0316331461103c5760405162461bcd60e51b8152600401610b6e90613651565b600d80546001600160a01b039384166001600160a01b031991821617909155600e8054929093169116179055565b5f546001600160a01b031633146110935760405162461bcd60e51b8152600401610b6e90613651565b6001600160a01b03165f908152600460205260409020805460ff19166001179055565b5f600f548311156111095760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b6e565b81611125575f61111b8460015f612566565b51915061113f9050565b5f6111328460015f612566565b60200151915061113f9050565b92915050565b5f546001600160a01b0316331461116e5760405162461bcd60e51b8152600401610b6e90613651565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303815f875af11580156111ba573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111de9190613707565b50505050565b5f546001600160a01b0316331461120d5760405162461bcd60e51b8152600401610b6e90613651565b6001600160a01b0381165f9081526005602052604090205460ff16156112755760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b6e565b6001600160a01b0381165f90815260016020526040902054156112cc576001600160a01b0381165f908152600160205260409020546112b390610d0b565b6001600160a01b0382165f908152600260205260409020555b6001600160a01b03165f818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b5f546001600160a01b0316331461135a5760405162461bcd60e51b8152600401610b6e90613651565b6113666009600a613802565b6113709083613810565b60125561137f6009600a613802565b6113899082613810565b6013555050565b5f546001600160a01b031633146113b95760405162461bcd60e51b8152600401610b6e90613651565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f546001600160a01b0316331461140c5760405162461bcd60e51b8152600401610b6e90613651565b6040805160a08101825286815260208101869052808201859052606081018490526080018290526019869055601a859055601b849055601c839055601d829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de15905f90a15050505050565b5f546001600160a01b031633146114a25760405162461bcd60e51b8152600401610b6e90613651565b80518251146114f35760405162461bcd60e51b815260206004820152601a60248201527f417272617973206d75737420686176652073616d652073697a650000000000006044820152606401610b6e565b5f5b8251811015610c0f5761153d3384838151811061151457611514613686565b602002602001015184848151811061152e5761152e613686565b60200260200101515f806125c2565b6001016114f5565b6001600160a01b0381165f9081526005602052604081205460ff161561158057506001600160a01b03165f9081526002602052604090205490565b6001600160a01b0382165f9081526001602052604090205461113f90610d0b565b5f546001600160a01b031633146115ca5760405162461bcd60e51b8152600401610b6e90613651565b6115d35f612880565b565b5f546001600160a01b031633146115fe5760405162461bcd60e51b8152600401610b6e90613651565b5f5b8251811015610c0f578160045f85848151811061161f5761161f613686565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101611600565b5f546001600160a01b031633146116815760405162461bcd60e51b8152600401610b6e90613651565b600980549115156101000261ff0019909216919091179055565b5f546001600160a01b031633146116c45760405162461bcd60e51b8152600401610b6e90613651565b804710156117145760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e74204554482062616c616e636500000000000000006044820152606401610b6e565b604051339082156108fc029083905f818181858888f19350505050158015610f2d573d5f803e3d5ffd5b6009545f90339060ff168061176a57506001600160a01b0381165f9081526006602052604090205460ff165b6117865760405162461bcd60e51b8152600401610b6e9061361a565b335f9081526003602090815260408083206001600160a01b0388168452909152902054838110156118075760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b6e565b6118163386610cfa87856136ae565b506001949350505050565b6009545f90339060ff168061184d57506001600160a01b0381165f9081526006602052604090205460ff165b6118695760405162461bcd60e51b8152600401610b6e9061361a565b610b82338585611ccc565b5f546001600160a01b0316331461189d5760405162461bcd60e51b8152600401610b6e90613651565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146118e85760405162461bcd60e51b8152600401610b6e90613651565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b5f546001600160a01b0316331461193b5760405162461bcd60e51b8152600401610b6e90613651565b6040805160a0810182528681526020808201879052818301869052606082018590526080909101839052601e879055601f86905584905560218390556022829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de15905f90a15050505050565b5f546001600160a01b031633146119d25760405162461bcd60e51b8152600401610b6e90613651565b6119de6009600a613802565b6119e89082613810565b60115550565b5f546001600160a01b03163314611a175760405162461bcd60e51b8152600401610b6e90613651565b611a236009600a613802565b611a2d9082613810565b60145550565b5f546001600160a01b03163314611a5c5760405162461bcd60e51b8152600401610b6e90613651565b611a67816001613810565b600c5550600b805460ff1916911515919091179055565b5f546001600160a01b03163314611aa75760405162461bcd60e51b8152600401610b6e90613651565b6001600160a01b03165f908152600460205260409020805460ff19169055565b5f546001600160a01b03163314611af05760405162461bcd60e51b8152600401610b6e90613651565b6001600160a01b038116611b555760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b6e565b610f9381612880565b5f546001600160a01b03163314611b875760405162461bcd60e51b8152600401610b6e90613651565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611c0b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b6e565b6001600160a01b038216611c6c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b6e565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d305760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b6e565b6001600160a01b038216611d925760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b6e565b5f8111611df35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b6e565b611dfc83611545565b811115611e655760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610b6e565b6001600160a01b0383165f9081526007602052604090205460ff16158015611ea557506001600160a01b0382165f9081526007602052604090205460ff16155b611ee15760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b6044820152606401610b6e565b6001600160a01b0383165f9081526004602052604090205460ff16158015611f2157506001600160a01b0382165f9081526004602052604090205460ff16155b15611f6d5760095460ff16611f6d5760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401610b6e565b6001600160a01b0383165f9081526004602052604090205460ff16158015611fad57506001600160a01b0382165f9081526004602052604090205460ff16155b8015611fc65750601554611fc29060036136f4565b4311155b1561203557600e546001600160a01b03908116908316036120355760405162461bcd60e51b8152602060048201526024808201527f53656c6c73206e6f7420616c6c6f77656420666f72206669727374203320626c6044820152636f636b7360e01b6064820152608401610b6e565b600e546001600160a01b03848116911614801561206a57506001600160a01b0382165f9081526004602052604090205460ff16155b801561207f575060095462010000900460ff16155b1561213b576012548111156120d65760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610b6e565b601454816120e384611545565b6120ed91906136f4565b111561213b5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610b6e565b600e546001600160a01b0384811691161480159061217157506001600160a01b0382165f9081526004602052604090205460ff16155b801561219557506001600160a01b0383165f9081526004602052604090205460ff16155b80156121aa575060095462010000900460ff16155b1561230b576013548111156122015760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610b6e565b600e546001600160a01b0383811691161461227b576014548161222384611545565b61222d91906136f4565b111561227b5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610b6e565b600b5460ff161561230b576001600160a01b0383165f908152600a60205260408120546122a890426136ae565b9050600c548110156122ef5760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b6044820152606401610b6e565b506001600160a01b0383165f908152600a602052604090204290555b6123176009600a613802565b61232290600a613810565b8161232c85611545565b61233691906136ae565b1161237d5761234483611545565b816123516009600a613802565b61235c90600a613810565b61236691906136f4565b61237091906136ae565b61237a90826136ae565b90505b5f60115461238a30611545565b600954911115915062010000900460ff161580156123af5750600954610100900460ff165b80156123b85750805b80156123d25750600e546001600160a01b03858116911614155b80156123f657506001600160a01b0384165f9081526004602052604090205460ff16155b801561241a57506001600160a01b0383165f9081526004602052604090205460ff16155b156124b857600e546001600160a01b039081169084160361247a576011546040805160a081018252601e548152601f5460208083019190915254918101919091526021546060820152602254608082015261247591906128cf565b6124b8565b6011546040805160a0810182526019548152601a546020820152601b5491810191909152601c546060820152601d5460808201526124b891906128cf565b6009546001905f9062010000900460ff16806124eb57506001600160a01b0386165f9081526004602052604090205460ff165b8061250d57506001600160a01b0385165f9081526004602052604090205460ff165b15612516575f91505b600e546001600160a01b0390811690861603612530575060015b61253d86868685856125c2565b505050505050565b5f805f612550612a21565b909250905061255f81836136c1565b9250505090565b61256e6131e5565b612579848484612b91565b905061258e818585612589612545565b612d17565b608086015260608501526040840152602083015281526125b681846125b1612545565b612dc4565b60a08201529392505050565b5f6125ce848484612566565b6001600160a01b0387165f9081526005602052604090205490915060ff161561262d576001600160a01b0386165f908152600260205260409020546126149085906136ae565b6001600160a01b0387165f908152600260205260409020555b6001600160a01b0385165f9081526005602052604090205460ff161561268d5760e08101516001600160a01b0386165f9081526002602052604090205461267491906136f4565b6001600160a01b0386165f908152600260205260409020555b80516001600160a01b0387165f908152600160205260409020546126b191906136ae565b6001600160a01b038088165f90815260016020908152604080832094909455840151918816815291909120546126e791906136f4565b6001600160a01b0386165f90815260016020526040908190209190915581015115158061271857505f816101000151115b15612730576127308160400151826101000151612dea565b5f8160800151118061274657505f816101400151115b156127cb5761275e8160800151826101400151612e1d565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8361016001518461012001518561014001516127af91906136f4565b6127b991906136f4565b60405190815260200160405180910390a35b5f816060015111806127e157505f816101200151115b156127f9576127f98160600151826101200151612e8f565b5f8160a00151118061280f57505f816101600151115b15612827576128278160a00151826101600151612ea3565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360e0015160405161287091815260200190565b60405180910390a3505050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6009805462ff00001916620100001790556060810151602082015160408301515f92916128fb916136f4565b61290591906136f4565b612910906002613810565b90505f818360400151856129249190613810565b61292e91906136c1565b90505f61293b82866136ae565b90504761294782612eb7565b5f61295282476136ae565b90505f86604001518661296591906136ae565b61296f90836136c1565b90505f8760400151826129829190613810565b90508015612994576129948682612fff565b60208801515f906129a6846002613810565b6129b09190613810565b905080156129ce576016546129ce906001600160a01b0316826130d0565b60608901515f906129e0856002613810565b6129ea9190613810565b90508015612a0857601754612a08906001600160a01b0316826130d0565b50506009805462ff000019169055505050505050505050565b601054600f545f918291825b600854811015612b60578260015f60088481548110612a4e57612a4e613686565b5f9182526020808320909101546001600160a01b031683528201929092526040019020541180612ab657508160025f60088481548110612a9057612a90613686565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054115b15612acc57601054600f54945094505050509091565b60015f60088381548110612ae257612ae2613686565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054612b1090846136ae565b925060025f60088381548110612b2857612b28613686565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054612b5690836136ae565b9150600101612a2d565b50600f54601054612b7191906136c1565b821015612b8857601054600f549350935050509091565b90939092509050565b612b996131e5565b82612baa5760e08101849052610d86565b612bd76040518060a001604052805f81526020015f81526020015f81526020015f81526020015f81525090565b8215612c1657506040805160a081018252601e548152601f54602080830191909152549181019190915260215460608201526022546080820152612c49565b506040805160a0810182526019548152601a546020820152601b5491810191909152601c546060820152601d5460808201525b8051606490612c589087613810565b612c6291906136c1565b6101008301526020810151606490612c7a9087613810565b612c8491906136c1565b6101208301526040810151606490612c9c9087613810565b612ca691906136c1565b6101408301526060810151606490612cbe9087613810565b612cc891906136c1565b6101608301819052610140830151610120840151610100850151612cec90896136ae565b612cf691906136ae565b612d0091906136ae565b612d0a91906136ae565b60e0830152509392505050565b5f80808080612d268689613810565b945086612d3d57508392505f915081905080612db9565b85896101000151612d4e9190613810565b925085896101200151612d619190613810565b915085896101400151612d749190613810565b90505f868a6101600151612d889190613810565b9050808284612d97878a6136ae565b612da191906136ae565b612dab91906136ae565b612db591906136ae565b9450505b945094509450945094565b5f82612dd157505f610d86565b81846101600151612de29190613810565b949350505050565b8160105f828254612dfb91906136ae565b9091555050602380548291905f90612e149084906136f4565b90915550505050565b8060236002015f828254612e3191906136f4565b9091555050305f9081526005602052604090205460ff1615612e7157305f9081526002602052604081208054839290612e6b9084906136f4565b90915550505b305f9081526001602052604081208054849290612e149084906136f4565b8060236001015f828254612e3191906136f4565b8060236003015f828254612e3191906136f4565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110612eea57612eea613686565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612f41573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f659190613827565b81600181518110612f7857612f78613686565b6001600160a01b039283166020918202929092010152600d54612f9e9130911684611ba9565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac94790612fd69085905f90869030904290600401613842565b5f604051808303815f87803b158015612fed575f80fd5b505af115801561253d573d5f803e3d5ffd5b600d546130179030906001600160a01b031684611ba9565b600d546001600160a01b031663f305d7198230855f8061303e5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156130a4573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906130c991906138b3565b5050505050565b804710156131205760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610b6e565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114613169576040519150601f19603f3d011682016040523d82523d5f602084013e61316e565b606091505b5050905080610c0f5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610b6e565b604051806101a001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610f93575f80fd5b5f806040838503121561329a575f80fd5b82356132a581613275565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156132f0576132f06132b3565b604052919050565b5f67ffffffffffffffff821115613311576133116132b3565b5060051b60200190565b5f82601f83011261332a575f80fd5b8135602061333f61333a836132f8565b6132c7565b8083825260208201915060208460051b870101935086841115613360575f80fd5b602086015b8481101561338557803561337881613275565b8352918301918301613365565b509695505050505050565b8015158114610f93575f80fd5b5f80604083850312156133ae575f80fd5b823567ffffffffffffffff8111156133c4575f80fd5b6133d08582860161331b565b92505060208301356133e181613390565b809150509250929050565b5f805f606084860312156133fe575f80fd5b833561340981613275565b9250602084013561341981613275565b929592945050506040919091013590565b5f6020828403121561343a575f80fd5b5035919050565b5f60208284031215613451575f80fd5b8135610d8681613275565b5f6020828403121561346c575f80fd5b8135610d8681613390565b5f8060408385031215613488575f80fd5b823561349381613275565b915060208301356133e181613275565b5f80604083850312156134b4575f80fd5b8235915060208301356133e181613390565b5f80604083850312156134d7575f80fd5b50508035926020909101359150565b5f80604083850312156134f7575f80fd5b823561350281613275565b915060208301356133e181613390565b5f805f805f60a08688031215613526575f80fd5b505083359560208501359550604085013594606081013594506080013592509050565b5f806040838503121561355a575f80fd5b823567ffffffffffffffff80821115613571575f80fd5b61357d8683870161331b565b9350602091508185013581811115613593575f80fd5b85019050601f810186136135a5575f80fd5b80356135b361333a826132f8565b81815260059190911b820183019083810190888311156135d1575f80fd5b928401925b828410156135ef578335825292840192908401906135d6565b80955050505050509250929050565b5f806040838503121561360f575f80fd5b82356132a581613390565b60208082526017908201527f54726164696e67206e6f7420656e61626c656420796574000000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8181038181111561113f5761113f61369a565b5f826136db57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603160045260245ffd5b8082018082111561113f5761113f61369a565b5f60208284031215613717575f80fd5b8151610d8681613390565b600181815b8085111561375c57815f19048211156137425761374261369a565b8085161561374f57918102915b93841c9390800290613727565b509250929050565b5f826137725750600161113f565b8161377e57505f61113f565b8160018114613794576002811461379e576137ba565b600191505061113f565b60ff8411156137af576137af61369a565b50506001821b61113f565b5060208310610133831016604e8410600b84101617156137dd575081810a61113f565b6137e78383613722565b805f19048211156137fa576137fa61369a565b029392505050565b5f610d8660ff841683613764565b808202811582820484141761113f5761113f61369a565b5f60208284031215613837575f80fd5b8151610d8681613275565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156138925784516001600160a01b03168352938301939183019160010161386d565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156138c5575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220a012a061f1a25d84565427eee965f808ad656fd5a8b3ca449cd9969bc2699ff564736f6c63430008190033

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

4483:21620:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8273:83;;;;;;;;;;-1:-1:-1;8343:5:0;;;;;;;;;;;;-1:-1:-1;;;8343:5:0;;;;8273:83;;;;;;;:::i;:::-;;;;;;;;9033:181;;;;;;;;;;-1:-1:-1;9033:181:0;;;;;:::i;:::-;;:::i;:::-;;;1058:14:1;;1051:22;1033:41;;1021:2;1006:18;9033:181:0;893:187:1;24776:209:0;;;;;;;;;;-1:-1:-1;24776:209:0;;;;;:::i;:::-;;:::i;:::-;;8569:95;;;;;;;;;;-1:-1:-1;8649:7:0;;8569:95;;;3184:25:1;;;3172:2;3157:18;8569:95:0;3038:177:1;9222:430:0;;;;;;;;;;-1:-1:-1;9222:430:0;;;;;:::i;:::-;;:::i;5916:28::-;;;;;;;;;;;;;;;;6115:71;;;;;;;;;;-1:-1:-1;6115:71:0;;;;-1:-1:-1;;;;;6115:71:0;;;;;;-1:-1:-1;;;;;3845:32:1;;;3827:51;;3815:2;3800:18;6115:71:0;3681:203:1;11313:248:0;;;;;;;;;;-1:-1:-1;11313:248:0;;;;;:::i;:::-;;:::i;8455:83::-;;;;;;;;;;-1:-1:-1;8455:83:0;;5530:1;4216:36:1;;4204:2;4189:18;8455:83:0;4074:184:1;11910:475:0;;;;;;;;;;-1:-1:-1;11910:475:0;;;;;:::i;:::-;;:::i;11099:206::-;;;;;;;;;;-1:-1:-1;11099:206:0;;;;;:::i;:::-;;:::i;9660:228::-;;;;;;;;;;-1:-1:-1;9660:228:0;;;;;:::i;:::-;;:::i;25464:154::-;;;;;;;;;;-1:-1:-1;25464:154:0;;;;;:::i;:::-;;:::i;12393:111::-;;;;;;;;;;-1:-1:-1;12393:111:0;;;;;:::i;:::-;;:::i;10621:470::-;;;;;;;;;;-1:-1:-1;10621:470:0;;;;;:::i;:::-;;:::i;25904:154::-;;;;;;;;;;-1:-1:-1;25904:154:0;;;;;:::i;:::-;;:::i;5017:26::-;;;;;;;;;;-1:-1:-1;5017:26:0;;;;;;;;11569:333;;;;;;;;;;-1:-1:-1;11569:333:0;;;;;:::i;:::-;;:::i;12630:123::-;;;;;;;;;;-1:-1:-1;12630:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;12718:27:0;12694:4;12718:27;;;:18;:27;;;;;;;;;12630:123;25138:183;;;;;;;;;;-1:-1:-1;25138:183:0;;;;;:::i;:::-;;:::i;24638:126::-;;;;;;;;;;-1:-1:-1;24638:126:0;;;;;:::i;:::-;;:::i;12761:219::-;;;;;;;;;;-1:-1:-1;12761:219:0;;;;;:::i;:::-;;:::i;4869:48::-;;;;;;;;;;-1:-1:-1;4869:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5806:44;;;;;;;;;;;;;;;;5857:46;;;;;;;;;;;;;;;;5756:43;;;;;;;;;;;;;;;;5050:23;;;;;;;;;;-1:-1:-1;5050:23:0;;;;;;;;;;;23425:331;;;;;;;;;;-1:-1:-1;23425:331:0;;;;;:::i;:::-;;:::i;8672:198::-;;;;;;;;;;-1:-1:-1;8672:198:0;;;;;:::i;:::-;;:::i;2911:94::-;;;;;;;;;;;;;:::i;6449:41::-;;;;;;;;;;-1:-1:-1;6449:41:0;;;;;;;;;;;;;;;;;;;;;;7969:25:1;;;8025:2;8010:18;;8003:34;;;;8053:18;;;8046:34;;;;8111:2;8096:18;;8089:34;8154:3;8139:19;;8132:35;7956:3;7941:19;6449:41:0;7710:463:1;5957:75:0;;;;;;;;;;-1:-1:-1;5957:75:0;;;;-1:-1:-1;;;;;5957:75:0;;;10493:120;;;;;;;;;;-1:-1:-1;10493:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;10585:20:0;10561:4;10585:20;;;:11;:20;;;;;;;;;10493:120;2688:87;;;;;;;;;;-1:-1:-1;2734:7:0;2761:6;-1:-1:-1;;;;;2761:6:0;2688:87;;23768:209;;;;;;;;;;-1:-1:-1;23768:209:0;;;;;:::i;:::-;;:::i;6039:69::-;;;;;;;;;;-1:-1:-1;6039:69:0;;;;-1:-1:-1;;;;;6039:69:0;;;24525:101;;;;;;;;;;-1:-1:-1;24525:101:0;;;;;:::i;:::-;;:::i;8362:87::-;;;;;;;;;;-1:-1:-1;8434:7:0;;;;;;;;;;;;-1:-1:-1;;;8434:7:0;;;;8362:87;;6720:36;;;;;;;;;;-1:-1:-1;6720:36:0;;;;;;;;;;;;;;;;;;25694:196;;;;;;;;;;-1:-1:-1;25694:196:0;;;;;:::i;:::-;;:::i;9896:390::-;;;;;;;;;;-1:-1:-1;9896:390:0;;;;;:::i;:::-;;:::i;5467:19::-;;;;;;;;;;-1:-1:-1;5467:19:0;;;;-1:-1:-1;;;;;5467:19:0;;;10298:187;;;;;;;;;;-1:-1:-1;10298:187:0;;;;;:::i;:::-;;:::i;23985:114::-;;;;;;;;;;-1:-1:-1;23985:114:0;;;;;:::i;:::-;;:::i;24997:129::-;;;;;;;;;;-1:-1:-1;24997:129:0;;;;;:::i;:::-;;:::i;12992:227::-;;;;;;;;;;-1:-1:-1;12992:227:0;;;;;:::i;:::-;;:::i;24387:130::-;;;;;;;;;;-1:-1:-1;24387:130:0;;;;;:::i;:::-;;:::i;5237:39::-;;;;;;;;;;;;;;;;25333:123;;;;;;;;;;-1:-1:-1;25333:123:0;;;;;:::i;:::-;;:::i;8882:143::-;;;;;;;;;;-1:-1:-1;8882:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;8990:18:0;;;8963:7;8990:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8882:143;5699:50;;;;;;;;;;;;;;;;24227:152;;;;;;;;;;-1:-1:-1;24227:152:0;;;;;:::i;:::-;;:::i;12512:110::-;;;;;;;;;;-1:-1:-1;12512:110:0;;;;;:::i;:::-;;:::i;5195:35::-;;;;;;;;;;-1:-1:-1;5195:35:0;;;;;;;;3013:192;;;;;;;;;;-1:-1:-1;3013:192:0;;;;;:::i;:::-;;:::i;6497:45::-;;;;;;;;;;-1:-1:-1;6497:45:0;;;;;;;;;;;;;;;;;;5439:21;;;;;;;;;;-1:-1:-1;5439:21:0;;;;-1:-1:-1;;;;;5439:21:0;;;24111:102;;;;;;;;;;-1:-1:-1;24111:102:0;;;;;:::i;:::-;;:::i;9033:181::-;5341:14;;9128:4;;9108:10;;5341:14;;;:42;;-1:-1:-1;;;;;;5359:24:0;;;;;;:15;:24;;;;;;;;5341:42;5333:78;;;;-1:-1:-1;;;5333:78:0;;;;;;;:::i;:::-;;;;;;;;;9145:39:::1;2189:10:::0;9168:7:::1;9177:6;9145:8;:39::i;:::-;-1:-1:-1::0;9202:4:0::1;::::0;9033:181;-1:-1:-1;;;9033:181:0:o;24776:209::-;2734:7;2761:6;-1:-1:-1;;;;;2761:6:0;2189:10;2823:23;2815:68;;;;-1:-1:-1;;;2815:68:0;;;;;;;:::i;:::-;24875:9:::1;24871:107;24893:8;:15;24889:1;:19;24871:107;;;24959:5;24929:14;:27;24944:8;24953:1;24944:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;24929:27:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;24929:27:0;:35;;-1:-1:-1;;24929:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;24910:3:0::1;24871:107;;;;24776:209:::0;;:::o;9222:430::-;5341:14;;9336:4;;9319:6;;5341:14;;;:42;;-1:-1:-1;;;;;;5359:24:0;;;;;;:15;:24;;;;;;;;5341:42;5333:78;;;;-1:-1:-1;;;5333:78:0;;;;;;;:::i;:::-;9353:36:::1;9363:6;9371:9;9382:6;9353:9;:36::i;:::-;-1:-1:-1::0;;;;;9429:19:0;::::1;9402:24;9429:19:::0;;;:11:::1;:19;::::0;;;;;;;2189:10;9429:33;;;;;;;;9481:26;;::::1;;9473:79;;;::::0;-1:-1:-1;;;9473:79:0;;9762:2:1;9473:79:0::1;::::0;::::1;9744:21:1::0;9801:2;9781:18;;;9774:30;9840:34;9820:18;;;9813:62;-1:-1:-1;;;9891:18:1;;;9884:38;9939:19;;9473:79:0::1;9560:404:1::0;9473:79:0::1;9563:57;9572:6:::0;2189:10;9594:25:::1;9613:6:::0;9594:16;:25:::1;:::i;:::-;9563:8;:57::i;:::-;-1:-1:-1::0;9640:4:0::1;::::0;9222:430;-1:-1:-1;;;;;9222:430:0:o;11313:248::-;11379:7;11418;;11407;:18;;11399:73;;;;-1:-1:-1;;;11399:73:0;;10436:2:1;11399:73:0;;;10418:21:1;10475:2;10455:18;;;10448:30;10514:34;10494:18;;;10487:62;-1:-1:-1;;;10565:18:1;;;10558:40;10615:19;;11399:73:0;10234:406:1;11399:73:0;11483:19;11506:10;:8;:10::i;:::-;11483:33;-1:-1:-1;11534:19:0;11483:33;11534:7;:19;:::i;:::-;11527:26;11313:248;-1:-1:-1;;;11313:248:0:o;11910:475::-;2734:7;2761:6;-1:-1:-1;;;;;2761:6:0;2189:10;2823:23;2815:68;;;;-1:-1:-1;;;2815:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11992:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;11984:56;;;::::0;-1:-1:-1;;;11984:56:0;;11069:2:1;11984:56:0::1;::::0;::::1;11051:21:1::0;11108:2;11088:18;;;11081:30;11147:25;11127:18;;;11120:53;11190:18;;11984:56:0::1;10867:347:1::0;11984:56:0::1;12056:9;12051:327;12075:9;:16:::0;12071:20;::::1;12051:327;;;12133:7;-1:-1:-1::0;;;;;12117:23:0::1;:9;12127:1;12117:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;12117:12:0::1;:23:::0;12113:254:::1;;12176:9;12186:16:::0;;:20:::1;::::0;12205:1:::1;::::0;12186:20:::1;:::i;:::-;12176:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;12161:9:::1;:12:::0;;-1:-1:-1;;;;;12176:31:0;;::::1;::::0;12171:1;;12161:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;12161:46:0::1;-1:-1:-1::0;;;;;12161:46:0;;::::1;;::::0;;12226:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;12265:11:::1;:20:::0;;;;:28;;-1:-1:-1;;12265:28:0::1;::::0;;12312:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;12312:15:0;;;;;-1:-1:-1;;;;;;12312:15:0::1;::::0;;;;;12051:327:::1;11910:475:::0;:::o;12113:254::-:1;12093:3;;12051:327;;;;11910:475:::0;:::o;11099:206::-;2734:7;2761:6;-1:-1:-1;;;;;2761:6:0;2189:10;2823:23;2815:68;;;;-1:-1:-1;;;2815:68:0;;;;;;;:::i;:::-;11166:14:::1;:22:::0;;-1:-1:-1;;11199:19:0;-1:-1:-1;;11166:22:0;::::1;;11199:19:::0;;;;;;;11166:22:::1;11199:19:::0;::::1;;::::0;;;-1:-1:-1;11232:13:0::1;:35:::0;::::1;;;-1:-1:-1::0;11249:13:0::1;::::0;:18;11232:35:::1;11229:68;;;11285:12;11269:13;:28:::0;11229:68:::1;11099:206:::0;:::o;9660:228::-;5341:14;;9761:4;;9740:10;;5341:14;;;:42;;-1:-1:-1;;;;;;5359:24:0;;;;;;:15;:24;;;;;;;;5341:42;5333:78;;;;-1:-1:-1;;;5333:78:0;;;;;;;:::i;:::-;2189:10;9810:25:::1;::::0;;;:11:::1;:25;::::0;;;;;;;-1:-1:-1;;;;;9810:34:0;::::1;::::0;;;;;;;;9778:80:::1;::::0;2189:10;9801:7;;9810:47:::1;::::0;9847:10;;9810:47:::1;:::i;25464:154::-:0;2734:7;2761:6;-1:-1:-1;;;;;2761:6:0;2189:10;2823:23;2815:68;;;;-1:-1:-1;;;2815:68:0;;;;;;;:::i;:::-;25558:6:::1;:27:::0;;-1:-1:-1;;;;;25558:27:0;;::::1;-1:-1:-1::0;;;;;;25558:27:0;;::::1;;::::0;;;25596:4:::1;:14:::0;;;;;::::1;::::0;::::1;;::::0;;25464:154::o;12393:111::-;2734:7;2761:6;-1:-1:-1;;;;;2761:6:0;2189:10;2823:23;2815:68;;;;-1:-1:-1;;;2815:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12462:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;12462:34:0::1;12492:4;12462:34;::::0;;12393:111::o;10621:470::-;10711:7;10750;;10739;:18;;10731:62;;;;-1:-1:-1;;;10731:62:0;;11683:2:1;10731:62:0;;;11665:21:1;11722:2;11702:18;;;11695:30;11761:33;11741:18;;;11734:61;11812:18;;10731:62:0;11481:355:1;10731:62:0;10809:17;10804:280;;10843:28;10874:32;10885:7;10894:4;10900:5;10874:10;:32::i;:::-;10928:9;;-1:-1:-1;10921:16:0;;-1:-1:-1;10921:16:0;10804:280;10970:28;11001:32;11012:7;11021:4;11027:5;11001:10;:32::i;:::-;11055:17;;;;-1:-1:-1;11048:24:0;;-1:-1:-1;11048:24:0;10804:280;10621:470;;;;:::o;25904:154::-;2734:7;2761:6;-1:-1:-1;;;;;2761:6:0;2189:10;2823:23;2815:68;;;;-1:-1:-1;;;2815:68:0;;;;;;;:::i;:::-;26009:41:::1;::::0;-1:-1:-1;;;26009:41:0;;-1:-1:-1;;;;;12033:32:1;;;26009:41:0::1;::::0;::::1;12015:51:1::0;12082:18;;;12075:34;;;26009:27:0;::::1;::::0;::::1;::::0;11988:18:1;;26009:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25904:154:::0;;;:::o;11569:333::-;2734:7;2761:6;-1:-1:-1;;;;;2761:6:0;2189:10;2823:23;2815:68;;;;-1:-1:-1;;;2815:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11652:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;11651:21;11643:61;;;::::0;-1:-1:-1;;;11643:61:0;;12572:2:1;11643:61:0::1;::::0;::::1;12554:21:1::0;12611:2;12591:18;;;12584:30;12650:29;12630:18;;;12623:57;12697:18;;11643:61:0::1;12370:351:1::0;11643:61:0::1;-1:-1:-1::0;;;;;11718:16:0;::::1;11737:1;11718:16:::0;;;:7:::1;:16;::::0;;;;;:20;11715:108:::1;;-1:-1:-1::0;;;;;11794:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;11774:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;11755:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;11715:108:::1;-1:-1:-1::0;;;;;11833:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;11833:27:0::1;11856:4;11833:27:::0;;::::1;::::0;;;11871:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;11871:23:0::1;::::0;;::::1;::::0;;11569:333::o;25138:183::-;2734:7;2761:6;-1:-1:-1;;;;;2761:6:0;2189:10;2823:23;2815:68;;;;-1:-1:-1;;;2815:68:0;;;;;;;:::i;:::-;25249:14:::1;5530:1:::0;25249:2:::1;:14;:::i;:::-;25240:23;::::0;:6;:23:::1;:::i;:::-;25226:11;:37:::0;25299:14:::1;5530:1:::0;25299:2:::1;:14;:::i;:::-;25289:24;::::0;:7;:24:::1;:::i;:::-;25274:12;:39:::0;-1:-1:-1;;25138:183:0:o;24638:126::-;2734:7;2761:6;-1:-1:-1;;;;;2761:6:0;2189:10;2823:23;2815:68;;;;-1:-1:-1;;;2815:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24725:23:0;;;::::1;;::::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;24725:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24638:126::o;12761:219::-;2734:7;2761:6;-1:-1:-1;;;;;2761:6:0;2189:10;2823:23;2815:68;;;;-1:-1:-1;;;2815:68:0;;;;;;;:::i;:::-;12898:45:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;12890:5:::1;:53:::0;;;;;;;;;;;;;;;;;;;12959:13;::::1;::::0;-1:-1:-1;;12959:13:0::1;12761:219:::0;;;;;:::o;23425:331::-;2734:7;2761:6;-1:-1:-1;;;;;2761:6:0;2189:10;2823:23;2815:68;;;;-1:-1:-1;;;2815:68:0;;;;;;;:::i;:::-;23557:7:::1;:14;23538:8;:15;:33;23530:72;;;::::0;-1:-1:-1;;;23530:72:0;;14478:2:1;23530:72:0::1;::::0;::::1;14460:21:1::0;14517:2;14497:18;;;14490:30;14556:28;14536:18;;;14529:56;14602:18;;23530:72:0::1;14276:350:1::0;23530:72:0::1;23617:9;23613:136;23636:8;:15;23632:1;:19;23613:136;;;23672:65;23687:10;23699:8;23708:1;23699:11;;;;;;;;:::i;:::-;;;;;;;23712:7;23720:1;23712:10;;;;;;;;:::i;:::-;;;;;;;23724:5;23731::::0;23672:14:::1;:65::i;:::-;23653:3;;23613:136;;8672:198:::0;-1:-1:-1;;;;;8762:20:0;;8738:7;8762:20;;;:11;:20;;;;;;;;8758:49;;;-1:-1:-1;;;;;;8791:16:0;;;;;:7;:16;;;;;;;8672:198::o;8758:49::-;-1:-1:-1;;;;;8845:16:0;;;;;;:7;:16;;;;;;8825:37;;:19;:37::i;2911:94::-;2734:7;2761:6;-1:-1:-1;;;;;2761:6:0;2189:10;2823:23;2815:68;;;;-1:-1:-1;;;2815:68:0;;;;;;;:::i;:::-;2976:21:::1;2994:1;2976:9;:21::i;:::-;2911:94::o:0;23768:209::-;2734:7;2761:6;-1:-1:-1;;;;;2761:6:0;2189:10;2823:23;2815:68;;;;-1:-1:-1;;;2815:68:0;;;;;;;:::i;:::-;23864:9:::1;23860:110;23883:8;:15;23879:1;:19;23860:110;;;23953:5;23919:18;:31;23938:8;23947:1;23938:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;23919:31:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;23919:31:0;:39;;-1:-1:-1;;23919:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;23900:3:0::1;23860:110;;24525:101:::0;2734:7;2761:6;-1:-1:-1;;;;;2761:6:0;2189:10;2823:23;2815:68;;;;-1:-1:-1;;;2815:68:0;;;;;;;:::i;:::-;24596:11:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;24596:22:0;;::::1;::::0;;;::::1;::::0;;24525:101::o;25694:196::-;2734:7;2761:6;-1:-1:-1;;;;;2761:6:0;2189:10;2823:23;2815:68;;;;-1:-1:-1;;;2815:68:0;;;;;;;:::i;:::-;25794:9:::1;25769:21;:34;;25761:71;;;::::0;-1:-1:-1;;;25761:71:0;;14833:2:1;25761:71:0::1;::::0;::::1;14815:21:1::0;14872:2;14852:18;;;14845:30;14911:26;14891:18;;;14884:54;14955:18;;25761:71:0::1;14631:348:1::0;25761:71:0::1;25843:39;::::0;25851:10:::1;::::0;25843:39;::::1;;;::::0;25872:9;;25843:39:::1;::::0;;;25872:9;25851:10;25843:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;9896:390:::0;5341:14;;10002:4;;9981:10;;5341:14;;;:42;;-1:-1:-1;;;;;;5359:24:0;;;;;;:15;:24;;;;;;;;5341:42;5333:78;;;;-1:-1:-1;;;5333:78:0;;;;;;;:::i;:::-;2189:10;10019:24:::1;10046:25:::0;;;:11:::1;:25;::::0;;;;;;;-1:-1:-1;;;;;10046:34:0;::::1;::::0;;;;;;;;10099:35;;::::1;;10091:85;;;::::0;-1:-1:-1;;;10091:85:0;;15186:2:1;10091:85:0::1;::::0;::::1;15168:21:1::0;15225:2;15205:18;;;15198:30;15264:34;15244:18;;;15237:62;-1:-1:-1;;;15315:18:1;;;15308:35;15360:19;;10091:85:0::1;14984:401:1::0;10091:85:0::1;10187:67;2189:10:::0;10210:7;10219:34:::1;10238:15:::0;10219:16;:34:::1;:::i;10187:67::-;-1:-1:-1::0;10274:4:0::1;::::0;9896:390;-1:-1:-1;;;;9896:390:0:o;10298:187::-;5341:14;;10396:4;;10375:10;;5341:14;;;:42;;-1:-1:-1;;;;;;5359:24:0;;;;;;:15;:24;;;;;;;;5341:42;5333:78;;;;-1:-1:-1;;;5333:78:0;;;;;;;:::i;:::-;10417:40:::1;10427:10;10439:9;10450:6;10417:9;:40::i;23985:114::-:0;2734:7;2761:6;-1:-1:-1;;;;;2761:6:0;2189:10;2823:23;2815:68;;;;-1:-1:-1;;;2815:68:0;;;;;;;:::i;:::-;24064:15:::1;:27:::0;;-1:-1:-1;;;;;;24064:27:0::1;-1:-1:-1::0;;;;;24064:27:0;;;::::1;::::0;;;::::1;::::0;;23985:114::o;24997:129::-;2734:7;2761:6;-1:-1:-1;;;;;2761:6:0;2189:10;2823:23;2815:68;;;;-1:-1:-1;;;2815:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25086:24:0;;;::::1;;::::0;;;:15:::1;:24;::::0;;;;:32;;-1:-1:-1;;25086:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24997:129::o;12992:227::-;2734:7;2761:6;-1:-1:-1;;;;;2761:6:0;2189:10;2823:23;2815:68;;;;-1:-1:-1;;;2815:68:0;;;;;;;:::i;:::-;13137:45:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;13125:9:::1;:57:::0;;;;;;;;;;;;;;;;;;13198:13;::::1;::::0;-1:-1:-1;;13198:13:0::1;12992:227:::0;;;;;:::o;24387:130::-;2734:7;2761:6;-1:-1:-1;;;;;2761:6:0;2189:10;2823:23;2815:68;;;;-1:-1:-1;;;2815:68:0;;;;;;;:::i;:::-;24496:13:::1;5530:1;24496:2;:13;:::i;:::-;24487:22;::::0;:6;:22:::1;:::i;:::-;24466:18;:43:::0;-1:-1:-1;24387:130:0:o;25333:123::-;2734:7;2761:6;-1:-1:-1;;;;;2761:6:0;2189:10;2823:23;2815:68;;;;-1:-1:-1;;;2815:68:0;;;;;;;:::i;:::-;25434:14:::1;5530:1:::0;25434:2:::1;:14;:::i;:::-;25425:23;::::0;:6;:23:::1;:::i;:::-;25408:14;:40:::0;-1:-1:-1;25333:123:0:o;24227:152::-;2734:7;2761:6;-1:-1:-1;;;;;2761:6:0;2189:10;2823:23;2815:68;;;;-1:-1:-1;;;2815:68:0;;;;;;;:::i;:::-;24321:16:::1;:4:::0;24328:9:::1;24321:16;:::i;:::-;24306:12;:31:::0;-1:-1:-1;24348:15:0::1;:23:::0;;-1:-1:-1;;24348:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24227:152::o;12512:110::-;2734:7;2761:6;-1:-1:-1;;;;;2761:6:0;2189:10;2823:23;2815:68;;;;-1:-1:-1;;;2815:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12579:27:0::1;12609:5;12579:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;12579:35:0::1;::::0;;12512:110::o;3013:192::-;2734:7;2761:6;-1:-1:-1;;;;;2761:6:0;2189:10;2823:23;2815:68;;;;-1:-1:-1;;;2815:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3102:22:0;::::1;3094:73;;;::::0;-1:-1:-1;;;3094:73:0;;15592:2:1;3094:73:0::1;::::0;::::1;15574:21:1::0;15631:2;15611:18;;;15604:30;15670:34;15650:18;;;15643:62;-1:-1:-1;;;15721:18:1;;;15714:36;15767:19;;3094:73:0::1;15390:402:1::0;3094:73:0::1;3178:19;3188:8;3178:9;:19::i;24111:102::-:0;2734:7;2761:6;-1:-1:-1;;;;;2761:6:0;2189:10;2823:23;2815:68;;;;-1:-1:-1;;;2815:68:0;;;;;;;:::i;:::-;24184:9:::1;:21:::0;;-1:-1:-1;;;;;;24184:21:0::1;-1:-1:-1::0;;;;;24184:21:0;;;::::1;::::0;;;::::1;::::0;;24111:102::o;17214:335::-;-1:-1:-1;;;;;17307:19:0;;17299:68;;;;-1:-1:-1;;;17299:68:0;;15999:2:1;17299:68:0;;;15981:21:1;16038:2;16018:18;;;16011:30;16077:34;16057:18;;;16050:62;-1:-1:-1;;;16128:18:1;;;16121:34;16172:19;;17299:68:0;15797:400:1;17299:68:0;-1:-1:-1;;;;;17386:21:0;;17378:68;;;;-1:-1:-1;;;17378:68:0;;16404:2:1;17378:68:0;;;16386:21:1;16443:2;16423:18;;;16416:30;16482:34;16462:18;;;16455:62;-1:-1:-1;;;16533:18:1;;;16526:32;16575:19;;17378:68:0;16202:398:1;17378:68:0;-1:-1:-1;;;;;17457:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17509:32;;3184:25:1;;;17509:32:0;;3157:18:1;17509:32:0;;;;;;;17214:335;;;:::o;17557:2449::-;-1:-1:-1;;;;;17645:18:0;;17637:68;;;;-1:-1:-1;;;17637:68:0;;16807:2:1;17637:68:0;;;16789:21:1;16846:2;16826:18;;;16819:30;16885:34;16865:18;;;16858:62;-1:-1:-1;;;16936:18:1;;;16929:35;16981:19;;17637:68:0;16605:401:1;17637:68:0;-1:-1:-1;;;;;17724:16:0;;17716:64;;;;-1:-1:-1;;;17716:64:0;;17213:2:1;17716:64:0;;;17195:21:1;17252:2;17232:18;;;17225:30;17291:34;17271:18;;;17264:62;-1:-1:-1;;;17342:18:1;;;17335:33;17385:19;;17716:64:0;17011:399:1;17716:64:0;17808:1;17799:6;:10;17791:64;;;;-1:-1:-1;;;17791:64:0;;17617:2:1;17791:64:0;;;17599:21:1;17656:2;17636:18;;;17629:30;17695:34;17675:18;;;17668:62;-1:-1:-1;;;17746:18:1;;;17739:39;17795:19;;17791:64:0;17415:405:1;17791:64:0;17884:15;17894:4;17884:9;:15::i;:::-;17874:6;:25;;17866:86;;;;-1:-1:-1;;;17866:86:0;;18027:2:1;17866:86:0;;;18009:21:1;18066:2;18046:18;;;18039:30;18105:34;18085:18;;;18078:62;-1:-1:-1;;;18156:18:1;;;18149:47;18213:19;;17866:86:0;17825:413:1;17866:86:0;-1:-1:-1;;;;;17972:20:0;;;;;;:14;:20;;;;;;;;17971:21;:44;;;;-1:-1:-1;;;;;;17997:18:0;;;;;;:14;:18;;;;;;;;17996:19;17971:44;17963:70;;;;-1:-1:-1;;;17963:70:0;;18445:2:1;17963:70:0;;;18427:21:1;18484:2;18464:18;;;18457:30;-1:-1:-1;;;18503:18:1;;;18496:43;18556:18;;17963:70:0;18243:337:1;17963:70:0;-1:-1:-1;;;;;18058:24:0;;;;;;:18;:24;;;;;;;;18057:25;:52;;;;-1:-1:-1;;;;;;18087:22:0;;;;;;:18;:22;;;;;;;;18086:23;18057:52;18054:128;;;18133:14;;;;18125:45;;;;-1:-1:-1;;;18125:45:0;;18787:2:1;18125:45:0;;;18769:21:1;18826:2;18806:18;;;18799:30;-1:-1:-1;;;18845:18:1;;;18838:48;18903:18;;18125:45:0;18585:342:1;18125:45:0;-1:-1:-1;;;;;18206:24:0;;;;;;:18;:24;;;;;;;;18205:25;:52;;;;-1:-1:-1;;;;;;18235:22:0;;;;;;:18;:22;;;;;;;;18234:23;18205:52;:89;;;;-1:-1:-1;18277:13:0;;:17;;18293:1;18277:17;:::i;:::-;18261:12;:33;;18205:89;18202:180;;;18325:4;;-1:-1:-1;;;;;18325:4:0;;;18319:10;;;;18311:59;;;;-1:-1:-1;;;18311:59:0;;19134:2:1;18311:59:0;;;19116:21:1;19173:2;19153:18;;;19146:30;19212:34;19192:18;;;19185:62;-1:-1:-1;;;19263:18:1;;;19256:34;19307:19;;18311:59:0;18932:400:1;18311:59:0;18413:4;;-1:-1:-1;;;;;18405:12:0;;;18413:4;;18405:12;:39;;;;-1:-1:-1;;;;;;18422:22:0;;;;;;:18;:22;;;;;;;;18421:23;18405:39;:52;;;;-1:-1:-1;18449:8:0;;;;;;;18448:9;18405:52;18402:246;;;18491:11;;18481:6;:21;;18473:63;;;;-1:-1:-1;;;18473:63:0;;19539:2:1;18473:63:0;;;19521:21:1;19578:2;19558:18;;;19551:30;19617:31;19597:18;;;19590:59;19666:18;;18473:63:0;19337:353:1;18473:63:0;18585:14;;18575:6;18559:13;18569:2;18559:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;18551:85;;;;-1:-1:-1;;;18551:85:0;;19897:2:1;18551:85:0;;;19879:21:1;;;19916:18;;;19909:30;19975:34;19955:18;;;19948:62;20027:18;;18551:85:0;19695:356:1;18551:85:0;18679:4;;-1:-1:-1;;;;;18671:12:0;;;18679:4;;18671:12;;;;:39;;-1:-1:-1;;;;;;18688:22:0;;;;;;:18;:22;;;;;;;;18687:23;18671:39;:68;;;;-1:-1:-1;;;;;;18715:24:0;;;;;;:18;:24;;;;;;;;18714:25;18671:68;:81;;;;-1:-1:-1;18744:8:0;;;;;;;18743:9;18671:81;18668:573;;;18786:12;;18776:6;:22;;18768:65;;;;-1:-1:-1;;;18768:65:0;;20258:2:1;18768:65:0;;;20240:21:1;20297:2;20277:18;;;20270:30;20336:32;20316:18;;;20309:60;20386:18;;18768:65:0;20056:354:1;18768:65:0;18857:4;;-1:-1:-1;;;;;18851:10:0;;;18857:4;;18851:10;18848:134;;18915:14;;18905:6;18889:13;18899:2;18889:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;18881:85;;;;-1:-1:-1;;;18881:85:0;;19897:2:1;18881:85:0;;;19879:21:1;;;19916:18;;;19909:30;19975:34;19955:18;;;19948:62;20027:18;;18881:85:0;19695:356:1;18881:85:0;18999:15;;;;18996:234;;;-1:-1:-1;;;;;19073:15:0;;19034:18;19073:15;;;:9;:15;;;;;;19055:33;;:15;:33;:::i;:::-;19034:54;;19129:12;;19115:10;:26;;19107:55;;;;-1:-1:-1;;;19107:55:0;;20617:2:1;19107:55:0;;;20599:21:1;20656:2;20636:18;;;20629:30;-1:-1:-1;;;20675:18:1;;;20668:46;20731:18;;19107:55:0;20415:340:1;19107:55:0;-1:-1:-1;;;;;;19181:15:0;;;;;;:9;:15;;;;;19199;19181:33;;18996:234;19308:14;5530:1;19308:2;:14;:::i;:::-;19302:20;;:2;:20;:::i;:::-;19292:6;19274:15;19284:4;19274:9;:15::i;:::-;:24;;;;:::i;:::-;:48;19271:111;;19366:15;19376:4;19366:9;:15::i;:::-;19357:6;19340:14;5530:1;19340:2;:14;:::i;:::-;19335:19;;:2;:19;:::i;:::-;:28;;;;:::i;:::-;:46;;;;:::i;:::-;19324:58;;;;:::i;:::-;;;19271:111;19412:12;19455:18;;19427:24;19445:4;19427:9;:24::i;:::-;19488:8;;-1:-1:-1;;19427:46:0;;-1:-1:-1;19488:8:0;;;;;19487:9;:24;;;;-1:-1:-1;19500:11:0;;;;;;;19487:24;:35;;;;;19515:7;19487:35;:51;;;;-1:-1:-1;19534:4:0;;-1:-1:-1;;;;;19526:12:0;;;19534:4;;19526:12;;19487:51;:80;;;;-1:-1:-1;;;;;;19543:24:0;;;;;;:18;:24;;;;;;;;19542:25;19487:80;:107;;;;-1:-1:-1;;;;;;19572:22:0;;;;;;:18;:22;;;;;;;;19571:23;19487:107;19484:261;;;19619:4;;-1:-1:-1;;;;;19619:4:0;;;19613:10;;;;19610:123;;19641:18;;19626:45;;;;;;;;19661:9;19626:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19641:18;19626:14;:45::i;:::-;19610:123;;;19707:18;;19692:41;;;;;;;;19727:5;19692:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19707:18;19692:14;:41::i;:::-;19818:8;;19770:4;;19755:12;;19818:8;;;;;;:36;;-1:-1:-1;;;;;;19830:24:0;;;;;;:18;:24;;;;;;;;19818:36;:62;;;-1:-1:-1;;;;;;19858:22:0;;;;;;:18;:22;;;;;;;;19818:62;19815:82;;;19892:5;19882:15;;19815:82;19917:4;;-1:-1:-1;;;;;19917:4:0;;;19911:10;;;;19908:28;;-1:-1:-1;19932:4:0;19908:28;19949:49;19964:4;19970:2;19974:6;19982:7;19991:6;19949:14;:49::i;:::-;17626:2380;;;17557:2449;;;:::o;16500:158::-;16541:7;16562:15;16579;16598:19;:17;:19::i;:::-;16561:56;;-1:-1:-1;16561:56:0;-1:-1:-1;16635:15:0;16561:56;;16635:15;:::i;:::-;16628:22;;;;16500:158;:::o;14470:466::-;14556:36;;:::i;:::-;14617:37;14629:7;14638;14647:6;14617:11;:37::i;:::-;14605:49;;14774:53;14787:9;14798:7;14807;14816:10;:8;:10::i;:::-;14774:12;:53::i;:::-;14750:20;;;14665:162;14728:20;;;14665:162;14712:14;;;14665:162;14685:25;;;14665:162;;;14857:44;14666:9;14881:7;14890:10;:8;:10::i;:::-;14857:12;:44::i;:::-;14839:14;;;14838:63;14470:466;;;;;:::o;20089:1105::-;20213:28;20244:36;20255:7;20264;20273:6;20244:10;:36::i;:::-;-1:-1:-1;;;;;20297:19:0;;;;;;:11;:19;;;;;;20213:67;;-1:-1:-1;20297:19:0;;20293:115;;;-1:-1:-1;;;;;20373:15:0;;;;;;:7;:15;;;;;;:23;;20389:7;;20373:23;:::i;:::-;-1:-1:-1;;;;;20355:15:0;;;;;;:7;:15;;;;;:41;20293:115;-1:-1:-1;;;;;20422:22:0;;;;;;:11;:22;;;;;;;;20418:130;;;20519:17;;;;-1:-1:-1;;;;;20500:18:0;;;;;;:7;:18;;;;;;:36;;20519:17;20500:36;:::i;:::-;-1:-1:-1;;;;;20479:18:0;;;;;;:7;:18;;;;;:57;20418:130;20594:9;;-1:-1:-1;;;;;20578:15:0;;20594:9;20578:15;;;:7;:15;;;;;;:25;;20594:9;20578:25;:::i;:::-;-1:-1:-1;;;;;20560:15:0;;;;;;;:7;:15;;;;;;;;:43;;;;20654:17;;;20635:18;;;;;;;;;;:36;;20654:17;20635:36;:::i;:::-;-1:-1:-1;;;;;20614:18:0;;;;;;:7;:18;;;;;;;:57;;;;20695:6;;;:10;;;:24;;;20718:1;20709;:6;;;:10;20695:24;20692:56;;;20721:27;20733:1;:6;;;20741:1;:6;;;20721:11;:27::i;:::-;20777:1;20762;:12;;;:16;:36;;;;20797:1;20782;:12;;;:16;20762:36;20759:198;;;20815:41;20830:1;:12;;;20843:1;:12;;;20815:14;:41::i;:::-;20901:4;-1:-1:-1;;;;;20876:69:0;20885:6;-1:-1:-1;;;;;20876:69:0;;20938:1;:6;;;20923:1;:12;;;20908:1;:12;;;:27;;;;:::i;:::-;:36;;;;:::i;:::-;20876:69;;3184:25:1;;;3172:2;3157:18;20876:69:0;;;;;;;20759:198;20985:1;20970;:12;;;:16;:36;;;;21005:1;20990;:12;;;:16;20970:36;20967:83;;;21008:42;21023:1;:12;;;21037:1;:12;;;21008:14;:42::i;:::-;21073:1;21064;:6;;;:10;:24;;;;21087:1;21078;:6;;;:10;21064:24;21061:53;;;21090:24;21099:1;:6;;;21107:1;:6;;;21090:8;:24::i;:::-;21147:9;-1:-1:-1;;;;;21130:46:0;21139:6;-1:-1:-1;;;;;21130:46:0;;21158:1;:17;;;21130:46;;;;3184:25:1;;3172:2;3157:18;;3038:177;21130:46:0;;;;;;;;20200:994;20089:1105;;;;;:::o;3213:173::-;3269:16;3288:6;;-1:-1:-1;;;;;3305:17:0;;;-1:-1:-1;;;;;;3305:17:0;;;;;;3338:40;;3288:6;;;;;;;3338:40;;3269:16;3338:40;3258:128;3213:173;:::o;21202:1138::-;7257:8;:15;;-1:-1:-1;;7257:15:0;;;;;21357:8:::1;::::0;::::1;::::0;21340:14:::1;::::0;::::1;::::0;21323::::1;::::0;::::1;::::0;7257:15;;21357:8;21323:31:::1;::::0;::::1;:::i;:::-;:42;;;;:::i;:::-;21322:48;::::0;21369:1:::1;21322:48;:::i;:::-;21300:70;;21381:32;21451:11;21434:4;:14;;;21416:15;:32;;;;:::i;:::-;:46;;;;:::i;:::-;21381:81:::0;-1:-1:-1;21473:14:0::1;21490:42;21381:81:::0;21490:15;:42:::1;:::i;:::-;21473:59:::0;-1:-1:-1;21570:21:0::1;21604:24;21473:59:::0;21604:16:::1;:24::i;:::-;21641:20;21664:38;21688:14:::0;21664:21:::1;:38;:::i;:::-;21641:61;;21713:19;21764:4;:14;;;21750:11;:28;;;;:::i;:::-;21734:45;::::0;:12;:45:::1;:::i;:::-;21713:66;;21790:29;21836:4;:14;;;21822:11;:28;;;;:::i;:::-;21790:60:::0;-1:-1:-1;21866:25:0;;21863:156:::1;;21946:61;21959:24;21985:21;21946:12;:61::i;:::-;22072:14;::::0;::::1;::::0;22031:20:::1;::::0;22054:15:::1;:11:::0;22068:1:::1;22054:15;:::i;:::-;:32;;;;:::i;:::-;22031:55:::0;-1:-1:-1;22100:16:0;;22097:95:::1;;22140:15;::::0;22132:48:::1;::::0;-1:-1:-1;;;;;22140:15:0::1;22167:12:::0;22132:34:::1;:48::i;:::-;22237:8;::::0;::::1;::::0;22202:14:::1;::::0;22219:15:::1;:11:::0;22233:1:::1;22219:15;:::i;:::-;:26;;;;:::i;:::-;22202:43:::0;-1:-1:-1;22259:10:0;;22256:77:::1;;22293:9;::::0;22285:36:::1;::::0;-1:-1:-1;;;;;22293:9:0::1;22314:6:::0;22285:28:::1;:36::i;:::-;-1:-1:-1::0;;7295:8:0;:16;;-1:-1:-1;;7295:16:0;;;-1:-1:-1;;;;;;;;;21202:1138:0:o;16666:540::-;16763:7;;16799;;16716;;;;;16817:279;16841:9;:16;16837:20;;16817:279;;;16907:7;16883;:21;16891:9;16901:1;16891:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16891:12:0;16883:21;;;;;;;;;;;;;:31;;:66;;;16942:7;16918;:21;16926:9;16936:1;16926:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16926:12:0;16918:21;;;;;;;;;;;;;:31;16883:66;16879:97;;;16959:7;;16968;;16951:25;;;;;;;16666:540;;:::o;16879:97::-;17009:7;:21;17017:9;17027:1;17017:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;17017:12:0;17009:21;;;;;;;;;;;;;17001:29;;:7;:29;:::i;:::-;16991:39;;17063:7;:21;17071:9;17081:1;17071:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;17071:12:0;17063:21;;;;;;;;;;;;;17055:29;;:7;:29;:::i;:::-;17045:39;-1:-1:-1;16859:3:0;;16817:279;;;;17128:7;;17120;;:15;;;;:::i;:::-;17110:7;:25;17106:56;;;17145:7;;17154;;17137:25;;;;;;16666:540;;:::o;17106:56::-;17181:7;;17190;;-1:-1:-1;16666:540:0;-1:-1:-1;16666:540:0:o;14944:608::-;15031:28;;:::i;:::-;15078:7;15074:86;;15100:17;;;:27;;;15140:8;;15074:86;15170:17;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15170:17:0;15201:6;15198:55;;;-1:-1:-1;15209:16:0;;;;;;;;15216:9;15209:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15198:55;;;-1:-1:-1;15241:12:0;;;;;;;;15248:5;15241:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15198:55;15291:8;;15300:3;;15283:16;;:7;:16;:::i;:::-;:20;;;;:::i;:::-;15274:6;;;:29;15337:14;;;;15352:3;;15329:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;15314:12;;;:41;15389:14;;;;15404:3;;15381:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;15366:12;;;:41;15435:8;;;;15444:3;;15427:16;;:7;:16;:::i;:::-;:20;;;;:::i;:::-;15418:6;;;:29;;;15506:12;;;;15493;;;;15486:6;;;;15478:14;;:7;:14;:::i;:::-;:27;;;;:::i;:::-;:40;;;;:::i;:::-;:47;;;;:::i;:::-;15458:17;;;:67;-1:-1:-1;14944:608:0;;;;;:::o;15560:668::-;15686:15;;;;;15801:19;15809:11;15801:7;:19;:::i;:::-;15791:29;;15837:7;15833:69;;-1:-1:-1;15866:7:0;;-1:-1:-1;15884:1:0;;-1:-1:-1;15884:1:0;;-1:-1:-1;15884:1:0;15859:31;;15833:69;15928:11;15921:1;:6;;;:18;;;;:::i;:::-;15914:25;;15976:11;15963:1;:12;;;:24;;;;:::i;:::-;15950:37;;16024:11;16011:1;:12;;;:24;;;;:::i;:::-;15998:37;;16046:12;16068:11;16061:1;:6;;;:18;;;;:::i;:::-;16046:33;-1:-1:-1;16046:33:0;16133:10;16122;16109:12;16117:4;16109:7;:12;:::i;:::-;:23;;;;:::i;:::-;:34;;;;:::i;:::-;:39;;;;:::i;:::-;16090:58;;16159:61;15560:668;;;;;;;;;;:::o;16240:252::-;16349:12;16380:7;16376:47;;-1:-1:-1;16409:1:0;16402:9;;16376:47;16449:11;16442:1;:6;;;:18;;;;:::i;:::-;16435:25;16240:252;-1:-1:-1;;;;16240:252:0:o;13227:123::-;13305:4;13295:7;;:14;;;;;;;:::i;:::-;;;;-1:-1:-1;;13320:11:0;:22;;13338:4;;13320:11;:15;;:22;;13338:4;;13320:22;:::i;:::-;;;;-1:-1:-1;;;;13227:123:0:o;13358:284::-;13465:10;13441:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;13511:4:0;13491:26;;;;:11;:26;;;;;;;;13488:101;;;13559:4;13543:22;;;;:7;:22;;;;;:34;;13567:10;;13543:22;:34;;13567:10;;13543:34;:::i;:::-;;;;-1:-1:-1;;13488:101:0;13615:4;13599:22;;;;:7;:22;;;;;:35;;13624:10;;13599:22;:35;;13624:10;;13599:35;:::i;13650:284::-;13757:10;13733:11;:21;;;:34;;;;;;;:::i;13946:242::-;14029:4;14011:11;:15;;;:22;;;;;;;:::i;22851:562::-;23001:16;;;23015:1;23001:16;;;;;;;;22977:21;;23001:16;;;;;;;;;;-1:-1:-1;23001:16:0;22977:40;;23046:4;23028;23033:1;23028:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23028:23:0;;;:7;;;;;;;;;;:23;;;;23072:6;;:13;;;-1:-1:-1;;;23072:13:0;;;;:6;;;;;:11;;:13;;;;;23028:7;;23072:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23062:4;23067:1;23062:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23062:23:0;;;:7;;;;;;;;;:23;23130:6;;23098:53;;23115:4;;23130:6;23139:11;23098:8;:53::i;:::-;23190:6;;:215;;-1:-1:-1;;;23190:215:0;;-1:-1:-1;;;;;23190:6:0;;;;:57;;:215;;23262:11;;23190:6;;23332:4;;23359;;23379:15;;23190:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22348:495;22528:6;;22496:53;;22513:4;;-1:-1:-1;;;;;22528:6:0;22537:11;22496:8;:53::i;:::-;22592:6;;-1:-1:-1;;;;;22592:6:0;:22;22622:9;22655:4;22675:11;22592:6;;22787:7;2734;2761:6;-1:-1:-1;;;;;2761:6:0;;2688:87;22787:7;22592:243;;;;;;-1:-1:-1;;;;;;22592:243:0;;;-1:-1:-1;;;;;22360:15:1;;;22592:243:0;;;22342:34:1;22392:18;;;22385:34;;;;22435:18;;;22428:34;;;;22478:18;;;22471:34;22542:15;;;22521:19;;;22514:44;22809:15:0;22574:19:1;;;22567:35;22276:19;;22592:243:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22348:495;;:::o;4156:317::-;4271:6;4246:21;:31;;4238:73;;;;-1:-1:-1;;;4238:73:0;;23126:2:1;4238:73:0;;;23108:21:1;23165:2;23145:18;;;23138:30;23204:31;23184:18;;;23177:59;23253:18;;4238:73:0;22924:353:1;4238:73:0;4325:12;4343:9;-1:-1:-1;;;;;4343:14:0;4365:6;4343:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4324:52;;;4395:7;4387:78;;;;-1:-1:-1;;;4387:78:0;;23694:2:1;4387:78:0;;;23676:21:1;23733:2;23713:18;;;23706:30;23772:34;23752:18;;;23745:62;23843:28;23823:18;;;23816:56;23889:19;;4387:78:0;23492:422:1;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;573:315;641:6;649;702:2;690:9;681:7;677:23;673:32;670:52;;;718:1;715;708:12;670:52;757:9;744:23;776:31;801:5;776:31;:::i;:::-;826:5;878:2;863:18;;;;850:32;;-1:-1:-1;;;573:315:1:o;1085:127::-;1146:10;1141:3;1137:20;1134:1;1127:31;1177:4;1174:1;1167:15;1201:4;1198:1;1191:15;1217:275;1288:2;1282:9;1353:2;1334:13;;-1:-1:-1;;1330:27:1;1318:40;;1388:18;1373:34;;1409:22;;;1370:62;1367:88;;;1435:18;;:::i;:::-;1471:2;1464:22;1217:275;;-1:-1:-1;1217:275:1:o;1497:183::-;1557:4;1590:18;1582:6;1579:30;1576:56;;;1612:18;;:::i;:::-;-1:-1:-1;1657:1:1;1653:14;1669:4;1649:25;;1497:183::o;1685:743::-;1739:5;1792:3;1785:4;1777:6;1773:17;1769:27;1759:55;;1810:1;1807;1800:12;1759:55;1846:6;1833:20;1872:4;1896:60;1912:43;1952:2;1912:43;:::i;:::-;1896:60;:::i;:::-;1978:3;2002:2;1997:3;1990:15;2030:4;2025:3;2021:14;2014:21;;2087:4;2081:2;2078:1;2074:10;2066:6;2062:23;2058:34;2044:48;;2115:3;2107:6;2104:15;2101:35;;;2132:1;2129;2122:12;2101:35;2168:4;2160:6;2156:17;2182:217;2198:6;2193:3;2190:15;2182:217;;;2278:3;2265:17;2295:31;2320:5;2295:31;:::i;:::-;2339:18;;2377:12;;;;2215;;2182:217;;;-1:-1:-1;2417:5:1;1685:743;-1:-1:-1;;;;;;1685:743:1:o;2433:118::-;2519:5;2512:13;2505:21;2498:5;2495:32;2485:60;;2541:1;2538;2531:12;2556:477;2646:6;2654;2707:2;2695:9;2686:7;2682:23;2678:32;2675:52;;;2723:1;2720;2713:12;2675:52;2763:9;2750:23;2796:18;2788:6;2785:30;2782:50;;;2828:1;2825;2818:12;2782:50;2851:61;2904:7;2895:6;2884:9;2880:22;2851:61;:::i;:::-;2841:71;;;2962:2;2951:9;2947:18;2934:32;2975:28;2997:5;2975:28;:::i;:::-;3022:5;3012:15;;;2556:477;;;;;:::o;3220:456::-;3297:6;3305;3313;3366:2;3354:9;3345:7;3341:23;3337:32;3334:52;;;3382:1;3379;3372:12;3334:52;3421:9;3408:23;3440:31;3465:5;3440:31;:::i;:::-;3490:5;-1:-1:-1;3547:2:1;3532:18;;3519:32;3560:33;3519:32;3560:33;:::i;:::-;3220:456;;3612:7;;-1:-1:-1;;;3666:2:1;3651:18;;;;3638:32;;3220:456::o;3889:180::-;3948:6;4001:2;3989:9;3980:7;3976:23;3972:32;3969:52;;;4017:1;4014;4007:12;3969:52;-1:-1:-1;4040:23:1;;3889:180;-1:-1:-1;3889:180:1:o;4263:247::-;4322:6;4375:2;4363:9;4354:7;4350:23;4346:32;4343:52;;;4391:1;4388;4381:12;4343:52;4430:9;4417:23;4449:31;4474:5;4449:31;:::i;4515:241::-;4571:6;4624:2;4612:9;4603:7;4599:23;4595:32;4592:52;;;4640:1;4637;4630:12;4592:52;4679:9;4666:23;4698:28;4720:5;4698:28;:::i;4761:388::-;4829:6;4837;4890:2;4878:9;4869:7;4865:23;4861:32;4858:52;;;4906:1;4903;4896:12;4858:52;4945:9;4932:23;4964:31;4989:5;4964:31;:::i;:::-;5014:5;-1:-1:-1;5071:2:1;5056:18;;5043:32;5084:33;5043:32;5084:33;:::i;5154:309::-;5219:6;5227;5280:2;5268:9;5259:7;5255:23;5251:32;5248:52;;;5296:1;5293;5286:12;5248:52;5332:9;5319:23;5309:33;;5392:2;5381:9;5377:18;5364:32;5405:28;5427:5;5405:28;:::i;5468:248::-;5536:6;5544;5597:2;5585:9;5576:7;5572:23;5568:32;5565:52;;;5613:1;5610;5603:12;5565:52;-1:-1:-1;;5636:23:1;;;5706:2;5691:18;;;5678:32;;-1:-1:-1;5468:248:1:o;5721:382::-;5786:6;5794;5847:2;5835:9;5826:7;5822:23;5818:32;5815:52;;;5863:1;5860;5853:12;5815:52;5902:9;5889:23;5921:31;5946:5;5921:31;:::i;:::-;5971:5;-1:-1:-1;6028:2:1;6013:18;;6000:32;6041:30;6000:32;6041:30;:::i;6108:454::-;6203:6;6211;6219;6227;6235;6288:3;6276:9;6267:7;6263:23;6259:33;6256:53;;;6305:1;6302;6295:12;6256:53;-1:-1:-1;;6328:23:1;;;6398:2;6383:18;;6370:32;;-1:-1:-1;6449:2:1;6434:18;;6421:32;;6500:2;6485:18;;6472:32;;-1:-1:-1;6551:3:1;6536:19;6523:33;;-1:-1:-1;6108:454:1;-1:-1:-1;6108:454:1:o;6567:1138::-;6685:6;6693;6746:2;6734:9;6725:7;6721:23;6717:32;6714:52;;;6762:1;6759;6752:12;6714:52;6802:9;6789:23;6831:18;6872:2;6864:6;6861:14;6858:34;;;6888:1;6885;6878:12;6858:34;6911:61;6964:7;6955:6;6944:9;6940:22;6911:61;:::i;:::-;6901:71;;6991:2;6981:12;;7046:2;7035:9;7031:18;7018:32;7075:2;7065:8;7062:16;7059:36;;;7091:1;7088;7081:12;7059:36;7114:24;;;-1:-1:-1;7169:4:1;7161:13;;7157:27;-1:-1:-1;7147:55:1;;7198:1;7195;7188:12;7147:55;7234:2;7221:16;7257:60;7273:43;7313:2;7273:43;:::i;7257:60::-;7351:15;;;7433:1;7429:10;;;;7421:19;;7417:28;;;7382:12;;;;7457:19;;;7454:39;;;7489:1;7486;7479:12;7454:39;7513:11;;;;7533:142;7549:6;7544:3;7541:15;7533:142;;;7615:17;;7603:30;;7566:12;;;;7653;;;;7533:142;;;7694:5;7684:15;;;;;;;6567:1138;;;;;:::o;8178:309::-;8243:6;8251;8304:2;8292:9;8283:7;8279:23;8275:32;8272:52;;;8320:1;8317;8310:12;8272:52;8359:9;8346:23;8378:28;8400:5;8378:28;:::i;8715:347::-;8917:2;8899:21;;;8956:2;8936:18;;;8929:30;8995:25;8990:2;8975:18;;8968:53;9053:2;9038:18;;8715:347::o;9067:356::-;9269:2;9251:21;;;9288:18;;;9281:30;9347:34;9342:2;9327:18;;9320:62;9414:2;9399:18;;9067:356::o;9428:127::-;9489:10;9484:3;9480:20;9477:1;9470:31;9520:4;9517:1;9510:15;9544:4;9541:1;9534:15;9969:127;10030:10;10025:3;10021:20;10018:1;10011:31;10061:4;10058:1;10051:15;10085:4;10082:1;10075:15;10101:128;10168:9;;;10189:11;;;10186:37;;;10203:18;;:::i;10645:217::-;10685:1;10711;10701:132;;10755:10;10750:3;10746:20;10743:1;10736:31;10790:4;10787:1;10780:15;10818:4;10815:1;10808:15;10701:132;-1:-1:-1;10847:9:1;;10645:217::o;11219:127::-;11280:10;11275:3;11271:20;11268:1;11261:31;11311:4;11308:1;11301:15;11335:4;11332:1;11325:15;11351:125;11416:9;;;11437:10;;;11434:36;;;11450:18;;:::i;12120:245::-;12187:6;12240:2;12228:9;12219:7;12215:23;12211:32;12208:52;;;12256:1;12253;12246:12;12208:52;12288:9;12282:16;12307:28;12329:5;12307:28;:::i;12726:416::-;12815:1;12852:5;12815:1;12866:270;12887:7;12877:8;12874:21;12866:270;;;12946:4;12942:1;12938:6;12934:17;12928:4;12925:27;12922:53;;;12955:18;;:::i;:::-;13005:7;12995:8;12991:22;12988:55;;;13025:16;;;;12988:55;13104:22;;;;13064:15;;;;12866:270;;;12870:3;12726:416;;;;;:::o;13147:806::-;13196:5;13226:8;13216:80;;-1:-1:-1;13267:1:1;13281:5;;13216:80;13315:4;13305:76;;-1:-1:-1;13352:1:1;13366:5;;13305:76;13397:4;13415:1;13410:59;;;;13483:1;13478:130;;;;13390:218;;13410:59;13440:1;13431:10;;13454:5;;;13478:130;13515:3;13505:8;13502:17;13499:43;;;13522:18;;:::i;:::-;-1:-1:-1;;13578:1:1;13564:16;;13593:5;;13390:218;;13692:2;13682:8;13679:16;13673:3;13667:4;13664:13;13660:36;13654:2;13644:8;13641:16;13636:2;13630:4;13627:12;13623:35;13620:77;13617:159;;;-1:-1:-1;13729:19:1;;;13761:5;;13617:159;13808:34;13833:8;13827:4;13808:34;:::i;:::-;13878:6;13874:1;13870:6;13866:19;13857:7;13854:32;13851:58;;;13889:18;;:::i;:::-;13927:20;;13147:806;-1:-1:-1;;;13147:806:1:o;13958:140::-;14016:5;14045:47;14086:4;14076:8;14072:19;14066:4;14045:47;:::i;14103:168::-;14176:9;;;14207;;14224:15;;;14218:22;;14204:37;14194:71;;14245:18;;:::i;20760:251::-;20830:6;20883:2;20871:9;20862:7;20858:23;20854:32;20851:52;;;20899:1;20896;20889:12;20851:52;20931:9;20925:16;20950:31;20975:5;20950:31;:::i;21016:980::-;21278:4;21326:3;21315:9;21311:19;21357:6;21346:9;21339:25;21383:2;21421:6;21416:2;21405:9;21401:18;21394:34;21464:3;21459:2;21448:9;21444:18;21437:31;21488:6;21523;21517:13;21554:6;21546;21539:22;21592:3;21581:9;21577:19;21570:26;;21631:2;21623:6;21619:15;21605:29;;21652:1;21662:195;21676:6;21673:1;21670:13;21662:195;;;21741:13;;-1:-1:-1;;;;;21737:39:1;21725:52;;21832:15;;;;21797:12;;;;21773:1;21691:9;21662:195;;;-1:-1:-1;;;;;;;21913:32:1;;;;21908:2;21893:18;;21886:60;-1:-1:-1;;;21977:3:1;21962:19;21955:35;21874:3;21016:980;-1:-1:-1;;;21016:980:1:o;22613:306::-;22701:6;22709;22717;22770:2;22758:9;22749:7;22745:23;22741:32;22738:52;;;22786:1;22783;22776:12;22738:52;22815:9;22809:16;22799:26;;22865:2;22854:9;22850:18;22844:25;22834:35;;22909:2;22898:9;22894:18;22888:25;22878:35;;22613:306;;;;;:::o

Swarm Source

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