ETH Price: $3,259.23 (-0.49%)
Gas: 1 Gwei

Token

Nihon Inu (NINU)
 

Overview

Max Total Supply

1,000,000,000 NINU

Holders

85

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000017591119 NINU

Value
$0.00
0xcac2e7372779d9c585dfb792bee198a63548ff93
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:
NIHON

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 150 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-11-28
*/

// SPDX-License-Identifier: UNLICENSED
// ALL RIGHTS RESERVED

pragma solidity =0.8.17;

interface IERC20 {
  function totalSupply() external view returns (uint256);
  function decimals() external view returns (uint8);
  function symbol() external view returns (string memory);
  function name() external view returns (string memory);
  function getOwner() external view returns (address);
  function balanceOf(address account) external view returns (uint256);
  function transfer(address recipient, uint256 amount) external returns (bool);
  function allowance(address _owner, address spender) external view returns (uint256);
  function approve(address spender, uint256 amount) external returns (bool);
  function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

interface IDexRouter {
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

}

interface IDexPair {
    event Sync(uint112 reserve0, uint112 reserve1);
    function sync() external;
}

abstract contract Ownable {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() external onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

pragma solidity =0.8.17;
contract NIHON is IERC20, Ownable  
{
    mapping (address => uint) private _balances;
    mapping (address => mapping (address => uint)) private _allowances;
    mapping(address => bool) private excludedFromLimits;
    mapping(address => bool) public excludedFromFees;
    mapping(address=>bool) public isAMM;
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;
    
    string private constant _name = 'Nihon Inu';
    string private constant _symbol = 'NINU';

    uint8 private constant _decimals=18;

    uint private constant InitialSupply=10**9 * 10**_decimals;
    uint public buyTax = 50; //10=1%  
    uint public sellTax = 350;
    uint public transferTax = 0;
    uint public liquidityTax= 0;
    uint public Tax= 1000; // lp+tax must equal 1000 // 1000=100%
    uint public swapTreshold=10; //Dynamic Swap Threshold based on price impact. 1=0.1% max 10
    uint public overLiquifyTreshold=100;
    uint public LaunchTimestamp;
    uint private devFee=100; //devfee+marketingfee must = 100 
    uint private marketingFee= 0;
    uint constant TAX_DENOMINATOR=1000;
    uint constant MAXTAXDENOMINATOR=10;

    uint256 public maxWalletBalance;
    uint256 public maxTransactionAmount;
    uint256 public percentForLPBurn = 25; // 25 = .25%
    uint256 public lpBurnFrequency = 3600 seconds;
    uint256 public lastLpBurnTime;
    uint256 public manualBurnFrequency = 30 minutes;
    uint256 public lastManualLpBurnTime;

    bool private _isSwappingContractModifier;
    bool public manualSwap;
    bool public lpBurnEnabled = true;

    IDexRouter private  _DexRouter;

    address private _PairAddress; 
    address public marketingWallet;
    address public devWallet; 
    address public constant burnWallet=address(0xdead);
    address private constant DexRouter= 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; 
    
    event ManualNukeLP();
    event AutoNukeLP();
    event MaxWalletBalanceUpdated(uint256 percent);
    event OnSetTaxes(uint buy, uint sell, uint transfer_, uint project,uint liquidity);
    event ExcludeAccount(address account, bool exclude);
    event OnEnableTrading();
    event OnReleaseLP();
    event ExcludeFromLimits(address account, bool exclude);
    event MarketingWalletChange(address newWallet);
    event DevWalletChange(address newWallet);
    event SharesUpdated(uint _devShare, uint _marketingShare);
    event AMMadded(address AMM);
    event ManualSwapOn(bool manual);
    event ManualSwapPerformed();
    event MaxTransactionAmountUpdated(uint256 percent);
    event SwapThresholdChange(uint newSwapTresholdPermille);
    event OverLiquifiedThresholdChange(uint newOverLiquifyTresholdPermille);
    modifier lockTheSwap {
        _isSwappingContractModifier = true;
        _;
        _isSwappingContractModifier = false;
    }

    constructor () {
        uint ownerBalance=InitialSupply;
        _balances[msg.sender] = ownerBalance;
        emit Transfer(address(0), msg.sender, ownerBalance);

        _DexRouter = IDexRouter(DexRouter);
        _PairAddress = IDexFactory(_DexRouter.factory()).createPair(address(this), _DexRouter.WETH());
        isAMM[_PairAddress]=true;
        
        marketingWallet= msg.sender; // address(0xdead)
        devWallet= msg.sender; // msg.sendger

        excludedFromFees[msg.sender]=true;
        excludedFromFees[DexRouter]=true;
        excludedFromFees[address(this)]=true;
        excludedFromLimits[burnWallet] = true;
        excludedFromLimits[address(this)] = true;
    }
    function ChangeMarketingWallet(address newWallet) external onlyOwner{
        marketingWallet=newWallet;
        emit MarketingWalletChange(newWallet);
    }
    function ChangeDevWallet(address newWallet) external onlyOwner{
        devWallet=newWallet;
        emit DevWalletChange(newWallet);
    }
    function SetFeeShares(uint _devFee, uint _marketingFee) external onlyOwner{
        require(_devFee+_marketingFee<=100);
        devFee=_devFee;
        marketingFee=_marketingFee;
        emit SharesUpdated(_devFee, _marketingFee);
    }
    function setRestrictionPercents(uint256 WALpercent, uint256 TXNpercent) external onlyOwner {
        require(WALpercent >= 10, "min 1%"); // 10=1%
        require(WALpercent <= 1000, "max 100%");
        maxWalletBalance = InitialSupply * WALpercent / 1000;
        require(TXNpercent >= 25, "min 0.25%");
        require(TXNpercent <= 10000, "max 100%"); // 100=1%
        maxTransactionAmount = InitialSupply * TXNpercent / 10000;
        emit MaxWalletBalanceUpdated(WALpercent);
        emit MaxTransactionAmountUpdated(TXNpercent);
    }

    function removeAllRestrictions() external onlyOwner {
        maxWalletBalance = InitialSupply;
        maxTransactionAmount = InitialSupply;
        transferDelayEnabled = false;
    }
    function removetransferdelay() external onlyOwner {
        transferDelayEnabled = false;
    }    
    function _transfer(address sender, address recipient, uint amount) private{
        require(sender != address(0), "Transfer from zero");
        require(recipient != address(0), "Transfer to zero");
         if (transferDelayEnabled){
                    if (recipient != owner() && recipient != DexRouter && recipient != _PairAddress){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }
        if(excludedFromFees[sender] || excludedFromFees[recipient])
            _feelessTransfer(sender, recipient, amount);
        else { 
            require(LaunchTimestamp>0,"trading not yet enabled");
            _taxedTransfer(sender,recipient,amount);                  
        }
    }
    
    function _taxedTransfer(address sender, address recipient, uint amount) private{
        uint senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer exceeds balance");
        bool excludedAccount = excludedFromLimits[sender] || excludedFromLimits[recipient];
        if (isAMM[sender] &&
            !excludedAccount) {
            require(
                amount <= maxTransactionAmount,
                "Transfer amount exceeds the maxTxAmount."
            );
            uint256 contractBalanceRecepient = balanceOf(recipient);
            require(
                contractBalanceRecepient + amount <= maxWalletBalance,
                "Exceeds maximum wallet token amount."
            );
        } else if (
            isAMM[recipient] &&
            !excludedAccount
        ) {
            require(amount <= maxTransactionAmount, "Transfer amount exceeds the maxTxAmount.");
        }

        bool isBuy=isAMM[sender];
        bool isSell=isAMM[recipient];
        uint tax;
        if(isSell){
            tax=sellTax;
        }else if(isBuy){
            tax=buyTax;
        }else{
            tax=transferTax;
        }

        if((sender!=_PairAddress)&&(!manualSwap)&&(!_isSwappingContractModifier))
            _swapContractToken(false);

        if(!_isSwappingContractModifier && isAMM[recipient] && lpBurnEnabled && block.timestamp >= lastLpBurnTime + lpBurnFrequency){
            autoBurnLPTokens();
        }

        uint contractToken=_calculateFee(amount, tax, Tax+liquidityTax);
        uint taxedAmount=amount-contractToken;

        _balances[sender]-=amount;
        _balances[address(this)] += contractToken;
        _balances[recipient]+=taxedAmount;
        emit Transfer(sender,recipient,taxedAmount);
    }
    function _calculateFee(uint amount, uint tax, uint taxPercent) private pure returns (uint) {
        return (amount*tax*taxPercent) / (TAX_DENOMINATOR*TAX_DENOMINATOR);
    }
    function _feelessTransfer(address sender, address recipient, uint amount) private{
        uint senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer exceeds balance");
        _balances[sender]-=amount;
        _balances[recipient]+=amount;      
        emit Transfer(sender,recipient,amount);
    }
    function setSwapTreshold(uint newSwapTresholdPermille) external onlyOwner{
        require(newSwapTresholdPermille<=10);//MaxTreshold= 1%
        swapTreshold=newSwapTresholdPermille;
        emit SwapThresholdChange(newSwapTresholdPermille);
    }
    function SetOverLiquifiedTreshold(uint newOverLiquifyTresholdPermille) external onlyOwner{
        require(newOverLiquifyTresholdPermille<=1000);
        overLiquifyTreshold=newOverLiquifyTresholdPermille;
        emit OverLiquifiedThresholdChange(newOverLiquifyTresholdPermille);
    }
    function SetTaxes(uint buy, uint sell, uint transfer_, uint tax,uint liquidity) external onlyOwner{
        uint maxTax=400; // 10= 1%
        require(buy<=maxTax&&sell<=maxTax&&transfer_<=maxTax,"Tax exceeds maxTax");
        require(tax+liquidity==TAX_DENOMINATOR,"Taxes don't add up to denominator");
        buyTax=buy;
        sellTax=sell;
        transferTax=transfer_;
        Tax=tax;
        liquidityTax=liquidity;
        emit OnSetTaxes(buy, sell, transfer_, tax, liquidity);
    }
    function isOverLiquified() public view returns(bool){
        return _balances[_PairAddress]>getCirculatingSupply()*overLiquifyTreshold/1000;
    }
    function _swapContractToken(bool ignoreLimits) private lockTheSwap{
        uint contractBalance=_balances[address(this)];
        uint totalTax=liquidityTax+Tax;
        uint tokenToSwap=_balances[_PairAddress]*swapTreshold/1000;
        if(totalTax==0)return;
        if(ignoreLimits)
            tokenToSwap=_balances[address(this)];
        else if(contractBalance<tokenToSwap)
            return;

        uint tokenForLiquidity=
        isOverLiquified()?0
        :(tokenToSwap*liquidityTax)/totalTax;

        uint tokenForProject= tokenToSwap-tokenForLiquidity;

        uint LiqHalf=tokenForLiquidity/2;
        uint swapToken=LiqHalf+tokenForProject;
        uint initialETHBalance=address(this).balance;
        _swapTokenForETH(swapToken);
        uint newETH=(address(this).balance - initialETHBalance);

        if(tokenForLiquidity>0){
            uint liqETH = (newETH*LiqHalf)/swapToken;
            _addLiquidity(LiqHalf, liqETH);
        }
        uint marketbalance=address(this).balance * marketingFee/100;
        uint devbalance=address(this).balance * devFee/100;
        if(marketbalance>0){
        (bool marketing,)=marketingWallet.call{value:marketbalance}("");
        marketing=true;
        }
        if(devbalance>0){
        (bool dev,)=devWallet.call{value:devbalance}("");
        dev=true;
        }
    }
    function _swapTokenForETH(uint amount) private {
        _approve(address(this), address(_DexRouter), amount);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _DexRouter.WETH();

        try _DexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            0,
            path,
            address(this),
            block.timestamp
        ){}
        catch{}
    }
    function _addLiquidity(uint tokenamount, uint ethamount) private {
        _approve(address(this), address(_DexRouter), tokenamount);
        _DexRouter.addLiquidityETH{value: ethamount}(
            address(this),
            tokenamount,
            0,
            0,
            address(this),
            block.timestamp
        );
    }
    function getBurnedTokens() external view returns(uint){
        return _balances[address(0xdead)];
    }
    function getCirculatingSupply() public view returns(uint){
        return InitialSupply-_balances[address(0xdead)];
    }
    function SetAMM(address AMM, bool Add) external onlyOwner{
        require(AMM!=_PairAddress,"can't change uniswap");
        isAMM[AMM]=Add;
        emit AMMadded(AMM);
    }
    function SwitchManualSwap(bool manual) external onlyOwner{
        manualSwap=manual;
        emit ManualSwapOn(manual);
    }
    function SwapContractToken() external onlyOwner{
        _swapContractToken(true);
        emit ManualSwapPerformed();
    }
    function ExcludeAccountFromFees(address account, bool exclude) external onlyOwner{
        require(account!=address(this),"can't Include the contract");
        excludedFromFees[account]=exclude;
        emit ExcludeAccount(account,exclude);
    }
    function setExcludedAccountFromLimits(address account, bool exclude) external onlyOwner{
        excludedFromLimits[account]=exclude;
        emit ExcludeFromLimits(account,exclude);
    }
    function isExcludedFromLimits(address account) external view returns(bool) {
        return excludedFromLimits[account];
    }
    function EnableTrading() external onlyOwner{
        require(LaunchTimestamp==0,"AlreadyLaunched");
        LaunchTimestamp=block.timestamp;
        maxWalletBalance = InitialSupply * 20 / 1000;// 10=1%  
        maxTransactionAmount = InitialSupply * 150 / 10000;// 100=1%  
        emit OnEnableTrading();
    }
    function ReleaseLP() external onlyOwner {
        IERC20 liquidityToken = IERC20(_PairAddress);
        uint amount = liquidityToken.balanceOf(address(this));
        liquidityToken.transfer(msg.sender, amount);
        emit OnReleaseLP();
    }
    function setAutoLPBurnSettings(uint256 _frequencyInSeconds, uint256 _percent, bool _Enabled) external onlyOwner {
        require(_frequencyInSeconds >= 600, "cannot set buyback more often than every 10 minutes");
        require(_percent <= 1000 && _percent >= 0, "Must set auto LP burn percent between 0% and 10%");
        lpBurnFrequency = _frequencyInSeconds;
        percentForLPBurn = _percent;
        lpBurnEnabled = _Enabled;
    }
    function autoBurnLPTokens() internal returns (bool){
        lastLpBurnTime = block.timestamp;
        uint256 liquidityPairBalance = this.balanceOf(_PairAddress);
        uint256 amountToBurn = liquidityPairBalance * percentForLPBurn/10000;
        if (amountToBurn > 0){
            _balances[_PairAddress]-=amountToBurn;
            _balances[burnWallet]+=amountToBurn;
            emit Transfer(_PairAddress,burnWallet,amountToBurn);
        }
        IDexPair pair = IDexPair(_PairAddress);
        pair.sync();
        emit AutoNukeLP();
        return true;
    }

    function manualBurnLPTokens(uint256 percent) external onlyOwner returns (bool){
        require(block.timestamp > lastManualLpBurnTime + manualBurnFrequency , "Must wait for cooldown to finish");
        require(percent <= 1000, "May not nuke more than 10% of tokens in LP");
        lastManualLpBurnTime = block.timestamp;
        uint256 liquidityPairBalance = this.balanceOf(_PairAddress);
        uint256 amountToBurn = liquidityPairBalance * percent/10000;
        if (amountToBurn > 0){
            _balances[_PairAddress]-=amountToBurn;
            _balances[burnWallet]+=amountToBurn;
            emit Transfer(_PairAddress,burnWallet,amountToBurn);
        }
        IDexPair pair = IDexPair(_PairAddress);
        pair.sync();
        emit ManualNukeLP();
        return true;
    }
    
    function getOwner() external view override returns (address) {return owner();}
    function name() external pure override returns (string memory) {return _name;}
    function symbol() external pure override returns (string memory) {return _symbol;}
    function decimals() external pure override returns (uint8) {return _decimals;}
    function totalSupply() external pure override returns (uint) {return InitialSupply;}
    function balanceOf(address account) public view override returns (uint) {return _balances[account];}
    function allowance(address _owner, address spender) external view override returns (uint) {return _allowances[_owner][spender];}
    function transfer(address recipient, uint amount) external override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }
    function approve(address spender, uint amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }
    function _approve(address owner, address spender, uint amount) private {
        require(owner != address(0), "Approve from zero");
        require(spender != address(0), "Approve to zero");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function transferFrom(address sender, address recipient, uint amount) external override returns (bool) {
        _transfer(sender, recipient, amount);
        uint currentAllowance = _allowances[sender][msg.sender];
        require(currentAllowance >= amount, "Transfer > allowance");
        _approve(sender, msg.sender, currentAllowance - amount);
        return true;
    }
    function increaseAllowance(address spender, uint addedValue) external returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue);
        return true;
    }
    function decreaseAllowance(address spender, uint subtractedValue) external returns (bool) {
        uint currentAllowance = _allowances[msg.sender][spender];
        require(currentAllowance >= subtractedValue, "<0 allowance");
        _approve(msg.sender, spender, currentAllowance - subtractedValue);
        return true;
    }
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"AMM","type":"address"}],"name":"AMMadded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newWallet","type":"address"}],"name":"DevWalletChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"exclude","type":"bool"}],"name":"ExcludeAccount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"exclude","type":"bool"}],"name":"ExcludeFromLimits","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"manual","type":"bool"}],"name":"ManualSwapOn","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualSwapPerformed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newWallet","type":"address"}],"name":"MarketingWalletChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"percent","type":"uint256"}],"name":"MaxTransactionAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"percent","type":"uint256"}],"name":"MaxWalletBalanceUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"OnEnableTrading","type":"event"},{"anonymous":false,"inputs":[],"name":"OnReleaseLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"transfer_","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"project","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"OnSetTaxes","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newOverLiquifyTresholdPermille","type":"uint256"}],"name":"OverLiquifiedThresholdChange","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":false,"internalType":"uint256","name":"_devShare","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_marketingShare","type":"uint256"}],"name":"SharesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newSwapTresholdPermille","type":"uint256"}],"name":"SwapThresholdChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"ChangeDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"ChangeMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"ExcludeAccountFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"LaunchTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ReleaseLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"AMM","type":"address"},{"internalType":"bool","name":"Add","type":"bool"}],"name":"SetAMM","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"SetFeeShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newOverLiquifyTresholdPermille","type":"uint256"}],"name":"SetOverLiquifiedTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"},{"internalType":"uint256","name":"transfer_","type":"uint256"},{"internalType":"uint256","name":"tax","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"SetTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SwapContractToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"SwitchManualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Tax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","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":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBurnedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isAMM","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLPTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","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":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletBalance","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":"overLiquifyTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeAllRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removetransferdelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"setExcludedAccountFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"WALpercent","type":"uint256"},{"internalType":"uint256","name":"TXNpercent","type":"uint256"}],"name":"setRestrictionPercents","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapTresholdPermille","type":"uint256"}],"name":"setSwapTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526007805460ff19166001179055603260085561015e6009556000600a818155600b8290556103e8600c55600d556064600e81905560105560115560196014819055610e10601555610708601755805462ff00001916620100001790553480156200006d57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000620000bf6012600a620004ba565b620000cf90633b9aca00620004d2565b336000818152600160205260408082208490555192935090917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620001189085815260200190565b60405180910390a360198054767a250d5630b4cf539739df2c5dacb4c659f2488d0000006301000000600160b81b031990911617908190556040805163c45a015560e01b8152905163010000009092046001600160a01b03169163c45a0155916004808201926020929091908290030181865afa1580156200019e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c49190620004ec565b6001600160a01b031663c9c6539630601960039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000227573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024d9190620004ec565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200029b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c19190620004ec565b601a80546001600160a01b03929092166001600160a01b031992831681179091556000908152600560209081526040808320805460ff199081166001908117909255601b8054871633908117909155601c805490971681179096559484526004835281842080548616821790557f1fc5acd025f7cc5cf2691b667dba808b5a149bf27192c208fc66f1f0ec4222d78054861682179055308452818420805486168217905560039092527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c805485168317905590912080549092161790555062000517565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003fc578160001904821115620003e057620003e0620003a5565b80851615620003ee57918102915b93841c9390800290620003c0565b509250929050565b6000826200041557506001620004b4565b816200042457506000620004b4565b81600181146200043d5760028114620004485762000468565b6001915050620004b4565b60ff8411156200045c576200045c620003a5565b50506001821b620004b4565b5060208310610133831016604e8410600b84101617156200048d575081810a620004b4565b620004998383620003bb565b8060001904821115620004b057620004b0620003a5565b0290505b92915050565b6000620004cb60ff84168362000404565b9392505050565b8082028115828204841417620004b457620004b4620003a5565b600060208284031215620004ff57600080fd5b81516001600160a01b0381168114620004cb57600080fd5b6132f380620005276000396000f3fe60806040526004361061035b5760003560e01c80638124f7ac116101bc578063bc43d849116100f2578063d46b6a30116100a0578063e52fb9ec1161006f578063e52fb9ec14610a21578063f2fde38b14610a37578063f7942b6314610a57578063ff90061214610a7757600080fd5b8063d46b6a301461095b578063dbe66ca01461098b578063dd62ed3e146109bb578063e0d2f9eb14610a0157600080fd5b8063bc43d84914610892578063be617fa0146108b2578063c3f4f54f146108c8578063c876d0b9146108f5578063c8c8ebe41461090f578063cc1776d314610925578063cfd1940e1461093b57600080fd5b806398d7e7211161016a578063a9059cbb11610139578063a9059cbb14610826578063b40d09e214610846578063baa88ea91461085c578063bbde77c11461087c57600080fd5b806398d7e721146107ba5780639ec22c0e146107da578063a457c2d7146107f0578063a4c82a001461081057600080fd5b80638124f7ac146106f9578063817d4bff1461070f578063868b01411461072f578063893d20e81461074f5780638da5cb5b1461074f5780638ea5220f1461076d57806395d89b411461078d57600080fd5b806346e35f0311610291578063698e5cfa1161023f578063715018a61161020e578063715018a614610684578063730c18881461069957806375f0a874146106b9578063766febab146106d957600080fd5b8063698e5cfa146106035780636ea405d31461062357806370a08231146106395780637115d00e1461066f57600080fd5b806346e35f03146105365780634f7041a51461054b5780635149f9841461056157806351bc3c85146105815780635cce86cd146105a05780636162c92e146105d9578063679d8b19146105ee57600080fd5b80631d97b7cd116103095780632e82f1a0116102d85780632e82f1a0146104c5578063313ce567146104e5578063395093511461050157806341aec3571461052157600080fd5b80631d97b7cd1461046357806323b872dd1461047a5780632b112e491461049a5780632c3e486c146104af57600080fd5b8063062287491461036757806306fdde0314610393578063095ea7b3146103ce5780630eff4c64146103fe57806318160ddd14610422578063184c16c514610437578063199ffc721461044d57600080fd5b3661036257005b600080fd5b34801561037357600080fd5b5061037d61dead81565b60405161038a9190612d44565b60405180910390f35b34801561039f57600080fd5b506040805180820190915260098152684e69686f6e20496e7560b81b60208201525b60405161038a9190612d58565b3480156103da57600080fd5b506103ee6103e9366004612dbe565b610a97565b604051901515815260200161038a565b34801561040a57600080fd5b50610414600e5481565b60405190815260200161038a565b34801561042e57600080fd5b50610414610aae565b34801561044357600080fd5b5061041460175481565b34801561045957600080fd5b5061041460145481565b34801561046f57600080fd5b50610478610acf565b005b34801561048657600080fd5b506103ee610495366004612dea565b610bee565b3480156104a657600080fd5b50610414610c85565b3480156104bb57600080fd5b5061041460155481565b3480156104d157600080fd5b506019546103ee9062010000900460ff1681565b3480156104f157600080fd5b506040516012815260200161038a565b34801561050d57600080fd5b506103ee61051c366004612dbe565b610cc6565b34801561052d57600080fd5b50610478610cfd565b34801561054257600080fd5b506103ee610d6b565b34801561055757600080fd5b5061041460085481565b34801561056d57600080fd5b5061047861057c366004612e39565b610db0565b34801561058d57600080fd5b506019546103ee90610100900460ff1681565b3480156105ac57600080fd5b506103ee6105bb366004612e72565b6001600160a01b031660009081526003602052604090205460ff1690565b3480156105e557600080fd5b50610478610e9e565b3480156105fa57600080fd5b50610478610f1e565b34801561060f57600080fd5b5061047861061e366004612e96565b610f63565b34801561062f57600080fd5b50610414600c5481565b34801561064557600080fd5b50610414610654366004612e72565b6001600160a01b031660009081526001602052604090205490565b34801561067b57600080fd5b5061047861115a565b34801561069057600080fd5b506104786112ab565b3480156106a557600080fd5b506104786106b4366004612eb8565b61132e565b3480156106c557600080fd5b50601b5461037d906001600160a01b031681565b3480156106e557600080fd5b506104786106f4366004612e96565b61146f565b34801561070557600080fd5b50610414600a5481565b34801561071b57600080fd5b5061047861072a366004612e72565b6114ff565b34801561073b57600080fd5b5061047861074a366004612ef1565b61158e565b34801561075b57600080fd5b506000546001600160a01b031661037d565b34801561077957600080fd5b50601c5461037d906001600160a01b031681565b34801561079957600080fd5b506040805180820190915260048152634e494e5560e01b60208201526103c1565b3480156107c657600080fd5b506103ee6107d5366004612f0e565b611610565b3480156107e657600080fd5b5061041460185481565b3480156107fc57600080fd5b506103ee61080b366004612dbe565b6118d2565b34801561081c57600080fd5b5061041460165481565b34801561083257600080fd5b506103ee610841366004612dbe565b61194e565b34801561085257600080fd5b50610414600f5481565b34801561086857600080fd5b50610478610877366004612f27565b61195b565b34801561088857600080fd5b5061041460125481565b34801561089e57600080fd5b506104786108ad366004612f0e565b611ac8565b3480156108be57600080fd5b50610414600b5481565b3480156108d457600080fd5b5061dead600052600160205260008051602061327e83398151915254610414565b34801561090157600080fd5b506007546103ee9060ff1681565b34801561091b57600080fd5b5061041460135481565b34801561093157600080fd5b5061041460095481565b34801561094757600080fd5b50610478610956366004612f0e565b611b45565b34801561096757600080fd5b506103ee610976366004612e72565b60056020526000908152604090205460ff1681565b34801561099757600080fd5b506103ee6109a6366004612e72565b60046020526000908152604090205460ff1681565b3480156109c757600080fd5b506104146109d6366004612f62565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610a0d57600080fd5b50610478610a1c366004612e39565b611bc1565b348015610a2d57600080fd5b50610414600d5481565b348015610a4357600080fd5b50610478610a52366004612e72565b611cae565b348015610a6357600080fd5b50610478610a72366004612e39565b611da7565b348015610a8357600080fd5b50610478610a92366004612e72565b611e3c565b6000610aa4338484611ec0565b5060015b92915050565b6000610abc6012600a61308a565b610aca90633b9aca00613099565b905090565b33610ae26000546001600160a01b031690565b6001600160a01b031614610b115760405162461bcd60e51b8152600401610b08906130b0565b60405180910390fd5b600f5415610b535760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e53185d5b98da1959608a1b6044820152606401610b08565b42600f556103e8610b666012600a61308a565b610b7490633b9aca00613099565b610b7f906014613099565b610b8991906130e5565b601290815561271090610b9d90600a61308a565b610bab90633b9aca00613099565b610bb6906096613099565b610bc091906130e5565b6013556040517f2cb945e0498987ef06dbd68025b0bc276116c63345296379c28a8e8f09b47dc190600090a1565b6000610bfb848484611fb3565b6001600160a01b038416600090815260026020908152604080832033845290915290205482811015610c665760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b6044820152606401610b08565b610c7a8533610c758685613107565b611ec0565b506001949350505050565b61dead6000908152600160205260008051602061327e83398151915254610cae6012600a61308a565b610cbc90633b9aca00613099565b610aca9190613107565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610aa4918590610c7590869061311a565b33610d106000546001600160a01b031690565b6001600160a01b031614610d365760405162461bcd60e51b8152600401610b08906130b0565b610d406001612200565b6040517f50d9f00a1465121b958cf0aef21a53ed0bbe36c5a415abb27350d22b247a258f90600090a1565b60006103e8600e54610d7b610c85565b610d859190613099565b610d8f91906130e5565b601a546001600160a01b031660009081526001602052604090205411919050565b33610dc36000546001600160a01b031690565b6001600160a01b031614610de95760405162461bcd60e51b8152600401610b08906130b0565b601a546001600160a01b0390811690831603610e3e5760405162461bcd60e51b8152602060048201526014602482015273063616e2774206368616e676520756e69737761760641b6044820152606401610b08565b6001600160a01b03821660009081526005602052604090819020805460ff1916831515179055517fa5d0a2d9a2487cd749dbfa34962704a9f4ed5ff3fd9c6586c86d954070b552f090610e92908490612d44565b60405180910390a15050565b33610eb16000546001600160a01b031690565b6001600160a01b031614610ed75760405162461bcd60e51b8152600401610b08906130b0565b610ee36012600a61308a565b610ef190633b9aca00613099565b6012908155610f0190600a61308a565b610f0f90633b9aca00613099565b6013556007805460ff19169055565b33610f316000546001600160a01b031690565b6001600160a01b031614610f575760405162461bcd60e51b8152600401610b08906130b0565b6007805460ff19169055565b33610f766000546001600160a01b031690565b6001600160a01b031614610f9c5760405162461bcd60e51b8152600401610b08906130b0565b600a821015610fd65760405162461bcd60e51b81526020600482015260066024820152656d696e20312560d01b6044820152606401610b08565b6103e88211156110135760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b6044820152606401610b08565b6103e8826110236012600a61308a565b61103190633b9aca00613099565b61103b9190613099565b61104591906130e5565b60125560198110156110855760405162461bcd60e51b81526020600482015260096024820152686d696e20302e32352560b81b6044820152606401610b08565b6127108111156110c25760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b6044820152606401610b08565b612710816110d26012600a61308a565b6110e090633b9aca00613099565b6110ea9190613099565b6110f491906130e5565b6013556040518281527f9cbd2e55e2abf49d29273c1b9fb343c2828844b2aec156cfe2aec98ae1b72a999060200160405180910390a16040518181527f7c1cb3702d8e1fa6d24b12dd90670ab69c6d66d58233103d37da8b07d6b850ac90602001610e92565b3361116d6000546001600160a01b031690565b6001600160a01b0316146111935760405162461bcd60e51b8152600401610b08906130b0565b601a546040516370a0823160e01b81526001600160a01b039091169060009082906370a08231906111c8903090600401612d44565b602060405180830381865afa1580156111e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611209919061312d565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015611259573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127d9190613146565b506040517f28bacca46f5c57fe13623e9d5093cb2fab892814aca9b39384ab86550d9aa67590600090a15050565b336112be6000546001600160a01b031690565b6001600160a01b0316146112e45760405162461bcd60e51b8152600401610b08906130b0565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b336113416000546001600160a01b031690565b6001600160a01b0316146113675760405162461bcd60e51b8152600401610b08906130b0565b6102588310156113d55760405162461bcd60e51b815260206004820152603360248201527f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e207468604482015272616e206576657279203130206d696e7574657360681b6064820152608401610b08565b6103e882111580156113e5575060015b61144a5760405162461bcd60e51b815260206004820152603060248201527f4d75737420736574206175746f204c50206275726e2070657263656e7420626560448201526f747765656e20302520616e642031302560801b6064820152608401610b08565b60159290925560145560198054911515620100000262ff000019909216919091179055565b336114826000546001600160a01b031690565b6001600160a01b0316146114a85760405162461bcd60e51b8152600401610b08906130b0565b60646114b4828461311a565b11156114bf57600080fd5b6010829055601181905560408051838152602081018390527fe5a0c91086f91c001ad2bce018f8c7818182156e1fd1d3b81788aadd4b2b30219101610e92565b336115126000546001600160a01b031690565b6001600160a01b0316146115385760405162461bcd60e51b8152600401610b08906130b0565b601b80546001600160a01b0319166001600160a01b0383161790556040517f9e42de18c651175b949c09ca698a4cf63aa023f4038a9ed83bd882c7d6f8fb6490611583908390612d44565b60405180910390a150565b336115a16000546001600160a01b031690565b6001600160a01b0316146115c75760405162461bcd60e51b8152600401610b08906130b0565b601980548215156101000261ff00199091161790556040517faffc63374f6f6c07a9f4b158efd5668a3684e1711b1c8e9ed9b848e1150708219061158390831515815260200190565b6000336116256000546001600160a01b031690565b6001600160a01b03161461164b5760405162461bcd60e51b8152600401610b08906130b0565b60175460185461165b919061311a565b42116116a95760405162461bcd60e51b815260206004820181905260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973686044820152606401610b08565b6103e882111561170e5760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201526906b656e7320696e204c560b41b6064820152608401610b08565b42601855601a546040516370a0823160e01b815260009130916370a0823191611745916001600160a01b0390911690600401612d44565b602060405180830381865afa158015611762573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611786919061312d565b905060006127106117978584613099565b6117a191906130e5565b9050801561183c57601a546001600160a01b0316600090815260016020526040812080548392906117d3908490613107565b909155505061dead6000908152600160205260008051602061327e833981519152805483929061180490849061311a565b9091555050601a5460405182815261dead916001600160a01b03169060008051602061329e8339815191529060200160405180910390a35b601a546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b15801561188657600080fd5b505af115801561189a573d6000803e3d6000fd5b50506040517f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb925060009150a1506001949350505050565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156119355760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b6044820152606401610b08565b6119443385610c758685613107565b5060019392505050565b6000610aa4338484611fb3565b3361196e6000546001600160a01b031690565b6001600160a01b0316146119945760405162461bcd60e51b8152600401610b08906130b0565b6101908086118015906119a75750808511155b80156119b35750808411155b6119f45760405162461bcd60e51b81526020600482015260126024820152710a8c2f040caf0c6cacac8e640dac2f0a8c2f60731b6044820152606401610b08565b6103e8611a01838561311a565b14611a585760405162461bcd60e51b815260206004820152602160248201527f546178657320646f6e27742061646420757020746f2064656e6f6d696e61746f6044820152603960f91b6064820152608401610b08565b60088690556009859055600a849055600c839055600b829055604080518781526020810187905290810185905260608101849052608081018390527f07d167ef63e413076f3e7e19f733b66f7ab5fd83fd7b437428f115315687ef6e9060a00160405180910390a1505050505050565b33611adb6000546001600160a01b031690565b6001600160a01b031614611b015760405162461bcd60e51b8152600401610b08906130b0565b6103e8811115611b1057600080fd5b600e8190556040518181527fa072eee57b8e01913ba01eab29d8a81117cf780e6c8984a3494477ce9cee846d90602001611583565b33611b586000546001600160a01b031690565b6001600160a01b031614611b7e5760405162461bcd60e51b8152600401610b08906130b0565b600a811115611b8c57600080fd5b600d8190556040518181527fc075380b8410207b8cc14f0d254ab8c8a6766469631275e4500db835a1ba02cc90602001611583565b33611bd46000546001600160a01b031690565b6001600160a01b031614611bfa5760405162461bcd60e51b8152600401610b08906130b0565b306001600160a01b03831603611c525760405162461bcd60e51b815260206004820152601a60248201527f63616e277420496e636c7564652074686520636f6e74726163740000000000006044820152606401610b08565b6001600160a01b038216600081815260046020908152604091829020805460ff19168515159081179091558251938452908301527fa22b25479919d4ac678f064a05daa1ee9c0adc3b8198942ea45255e364e04ed49101610e92565b33611cc16000546001600160a01b031690565b6001600160a01b031614611ce75760405162461bcd60e51b8152600401610b08906130b0565b6001600160a01b038116611d4c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b08565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b33611dba6000546001600160a01b031690565b6001600160a01b031614611de05760405162461bcd60e51b8152600401610b08906130b0565b6001600160a01b038216600081815260036020908152604091829020805460ff19168515159081179091558251938452908301527f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc929101610e92565b33611e4f6000546001600160a01b031690565b6001600160a01b031614611e755760405162461bcd60e51b8152600401610b08906130b0565b601c80546001600160a01b0319166001600160a01b0383161790556040517f1a806adf87d2b694e80e69bda66ee145c65fb0ef3615fec509da7adc260316af90611583908390612d44565b6001600160a01b038316611f0a5760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b6044820152606401610b08565b6001600160a01b038216611f525760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b6044820152606401610b08565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611ffe5760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b6044820152606401610b08565b6001600160a01b0382166120475760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b6044820152606401610b08565b60075460ff1615612155576000546001600160a01b0383811691161480159061208d57506001600160a01b038216737a250d5630b4cf539739df2c5dacb4c659f2488d14155b80156120a75750601a546001600160a01b03838116911614155b15612155573260009081526006602052604090205443116121425760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610b08565b3260009081526006602052604090204390555b6001600160a01b03831660009081526004602052604090205460ff168061219457506001600160a01b03821660009081526004602052604090205460ff165b156121a9576121a4838383612459565b505050565b6000600f54116121f55760405162461bcd60e51b81526020600482015260176024820152761d1c98591a5b99c81b9bdd081e595d08195b98589b1959604a1b6044820152606401610b08565b6121a483838361255a565b6019805460ff191660019081179091553060009081526020919091526040812054600c54600b54919291612234919061311a565b600d54601a546001600160a01b0316600090815260016020526040812054929350916103e89161226391613099565b61226d91906130e5565b90508160000361227f5750505061244c565b831561229b5750306000908152600160205260409020546122ab565b808310156122ab5750505061244c565b60006122b5610d6b565b6122d75782600b54836122c89190613099565b6122d291906130e5565b6122da565b60005b905060006122e88284613107565b905060006122f76002846130e5565b90506000612305838361311a565b90504761231182612911565b600061231d8247613107565b9050851561234a576000836123328684613099565b61233c91906130e5565b90506123488582612a8a565b505b600060646011544761235c9190613099565b61236691906130e5565b9050600060646010544761237a9190613099565b61238491906130e5565b905081156123e357601b546040516000916001600160a01b03169084908381818185875af1925050503d80600081146123d9576040519150601f19603f3d011682016040523d82523d6000602084013e6123de565b606091505b505050505b801561244057601c546040516000916001600160a01b03169083908381818185875af1925050503d8060008114612436576040519150601f19603f3d011682016040523d82523d6000602084013e61243b565b606091505b505050505b50505050505050505050505b506019805460ff19169055565b6001600160a01b038316600090815260016020526040902054818110156124bd5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610b08565b6001600160a01b038416600090815260016020526040812080548492906124e5908490613107565b90915550506001600160a01b0383166000908152600160205260408120805484929061251290849061311a565b92505081905550826001600160a01b0316846001600160a01b031660008051602061329e8339815191528460405161254c91815260200190565b60405180910390a350505050565b6001600160a01b038316600090815260016020526040902054818110156125be5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610b08565b6001600160a01b03841660009081526003602052604081205460ff16806125fd57506001600160a01b03841660009081526003602052604090205460ff165b6001600160a01b03861660009081526005602052604090205490915060ff168015612626575080155b156126d35760135483111561264d5760405162461bcd60e51b8152600401610b0890613163565b6001600160a01b038416600090815260016020526040902054601254612673858361311a565b11156126cd5760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610b08565b50612720565b6001600160a01b03841660009081526005602052604090205460ff1680156126f9575080155b15612720576013548311156127205760405162461bcd60e51b8152600401610b0890613163565b6001600160a01b0380861660009081526005602052604080822054928716825281205460ff928316921690811561275a575060095461276e565b8215612769575060085461276e565b50600a545b601a546001600160a01b038981169116148015906127945750601954610100900460ff16155b80156127a3575060195460ff16155b156127b2576127b26000612200565b60195460ff161580156127dd57506001600160a01b03871660009081526005602052604090205460ff165b80156127f1575060195462010000900460ff165b801561280c5750601554601654612808919061311a565b4210155b1561281b57612819612b48565b505b60006128378783600b54600c54612832919061311a565b612d0f565b905060006128458289613107565b6001600160a01b038b16600090815260016020526040812080549293508a92909190612872908490613107565b9091555050306000908152600160205260408120805484929061289690849061311a565b90915550506001600160a01b038916600090815260016020526040812080548392906128c390849061311a565b92505081905550886001600160a01b03168a6001600160a01b031660008051602061329e833981519152836040516128fd91815260200190565b60405180910390a350505050505050505050565b601954612930903090630100000090046001600160a01b031683611ec0565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612965576129656131ab565b60200260200101906001600160a01b031690816001600160a01b031681525050601960039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129fc91906131c1565b81600181518110612a0f57612a0f6131ab565b6001600160a01b03928316602091820292909201015260195460405163791ac94760e01b815263010000009091049091169063791ac94790612a5e9085906000908690309042906004016131de565b600060405180830381600087803b158015612a7857600080fd5b505af19250505080156121a457505050565b601954612aa9903090630100000090046001600160a01b031684611ec0565b60195460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a482015263010000009091046001600160a01b03169063f305d71990839060c40160606040518083038185885af1158015612b1c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612b41919061324f565b5050505050565b42601655601a546040516370a0823160e01b8152600091829130916370a0823191612b7f916001600160a01b031690600401612d44565b602060405180830381865afa158015612b9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bc0919061312d565b9050600061271060145483612bd59190613099565b612bdf91906130e5565b90508015612c7a57601a546001600160a01b031660009081526001602052604081208054839290612c11908490613107565b909155505061dead6000908152600160205260008051602061327e8339815191528054839290612c4290849061311a565b9091555050601a5460405182815261dead916001600160a01b03169060008051602061329e8339815191529060200160405180910390a35b601a546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b158015612cc457600080fd5b505af1158015612cd8573d6000803e3d6000fd5b50506040517f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d925060009150a16001935050505090565b6000612d1d6103e880613099565b82612d288587613099565b612d329190613099565b612d3c91906130e5565b949350505050565b6001600160a01b0391909116815260200190565b600060208083528351808285015260005b81811015612d8557858101830151858201604001528201612d69565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612dbb57600080fd5b50565b60008060408385031215612dd157600080fd5b8235612ddc81612da6565b946020939093013593505050565b600080600060608486031215612dff57600080fd5b8335612e0a81612da6565b92506020840135612e1a81612da6565b929592945050506040919091013590565b8015158114612dbb57600080fd5b60008060408385031215612e4c57600080fd5b8235612e5781612da6565b91506020830135612e6781612e2b565b809150509250929050565b600060208284031215612e8457600080fd5b8135612e8f81612da6565b9392505050565b60008060408385031215612ea957600080fd5b50508035926020909101359150565b600080600060608486031215612ecd57600080fd5b83359250602084013591506040840135612ee681612e2b565b809150509250925092565b600060208284031215612f0357600080fd5b8135612e8f81612e2b565b600060208284031215612f2057600080fd5b5035919050565b600080600080600060a08688031215612f3f57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215612f7557600080fd5b8235612f8081612da6565b91506020830135612e6781612da6565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612fe1578160001904821115612fc757612fc7612f90565b80851615612fd457918102915b93841c9390800290612fab565b509250929050565b600082612ff857506001610aa8565b8161300557506000610aa8565b816001811461301b576002811461302557613041565b6001915050610aa8565b60ff84111561303657613036612f90565b50506001821b610aa8565b5060208310610133831016604e8410600b8410161715613064575081810a610aa8565b61306e8383612fa6565b806000190482111561308257613082612f90565b029392505050565b6000612e8f60ff841683612fe9565b8082028115828204841417610aa857610aa8612f90565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008261310257634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610aa857610aa8612f90565b80820180821115610aa857610aa8612f90565b60006020828403121561313f57600080fd5b5051919050565b60006020828403121561315857600080fd5b8151612e8f81612e2b565b60208082526028908201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546040820152673c20b6b7bab73a1760c11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156131d357600080fd5b8151612e8f81612da6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561322e5784516001600160a01b031683529383019391830191600101613209565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561326457600080fd5b835192506020840151915060408401519050925092509256feb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164dddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212209ec7ff6d076b5ba0e0f5857d6e808431a23ff749f1309f4d7acfe7dbf89696d964736f6c63430008110033

Deployed Bytecode

0x60806040526004361061035b5760003560e01c80638124f7ac116101bc578063bc43d849116100f2578063d46b6a30116100a0578063e52fb9ec1161006f578063e52fb9ec14610a21578063f2fde38b14610a37578063f7942b6314610a57578063ff90061214610a7757600080fd5b8063d46b6a301461095b578063dbe66ca01461098b578063dd62ed3e146109bb578063e0d2f9eb14610a0157600080fd5b8063bc43d84914610892578063be617fa0146108b2578063c3f4f54f146108c8578063c876d0b9146108f5578063c8c8ebe41461090f578063cc1776d314610925578063cfd1940e1461093b57600080fd5b806398d7e7211161016a578063a9059cbb11610139578063a9059cbb14610826578063b40d09e214610846578063baa88ea91461085c578063bbde77c11461087c57600080fd5b806398d7e721146107ba5780639ec22c0e146107da578063a457c2d7146107f0578063a4c82a001461081057600080fd5b80638124f7ac146106f9578063817d4bff1461070f578063868b01411461072f578063893d20e81461074f5780638da5cb5b1461074f5780638ea5220f1461076d57806395d89b411461078d57600080fd5b806346e35f0311610291578063698e5cfa1161023f578063715018a61161020e578063715018a614610684578063730c18881461069957806375f0a874146106b9578063766febab146106d957600080fd5b8063698e5cfa146106035780636ea405d31461062357806370a08231146106395780637115d00e1461066f57600080fd5b806346e35f03146105365780634f7041a51461054b5780635149f9841461056157806351bc3c85146105815780635cce86cd146105a05780636162c92e146105d9578063679d8b19146105ee57600080fd5b80631d97b7cd116103095780632e82f1a0116102d85780632e82f1a0146104c5578063313ce567146104e5578063395093511461050157806341aec3571461052157600080fd5b80631d97b7cd1461046357806323b872dd1461047a5780632b112e491461049a5780632c3e486c146104af57600080fd5b8063062287491461036757806306fdde0314610393578063095ea7b3146103ce5780630eff4c64146103fe57806318160ddd14610422578063184c16c514610437578063199ffc721461044d57600080fd5b3661036257005b600080fd5b34801561037357600080fd5b5061037d61dead81565b60405161038a9190612d44565b60405180910390f35b34801561039f57600080fd5b506040805180820190915260098152684e69686f6e20496e7560b81b60208201525b60405161038a9190612d58565b3480156103da57600080fd5b506103ee6103e9366004612dbe565b610a97565b604051901515815260200161038a565b34801561040a57600080fd5b50610414600e5481565b60405190815260200161038a565b34801561042e57600080fd5b50610414610aae565b34801561044357600080fd5b5061041460175481565b34801561045957600080fd5b5061041460145481565b34801561046f57600080fd5b50610478610acf565b005b34801561048657600080fd5b506103ee610495366004612dea565b610bee565b3480156104a657600080fd5b50610414610c85565b3480156104bb57600080fd5b5061041460155481565b3480156104d157600080fd5b506019546103ee9062010000900460ff1681565b3480156104f157600080fd5b506040516012815260200161038a565b34801561050d57600080fd5b506103ee61051c366004612dbe565b610cc6565b34801561052d57600080fd5b50610478610cfd565b34801561054257600080fd5b506103ee610d6b565b34801561055757600080fd5b5061041460085481565b34801561056d57600080fd5b5061047861057c366004612e39565b610db0565b34801561058d57600080fd5b506019546103ee90610100900460ff1681565b3480156105ac57600080fd5b506103ee6105bb366004612e72565b6001600160a01b031660009081526003602052604090205460ff1690565b3480156105e557600080fd5b50610478610e9e565b3480156105fa57600080fd5b50610478610f1e565b34801561060f57600080fd5b5061047861061e366004612e96565b610f63565b34801561062f57600080fd5b50610414600c5481565b34801561064557600080fd5b50610414610654366004612e72565b6001600160a01b031660009081526001602052604090205490565b34801561067b57600080fd5b5061047861115a565b34801561069057600080fd5b506104786112ab565b3480156106a557600080fd5b506104786106b4366004612eb8565b61132e565b3480156106c557600080fd5b50601b5461037d906001600160a01b031681565b3480156106e557600080fd5b506104786106f4366004612e96565b61146f565b34801561070557600080fd5b50610414600a5481565b34801561071b57600080fd5b5061047861072a366004612e72565b6114ff565b34801561073b57600080fd5b5061047861074a366004612ef1565b61158e565b34801561075b57600080fd5b506000546001600160a01b031661037d565b34801561077957600080fd5b50601c5461037d906001600160a01b031681565b34801561079957600080fd5b506040805180820190915260048152634e494e5560e01b60208201526103c1565b3480156107c657600080fd5b506103ee6107d5366004612f0e565b611610565b3480156107e657600080fd5b5061041460185481565b3480156107fc57600080fd5b506103ee61080b366004612dbe565b6118d2565b34801561081c57600080fd5b5061041460165481565b34801561083257600080fd5b506103ee610841366004612dbe565b61194e565b34801561085257600080fd5b50610414600f5481565b34801561086857600080fd5b50610478610877366004612f27565b61195b565b34801561088857600080fd5b5061041460125481565b34801561089e57600080fd5b506104786108ad366004612f0e565b611ac8565b3480156108be57600080fd5b50610414600b5481565b3480156108d457600080fd5b5061dead600052600160205260008051602061327e83398151915254610414565b34801561090157600080fd5b506007546103ee9060ff1681565b34801561091b57600080fd5b5061041460135481565b34801561093157600080fd5b5061041460095481565b34801561094757600080fd5b50610478610956366004612f0e565b611b45565b34801561096757600080fd5b506103ee610976366004612e72565b60056020526000908152604090205460ff1681565b34801561099757600080fd5b506103ee6109a6366004612e72565b60046020526000908152604090205460ff1681565b3480156109c757600080fd5b506104146109d6366004612f62565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610a0d57600080fd5b50610478610a1c366004612e39565b611bc1565b348015610a2d57600080fd5b50610414600d5481565b348015610a4357600080fd5b50610478610a52366004612e72565b611cae565b348015610a6357600080fd5b50610478610a72366004612e39565b611da7565b348015610a8357600080fd5b50610478610a92366004612e72565b611e3c565b6000610aa4338484611ec0565b5060015b92915050565b6000610abc6012600a61308a565b610aca90633b9aca00613099565b905090565b33610ae26000546001600160a01b031690565b6001600160a01b031614610b115760405162461bcd60e51b8152600401610b08906130b0565b60405180910390fd5b600f5415610b535760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e53185d5b98da1959608a1b6044820152606401610b08565b42600f556103e8610b666012600a61308a565b610b7490633b9aca00613099565b610b7f906014613099565b610b8991906130e5565b601290815561271090610b9d90600a61308a565b610bab90633b9aca00613099565b610bb6906096613099565b610bc091906130e5565b6013556040517f2cb945e0498987ef06dbd68025b0bc276116c63345296379c28a8e8f09b47dc190600090a1565b6000610bfb848484611fb3565b6001600160a01b038416600090815260026020908152604080832033845290915290205482811015610c665760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b6044820152606401610b08565b610c7a8533610c758685613107565b611ec0565b506001949350505050565b61dead6000908152600160205260008051602061327e83398151915254610cae6012600a61308a565b610cbc90633b9aca00613099565b610aca9190613107565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610aa4918590610c7590869061311a565b33610d106000546001600160a01b031690565b6001600160a01b031614610d365760405162461bcd60e51b8152600401610b08906130b0565b610d406001612200565b6040517f50d9f00a1465121b958cf0aef21a53ed0bbe36c5a415abb27350d22b247a258f90600090a1565b60006103e8600e54610d7b610c85565b610d859190613099565b610d8f91906130e5565b601a546001600160a01b031660009081526001602052604090205411919050565b33610dc36000546001600160a01b031690565b6001600160a01b031614610de95760405162461bcd60e51b8152600401610b08906130b0565b601a546001600160a01b0390811690831603610e3e5760405162461bcd60e51b8152602060048201526014602482015273063616e2774206368616e676520756e69737761760641b6044820152606401610b08565b6001600160a01b03821660009081526005602052604090819020805460ff1916831515179055517fa5d0a2d9a2487cd749dbfa34962704a9f4ed5ff3fd9c6586c86d954070b552f090610e92908490612d44565b60405180910390a15050565b33610eb16000546001600160a01b031690565b6001600160a01b031614610ed75760405162461bcd60e51b8152600401610b08906130b0565b610ee36012600a61308a565b610ef190633b9aca00613099565b6012908155610f0190600a61308a565b610f0f90633b9aca00613099565b6013556007805460ff19169055565b33610f316000546001600160a01b031690565b6001600160a01b031614610f575760405162461bcd60e51b8152600401610b08906130b0565b6007805460ff19169055565b33610f766000546001600160a01b031690565b6001600160a01b031614610f9c5760405162461bcd60e51b8152600401610b08906130b0565b600a821015610fd65760405162461bcd60e51b81526020600482015260066024820152656d696e20312560d01b6044820152606401610b08565b6103e88211156110135760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b6044820152606401610b08565b6103e8826110236012600a61308a565b61103190633b9aca00613099565b61103b9190613099565b61104591906130e5565b60125560198110156110855760405162461bcd60e51b81526020600482015260096024820152686d696e20302e32352560b81b6044820152606401610b08565b6127108111156110c25760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b6044820152606401610b08565b612710816110d26012600a61308a565b6110e090633b9aca00613099565b6110ea9190613099565b6110f491906130e5565b6013556040518281527f9cbd2e55e2abf49d29273c1b9fb343c2828844b2aec156cfe2aec98ae1b72a999060200160405180910390a16040518181527f7c1cb3702d8e1fa6d24b12dd90670ab69c6d66d58233103d37da8b07d6b850ac90602001610e92565b3361116d6000546001600160a01b031690565b6001600160a01b0316146111935760405162461bcd60e51b8152600401610b08906130b0565b601a546040516370a0823160e01b81526001600160a01b039091169060009082906370a08231906111c8903090600401612d44565b602060405180830381865afa1580156111e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611209919061312d565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015611259573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127d9190613146565b506040517f28bacca46f5c57fe13623e9d5093cb2fab892814aca9b39384ab86550d9aa67590600090a15050565b336112be6000546001600160a01b031690565b6001600160a01b0316146112e45760405162461bcd60e51b8152600401610b08906130b0565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b336113416000546001600160a01b031690565b6001600160a01b0316146113675760405162461bcd60e51b8152600401610b08906130b0565b6102588310156113d55760405162461bcd60e51b815260206004820152603360248201527f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e207468604482015272616e206576657279203130206d696e7574657360681b6064820152608401610b08565b6103e882111580156113e5575060015b61144a5760405162461bcd60e51b815260206004820152603060248201527f4d75737420736574206175746f204c50206275726e2070657263656e7420626560448201526f747765656e20302520616e642031302560801b6064820152608401610b08565b60159290925560145560198054911515620100000262ff000019909216919091179055565b336114826000546001600160a01b031690565b6001600160a01b0316146114a85760405162461bcd60e51b8152600401610b08906130b0565b60646114b4828461311a565b11156114bf57600080fd5b6010829055601181905560408051838152602081018390527fe5a0c91086f91c001ad2bce018f8c7818182156e1fd1d3b81788aadd4b2b30219101610e92565b336115126000546001600160a01b031690565b6001600160a01b0316146115385760405162461bcd60e51b8152600401610b08906130b0565b601b80546001600160a01b0319166001600160a01b0383161790556040517f9e42de18c651175b949c09ca698a4cf63aa023f4038a9ed83bd882c7d6f8fb6490611583908390612d44565b60405180910390a150565b336115a16000546001600160a01b031690565b6001600160a01b0316146115c75760405162461bcd60e51b8152600401610b08906130b0565b601980548215156101000261ff00199091161790556040517faffc63374f6f6c07a9f4b158efd5668a3684e1711b1c8e9ed9b848e1150708219061158390831515815260200190565b6000336116256000546001600160a01b031690565b6001600160a01b03161461164b5760405162461bcd60e51b8152600401610b08906130b0565b60175460185461165b919061311a565b42116116a95760405162461bcd60e51b815260206004820181905260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973686044820152606401610b08565b6103e882111561170e5760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201526906b656e7320696e204c560b41b6064820152608401610b08565b42601855601a546040516370a0823160e01b815260009130916370a0823191611745916001600160a01b0390911690600401612d44565b602060405180830381865afa158015611762573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611786919061312d565b905060006127106117978584613099565b6117a191906130e5565b9050801561183c57601a546001600160a01b0316600090815260016020526040812080548392906117d3908490613107565b909155505061dead6000908152600160205260008051602061327e833981519152805483929061180490849061311a565b9091555050601a5460405182815261dead916001600160a01b03169060008051602061329e8339815191529060200160405180910390a35b601a546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b15801561188657600080fd5b505af115801561189a573d6000803e3d6000fd5b50506040517f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb925060009150a1506001949350505050565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156119355760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b6044820152606401610b08565b6119443385610c758685613107565b5060019392505050565b6000610aa4338484611fb3565b3361196e6000546001600160a01b031690565b6001600160a01b0316146119945760405162461bcd60e51b8152600401610b08906130b0565b6101908086118015906119a75750808511155b80156119b35750808411155b6119f45760405162461bcd60e51b81526020600482015260126024820152710a8c2f040caf0c6cacac8e640dac2f0a8c2f60731b6044820152606401610b08565b6103e8611a01838561311a565b14611a585760405162461bcd60e51b815260206004820152602160248201527f546178657320646f6e27742061646420757020746f2064656e6f6d696e61746f6044820152603960f91b6064820152608401610b08565b60088690556009859055600a849055600c839055600b829055604080518781526020810187905290810185905260608101849052608081018390527f07d167ef63e413076f3e7e19f733b66f7ab5fd83fd7b437428f115315687ef6e9060a00160405180910390a1505050505050565b33611adb6000546001600160a01b031690565b6001600160a01b031614611b015760405162461bcd60e51b8152600401610b08906130b0565b6103e8811115611b1057600080fd5b600e8190556040518181527fa072eee57b8e01913ba01eab29d8a81117cf780e6c8984a3494477ce9cee846d90602001611583565b33611b586000546001600160a01b031690565b6001600160a01b031614611b7e5760405162461bcd60e51b8152600401610b08906130b0565b600a811115611b8c57600080fd5b600d8190556040518181527fc075380b8410207b8cc14f0d254ab8c8a6766469631275e4500db835a1ba02cc90602001611583565b33611bd46000546001600160a01b031690565b6001600160a01b031614611bfa5760405162461bcd60e51b8152600401610b08906130b0565b306001600160a01b03831603611c525760405162461bcd60e51b815260206004820152601a60248201527f63616e277420496e636c7564652074686520636f6e74726163740000000000006044820152606401610b08565b6001600160a01b038216600081815260046020908152604091829020805460ff19168515159081179091558251938452908301527fa22b25479919d4ac678f064a05daa1ee9c0adc3b8198942ea45255e364e04ed49101610e92565b33611cc16000546001600160a01b031690565b6001600160a01b031614611ce75760405162461bcd60e51b8152600401610b08906130b0565b6001600160a01b038116611d4c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b08565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b33611dba6000546001600160a01b031690565b6001600160a01b031614611de05760405162461bcd60e51b8152600401610b08906130b0565b6001600160a01b038216600081815260036020908152604091829020805460ff19168515159081179091558251938452908301527f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc929101610e92565b33611e4f6000546001600160a01b031690565b6001600160a01b031614611e755760405162461bcd60e51b8152600401610b08906130b0565b601c80546001600160a01b0319166001600160a01b0383161790556040517f1a806adf87d2b694e80e69bda66ee145c65fb0ef3615fec509da7adc260316af90611583908390612d44565b6001600160a01b038316611f0a5760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b6044820152606401610b08565b6001600160a01b038216611f525760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b6044820152606401610b08565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611ffe5760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b6044820152606401610b08565b6001600160a01b0382166120475760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b6044820152606401610b08565b60075460ff1615612155576000546001600160a01b0383811691161480159061208d57506001600160a01b038216737a250d5630b4cf539739df2c5dacb4c659f2488d14155b80156120a75750601a546001600160a01b03838116911614155b15612155573260009081526006602052604090205443116121425760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610b08565b3260009081526006602052604090204390555b6001600160a01b03831660009081526004602052604090205460ff168061219457506001600160a01b03821660009081526004602052604090205460ff165b156121a9576121a4838383612459565b505050565b6000600f54116121f55760405162461bcd60e51b81526020600482015260176024820152761d1c98591a5b99c81b9bdd081e595d08195b98589b1959604a1b6044820152606401610b08565b6121a483838361255a565b6019805460ff191660019081179091553060009081526020919091526040812054600c54600b54919291612234919061311a565b600d54601a546001600160a01b0316600090815260016020526040812054929350916103e89161226391613099565b61226d91906130e5565b90508160000361227f5750505061244c565b831561229b5750306000908152600160205260409020546122ab565b808310156122ab5750505061244c565b60006122b5610d6b565b6122d75782600b54836122c89190613099565b6122d291906130e5565b6122da565b60005b905060006122e88284613107565b905060006122f76002846130e5565b90506000612305838361311a565b90504761231182612911565b600061231d8247613107565b9050851561234a576000836123328684613099565b61233c91906130e5565b90506123488582612a8a565b505b600060646011544761235c9190613099565b61236691906130e5565b9050600060646010544761237a9190613099565b61238491906130e5565b905081156123e357601b546040516000916001600160a01b03169084908381818185875af1925050503d80600081146123d9576040519150601f19603f3d011682016040523d82523d6000602084013e6123de565b606091505b505050505b801561244057601c546040516000916001600160a01b03169083908381818185875af1925050503d8060008114612436576040519150601f19603f3d011682016040523d82523d6000602084013e61243b565b606091505b505050505b50505050505050505050505b506019805460ff19169055565b6001600160a01b038316600090815260016020526040902054818110156124bd5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610b08565b6001600160a01b038416600090815260016020526040812080548492906124e5908490613107565b90915550506001600160a01b0383166000908152600160205260408120805484929061251290849061311a565b92505081905550826001600160a01b0316846001600160a01b031660008051602061329e8339815191528460405161254c91815260200190565b60405180910390a350505050565b6001600160a01b038316600090815260016020526040902054818110156125be5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610b08565b6001600160a01b03841660009081526003602052604081205460ff16806125fd57506001600160a01b03841660009081526003602052604090205460ff165b6001600160a01b03861660009081526005602052604090205490915060ff168015612626575080155b156126d35760135483111561264d5760405162461bcd60e51b8152600401610b0890613163565b6001600160a01b038416600090815260016020526040902054601254612673858361311a565b11156126cd5760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610b08565b50612720565b6001600160a01b03841660009081526005602052604090205460ff1680156126f9575080155b15612720576013548311156127205760405162461bcd60e51b8152600401610b0890613163565b6001600160a01b0380861660009081526005602052604080822054928716825281205460ff928316921690811561275a575060095461276e565b8215612769575060085461276e565b50600a545b601a546001600160a01b038981169116148015906127945750601954610100900460ff16155b80156127a3575060195460ff16155b156127b2576127b26000612200565b60195460ff161580156127dd57506001600160a01b03871660009081526005602052604090205460ff165b80156127f1575060195462010000900460ff165b801561280c5750601554601654612808919061311a565b4210155b1561281b57612819612b48565b505b60006128378783600b54600c54612832919061311a565b612d0f565b905060006128458289613107565b6001600160a01b038b16600090815260016020526040812080549293508a92909190612872908490613107565b9091555050306000908152600160205260408120805484929061289690849061311a565b90915550506001600160a01b038916600090815260016020526040812080548392906128c390849061311a565b92505081905550886001600160a01b03168a6001600160a01b031660008051602061329e833981519152836040516128fd91815260200190565b60405180910390a350505050505050505050565b601954612930903090630100000090046001600160a01b031683611ec0565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612965576129656131ab565b60200260200101906001600160a01b031690816001600160a01b031681525050601960039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129fc91906131c1565b81600181518110612a0f57612a0f6131ab565b6001600160a01b03928316602091820292909201015260195460405163791ac94760e01b815263010000009091049091169063791ac94790612a5e9085906000908690309042906004016131de565b600060405180830381600087803b158015612a7857600080fd5b505af19250505080156121a457505050565b601954612aa9903090630100000090046001600160a01b031684611ec0565b60195460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a482015263010000009091046001600160a01b03169063f305d71990839060c40160606040518083038185885af1158015612b1c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612b41919061324f565b5050505050565b42601655601a546040516370a0823160e01b8152600091829130916370a0823191612b7f916001600160a01b031690600401612d44565b602060405180830381865afa158015612b9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bc0919061312d565b9050600061271060145483612bd59190613099565b612bdf91906130e5565b90508015612c7a57601a546001600160a01b031660009081526001602052604081208054839290612c11908490613107565b909155505061dead6000908152600160205260008051602061327e8339815191528054839290612c4290849061311a565b9091555050601a5460405182815261dead916001600160a01b03169060008051602061329e8339815191529060200160405180910390a35b601a546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b158015612cc457600080fd5b505af1158015612cd8573d6000803e3d6000fd5b50506040517f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d925060009150a16001935050505090565b6000612d1d6103e880613099565b82612d288587613099565b612d329190613099565b612d3c91906130e5565b949350505050565b6001600160a01b0391909116815260200190565b600060208083528351808285015260005b81811015612d8557858101830151858201604001528201612d69565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612dbb57600080fd5b50565b60008060408385031215612dd157600080fd5b8235612ddc81612da6565b946020939093013593505050565b600080600060608486031215612dff57600080fd5b8335612e0a81612da6565b92506020840135612e1a81612da6565b929592945050506040919091013590565b8015158114612dbb57600080fd5b60008060408385031215612e4c57600080fd5b8235612e5781612da6565b91506020830135612e6781612e2b565b809150509250929050565b600060208284031215612e8457600080fd5b8135612e8f81612da6565b9392505050565b60008060408385031215612ea957600080fd5b50508035926020909101359150565b600080600060608486031215612ecd57600080fd5b83359250602084013591506040840135612ee681612e2b565b809150509250925092565b600060208284031215612f0357600080fd5b8135612e8f81612e2b565b600060208284031215612f2057600080fd5b5035919050565b600080600080600060a08688031215612f3f57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215612f7557600080fd5b8235612f8081612da6565b91506020830135612e6781612da6565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612fe1578160001904821115612fc757612fc7612f90565b80851615612fd457918102915b93841c9390800290612fab565b509250929050565b600082612ff857506001610aa8565b8161300557506000610aa8565b816001811461301b576002811461302557613041565b6001915050610aa8565b60ff84111561303657613036612f90565b50506001821b610aa8565b5060208310610133831016604e8410600b8410161715613064575081810a610aa8565b61306e8383612fa6565b806000190482111561308257613082612f90565b029392505050565b6000612e8f60ff841683612fe9565b8082028115828204841417610aa857610aa8612f90565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008261310257634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610aa857610aa8612f90565b80820180821115610aa857610aa8612f90565b60006020828403121561313f57600080fd5b5051919050565b60006020828403121561315857600080fd5b8151612e8f81612e2b565b60208082526028908201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546040820152673c20b6b7bab73a1760c11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156131d357600080fd5b8151612e8f81612da6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561322e5784516001600160a01b031683529383019391830191600101613209565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561326457600080fd5b835192506020840151915060408401519050925092509256feb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164dddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212209ec7ff6d076b5ba0e0f5857d6e808431a23ff749f1309f4d7acfe7dbf89696d964736f6c63430008110033

Deployed Bytecode Sourcemap

2978:17835:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4827:50;;;;;;;;;;;;4870:6;4827:50;;;;;;;;;:::i;:::-;;;;;;;;18625:78;;;;;;;;;;-1:-1:-1;18696:5:0;;;;;;;;;;;;-1:-1:-1;;;18696:5:0;;;;18625:78;;;;;;;:::i;19381:158::-;;;;;;;;;;-1:-1:-1;19381:158:0;;;;;:::i;:::-;;:::i;:::-;;;1396:14:1;;1389:22;1371:41;;1359:2;1344:18;19381:158:0;1231:187:1;3985:35:0;;;;;;;;;;;;;;;;;;;1569:25:1;;;1557:2;1542:18;3985:35:0;1423:177:1;18881:84:0;;;;;;;;;;;;;:::i;4468:47::-;;;;;;;;;;;;;;;;4324:36;;;;;;;;;;;;;;;;16097:319;;;;;;;;;;;;;:::i;:::-;;19845:382;;;;;;;;;;-1:-1:-1;19845:382:0;;;;;:::i;:::-;;:::i;14927:123::-;;;;;;;;;;;;;:::i;4380:45::-;;;;;;;;;;;;;;;;4642:32;;;;;;;;;;-1:-1:-1;4642:32:0;;;;;;;;;;;18797:78;;;;;;;;;;-1:-1:-1;18797:78:0;;3607:2;2208:36:1;;2196:2;2181:18;18797:78:0;2066:184:1;20233:202:0;;;;;;;;;;-1:-1:-1;20233:202:0;;;;;:::i;:::-;;:::i;15376:127::-;;;;;;;;;;;;;:::i;12451:149::-;;;;;;;;;;;;;:::i;3682:23::-;;;;;;;;;;;;;;;;15056:179;;;;;;;;;;-1:-1:-1;15056:179:0;;;;;:::i;:::-;;:::i;4613:22::-;;;;;;;;;;-1:-1:-1;4613:22:0;;;;;;;;;;;15963:128;;;;;;;;;;-1:-1:-1;15963:128:0;;;;;:::i;:::-;-1:-1:-1;;;;;16056:27:0;16032:4;16056:27;;;:18;:27;;;;;;;;;15963:128;7789:189;;;;;;;;;;;;;:::i;7984:97::-;;;;;;;;;;;;;:::i;7230:551::-;;;;;;;;;;-1:-1:-1;7230:551:0;;;;;:::i;:::-;;:::i;3822:21::-;;;;;;;;;;;;;;;;18971:100;;;;;;;;;;-1:-1:-1;18971:100:0;;;;;:::i;:::-;-1:-1:-1;;;;;19051:18:0;19037:4;19051:18;;;:9;:18;;;;;;;18971:100;16422:250;;;;;;;;;;;;;:::i;2561:142::-;;;;;;;;;;;;;:::i;16678:447::-;;;;;;;;;;-1:-1:-1;16678:447:0;;;;;:::i;:::-;;:::i;4758:30::-;;;;;;;;;;-1:-1:-1;4758:30:0;;;;-1:-1:-1;;;;;4758:30:0;;;6981:243;;;;;;;;;;-1:-1:-1;6981:243:0;;;;;:::i;:::-;;:::i;3754:27::-;;;;;;;;;;;;;;;;6667:160;;;;;;;;;;-1:-1:-1;6667:160:0;;;;;:::i;:::-;;:::i;15241:129::-;;;;;;;;;;-1:-1:-1;15241:129:0;;;;;:::i;:::-;;:::i;18541:78::-;;;;;;;;;;-1:-1:-1;18593:7:0;2417:6;-1:-1:-1;;;;;2417:6:0;18541:78;18881:84;4795:24;;;;;;;;;;-1:-1:-1;4795:24:0;;;;-1:-1:-1;;;;;4795:24:0;;;18709:82;;;;;;;;;;-1:-1:-1;18782:7:0;;;;;;;;;;;;-1:-1:-1;;;18782:7:0;;;;18709:82;;17722:807;;;;;;;;;;-1:-1:-1;17722:807:0;;;;;:::i;:::-;;:::i;4522:35::-;;;;;;;;;;;;;;;;20441:334;;;;;;;;;;-1:-1:-1;20441:334:0;;;;;:::i;:::-;;:::i;4432:29::-;;;;;;;;;;;;;;;;19211:164;;;;;;;;;;-1:-1:-1;19211:164:0;;;;;:::i;:::-;;:::i;4027:27::-;;;;;;;;;;;;;;;;11941:504;;;;;;;;;;-1:-1:-1;11941:504:0;;;;;:::i;:::-;;:::i;4244:31::-;;;;;;;;;;;;;;;;11645:290;;;;;;;;;;-1:-1:-1;11645:290:0;;;;;:::i;:::-;;:::i;3788:27::-;;;;;;;;;;;;;;;;14815:106;;;;;;;;;;-1:-1:-1;14905:6:0;14864:4;14887:26;:9;:26;;-1:-1:-1;;;;;;;;;;;14887:26:0;14815:106;;3423:39;;;;;;;;;;-1:-1:-1;3423:39:0;;;;;;;;4282:35;;;;;;;;;;;;;;;;3722:25;;;;;;;;;;;;;;;;11387:252;;;;;;;;;;-1:-1:-1;11387:252:0;;;;;:::i;:::-;;:::i;3258:35::-;;;;;;;;;;-1:-1:-1;3258:35:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3203:48;;;;;;;;;;-1:-1:-1;3203:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19077:128;;;;;;;;;;-1:-1:-1;19077:128:0;;;;;:::i;:::-;-1:-1:-1;;;;;19175:19:0;;;19161:4;19175:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;19077:128;15509:251;;;;;;;;;;-1:-1:-1;15509:251:0;;;;;:::i;:::-;;:::i;3889:27::-;;;;;;;;;;;;;;;;2709:236;;;;;;;;;;-1:-1:-1;2709:236:0;;;;;:::i;:::-;;:::i;15766:191::-;;;;;;;;;;-1:-1:-1;15766:191:0;;;;;:::i;:::-;;:::i;6833:142::-;;;;;;;;;;-1:-1:-1;6833:142:0;;;;;:::i;:::-;;:::i;19381:158::-;19455:4;19472:37;19481:10;19493:7;19502:6;19472:8;:37::i;:::-;-1:-1:-1;19527:4:0;19381:158;;;;;:::o;18881:84::-;18936:4;3662:13;3607:2;3662;:13;:::i;:::-;3654:21;;:5;:21;:::i;:::-;18943:20;;18881:84;:::o;16097:319::-;2488:10;2477:7;2390;2417:6;-1:-1:-1;;;;;2417:6:0;;2352:79;2477:7;-1:-1:-1;;;;;2477:21:0;;2469:66;;;;-1:-1:-1;;;2469:66:0;;;;;;;:::i;:::-;;;;;;;;;16159:15:::1;::::0;:18;16151:45:::1;;;::::0;-1:-1:-1;;;16151:45:0;;7186:2:1;16151:45:0::1;::::0;::::1;7168:21:1::0;7225:2;7205:18;;;7198:30;-1:-1:-1;;;7244:18:1;;;7237:45;7299:18;;16151:45:0::1;6984:339:1::0;16151:45:0::1;16223:15;16207;:31:::0;16289:4:::1;3662:13;3607:2;3662;:13;:::i;:::-;3654:21;::::0;:5:::1;:21;:::i;:::-;16268:18;::::0;16284:2:::1;16268:18;:::i;:::-;:25;;;;:::i;:::-;16249:16;:44:::0;;;16359:5:::1;::::0;3662:13:::1;::::0;:2:::1;:13;:::i;:::-;3654:21;::::0;:5:::1;:21;:::i;:::-;16337:19;::::0;16353:3:::1;16337:19;:::i;:::-;:27;;;;:::i;:::-;16314:20;:50:::0;16391:17:::1;::::0;::::1;::::0;;;::::1;16097:319::o:0;19845:382::-;19942:4;19959:36;19969:6;19977:9;19988:6;19959:9;:36::i;:::-;-1:-1:-1;;;;;20030:19:0;;20006:21;20030:19;;;:11;:19;;;;;;;;20050:10;20030:31;;;;;;;;20080:26;;;;20072:59;;;;-1:-1:-1;;;20072:59:0;;7752:2:1;20072:59:0;;;7734:21:1;7791:2;7771:18;;;7764:30;-1:-1:-1;;;7810:18:1;;;7803:50;7870:18;;20072:59:0;7550:344:1;20072:59:0;20142:55;20151:6;20159:10;20171:25;20190:6;20171:16;:25;:::i;:::-;20142:8;:55::i;:::-;-1:-1:-1;20215:4:0;;19845:382;-1:-1:-1;;;;19845:382:0:o;14927:123::-;15034:6;14979:4;15016:26;;;:9;:26;;-1:-1:-1;;;;;;;;;;;15016:26:0;3662:13;3607:2;3662;:13;:::i;:::-;3654:21;;:5;:21;:::i;:::-;15002:40;;;;:::i;20233:202::-;20338:10;20312:4;20359:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;20359:32:0;;;;;;;;;;20312:4;;20329:76;;20350:7;;20359:45;;20394:10;;20359:45;:::i;15376:127::-;2488:10;2477:7;2390;2417:6;-1:-1:-1;;;;;2417:6:0;;2352:79;2477:7;-1:-1:-1;;;;;2477:21:0;;2469:66;;;;-1:-1:-1;;;2469:66:0;;;;;;;:::i;:::-;15434:24:::1;15453:4;15434:18;:24::i;:::-;15474:21;::::0;::::1;::::0;;;::::1;15376:127::o:0;12451:149::-;12498:4;12588;12568:19;;12545:22;:20;:22::i;:::-;:42;;;;:::i;:::-;:47;;;;:::i;:::-;12531:12;;-1:-1:-1;;;;;12531:12:0;12521:23;;;;:9;:23;;;;;;:71;;12451:149;-1:-1:-1;12451:149:0:o;15056:179::-;2488:10;2477:7;2390;2417:6;-1:-1:-1;;;;;2417:6:0;;2352:79;2477:7;-1:-1:-1;;;;;2477:21:0;;2469:66;;;;-1:-1:-1;;;2469:66:0;;;;;;;:::i;:::-;15137:12:::1;::::0;-1:-1:-1;;;;;15137:12:0;;::::1;15132:17:::0;;::::1;::::0;15124:49:::1;;;::::0;-1:-1:-1;;;15124:49:0;;8364:2:1;15124:49:0::1;::::0;::::1;8346:21:1::0;8403:2;8383:18;;;8376:30;-1:-1:-1;;;8422:18:1;;;8415:50;8482:18;;15124:49:0::1;8162:344:1::0;15124:49:0::1;-1:-1:-1::0;;;;;15184:10:0;::::1;;::::0;;;:5:::1;:10;::::0;;;;;;:14;;-1:-1:-1;;15184:14:0::1;::::0;::::1;;;::::0;;15214:13;::::1;::::0;::::1;::::0;15184:10;;15214:13:::1;:::i;:::-;;;;;;;;15056:179:::0;;:::o;7789:189::-;2488:10;2477:7;2390;2417:6;-1:-1:-1;;;;;2417:6:0;;2352:79;2477:7;-1:-1:-1;;;;;2477:21:0;;2469:66;;;;-1:-1:-1;;;2469:66:0;;;;;;;:::i;:::-;3662:13:::1;3607:2;3662;:13;:::i;:::-;3654:21;::::0;:5:::1;:21;:::i;:::-;7852:16;:32:::0;;;3662:13:::1;::::0;:2:::1;:13;:::i;:::-;3654:21;::::0;:5:::1;:21;:::i;:::-;7895:20;:36:::0;7942:20:::1;:28:::0;;-1:-1:-1;;7942:28:0::1;::::0;;7789:189::o;7984:97::-;2488:10;2477:7;2390;2417:6;-1:-1:-1;;;;;2417:6:0;;2352:79;2477:7;-1:-1:-1;;;;;2477:21:0;;2469:66;;;;-1:-1:-1;;;2469:66:0;;;;;;;:::i;:::-;8045:20:::1;:28:::0;;-1:-1:-1;;8045:28:0::1;::::0;;7984:97::o;7230:551::-;2488:10;2477:7;2390;2417:6;-1:-1:-1;;;;;2417:6:0;;2352:79;2477:7;-1:-1:-1;;;;;2477:21:0;;2469:66;;;;-1:-1:-1;;;2469:66:0;;;;;;;:::i;:::-;7354:2:::1;7340:10;:16;;7332:35;;;::::0;-1:-1:-1;;;7332:35:0;;8713:2:1;7332:35:0::1;::::0;::::1;8695:21:1::0;8752:1;8732:18;;;8725:29;-1:-1:-1;;;8770:18:1;;;8763:36;8816:18;;7332:35:0::1;8511:329:1::0;7332:35:0::1;7409:4;7395:10;:18;;7387:39;;;::::0;-1:-1:-1;;;7387:39:0;;9047:2:1;7387:39:0::1;::::0;::::1;9029:21:1::0;9086:1;9066:18;;;9059:29;-1:-1:-1;;;9104:18:1;;;9097:38;9152:18;;7387:39:0::1;8845:331:1::0;7387:39:0::1;7485:4;7472:10:::0;3662:13:::1;3607:2;3662;:13;:::i;:::-;3654:21;::::0;:5:::1;:21;:::i;:::-;7456:26;;;;:::i;:::-;:33;;;;:::i;:::-;7437:16;:52:::0;7522:2:::1;7508:16:::0;::::1;;7500:38;;;::::0;-1:-1:-1;;;7500:38:0;;9383:2:1;7500:38:0::1;::::0;::::1;9365:21:1::0;9422:1;9402:18;;;9395:29;-1:-1:-1;;;9440:18:1;;;9433:39;9489:18;;7500:38:0::1;9181:332:1::0;7500:38:0::1;7571:5;7557:10;:19;;7549:40;;;::::0;-1:-1:-1;;;7549:40:0;;9047:2:1;7549:40:0::1;::::0;::::1;9029:21:1::0;9086:1;9066:18;;;9059:29;-1:-1:-1;;;9104:18:1;;;9097:38;9152:18;;7549:40:0::1;8845:331:1::0;7549:40:0::1;7662:5;7649:10:::0;3662:13:::1;3607:2;3662;:13;:::i;:::-;3654:21;::::0;:5:::1;:21;:::i;:::-;7633:26;;;;:::i;:::-;:34;;;;:::i;:::-;7610:20;:57:::0;7683:35:::1;::::0;1569:25:1;;;7683:35:0::1;::::0;1557:2:1;1542:18;7683:35:0::1;;;;;;;7734:39;::::0;1569:25:1;;;7734:39:0::1;::::0;1557:2:1;1542:18;7734:39:0::1;1423:177:1::0;16422:250:0;2488:10;2477:7;2390;2417:6;-1:-1:-1;;;;;2417:6:0;;2352:79;2477:7;-1:-1:-1;;;;;2477:21:0;;2469:66;;;;-1:-1:-1;;;2469:66:0;;;;;;;:::i;:::-;16504:12:::1;::::0;16542:39:::1;::::0;-1:-1:-1;;;16542:39:0;;-1:-1:-1;;;;;16504:12:0;;::::1;::::0;16473:21:::1;::::0;16504:12;;16542:24:::1;::::0;:39:::1;::::0;16575:4:::1;::::0;16542:39:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16592:43;::::0;-1:-1:-1;;;16592:43:0;;16616:10:::1;16592:43;::::0;::::1;9881:51:1::0;9948:18;;;9941:34;;;16528:53:0;;-1:-1:-1;;;;;;16592:23:0;::::1;::::0;::::1;::::0;9854:18:1;;16592:43:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;16651:13:0::1;::::0;::::1;::::0;;;::::1;16462:210;;16422:250::o:0;2561:142::-;2488:10;2477:7;2390;2417:6;-1:-1:-1;;;;;2417:6:0;;2352:79;2477:7;-1:-1:-1;;;;;2477:21:0;;2469:66;;;;-1:-1:-1;;;2469:66:0;;;;;;;:::i;:::-;2662:1:::1;2646:6:::0;;2625:40:::1;::::0;-1:-1:-1;;;;;2646:6:0;;::::1;::::0;2625:40:::1;::::0;2662:1;;2625:40:::1;2693:1;2676:19:::0;;-1:-1:-1;;;;;;2676:19:0::1;::::0;;2561:142::o;16678:447::-;2488:10;2477:7;2390;2417:6;-1:-1:-1;;;;;2417:6:0;;2352:79;2477:7;-1:-1:-1;;;;;2477:21:0;;2469:66;;;;-1:-1:-1;;;2469:66:0;;;;;;;:::i;:::-;16832:3:::1;16809:19;:26;;16801:90;;;::::0;-1:-1:-1;;;16801:90:0;;10438:2:1;16801:90:0::1;::::0;::::1;10420:21:1::0;10477:2;10457:18;;;10450:30;10516:34;10496:18;;;10489:62;-1:-1:-1;;;10567:18:1;;;10560:49;10626:19;;16801:90:0::1;10236:415:1::0;16801:90:0::1;16922:4;16910:8;:16;;:33;;;;-1:-1:-1::0;16930:13:0;16910:33:::1;16902:94;;;::::0;-1:-1:-1;;;16902:94:0;;10858:2:1;16902:94:0::1;::::0;::::1;10840:21:1::0;10897:2;10877:18;;;10870:30;10936:34;10916:18;;;10909:62;-1:-1:-1;;;10987:18:1;;;10980:46;11043:19;;16902:94:0::1;10656:412:1::0;16902:94:0::1;17007:15;:37:::0;;;;17055:16:::1;:27:::0;17093:13:::1;:24:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;17093:24:0;;::::1;::::0;;;::::1;::::0;;16678:447::o;6981:243::-;2488:10;2477:7;2390;2417:6;-1:-1:-1;;;;;2417:6:0;;2352:79;2477:7;-1:-1:-1;;;;;2477:21:0;;2469:66;;;;-1:-1:-1;;;2469:66:0;;;;;;;:::i;:::-;7097:3:::1;7074:21;7082:13:::0;7074:7;:21:::1;:::i;:::-;:26;;7066:35;;;::::0;::::1;;7112:6;:14:::0;;;7137:12:::1;:26:::0;;;7179:37:::1;::::0;;11247:25:1;;;11303:2;11288:18;;11281:34;;;7179:37:0::1;::::0;11220:18:1;7179:37:0::1;11073:248:1::0;6667:160:0;2488:10;2477:7;2390;2417:6;-1:-1:-1;;;;;2417:6:0;;2352:79;2477:7;-1:-1:-1;;;;;2477:21:0;;2469:66;;;;-1:-1:-1;;;2469:66:0;;;;;;;:::i;:::-;6746:15:::1;:25:::0;;-1:-1:-1;;;;;;6746:25:0::1;-1:-1:-1::0;;;;;6746:25:0;::::1;;::::0;;6787:32:::1;::::0;::::1;::::0;::::1;::::0;6746:25;;6787:32:::1;:::i;:::-;;;;;;;;6667:160:::0;:::o;15241:129::-;2488:10;2477:7;2390;2417:6;-1:-1:-1;;;;;2417:6:0;;2352:79;2477:7;-1:-1:-1;;;;;2477:21:0;;2469:66;;;;-1:-1:-1;;;2469:66:0;;;;;;;:::i;:::-;15309:10:::1;:17:::0;;;::::1;;;;-1:-1:-1::0;;15309:17:0;;::::1;;::::0;;15342:20:::1;::::0;::::1;::::0;::::1;::::0;15320:6;1396:14:1;1389:22;1371:41;;1359:2;1344:18;;1231:187;17722:807:0;17795:4;2488:10;2477:7;2390;2417:6;-1:-1:-1;;;;;2417:6:0;;2352:79;2477:7;-1:-1:-1;;;;;2477:21:0;;2469:66;;;;-1:-1:-1;;;2469:66:0;;;;;;;:::i;:::-;17860:19:::1;;17837:20;;:42;;;;:::i;:::-;17819:15;:60;17811:106;;;::::0;-1:-1:-1;;;17811:106:0;;11528:2:1;17811:106:0::1;::::0;::::1;11510:21:1::0;;;11547:18;;;11540:30;11606:34;11586:18;;;11579:62;11658:18;;17811:106:0::1;11326:356:1::0;17811:106:0::1;17947:4;17936:7;:15;;17928:70;;;::::0;-1:-1:-1;;;17928:70:0;;11889:2:1;17928:70:0::1;::::0;::::1;11871:21:1::0;11928:2;11908:18;;;11901:30;11967:34;11947:18;;;11940:62;-1:-1:-1;;;12018:18:1;;;12011:40;12068:19;;17928:70:0::1;11687:406:1::0;17928:70:0::1;18032:15;18009:20;:38:::0;18104:12:::1;::::0;18089:28:::1;::::0;-1:-1:-1;;;18089:28:0;;18058::::1;::::0;18089:4:::1;::::0;:14:::1;::::0;:28:::1;::::0;-1:-1:-1;;;;;18104:12:0;;::::1;::::0;18089:28:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18058:59:::0;-1:-1:-1;18128:20:0::1;18182:5;18151:30;18174:7:::0;18058:59;18151:30:::1;:::i;:::-;:36;;;;:::i;:::-;18128:59:::0;-1:-1:-1;18202:16:0;;18198:201:::1;;18244:12;::::0;-1:-1:-1;;;;;18244:12:0::1;18234:23;::::0;;;:9:::1;:23;::::0;;;;:37;;18259:12;;18234:23;:37:::1;::::0;18259:12;;18234:37:::1;:::i;:::-;::::0;;;-1:-1:-1;;4870:6:0::1;18286:21;::::0;;;:9:::1;:21;::::0;-1:-1:-1;;;;;;;;;;;18286:35:0;;18309:12;;18286:21;:35:::1;::::0;18309:12;;18286:35:::1;:::i;:::-;::::0;;;-1:-1:-1;;18350:12:0::1;::::0;18341:46:::1;::::0;1569:25:1;;;4870:6:0::1;::::0;-1:-1:-1;;;;;18350:12:0::1;::::0;-1:-1:-1;;;;;;;;;;;18341:46:0;1557:2:1;1542:18;18341:46:0::1;;;;;;;18198:201;18434:12;::::0;18458:11:::1;::::0;;-1:-1:-1;;;;;;18458:11:0;;;;-1:-1:-1;;;;;18434:12:0;;::::1;::::0;;;18458:9:::1;::::0;:11:::1;::::0;;::::1;::::0;18409:13:::1;::::0;18458:11;;;;;;;18409:13;18434:12;18458:11;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;18485:14:0::1;::::0;::::1;::::0;-1:-1:-1;18485:14:0;;-1:-1:-1;18485:14:0::1;-1:-1:-1::0;18517:4:0::1;::::0;17722:807;-1:-1:-1;;;;17722:807:0:o;20441:334::-;20578:10;20525:4;20566:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;20566:32:0;;;;;;;;;;20617:35;;;;20609:60;;;;-1:-1:-1;;;20609:60:0;;12300:2:1;20609:60:0;;;12282:21:1;12339:2;12319:18;;;12312:30;-1:-1:-1;;;12358:18:1;;;12351:42;12410:18;;20609:60:0;12098:336:1;20609:60:0;20680:65;20689:10;20701:7;20710:34;20729:15;20710:16;:34;:::i;20680:65::-;-1:-1:-1;20763:4:0;;20441:334;-1:-1:-1;;;20441:334:0:o;19211:164::-;19288:4;19305:40;19315:10;19327:9;19338:6;19305:9;:40::i;11941:504::-;2488:10;2477:7;2390;2417:6;-1:-1:-1;;;;;2417:6:0;;2352:79;2477:7;-1:-1:-1;;;;;2477:21:0;;2469:66;;;;-1:-1:-1;;;2469:66:0;;;;;;;:::i;:::-;12062:3:::1;12094:11:::0;;::::1;::::0;::::1;::::0;:25:::1;;;12113:6;12107:4;:12;;12094:25;:44;;;;;12132:6;12121:9;:17;;12094:44;12086:74;;;::::0;-1:-1:-1;;;12086:74:0;;12641:2:1;12086:74:0::1;::::0;::::1;12623:21:1::0;12680:2;12660:18;;;12653:30;-1:-1:-1;;;12699:18:1;;;12692:48;12757:18;;12086:74:0::1;12439:342:1::0;12086:74:0::1;4190:4;12179:13;12183:9:::0;12179:3;:13:::1;:::i;:::-;:30;12171:75;;;::::0;-1:-1:-1;;;12171:75:0;;12988:2:1;12171:75:0::1;::::0;::::1;12970:21:1::0;13027:2;13007:18;;;13000:30;13066:34;13046:18;;;13039:62;-1:-1:-1;;;13117:18:1;;;13110:31;13158:19;;12171:75:0::1;12786:397:1::0;12171:75:0::1;12257:6;:10:::0;;;12278:7:::1;:12:::0;;;12301:11:::1;:21:::0;;;12333:3:::1;:7:::0;;;12351:12:::1;:22:::0;;;12389:48:::1;::::0;;13447:25:1;;;13503:2;13488:18;;13481:34;;;13531:18;;;13524:34;;;13589:2;13574:18;;13567:34;;;13632:3;13617:19;;13610:35;;;12389:48:0::1;::::0;13434:3:1;13419:19;12389:48:0::1;;;;;;;12039:406;11941:504:::0;;;;;:::o;11645:290::-;2488:10;2477:7;2390;2417:6;-1:-1:-1;;;;;2417:6:0;;2352:79;2477:7;-1:-1:-1;;;;;2477:21:0;;2469:66;;;;-1:-1:-1;;;2469:66:0;;;;;;;:::i;:::-;11785:4:::1;11753:30;:36;;11745:45;;;::::0;::::1;;11801:19;:50:::0;;;11867:60:::1;::::0;1569:25:1;;;11867:60:0::1;::::0;1557:2:1;1542:18;11867:60:0::1;1423:177:1::0;11387:252:0;2488:10;2477:7;2390;2417:6;-1:-1:-1;;;;;2417:6:0;;2352:79;2477:7;-1:-1:-1;;;;;2477:21:0;;2469:66;;;;-1:-1:-1;;;2469:66:0;;;;;;;:::i;:::-;11504:2:::1;11479:23;:27;;11471:36;;;::::0;::::1;;11535:12;:36:::0;;;11587:44:::1;::::0;1569:25:1;;;11587:44:0::1;::::0;1557:2:1;1542:18;11587:44:0::1;1423:177:1::0;15509:251:0;2488:10;2477:7;2390;2417:6;-1:-1:-1;;;;;2417:6:0;;2352:79;2477:7;-1:-1:-1;;;;;2477:21:0;;2469:66;;;;-1:-1:-1;;;2469:66:0;;;;;;;:::i;:::-;15626:4:::1;-1:-1:-1::0;;;;;15609:22:0;::::1;::::0;15601:60:::1;;;::::0;-1:-1:-1;;;15601:60:0;;13858:2:1;15601:60:0::1;::::0;::::1;13840:21:1::0;13897:2;13877:18;;;13870:30;13936:28;13916:18;;;13909:56;13982:18;;15601:60:0::1;13656:350:1::0;15601:60:0::1;-1:-1:-1::0;;;;;15672:25:0;::::1;;::::0;;;:16:::1;:25;::::0;;;;;;;;:33;;-1:-1:-1;;15672:33:0::1;::::0;::::1;;::::0;;::::1;::::0;;;15721:31;;14179:51:1;;;14246:18;;;14239:50;15721:31:0::1;::::0;14152:18:1;15721:31:0::1;14011:284:1::0;2709:236:0;2488:10;2477:7;2390;2417:6;-1:-1:-1;;;;;2417:6:0;;2352:79;2477:7;-1:-1:-1;;;;;2477:21:0;;2469:66;;;;-1:-1:-1;;;2469:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2790:22:0;::::1;2782:73;;;::::0;-1:-1:-1;;;2782:73:0;;14502:2:1;2782:73:0::1;::::0;::::1;14484:21:1::0;14541:2;14521:18;;;14514:30;14580:34;14560:18;;;14553:62;-1:-1:-1;;;14631:18:1;;;14624:36;14677:19;;2782:73:0::1;14300:402:1::0;2782:73:0::1;2892:6;::::0;;2871:38:::1;::::0;-1:-1:-1;;;;;2871:38:0;;::::1;::::0;2892:6;::::1;::::0;2871:38:::1;::::0;::::1;2920:6;:17:::0;;-1:-1:-1;;;;;;2920:17:0::1;-1:-1:-1::0;;;;;2920:17:0;;;::::1;::::0;;;::::1;::::0;;2709:236::o;15766:191::-;2488:10;2477:7;2390;2417:6;-1:-1:-1;;;;;2417:6:0;;2352:79;2477:7;-1:-1:-1;;;;;2477:21:0;;2469:66;;;;-1:-1:-1;;;2469:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15864:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;;;;:35;;-1:-1:-1;;15864:35:0::1;::::0;::::1;;::::0;;::::1;::::0;;;15915:34;;14179:51:1;;;14246:18;;;14239:50;15915:34:0::1;::::0;14152:18:1;15915:34:0::1;14011:284:1::0;6833:142:0;2488:10;2477:7;2390;2417:6;-1:-1:-1;;;;;2417:6:0;;2352:79;2477:7;-1:-1:-1;;;;;2477:21:0;;2469:66;;;;-1:-1:-1;;;2469:66:0;;;;;;;:::i;:::-;6906:9:::1;:19:::0;;-1:-1:-1;;;;;;6906:19:0::1;-1:-1:-1::0;;;;;6906:19:0;::::1;;::::0;;6941:26:::1;::::0;::::1;::::0;::::1;::::0;6906:19;;6941:26:::1;:::i;19545:294::-:0;-1:-1:-1;;;;;19635:19:0;;19627:49;;;;-1:-1:-1;;;19627:49:0;;14909:2:1;19627:49:0;;;14891:21:1;14948:2;14928:18;;;14921:30;-1:-1:-1;;;14967:18:1;;;14960:47;15024:18;;19627:49:0;14707:341:1;19627:49:0;-1:-1:-1;;;;;19695:21:0;;19687:49;;;;-1:-1:-1;;;19687:49:0;;15255:2:1;19687:49:0;;;15237:21:1;15294:2;15274:18;;;15267:30;-1:-1:-1;;;15313:18:1;;;15306:45;15368:18;;19687:49:0;15053:339:1;19687:49:0;-1:-1:-1;;;;;19747:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;19799:32;;1569:25:1;;;19799:32:0;;1542:18:1;19799:32:0;;;;;;;19545:294;;;:::o;8091:931::-;-1:-1:-1;;;;;8184:20:0;;8176:51;;;;-1:-1:-1;;;8176:51:0;;15599:2:1;8176:51:0;;;15581:21:1;15638:2;15618:18;;;15611:30;-1:-1:-1;;;15657:18:1;;;15650:48;15715:18;;8176:51:0;15397:342:1;8176:51:0;-1:-1:-1;;;;;8246:23:0;;8238:52;;;;-1:-1:-1;;;8238:52:0;;15946:2:1;8238:52:0;;;15928:21:1;15985:2;15965:18;;;15958:30;-1:-1:-1;;;16004:18:1;;;15997:46;16060:18;;8238:52:0;15744:340:1;8238:52:0;8306:20;;;;8302:419;;;2390:7;2417:6;-1:-1:-1;;;;;8354:20:0;;;2417:6;;8354:20;;;;:46;;-1:-1:-1;;;;;;8378:22:0;;4920:42;8378:22;;8354:46;:75;;;;-1:-1:-1;8417:12:0;;-1:-1:-1;;;;;8404:25:0;;;8417:12;;8404:25;;8354:75;8350:352;;;8494:9;8465:39;;;;:28;:39;;;;;;8507:12;-1:-1:-1;8457:140:0;;;;-1:-1:-1;;;8457:140:0;;16291:2:1;8457:140:0;;;16273:21:1;16330:2;16310:18;;;16303:30;16369:34;16349:18;;;16342:62;16440:34;16420:18;;;16413:62;-1:-1:-1;;;16491:19:1;;;16484:40;16541:19;;8457:140:0;16089:477:1;8457:140:0;8653:9;8624:39;;;;:28;:39;;;;;8666:12;8624:54;;8350:352;-1:-1:-1;;;;;8734:24:0;;;;;;:16;:24;;;;;;;;;:55;;-1:-1:-1;;;;;;8762:27:0;;;;;;:16;:27;;;;;;;;8734:55;8731:284;;;8804:43;8821:6;8829:9;8840:6;8804:16;:43::i;:::-;8091:931;;;:::o;8731:284::-;8903:1;8887:15;;:17;8879:52;;;;-1:-1:-1;;;8879:52:0;;16773:2:1;8879:52:0;;;16755:21:1;16812:2;16792:18;;;16785:30;-1:-1:-1;;;16831:18:1;;;16824:53;16894:18;;8879:52:0;16571:347:1;8879:52:0;8946:39;8961:6;8968:9;8978:6;8946:14;:39::i;12606:1378::-;5844:27;:34;;-1:-1:-1;;5844:34:0;5874:4;5844:34;;;;;;12722:4:::1;5844:27:::0;12704:24;;;::::1;::::0;;;;;;;;12766:3:::1;::::0;12753:12:::1;::::0;12704:24;;5844:27;12753:16:::1;::::0;12766:3;12753:16:::1;:::i;:::-;12821:12;::::0;12807::::1;::::0;-1:-1:-1;;;;;12807:12:0::1;12780:16;12797:23:::0;;;:9:::1;:23;::::0;;;;;12739:30;;-1:-1:-1;12780:16:0;12834:4:::1;::::0;12797:36:::1;::::0;::::1;:::i;:::-;:41;;;;:::i;:::-;12780:58;;12852:8;12862:1;12852:11:::0;12849:22:::1;;12864:7;;;;;12849:22;12884:12;12881:134;;;-1:-1:-1::0;12941:4:0::1;12923:24;::::0;;;:9:::1;:24;::::0;;;;;12881:134:::1;;;12982:11;12966:15;:27;12963:52;;;13008:7;;;;;12963:52;13027:22;13060:17;:15;:17::i;:::-;:65;;13117:8;13103:12;;13091:11;:24;;;;:::i;:::-;13090:35;;;;:::i;:::-;13060:65;;;13078:1;13060:65;13027:98:::0;-1:-1:-1;13138:20:0::1;13160:29;13027:98:::0;13160:11;:29:::1;:::i;:::-;13138:51:::0;-1:-1:-1;13202:12:0::1;13215:19;13233:1;13215:17:::0;:19:::1;:::i;:::-;13202:32:::0;-1:-1:-1;13245:14:0::1;13260:23;13268:15:::0;13202:32;13260:23:::1;:::i;:::-;13245:38:::0;-1:-1:-1;13317:21:0::1;13349:27;13245:38:::0;13349:16:::1;:27::i;:::-;13387:11;13400:41;13424:17:::0;13400:21:::1;:41;:::i;:::-;13387:55:::0;-1:-1:-1;13458:19:0;;13455:135:::1;;13493:11;13524:9:::0;13508:14:::1;13515:7:::0;13508:6;:14:::1;:::i;:::-;13507:26;;;;:::i;:::-;13493:40;;13548:30;13562:7;13571:6;13548:13;:30::i;:::-;13478:112;13455:135;13600:18;13656:3;13643:12;;13619:21;:36;;;;:::i;:::-;:40;;;;:::i;:::-;13600:59;;13670:15;13717:3;13710:6;;13686:21;:30;;;;:::i;:::-;:34;;;;:::i;:::-;13670:50:::0;-1:-1:-1;13734:15:0;;13731:130:::1;;13779:15;::::0;:45:::1;::::0;13762:14:::1;::::0;-1:-1:-1;;;;;13779:15:0::1;::::0;13806:13;;13762:14;13779:45;13762:14;13779:45;13806:13;13779:15;:45:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;13731:130:0::1;13874:12:::0;;13871:106:::1;;13910:9;::::0;:36:::1;::::0;13899:8:::1;::::0;-1:-1:-1;;;;;13910:9:0::1;::::0;13931:10;;13899:8;13910:36;13899:8;13910:36;13931:10;13910:9;:36:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;13871:106:0::1;12672:1312;;;;;;;;;;;5889:1;-1:-1:-1::0;5901:27:0;:35;;-1:-1:-1;;5901:35:0;;;12606:1378::o;11042:339::-;-1:-1:-1;;;;;11155:17:0;;11134:18;11155:17;;;:9;:17;;;;;;11191:23;;;;11183:60;;;;-1:-1:-1;;;11183:60:0;;17335:2:1;11183:60:0;;;17317:21:1;17374:2;17354:18;;;17347:30;-1:-1:-1;;;17393:18:1;;;17386:54;17457:18;;11183:60:0;17133:348:1;11183:60:0;-1:-1:-1;;;;;11254:17:0;;;;;;:9;:17;;;;;:25;;11273:6;;11254:17;:25;;11273:6;;11254:25;:::i;:::-;;;;-1:-1:-1;;;;;;;11290:20:0;;;;;;:9;:20;;;;;:28;;11312:6;;11290:20;:28;;11312:6;;11290:28;:::i;:::-;;;;;;;;11356:9;-1:-1:-1;;;;;11340:33:0;11349:6;-1:-1:-1;;;;;11340:33:0;-1:-1:-1;;;;;;;;;;;11366:6:0;11340:33;;;;1569:25:1;;1557:2;1542:18;;1423:177;11340:33:0;;;;;;;;11123:258;11042:339;;;:::o;9034:1820::-;-1:-1:-1;;;;;9145:17:0;;9124:18;9145:17;;;:9;:17;;;;;;9181:23;;;;9173:60;;;;-1:-1:-1;;;9173:60:0;;17335:2:1;9173:60:0;;;17317:21:1;17374:2;17354:18;;;17347:30;-1:-1:-1;;;17393:18:1;;;17386:54;17457:18;;9173:60:0;17133:348:1;9173:60:0;-1:-1:-1;;;;;9267:26:0;;9244:20;9267:26;;;:18;:26;;;;;;;;;:59;;-1:-1:-1;;;;;;9297:29:0;;;;;;:18;:29;;;;;;;;9267:59;-1:-1:-1;;;;;9341:13:0;;;;;;:5;:13;;;;;;9244:82;;-1:-1:-1;9341:13:0;;:46;;;;;9372:15;9371:16;9341:46;9337:642;;;9440:20;;9430:6;:30;;9404:132;;;;-1:-1:-1;;;9404:132:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19051:18:0;;9551:32;19051:18;;;:9;:18;;;;;;9684:16;;9647:33;9674:6;19051:18;9647:33;:::i;:::-;:53;;9621:151;;;;-1:-1:-1;;;9621:151:0;;18097:2:1;9621:151:0;;;18079:21:1;18136:2;18116:18;;;18109:30;18175:34;18155:18;;;18148:62;-1:-1:-1;;;18226:18:1;;;18219:34;18270:19;;9621:151:0;17895:400:1;9621:151:0;9389:395;9337:642;;;-1:-1:-1;;;;;9808:16:0;;;;;;:5;:16;;;;;;;;:49;;;;;9842:15;9841:16;9808:49;9790:189;;;9902:20;;9892:6;:30;;9884:83;;;;-1:-1:-1;;;9884:83:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10002:13:0;;;9991:10;10002:13;;;:5;:13;;;;;;;10038:16;;;;;;;;10002:13;;;;;10038:16;;10084:145;;;;-1:-1:-1;10113:7:0;;10084:145;;;10140:5;10137:92;;;-1:-1:-1;10165:6:0;;10137:92;;;-1:-1:-1;10206:11:0;;10137:92;10253:12;;-1:-1:-1;;;;;10245:20:0;;;10253:12;;10245:20;;;;10244:37;;-1:-1:-1;10270:10:0;;;;;;;10269:11;10244:37;:69;;;;-1:-1:-1;10285:27:0;;;;10284:28;10244:69;10241:112;;;10328:25;10347:5;10328:18;:25::i;:::-;10370:27;;;;10369:28;:48;;;;-1:-1:-1;;;;;;10401:16:0;;;;;;:5;:16;;;;;;;;10369:48;:65;;;;-1:-1:-1;10421:13:0;;;;;;;10369:65;:120;;;;;10474:15;;10457:14;;:32;;;;:::i;:::-;10438:15;:51;;10369:120;10366:169;;;10505:18;:16;:18::i;:::-;;10366:169;10547:18;10566:44;10580:6;10588:3;10597:12;;10593:3;;:16;;;;:::i;:::-;10566:13;:44::i;:::-;10547:63;-1:-1:-1;10621:16:0;10638:20;10547:63;10638:6;:20;:::i;:::-;-1:-1:-1;;;;;10671:17:0;;;;;;:9;:17;;;;;:25;;10621:37;;-1:-1:-1;10690:6:0;;10671:17;;;:25;;10690:6;;10671:25;:::i;:::-;;;;-1:-1:-1;;10725:4:0;10707:24;;;;:9;:24;;;;;:41;;10735:13;;10707:24;:41;;10735:13;;10707:41;:::i;:::-;;;;-1:-1:-1;;;;;;;10759:20:0;;;;;;:9;:20;;;;;:33;;10781:11;;10759:20;:33;;10781:11;;10759:33;:::i;:::-;;;;;;;;10824:9;-1:-1:-1;;;;;10808:38:0;10817:6;-1:-1:-1;;;;;10808:38:0;-1:-1:-1;;;;;;;;;;;10834:11:0;10808:38;;;;1569:25:1;;1557:2;1542:18;;1423:177;10808:38:0;;;;;;;;9113:1741;;;;;;;9034:1820;;;:::o;13990:462::-;14080:10;;14048:52;;14065:4;;14080:10;;;-1:-1:-1;;;;;14080:10:0;14093:6;14048:8;:52::i;:::-;14135:16;;;14149:1;14135:16;;;;;;;;14111:21;;14135:16;;;;;;;;;;-1:-1:-1;14135:16:0;14111:40;;14180:4;14162;14167:1;14162:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;14162:23:0;;;-1:-1:-1;;;;;14162:23:0;;;;;14206:10;;;;;;;;;-1:-1:-1;;;;;14206:10:0;-1:-1:-1;;;;;14206:15:0;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14196:4;14201:1;14196:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14196:27:0;;;:7;;;;;;;;;:27;14240:10;;:186;;-1:-1:-1;;;14240:186:0;;:10;;;;;;;;:61;;:186;;14316:6;;14337:1;;14353:4;;14380;;14400:15;;14240:186;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14037:415;13990:462;:::o;14458:351::-;14566:10;;14534:57;;14551:4;;14566:10;;;-1:-1:-1;;;;;14566:10:0;14579:11;14534:8;:57::i;:::-;14602:10;;:199;;-1:-1:-1;;;14602:199:0;;14669:4;14602:199;;;20146:34:1;;;20196:18;;;20189:34;;;14715:1:0;20239:18:1;;;20232:34;;;20282:18;;;20275:34;20325:19;;;20318:44;14775:15:0;20378:19:1;;;20371:35;14602:10:0;;;;-1:-1:-1;;;;;14602:10:0;;:26;;14636:9;;20080:19:1;;14602:199:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14458:351;;:::o;17131:583::-;17210:15;17193:14;:32;17282:12;;17267:28;;-1:-1:-1;;;17267:28:0;;17177:4;;;;17267;;:14;;:28;;-1:-1:-1;;;;;17282:12:0;;17267:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17236:59;;17306:20;17369:5;17352:16;;17329:20;:39;;;;:::i;:::-;:45;;;;:::i;:::-;17306:68;-1:-1:-1;17389:16:0;;17385:201;;17431:12;;-1:-1:-1;;;;;17431:12:0;17421:23;;;;:9;:23;;;;;:37;;17446:12;;17421:23;:37;;17446:12;;17421:37;:::i;:::-;;;;-1:-1:-1;;4870:6:0;17473:21;;;;:9;:21;;-1:-1:-1;;;;;;;;;;;17473:35:0;;17496:12;;17473:21;:35;;17496:12;;17473:35;:::i;:::-;;;;-1:-1:-1;;17537:12:0;;17528:46;;1569:25:1;;;4870:6:0;;-1:-1:-1;;;;;17537:12:0;;-1:-1:-1;;;;;;;;;;;17528:46:0;1557:2:1;1542:18;17528:46:0;;;;;;;17385:201;17621:12;;17645:11;;;-1:-1:-1;;;;;;17645:11:0;;;;-1:-1:-1;;;;;17621:12:0;;;;;;17645:9;;:11;;;;;17596:13;;17645:11;;;;;;;17596:13;17621:12;17645:11;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17672:12:0;;;;-1:-1:-1;17672:12:0;;-1:-1:-1;17672:12:0;17702:4;17695:11;;;;;17131:583;:::o;10860:176::-;10945:4;10996:31;4190:4;;10996:31;:::i;:::-;10981:10;10970;10977:3;10970:6;:10;:::i;:::-;:21;;;;:::i;:::-;10969:59;;;;:::i;:::-;10962:66;10860:176;-1:-1:-1;;;;10860:176:0:o;14:203:1:-;-1:-1:-1;;;;;178:32:1;;;;160:51;;148:2;133:18;;14:203::o;222:548::-;334:4;363:2;392;381:9;374:21;424:6;418:13;467:6;462:2;451:9;447:18;440:34;492:1;502:140;516:6;513:1;510:13;502:140;;;611:14;;;607:23;;601:30;577:17;;;596:2;573:26;566:66;531:10;;502:140;;;506:3;691:1;686:2;677:6;666:9;662:22;658:31;651:42;761:2;754;750:7;745:2;737:6;733:15;729:29;718:9;714:45;710:54;702:62;;;;222:548;;;;:::o;775:131::-;-1:-1:-1;;;;;850:31:1;;840:42;;830:70;;896:1;893;886:12;830:70;775:131;:::o;911:315::-;979:6;987;1040:2;1028:9;1019:7;1015:23;1011:32;1008:52;;;1056:1;1053;1046:12;1008:52;1095:9;1082:23;1114:31;1139:5;1114:31;:::i;:::-;1164:5;1216:2;1201:18;;;;1188:32;;-1:-1:-1;;;911:315:1:o;1605:456::-;1682:6;1690;1698;1751:2;1739:9;1730:7;1726:23;1722:32;1719:52;;;1767:1;1764;1757:12;1719:52;1806:9;1793:23;1825:31;1850:5;1825:31;:::i;:::-;1875:5;-1:-1:-1;1932:2:1;1917:18;;1904:32;1945:33;1904:32;1945:33;:::i;:::-;1605:456;;1997:7;;-1:-1:-1;;;2051:2:1;2036:18;;;;2023:32;;1605:456::o;2255:118::-;2341:5;2334:13;2327:21;2320:5;2317:32;2307:60;;2363:1;2360;2353:12;2378:382;2443:6;2451;2504:2;2492:9;2483:7;2479:23;2475:32;2472:52;;;2520:1;2517;2510:12;2472:52;2559:9;2546:23;2578:31;2603:5;2578:31;:::i;:::-;2628:5;-1:-1:-1;2685:2:1;2670:18;;2657:32;2698:30;2657:32;2698:30;:::i;:::-;2747:7;2737:17;;;2378:382;;;;;:::o;2765:247::-;2824:6;2877:2;2865:9;2856:7;2852:23;2848:32;2845:52;;;2893:1;2890;2883:12;2845:52;2932:9;2919:23;2951:31;2976:5;2951:31;:::i;:::-;3001:5;2765:247;-1:-1:-1;;;2765:247:1:o;3017:248::-;3085:6;3093;3146:2;3134:9;3125:7;3121:23;3117:32;3114:52;;;3162:1;3159;3152:12;3114:52;-1:-1:-1;;3185:23:1;;;3255:2;3240:18;;;3227:32;;-1:-1:-1;3017:248:1:o;3270:377::-;3344:6;3352;3360;3413:2;3401:9;3392:7;3388:23;3384:32;3381:52;;;3429:1;3426;3419:12;3381:52;3465:9;3452:23;3442:33;;3522:2;3511:9;3507:18;3494:32;3484:42;;3576:2;3565:9;3561:18;3548:32;3589:28;3611:5;3589:28;:::i;:::-;3636:5;3626:15;;;3270:377;;;;;:::o;3652:241::-;3708:6;3761:2;3749:9;3740:7;3736:23;3732:32;3729:52;;;3777:1;3774;3767:12;3729:52;3816:9;3803:23;3835:28;3857:5;3835:28;:::i;3898:180::-;3957:6;4010:2;3998:9;3989:7;3985:23;3981:32;3978:52;;;4026:1;4023;4016:12;3978:52;-1:-1:-1;4049:23:1;;3898:180;-1:-1:-1;3898:180:1:o;4083:454::-;4178:6;4186;4194;4202;4210;4263:3;4251:9;4242:7;4238:23;4234:33;4231:53;;;4280:1;4277;4270:12;4231:53;-1:-1:-1;;4303:23:1;;;4373:2;4358:18;;4345:32;;-1:-1:-1;4424:2:1;4409:18;;4396:32;;4475:2;4460:18;;4447:32;;-1:-1:-1;4526:3:1;4511:19;4498:33;;-1:-1:-1;4083:454:1;-1:-1:-1;4083:454:1:o;4542:388::-;4610:6;4618;4671:2;4659:9;4650:7;4646:23;4642:32;4639:52;;;4687:1;4684;4677:12;4639:52;4726:9;4713:23;4745:31;4770:5;4745:31;:::i;:::-;4795:5;-1:-1:-1;4852:2:1;4837:18;;4824:32;4865:33;4824:32;4865:33;:::i;4935:127::-;4996:10;4991:3;4987:20;4984:1;4977:31;5027:4;5024:1;5017:15;5051:4;5048:1;5041:15;5067:422;5156:1;5199:5;5156:1;5213:270;5234:7;5224:8;5221:21;5213:270;;;5293:4;5289:1;5285:6;5281:17;5275:4;5272:27;5269:53;;;5302:18;;:::i;:::-;5352:7;5342:8;5338:22;5335:55;;;5372:16;;;;5335:55;5451:22;;;;5411:15;;;;5213:270;;;5217:3;5067:422;;;;;:::o;5494:806::-;5543:5;5573:8;5563:80;;-1:-1:-1;5614:1:1;5628:5;;5563:80;5662:4;5652:76;;-1:-1:-1;5699:1:1;5713:5;;5652:76;5744:4;5762:1;5757:59;;;;5830:1;5825:130;;;;5737:218;;5757:59;5787:1;5778:10;;5801:5;;;5825:130;5862:3;5852:8;5849:17;5846:43;;;5869:18;;:::i;:::-;-1:-1:-1;;5925:1:1;5911:16;;5940:5;;5737:218;;6039:2;6029:8;6026:16;6020:3;6014:4;6011:13;6007:36;6001:2;5991:8;5988:16;5983:2;5977:4;5974:12;5970:35;5967:77;5964:159;;;-1:-1:-1;6076:19:1;;;6108:5;;5964:159;6155:34;6180:8;6174:4;6155:34;:::i;:::-;6225:6;6221:1;6217:6;6213:19;6204:7;6201:32;6198:58;;;6236:18;;:::i;:::-;6274:20;;5494:806;-1:-1:-1;;;5494:806:1:o;6305:140::-;6363:5;6392:47;6433:4;6423:8;6419:19;6413:4;6392:47;:::i;6450:168::-;6523:9;;;6554;;6571:15;;;6565:22;;6551:37;6541:71;;6592:18;;:::i;6623:356::-;6825:2;6807:21;;;6844:18;;;6837:30;6903:34;6898:2;6883:18;;6876:62;6970:2;6955:18;;6623:356::o;7328:217::-;7368:1;7394;7384:132;;7438:10;7433:3;7429:20;7426:1;7419:31;7473:4;7470:1;7463:15;7501:4;7498:1;7491:15;7384:132;-1:-1:-1;7530:9:1;;7328:217::o;7899:128::-;7966:9;;;7987:11;;;7984:37;;;8001:18;;:::i;8032:125::-;8097:9;;;8118:10;;;8115:36;;;8131:18;;:::i;9518:184::-;9588:6;9641:2;9629:9;9620:7;9616:23;9612:32;9609:52;;;9657:1;9654;9647:12;9609:52;-1:-1:-1;9680:16:1;;9518:184;-1:-1:-1;9518:184:1:o;9986:245::-;10053:6;10106:2;10094:9;10085:7;10081:23;10077:32;10074:52;;;10122:1;10119;10112:12;10074:52;10154:9;10148:16;10173:28;10195:5;10173:28;:::i;17486:404::-;17688:2;17670:21;;;17727:2;17707:18;;;17700:30;17766:34;17761:2;17746:18;;17739:62;-1:-1:-1;;;17832:2:1;17817:18;;17810:38;17880:3;17865:19;;17486:404::o;18432:127::-;18493:10;18488:3;18484:20;18481:1;18474:31;18524:4;18521:1;18514:15;18548:4;18545:1;18538:15;18564:251;18634:6;18687:2;18675:9;18666:7;18662:23;18658:32;18655:52;;;18703:1;18700;18693:12;18655:52;18735:9;18729:16;18754:31;18779:5;18754:31;:::i;18820:980::-;19082:4;19130:3;19119:9;19115:19;19161:6;19150:9;19143:25;19187:2;19225:6;19220:2;19209:9;19205:18;19198:34;19268:3;19263:2;19252:9;19248:18;19241:31;19292:6;19327;19321:13;19358:6;19350;19343:22;19396:3;19385:9;19381:19;19374:26;;19435:2;19427:6;19423:15;19409:29;;19456:1;19466:195;19480:6;19477:1;19474:13;19466:195;;;19545:13;;-1:-1:-1;;;;;19541:39:1;19529:52;;19636:15;;;;19601:12;;;;19577:1;19495:9;19466:195;;;-1:-1:-1;;;;;;;19717:32:1;;;;19712:2;19697:18;;19690:60;-1:-1:-1;;;19781:3:1;19766:19;19759:35;19678:3;18820:980;-1:-1:-1;;;18820:980:1:o;20417:306::-;20505:6;20513;20521;20574:2;20562:9;20553:7;20549:23;20545:32;20542:52;;;20590:1;20587;20580:12;20542:52;20619:9;20613:16;20603:26;;20669:2;20658:9;20654:18;20648:25;20638:35;;20713:2;20702:9;20698:18;20692:25;20682:35;;20417:306;;;;;:::o

Swarm Source

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