ETH Price: $3,314.94 (-1.73%)
Gas: 2 Gwei

Token

Armstrong Inu (ARMST)
 

Overview

Max Total Supply

100,000,000 ARMST

Holders

159

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
jackpotlahmasakaga.eth
Balance
86,857.767615765495363023 ARMST

Value
$0.00
0xafF7767097705df2DD0cC1c8B69071f6FF044aaa
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:
ARMST

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 1 of 2: ARMST.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;
import "./Libraries.sol";
contract ARMST is IERC20Metadata, Ownable
{
  
    mapping (address => uint) private _balances;
    mapping (address => mapping (address => uint)) private _allowances;
    mapping(address => bool) public excludedFromFees;
    mapping(address => bool) public excludedFromLimit;
    mapping(address=>bool) public isAMM;
    //Token Info
    string private constant _name = 'Armstrong Inu';
    string private constant _symbol = 'ARMST';
    uint8 private constant _decimals = 18;
    uint public constant InitialSupply= 100000000*10**_decimals;

    uint private constant DefaultLiquidityLockTime=7 days;
    //0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3 testnet router
    //0x10ED43C718714eb63d5aA57B78B54704E256024E mainnet router

    address private constant UniswapRouter=0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    //variables that track balanceLimit and sellLimit,
    //can be updated based on circulating supply and Sell- and BalanceLimitDividers
    uint private _circulatingSupply =InitialSupply;
    
    //Tracks the current Taxes, different Taxes can be applied for buy/sell/transfer
    uint public buyTax = 30;
    uint public sellTax = 30;
    uint public transferTax = 0;
    uint public burnTax=0;
    uint public liquidityTax=0;
    uint public marketingTax=1000;
    uint constant TAX_DENOMINATOR=1000;
    uint constant MAXTAXDENOMINATOR=10;
    uint public LimitV = 50;
    uint public LimitSell = 1;
    

    address private _uniswapPairAddress; 
    IUniswapRouter private  _uniswapRouter;
    
    
    //TODO: marketingWallet
    address public marketingWallet;
    //Only marketingWallet can change marketingWallet
    function ChangeMarketingWallet(address newWallet) public{
        require(msg.sender==marketingWallet);
        marketingWallet=newWallet;
    }
    //modifier for functions only the team can call
    modifier onlyTeam() {
        require(_isTeam(msg.sender), "Caller not Team or Owner");
        _;
    }
    //Checks if address is in Team, is needed to give Team access even if contract is renounced
    //Team doesn't have access to critical Functions that could turn this into a Rugpull(Exept liquidity unlocks)
    function _isTeam(address addr) private view returns (bool){
        return addr==owner()||addr==marketingWallet;
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    //Constructor///////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    constructor () {
        uint deployerBalance=_circulatingSupply;
        _balances[msg.sender] = deployerBalance;
        emit Transfer(address(0), msg.sender, deployerBalance);

        // Uniswap Router
        _uniswapRouter = IUniswapRouter(UniswapRouter);
        //Creates a Uniswap Pair
        _uniswapPairAddress = IUniswapFactory(_uniswapRouter.factory()).createPair(address(this), _uniswapRouter.WETH());
        isAMM[_uniswapPairAddress]=true;
        
        //contract creator is by default marketing wallet
        marketingWallet=msg.sender;
        //owner uniswap router and contract is excluded from Taxes
        excludedFromFees[msg.sender]=true;
        excludedFromFees[UniswapRouter]=true;
        excludedFromFees[address(this)]=true;
    }
    




    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    //Transfer functionality////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////

    //transfer function, every transfer runs through this function
    function _transfer(address sender, address recipient, uint amount) private{
        require(sender != address(0), "Transfer from zero");
        require(recipient != address(0), "Transfer to zero");


        //Pick transfer
        if(excludedFromFees[sender] || excludedFromFees[recipient])
            _feelessTransfer(sender, recipient, amount);
        else if(excludedFromLimit[recipient]){ 
            //once trading is enabled, it can't be turned off again
            require(LaunchTimestamp>0,"trading not yet enabled");
            _LimitlessFonctionTransfer(sender,recipient,amount);                  
        }
        else { 
            //once trading is enabled, it can't be turned off again
            require(LaunchTimestamp>0,"trading not yet enabled");
            _taxedTransfer(sender,recipient,amount);                  
        }
    }
    
    //applies taxes, checks for limits, locks generates autoLP and stakingETH, and autostakes
    function _taxedTransfer(address sender, address recipient, uint amount) private{
        uint senderBalance = _balances[sender];
        uint recipientBalance = _balances[recipient];
        require(senderBalance >= amount, "Transfer exceeds balance");
        require(senderBalance/LimitSell >= amount, "Transfer exceeds authorise sell");
        require((recipientBalance + amount ) <= InitialSupply/LimitV, "Wallet contain more than certain % Total Supply");

        bool isBuy=isAMM[sender];
        bool isSell=isAMM[recipient];

        uint tax;
        if(isSell){  
            uint SellTaxDuration=180 seconds;          
            if(block.timestamp<LaunchTimestamp+SellTaxDuration){
                tax=_getStartTax(SellTaxDuration,999);
                }else tax=sellTax;
            }
        else if(isBuy){
            uint BuyTaxDuration=60 seconds;
            if(block.timestamp<LaunchTimestamp+BuyTaxDuration){
                tax=_getStartTax(BuyTaxDuration,999);
            }else tax=buyTax;
        } else tax=transferTax;

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

        //Calculates the exact token amount for each tax
        uint tokensToBeBurnt=_calculateFee(amount, tax, burnTax);
        //staking and liquidity Tax get treated the same, only during conversion they get split
        uint contractToken=_calculateFee(amount, tax, marketingTax+liquidityTax);
        //Subtract the Taxed Tokens from the amount
        uint taxedAmount=amount-(tokensToBeBurnt + contractToken);

        _balances[sender]-=amount;
        //Adds the taxed tokens to the contract wallet
        _balances[address(this)] += contractToken;
        //Burns tokens
        _circulatingSupply-=tokensToBeBurnt;
        _balances[recipient]+=taxedAmount;
        
        emit Transfer(sender,recipient,taxedAmount);
    }
    //Start tax drops depending on the time since launch, enables bot protection and Dump protection
    function _getStartTax(uint duration, uint maxTax) private view returns (uint){
        uint timeSinceLaunch=block.timestamp-LaunchTimestamp;
        return maxTax-((maxTax-50)*timeSinceLaunch/duration);
    }
    //Calculates the token that should be taxed
    function _calculateFee(uint amount, uint tax, uint taxPercent) private pure returns (uint) {
        return (amount*tax*taxPercent) / (TAX_DENOMINATOR*TAX_DENOMINATOR);
    }


    //Feeless transfer only transfers and autostakes
    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);
    }
///////////////////////////////YeaaaahBrooooooo//////////addd
    function _LimitlessFonctionTransfer (address sender, address recipient, uint amount) private{
        uint senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer exceeds balance");

        bool isBuy=isAMM[sender];
        bool isSell=isAMM[recipient];

        uint tax;
        if(isSell){  
            uint SellTaxDuration=180 seconds;          
            if(block.timestamp<LaunchTimestamp+SellTaxDuration){
                tax=_getStartTax(SellTaxDuration,999);
                }else tax=sellTax;
            }
        else if(isBuy){
            uint BuyTaxDuration=60 seconds;
            if(block.timestamp<LaunchTimestamp+BuyTaxDuration){
                tax=_getStartTax(BuyTaxDuration,999);
            }else tax=buyTax;
        } else tax=transferTax;

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

        //Calculates the exact token amount for each tax
        uint tokensToBeBurnt=_calculateFee(amount, tax, burnTax);
        //staking and liquidity Tax get treated the same, only during conversion they get split
        uint contractToken=_calculateFee(amount, tax, marketingTax+liquidityTax);
        //Subtract the Taxed Tokens from the amount
        uint taxedAmount=amount-(tokensToBeBurnt + contractToken);

        _balances[sender]-=amount;
        //Adds the taxed tokens to the contract wallet
        _balances[address(this)] += contractToken;
        //Burns tokens
        _circulatingSupply-=tokensToBeBurnt;
        _balances[recipient]+=taxedAmount;
        
        emit Transfer(sender,recipient,taxedAmount);
    }
    

    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    //Swap Contract Tokens yeaaaaah Broo//////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    
    //Locks the swap if already swapping
    bool private _isSwappingContractModifier;
    modifier lockTheSwap {
        _isSwappingContractModifier = true;
        _;
        _isSwappingContractModifier = false;
    }

    //Sets the permille of uniswap pair to trigger liquifying taxed token
    uint public swapTreshold=2;
    function setSwapTreshold(uint newSwapTresholdPermille) public onlyTeam{
        require(newSwapTresholdPermille<=15);//MaxTreshold= 1.5%
        swapTreshold=newSwapTresholdPermille;
    }
    //Sets the max Liquidity where swaps for Liquidity still happen
    uint public overLiquifyTreshold=150;
    function SetOverLiquifiedTreshold(uint newOverLiquifyTresholdPermille) public onlyTeam{
        require(newOverLiquifyTresholdPermille<=1000);
        overLiquifyTreshold=newOverLiquifyTresholdPermille;
    }
    //Sets the taxes Burn+marketing+liquidity tax needs to equal the TAX_DENOMINATOR (1000)
    //buy, sell and transfer tax are limited by the MAXTAXDENOMINATOR
    event OnSetTaxes(uint buy, uint sell, uint transfer_, uint burn, uint marketing,uint liquidity);
    function SetTaxes(uint buy, uint sell, uint transfer_, uint burn, uint marketing,uint liquidity) public onlyTeam{
        uint maxTax=(TAX_DENOMINATOR/MAXTAXDENOMINATOR)/2;
        require(buy<=maxTax&&sell<=maxTax&&transfer_<=maxTax,"Tax exceeds maxTax");
        require(burn+marketing+liquidity==TAX_DENOMINATOR,"Taxes don't add up to denominator");
        
        buyTax=buy;
        sellTax=sell;
        transferTax=transfer_;
        marketingTax=marketing;
        liquidityTax=liquidity;
        burnTax=burn;
        emit OnSetTaxes(buy, sell, transfer_, burn, marketing,liquidity);
    }
    
    event OnSetLimit(uint LimitV2);
    function SetLimit(uint LimitV2) public onlyTeam{
        require(LimitV2<=50,"Max wallet  can't be under 2% of the total supply");
        LimitV=LimitV2;
       
        emit OnSetLimit(LimitV2);
    }

    event OnSetSell(uint LimitSell2);
    function SetSell(uint LimitSell2) public onlyTeam{
        require(LimitSell2<=2,"Dump measure can't be under 50% of the wallet");
        LimitSell=LimitSell2;
       
        emit OnSetSell(LimitSell2);
    }



    //If liquidity is over the treshold, convert 100% of Token to Marketing ETH to avoid overliquifying
    function isOverLiquified() public view returns(bool){
        return _balances[_uniswapPairAddress]>_circulatingSupply*overLiquifyTreshold/1000;
    }


    //swaps the token on the contract for Marketing ETH and LP Token.
    //always swaps a percentage of the LP pair balance to avoid price impact
    function _swapContractToken(bool ignoreLimits) private lockTheSwap{
        uint contractBalance=_balances[address(this)];
        uint totalTax=liquidityTax+marketingTax;
        //swaps each time it reaches swapTreshold of uniswap pair to avoid large prize impact
        uint tokenToSwap=_balances[_uniswapPairAddress]*swapTreshold/1000;

        //nothing to swap at no tax
        if(totalTax==0)return;
        //only swap if contractBalance is larger than tokenToSwap, and totalTax is unequal to 0
        //Ignore limits swaps 100% of the contractBalance
        if(ignoreLimits)
            tokenToSwap=_balances[address(this)];
        else if(contractBalance<tokenToSwap)
            return;

        //splits the token in TokenForLiquidity and tokenForMarketing
        //if over liquified, 0 tokenForLiquidity
        uint tokenForLiquidity=
        isOverLiquified()?0
        :(tokenToSwap*liquidityTax)/totalTax;

        uint tokenForMarketing= tokenToSwap-tokenForLiquidity;

        uint LiqHalf=tokenForLiquidity/2;
        //swaps marktetingToken and the liquidity token half for ETH
        uint swapToken=LiqHalf+tokenForMarketing;
        //Gets the initial ETH balance, so swap won't touch any contract ETH
        uint initialETHBalance = address(this).balance;
        _swapTokenForETH(swapToken);
        uint newETH=(address(this).balance - initialETHBalance);

        //calculates the amount of ETH belonging to the LP-Pair and converts them to LP
        if(tokenForLiquidity>0){
            uint liqETH = (newETH*LiqHalf)/swapToken;
            _addLiquidity(LiqHalf, liqETH);
        }
        //Sends all the marketing ETH to the marketingWallet
        (bool sent,)=marketingWallet.call{value:address(this).balance}("");
        sent=true;
    }
    //swaps tokens on the contract for ETH
    function _swapTokenForETH(uint amount) private {
        _approve(address(this), address(_uniswapRouter), amount);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _uniswapRouter.WETH();

        try _uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            0,
            path,
            address(this),
            block.timestamp
        ){}
        catch{}
    }
    //Adds Liquidity directly to the contract where LP are locked
    function _addLiquidity(uint tokenamount, uint ethamount) private {
        _approve(address(this), address(_uniswapRouter), tokenamount);
        _uniswapRouter.addLiquidityETH{value: ethamount}(
            address(this),
            tokenamount,
            0,
            0,
            address(this),
            block.timestamp
        );
    }

    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    //public functions /////////////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////////////////////////////// 
    function getLiquidityReleaseTimeInSeconds() public view returns (uint){
        if(block.timestamp<_liquidityUnlockTime)
            return _liquidityUnlockTime-block.timestamp;
        return 0;
    }
    function getBurnedTokens() public view returns(uint){
        return (InitialSupply-_circulatingSupply)+_balances[address(0xdead)];
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    //Settings//////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    //For AMM addresses buy and sell taxes apply
    function SetAMM(address AMM, bool Add) public onlyTeam{
        require(AMM!=_uniswapPairAddress,"can't change uniswap");
        isAMM[AMM]=Add;
    }
    
    bool public manualSwap;
    //switches autoLiquidity and marketing ETH generation during transfers
    function SwitchManualSwap(bool manual) public onlyTeam{
        manualSwap=manual;
    }
    //manually converts contract token to LP and staking ETH
    function SwapContractToken() public onlyTeam{
    _swapContractToken(true);
    }
    event ExcludeAccount(address account, bool exclude);
    //Exclude/Include account from fees (eg. CEX)
    function ExcludeAccountFromFees(address account, bool exclude) public onlyTeam{
        require(account!=address(this),"can't Include the contract");
        excludedFromFees[account]=exclude;
        emit ExcludeAccount(account,exclude);
    }

    /////////////moussss///////////
     event ExcludeAccountLimit(address account, bool exclude);
    //Exclude/Include account from fees (eg. CEX)
    function ExcludedFromLimit(address account, bool exclude) public onlyTeam{
        require(account!=address(this),"can't Include the contract");
        excludedFromLimit[account]=exclude;
        emit ExcludeAccountLimit(account,exclude);
    }



    //Enables trading. Sets the launch timestamp to the given Value
    event OnEnableTrading();
    uint public LaunchTimestamp;
    function SetupEnableTrading() public onlyTeam{
        require(LaunchTimestamp==0,"AlreadyLaunched");
        LaunchTimestamp=block.timestamp;
        emit OnEnableTrading();
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    //Liquidity Lock////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    //the timestamp when Liquidity unlocks
    uint _liquidityUnlockTime;
    bool public LPReleaseLimitedTo20Percent;
    //Sets Liquidity Release to 20% at a time and prolongs liquidity Lock for a Week after Release. 
    //That way autoLiquidity can be slowly released 
    function limitLiquidityReleaseTo20Percent() public onlyTeam{
        LPReleaseLimitedTo20Percent=true;
    }
    //Locks Liquidity for seconds. can only be prolonged
    function LockLiquidityForSeconds(uint secondsUntilUnlock) public onlyTeam{
        _prolongLiquidityLock(secondsUntilUnlock+block.timestamp);
    }
    event OnProlongLPLock(uint UnlockTimestamp);
    function _prolongLiquidityLock(uint newUnlockTime) private{
        // require new unlock time to be longer than old one
        require(newUnlockTime>_liquidityUnlockTime);
        _liquidityUnlockTime=newUnlockTime;
        emit OnProlongLPLock(_liquidityUnlockTime);
    }
    event OnReleaseLP();
    //Release Liquidity Tokens once unlock time is over
    function LiquidityRelease() public onlyTeam {
        //Only callable if liquidity Unlock time is over
        require(block.timestamp >= _liquidityUnlockTime, "Not yet unlocked");

        IERC20 liquidityToken = IERC20(_uniswapPairAddress);
        uint amount = liquidityToken.balanceOf(address(this));
        if(LPReleaseLimitedTo20Percent)
        {
            _liquidityUnlockTime=block.timestamp+DefaultLiquidityLockTime;
            //regular liquidity release, only releases 50% at a time and locks liquidity for another week
            amount=amount*2/10;
        }
        liquidityToken.transfer(msg.sender, amount);
        emit OnReleaseLP();
    }

    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    //external//////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////

    receive() external payable {}

    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 view override returns (uint) {
        return _circulatingSupply;
    }

    function balanceOf(address account) external view override returns (uint) {
        return _balances[account];
    }

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

    function allowance(address _owner, address spender) external view override returns (uint) {
        return _allowances[_owner][spender];
    }

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

    // IERC20 - Helpers

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

}

File 2 of 2: Libraries.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);

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

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

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

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

}

abstract contract Ownable {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}





Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"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":"ExcludeAccountLimit","type":"event"},{"anonymous":false,"inputs":[],"name":"OnEnableTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"UnlockTimestamp","type":"uint256"}],"name":"OnProlongLPLock","type":"event"},{"anonymous":false,"inputs":[],"name":"OnReleaseLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"LimitV2","type":"uint256"}],"name":"OnSetLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"LimitSell2","type":"uint256"}],"name":"OnSetSell","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":"burn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"OnSetTaxes","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"ChangeMarketingWallet","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"ExcludedFromLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"InitialSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LPReleaseLimitedTo20Percent","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LaunchTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LimitSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LimitV","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LiquidityRelease","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"secondsUntilUnlock","type":"uint256"}],"name":"LockLiquidityForSeconds","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":"LimitV2","type":"uint256"}],"name":"SetLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newOverLiquifyTresholdPermille","type":"uint256"}],"name":"SetOverLiquifiedTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"LimitSell2","type":"uint256"}],"name":"SetSell","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":"burn","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"SetTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SetupEnableTrading","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":[{"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":"burnTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromLimit","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":"getLiquidityReleaseTimeInSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitLiquidityReleaseTo20Percent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidityTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a620003c0565b62000022906305f5e10062000481565b600655601e600755601e60085560006009556000600a556000600b556103e8600c556032600d556001600e55600260125560966013553480156200006557600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600654336000818152600160209081526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3601080546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200014e57600080fd5b505afa15801562000163573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000189919062000347565b6001600160a01b031663c9c6539630601060009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620001e757600080fd5b505afa158015620001fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000222919062000347565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200026b57600080fd5b505af115801562000280573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a6919062000347565b600f80546001600160a01b03929092166001600160a01b031992831681179091556000908152600560209081526040808320805460ff1990811660019081179092556011805490961633908117909655948452600390925280832080548516831790557ffb19a963956c9cb662dd3ae48988c4b90766df71ea130109840abe0a1b23dba88054851683179055308352909120805490921617905550620004b9565b60006020828403121562000359578081fd5b81516001600160a01b038116811462000370578182fd5b9392505050565b600181815b80851115620003b85781600019048211156200039c576200039c620004a3565b80851615620003aa57918102915b93841c93908002906200037c565b509250929050565b60006200037060ff841683600082620003dc575060016200047b565b81620003eb575060006200047b565b81600181146200040457600281146200040f576200042f565b60019150506200047b565b60ff841115620004235762000423620004a3565b50506001821b6200047b565b5060208310610133831016604e8410600b841016171562000454575081810a6200047b565b62000460838362000377565b8060001904821115620004775762000477620004a3565b0290505b92915050565b60008160001904831182151516156200049e576200049e620004a3565b500290565b634e487b7160e01b600052601160045260246000fd5b61299680620004c96000396000f3fe6080604052600436106102cd5760003560e01c80638124f7ac11610175578063be617fa0116100dc578063d8bd2dd111610095578063e0d2f9eb1161006f578063e0d2f9eb14610899578063e52fb9ec146108b9578063f2fde38b146108cf578063f5fb756f146108ef57600080fd5b8063d8bd2dd1146107f3578063dbe66ca014610823578063dd62ed3e1461085357600080fd5b8063be617fa01461074d578063c3a3c03214610763578063c3f4f54f14610778578063cc1776d31461078d578063cfd1940e146107a3578063d46b6a30146107c357600080fd5b8063a457c2d71161012e578063a457c2d7146106a2578063a68bdac7146106c2578063a9059cbb146106d7578063ab64cfdc146106f7578063b40d09e214610717578063bc43d8491461072d57600080fd5b80638124f7ac146105e6578063817d4bff146105fc578063868b01411461061c5780638da5cb5b1461063c57806395d89b411461065a5780639b39b65f1461068857600080fd5b806333ae8325116102345780635149f984116101ed57806370a08231116101c757806370a082311461054e578063715018a61461058457806375f0a874146105995780637b9e987a146105d157600080fd5b80635149f984146104fe57806351bc3c851461051e578063629ece491461053857600080fd5b806333ae83251461045e578063395093511461047e57806341aec3571461049e57806346e35f03146104b3578063479881bf146104c85780634f7041a5146104e857600080fd5b80631d4eaead116102865780631d4eaead146103b75780631eb25d13146103cd57806323b872dd146103e25780632d48f84f14610402578063313ce567146104225780633227925f1461043e57600080fd5b80630612f39d146102d957806306fdde03146102f0578063095ea7b3146103385780630eff4c641461036857806318160ddd1461038c5780631d2cb02d146103a157600080fd5b366102d457005b600080fd5b3480156102e557600080fd5b506102ee610905565b005b3480156102fc57600080fd5b5060408051808201909152600d81526c41726d7374726f6e6720496e7560981b60208201525b60405161032f919061269a565b60405180910390f35b34801561034457600080fd5b50610358610353366004612598565b610ade565b604051901515815260200161032f565b34801561037457600080fd5b5061037e60135481565b60405190815260200161032f565b34801561039857600080fd5b5060065461037e565b3480156103ad57600080fd5b5061037e600c5481565b3480156103c357600080fd5b5061037e600a5481565b3480156103d957600080fd5b5061037e610af5565b3480156103ee57600080fd5b506103586103fd36600461252b565b610b12565b34801561040e57600080fd5b506102ee61041d366004612658565b610ba9565b34801561042e57600080fd5b506040516012815260200161032f565b34801561044a57600080fd5b506102ee6104593660046125fb565b610d34565b34801561046a57600080fd5b506102ee6104793660046125fb565b610d6e565b34801561048a57600080fd5b50610358610499366004612598565b610e36565b3480156104aa57600080fd5b506102ee610e6d565b3480156104bf57600080fd5b50610358610e9e565b3480156104d457600080fd5b506102ee6104e33660046125fb565b610ede565b3480156104f457600080fd5b5061037e60075481565b34801561050a57600080fd5b506102ee61051936600461256b565b610fa3565b34801561052a57600080fd5b506014546103589060ff1681565b34801561054457600080fd5b5061037e600e5481565b34801561055a57600080fd5b5061037e6105693660046124b4565b6001600160a01b031660009081526001602052604090205490565b34801561059057600080fd5b506102ee611048565b3480156105a557600080fd5b506011546105b9906001600160a01b031681565b6040516001600160a01b03909116815260200161032f565b3480156105dd57600080fd5b506102ee6110fb565b3480156105f257600080fd5b5061037e60095481565b34801561060857600080fd5b506102ee6106173660046124b4565b611191565b34801561062857600080fd5b506102ee6106373660046125c3565b6111ca565b34801561064857600080fd5b506000546001600160a01b03166105b9565b34801561066657600080fd5b5060408051808201909152600581526410549354d560da1b6020820152610322565b34801561069457600080fd5b506017546103589060ff1681565b3480156106ae57600080fd5b506103586106bd366004612598565b611202565b3480156106ce57600080fd5b506102ee61127e565b3480156106e357600080fd5b506103586106f2366004612598565b6112b2565b34801561070357600080fd5b506102ee61071236600461256b565b6112bf565b34801561072357600080fd5b5061037e60155481565b34801561073957600080fd5b506102ee6107483660046125fb565b6113a1565b34801561075957600080fd5b5061037e600b5481565b34801561076f57600080fd5b5061037e6113da565b34801561078457600080fd5b5061037e6113ff565b34801561079957600080fd5b5061037e60085481565b3480156107af57600080fd5b506102ee6107be3660046125fb565b61145f565b3480156107cf57600080fd5b506103586107de3660046124b4565b60056020526000908152604090205460ff1681565b3480156107ff57600080fd5b5061035861080e3660046124b4565b60046020526000908152604090205460ff1681565b34801561082f57600080fd5b5061035861083e3660046124b4565b60036020526000908152604090205460ff1681565b34801561085f57600080fd5b5061037e61086e3660046124f3565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156108a557600080fd5b506102ee6108b436600461256b565b611497565b3480156108c557600080fd5b5061037e60125481565b3480156108db57600080fd5b506102ee6108ea3660046124b4565b611571565b3480156108fb57600080fd5b5061037e600d5481565b61090e3361169a565b6109335760405162461bcd60e51b815260040161092a90612724565b60405180910390fd5b6016544210156109785760405162461bcd60e51b815260206004820152601060248201526f139bdd081e595d081d5b9b1bd8dad95960821b604482015260640161092a565b600f546040516370a0823160e01b81523060048201526001600160a01b039091169060009082906370a082319060240160206040518083038186803b1580156109c057600080fd5b505afa1580156109d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f89190612613565b60175490915060ff1615610a3057610a1362093a80426127cb565b601655600a610a238260026128f1565b610a2d91906127e3565b90505b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb90604401602060405180830381600087803b158015610a7857600080fd5b505af1158015610a8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab091906125df565b506040517f28bacca46f5c57fe13623e9d5093cb2fab892814aca9b39384ab86550d9aa67590600090a15050565b6000610aeb3384846116c7565b5060015b92915050565b610b016012600a612846565b610b0f906305f5e1006128f1565b81565b6000610b1f8484846117ba565b6001600160a01b038416600090815260026020908152604080832033845290915290205482811015610b8a5760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b604482015260640161092a565b610b9e8533610b998685612910565b6116c7565b506001949350505050565b610bb23361169a565b610bce5760405162461bcd60e51b815260040161092a90612724565b60006002610bdf600a6103e86127e3565b610be991906127e3565b9050808711158015610bfb5750808611155b8015610c075750808511155b610c485760405162461bcd60e51b81526020600482015260126024820152710a8c2f040caf0c6cacac8e640dac2f0a8c2f60731b604482015260640161092a565b6103e882610c5685876127cb565b610c6091906127cb565b14610cb75760405162461bcd60e51b815260206004820152602160248201527f546178657320646f6e27742061646420757020746f2064656e6f6d696e61746f6044820152603960f91b606482015260840161092a565b600787905560088690556009859055600c839055600b829055600a8490556040805188815260208101889052908101869052606081018590526080810184905260a081018390527f95617e149b678679d65360792e6610c8fc9add72efd72fc3c8d94792801ca5c99060c00160405180910390a150505050505050565b610d3d3361169a565b610d595760405162461bcd60e51b815260040161092a90612724565b610d6b610d6642836127cb565b611971565b50565b610d773361169a565b610d935760405162461bcd60e51b815260040161092a90612724565b6002811115610dfa5760405162461bcd60e51b815260206004820152602d60248201527f44756d70206d6561737572652063616e277420626520756e646572203530252060448201526c1bd9881d1a19481dd85b1b195d609a1b606482015260840161092a565b600e8190556040518181527fdfcf82c64ef2a938975f4ad1599e559af165a244802754595fcbffcf5ffdd0d9906020015b60405180910390a150565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610aeb918590610b999086906127cb565b610e763361169a565b610e925760405162461bcd60e51b815260040161092a90612724565b610e9c60016119b4565b565b60006103e8601354600654610eb391906128f1565b610ebd91906127e3565b600f546001600160a01b031660009081526001602052604090205411919050565b610ee73361169a565b610f035760405162461bcd60e51b815260040161092a90612724565b6032811115610f6e5760405162461bcd60e51b815260206004820152603160248201527f4d61782077616c6c6574202063616e277420626520756e646572203225206f666044820152702074686520746f74616c20737570706c7960781b606482015260840161092a565b600d8190556040518181527fd1db3c8f76ced548252ac593ebef6129c122ab13cce5b9367eb4421cebe3885590602001610e2b565b610fac3361169a565b610fc85760405162461bcd60e51b815260040161092a90612724565b600f546001600160a01b038381169116141561101d5760405162461bcd60e51b8152602060048201526014602482015273063616e2774206368616e676520756e69737761760641b604482015260640161092a565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b3361105b6000546001600160a01b031690565b6001600160a01b0316146110b15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161092a565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6111043361169a565b6111205760405162461bcd60e51b815260040161092a90612724565b601554156111625760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e53185d5b98da1959608a1b604482015260640161092a565b426015556040517f2cb945e0498987ef06dbd68025b0bc276116c63345296379c28a8e8f09b47dc190600090a1565b6011546001600160a01b031633146111a857600080fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6111d33361169a565b6111ef5760405162461bcd60e51b815260040161092a90612724565b6014805460ff1916911515919091179055565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156112655760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b604482015260640161092a565b6112743385610b998685612910565b5060019392505050565b6112873361169a565b6112a35760405162461bcd60e51b815260040161092a90612724565b6017805460ff19166001179055565b6000610aeb3384846117ba565b6112c83361169a565b6112e45760405162461bcd60e51b815260040161092a90612724565b6001600160a01b03821630141561133d5760405162461bcd60e51b815260206004820152601a60248201527f63616e277420496e636c7564652074686520636f6e7472616374000000000000604482015260640161092a565b6001600160a01b038216600081815260046020908152604091829020805460ff19168515159081179091558251938452908301527f9a547f2adf55e10d7297ec9f54496d4044ad440b7cd8f5b5d5700778377d71d391015b60405180910390a15050565b6113aa3361169a565b6113c65760405162461bcd60e51b815260040161092a90612724565b6103e88111156113d557600080fd5b601355565b60006016544210156113f957426016546113f49190612910565b905090565b50600090565b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d5460065461143d6012600a612846565b61144b906305f5e1006128f1565b6114559190612910565b6113f491906127cb565b6114683361169a565b6114845760405162461bcd60e51b815260040161092a90612724565b600f81111561149257600080fd5b601255565b6114a03361169a565b6114bc5760405162461bcd60e51b815260040161092a90612724565b6001600160a01b0382163014156115155760405162461bcd60e51b815260206004820152601a60248201527f63616e277420496e636c7564652074686520636f6e7472616374000000000000604482015260640161092a565b6001600160a01b038216600081815260036020908152604091829020805460ff19168515159081179091558251938452908301527fa22b25479919d4ac678f064a05daa1ee9c0adc3b8198942ea45255e364e04ed49101611395565b336115846000546001600160a01b031690565b6001600160a01b0316146115da5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161092a565b6001600160a01b03811661163f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161092a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b0383811691161480610aef5750506011546001600160a01b0390811691161490565b6001600160a01b0383166117115760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b604482015260640161092a565b6001600160a01b0382166117595760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b604482015260640161092a565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166118055760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b604482015260640161092a565b6001600160a01b03821661184e5760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b604482015260640161092a565b6001600160a01b03831660009081526003602052604090205460ff168061188d57506001600160a01b03821660009081526003602052604090205460ff165b156118a25761189d838383611b6d565b505050565b6001600160a01b03821660009081526004602052604090205460ff161561191a5760006015541161190f5760405162461bcd60e51b81526020600482015260176024820152761d1c98591a5b99c81b9bdd081e595d08195b98589b1959604a1b604482015260640161092a565b61189d838383611c55565b6000601554116119665760405162461bcd60e51b81526020600482015260176024820152761d1c98591a5b99c81b9bdd081e595d08195b98589b1959604a1b604482015260640161092a565b61189d838383611eb1565b601654811161197f57600080fd5b60168190556040518181527f8ff9dc93846a022986f54e8f219a1fa780225726858e39e850da826852b4042e90602001610e2b565b6011805460ff60a01b1916600160a01b17905530600090815260016020526040812054600c54600b549192916119ea91906127cb565b601254600f546001600160a01b0316600090815260016020526040812054929350916103e891611a19916128f1565b611a2391906127e3565b905081611a3257505050611b5d565b8315611a4e575030600090815260016020526040902054611a5e565b80831015611a5e57505050611b5d565b6000611a68610e9e565b611a8a5782600b5483611a7b91906128f1565b611a8591906127e3565b611a8d565b60005b90506000611a9b8284612910565b90506000611aaa6002846127e3565b90506000611ab883836127cb565b905047611ac482612207565b6000611ad08247612910565b90508515611afd57600083611ae586846128f1565b611aef91906127e3565b9050611afb8582612381565b505b6011546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611b4a576040519150601f19603f3d011682016040523d82523d6000602084013e611b4f565b606091505b505050505050505050505050505b506011805460ff60a01b19169055565b6001600160a01b03831660009081526001602052604090205481811015611ba65760405162461bcd60e51b815260040161092a906126ed565b6001600160a01b03841660009081526001602052604081208054849290611bce908490612910565b90915550506001600160a01b03831660009081526001602052604081208054849290611bfb9084906127cb565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c4791815260200190565b60405180910390a350505050565b6001600160a01b03831660009081526001602052604090205481811015611c8e5760405162461bcd60e51b815260040161092a906126ed565b6001600160a01b0380851660009081526005602052604080822054928616825281205460ff9283169216908115611cf65760155460b490611cd09082906127cb565b421015611cea57611ce3816103e7612441565b9150611cf0565b60085491505b50611d2f565b8215611d2a57601554603c90611d0d9082906127cb565b421015611d2057611ce3816103e7612441565b5050600754611d2f565b506009545b600f546001600160a01b03888116911614801590611d50575060145460ff16155b8015611d665750601154600160a01b900460ff16155b15611d7557611d7560006119b4565b6000611d848683600a54612487565b90506000611da28784600b54600c54611d9d91906127cb565b612487565b90506000611db082846127cb565b611dba9089612910565b6001600160a01b038b16600090815260016020526040812080549293508a92909190611de7908490612910565b90915550503060009081526001602052604081208054849290611e0b9084906127cb565b925050819055508260066000828254611e249190612910565b90915550506001600160a01b03891660009081526001602052604081208054839290611e519084906127cb565b92505081905550886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e9d91815260200190565b60405180910390a350505050505050505050565b6001600160a01b0380841660009081526001602052604080822054928516825290205482821015611ef45760405162461bcd60e51b815260040161092a906126ed565b82600e5483611f0391906127e3565b1015611f515760405162461bcd60e51b815260206004820152601f60248201527f5472616e73666572206578636565647320617574686f726973652073656c6c00604482015260640161092a565b600d54611f606012600a612846565b611f6e906305f5e1006128f1565b611f7891906127e3565b611f8284836127cb565b1115611fe85760405162461bcd60e51b815260206004820152602f60248201527f57616c6c657420636f6e7461696e206d6f7265207468616e206365727461696e60448201526e202520546f74616c20537570706c7960881b606482015260840161092a565b6001600160a01b0380861660009081526005602052604080822054928716825281205460ff92831692169081156120505760155460b49061202a9082906127cb565b4210156120445761203d816103e7612441565b915061204a565b60085491505b50612089565b821561208457601554603c906120679082906127cb565b42101561207a5761203d816103e7612441565b5050600754612089565b506009545b600f546001600160a01b038981169116148015906120aa575060145460ff16155b80156120c05750601154600160a01b900460ff16155b156120cf576120cf60006119b4565b60006120de8783600a54612487565b905060006120f78884600b54600c54611d9d91906127cb565b9050600061210582846127cb565b61210f908a612910565b6001600160a01b038c16600090815260016020526040812080549293508b9290919061213c908490612910565b909155505030600090815260016020526040812080548492906121609084906127cb565b9250508190555082600660008282546121799190612910565b90915550506001600160a01b038a16600090815260016020526040812080548392906121a69084906127cb565b92505081905550896001600160a01b03168b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121f291815260200190565b60405180910390a35050505050505050505050565b60105461221f9030906001600160a01b0316836116c7565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061226257634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156122b657600080fd5b505afa1580156122ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ee91906124d7565b8160018151811061230f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260105460405163791ac94760e01b815291169063791ac9479061235590859060009086903090429060040161275b565b600060405180830381600087803b15801561236f57600080fd5b505af192505050801561189d57505050565b6010546123999030906001600160a01b0316846116c7565b60105460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b15801561240157600080fd5b505af1158015612415573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061243a919061262b565b5050505050565b600080601554426124529190612910565b90508381612461603286612910565b61246b91906128f1565b61247591906127e3565b61247f9084612910565b949350505050565b60006124956103e8806128f1565b826124a085876128f1565b6124aa91906128f1565b61247f91906127e3565b6000602082840312156124c5578081fd5b81356124d08161293d565b9392505050565b6000602082840312156124e8578081fd5b81516124d08161293d565b60008060408385031215612505578081fd5b82356125108161293d565b915060208301356125208161293d565b809150509250929050565b60008060006060848603121561253f578081fd5b833561254a8161293d565b9250602084013561255a8161293d565b929592945050506040919091013590565b6000806040838503121561257d578182fd5b82356125888161293d565b9150602083013561252081612952565b600080604083850312156125aa578182fd5b82356125b58161293d565b946020939093013593505050565b6000602082840312156125d4578081fd5b81356124d081612952565b6000602082840312156125f0578081fd5b81516124d081612952565b60006020828403121561260c578081fd5b5035919050565b600060208284031215612624578081fd5b5051919050565b60008060006060848603121561263f578283fd5b8351925060208401519150604084015190509250925092565b60008060008060008060c08789031215612670578182fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6000602080835283518082850152825b818110156126c6578581018301518582016040015282016126aa565b818111156126d75783604083870101525b50601f01601f1916929092016040019392505050565b60208082526018908201527f5472616e7366657220657863656564732062616c616e63650000000000000000604082015260600190565b60208082526018908201527f43616c6c6572206e6f74205465616d206f72204f776e65720000000000000000604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156127aa5784516001600160a01b031683529383019391830191600101612785565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156127de576127de612927565b500190565b6000826127fe57634e487b7160e01b81526012600452602481fd5b500490565b600181815b8085111561283e57816000190482111561282457612824612927565b8085161561283157918102915b93841c9390800290612808565b509250929050565b60006124d060ff84168360008261285f57506001610aef565b8161286c57506000610aef565b8160018114612882576002811461288c576128a8565b6001915050610aef565b60ff84111561289d5761289d612927565b50506001821b610aef565b5060208310610133831016604e8410600b84101617156128cb575081810a610aef565b6128d58383612803565b80600019048211156128e9576128e9612927565b029392505050565b600081600019048311821515161561290b5761290b612927565b500290565b60008282101561292257612922612927565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610d6b57600080fd5b8015158114610d6b57600080fdfea26469706673582212204d0f321d7cbc45dbda92f5977369543abaf2e3d8206ef9331fc10ebb36584f3b64736f6c63430008040033

Deployed Bytecode

0x6080604052600436106102cd5760003560e01c80638124f7ac11610175578063be617fa0116100dc578063d8bd2dd111610095578063e0d2f9eb1161006f578063e0d2f9eb14610899578063e52fb9ec146108b9578063f2fde38b146108cf578063f5fb756f146108ef57600080fd5b8063d8bd2dd1146107f3578063dbe66ca014610823578063dd62ed3e1461085357600080fd5b8063be617fa01461074d578063c3a3c03214610763578063c3f4f54f14610778578063cc1776d31461078d578063cfd1940e146107a3578063d46b6a30146107c357600080fd5b8063a457c2d71161012e578063a457c2d7146106a2578063a68bdac7146106c2578063a9059cbb146106d7578063ab64cfdc146106f7578063b40d09e214610717578063bc43d8491461072d57600080fd5b80638124f7ac146105e6578063817d4bff146105fc578063868b01411461061c5780638da5cb5b1461063c57806395d89b411461065a5780639b39b65f1461068857600080fd5b806333ae8325116102345780635149f984116101ed57806370a08231116101c757806370a082311461054e578063715018a61461058457806375f0a874146105995780637b9e987a146105d157600080fd5b80635149f984146104fe57806351bc3c851461051e578063629ece491461053857600080fd5b806333ae83251461045e578063395093511461047e57806341aec3571461049e57806346e35f03146104b3578063479881bf146104c85780634f7041a5146104e857600080fd5b80631d4eaead116102865780631d4eaead146103b75780631eb25d13146103cd57806323b872dd146103e25780632d48f84f14610402578063313ce567146104225780633227925f1461043e57600080fd5b80630612f39d146102d957806306fdde03146102f0578063095ea7b3146103385780630eff4c641461036857806318160ddd1461038c5780631d2cb02d146103a157600080fd5b366102d457005b600080fd5b3480156102e557600080fd5b506102ee610905565b005b3480156102fc57600080fd5b5060408051808201909152600d81526c41726d7374726f6e6720496e7560981b60208201525b60405161032f919061269a565b60405180910390f35b34801561034457600080fd5b50610358610353366004612598565b610ade565b604051901515815260200161032f565b34801561037457600080fd5b5061037e60135481565b60405190815260200161032f565b34801561039857600080fd5b5060065461037e565b3480156103ad57600080fd5b5061037e600c5481565b3480156103c357600080fd5b5061037e600a5481565b3480156103d957600080fd5b5061037e610af5565b3480156103ee57600080fd5b506103586103fd36600461252b565b610b12565b34801561040e57600080fd5b506102ee61041d366004612658565b610ba9565b34801561042e57600080fd5b506040516012815260200161032f565b34801561044a57600080fd5b506102ee6104593660046125fb565b610d34565b34801561046a57600080fd5b506102ee6104793660046125fb565b610d6e565b34801561048a57600080fd5b50610358610499366004612598565b610e36565b3480156104aa57600080fd5b506102ee610e6d565b3480156104bf57600080fd5b50610358610e9e565b3480156104d457600080fd5b506102ee6104e33660046125fb565b610ede565b3480156104f457600080fd5b5061037e60075481565b34801561050a57600080fd5b506102ee61051936600461256b565b610fa3565b34801561052a57600080fd5b506014546103589060ff1681565b34801561054457600080fd5b5061037e600e5481565b34801561055a57600080fd5b5061037e6105693660046124b4565b6001600160a01b031660009081526001602052604090205490565b34801561059057600080fd5b506102ee611048565b3480156105a557600080fd5b506011546105b9906001600160a01b031681565b6040516001600160a01b03909116815260200161032f565b3480156105dd57600080fd5b506102ee6110fb565b3480156105f257600080fd5b5061037e60095481565b34801561060857600080fd5b506102ee6106173660046124b4565b611191565b34801561062857600080fd5b506102ee6106373660046125c3565b6111ca565b34801561064857600080fd5b506000546001600160a01b03166105b9565b34801561066657600080fd5b5060408051808201909152600581526410549354d560da1b6020820152610322565b34801561069457600080fd5b506017546103589060ff1681565b3480156106ae57600080fd5b506103586106bd366004612598565b611202565b3480156106ce57600080fd5b506102ee61127e565b3480156106e357600080fd5b506103586106f2366004612598565b6112b2565b34801561070357600080fd5b506102ee61071236600461256b565b6112bf565b34801561072357600080fd5b5061037e60155481565b34801561073957600080fd5b506102ee6107483660046125fb565b6113a1565b34801561075957600080fd5b5061037e600b5481565b34801561076f57600080fd5b5061037e6113da565b34801561078457600080fd5b5061037e6113ff565b34801561079957600080fd5b5061037e60085481565b3480156107af57600080fd5b506102ee6107be3660046125fb565b61145f565b3480156107cf57600080fd5b506103586107de3660046124b4565b60056020526000908152604090205460ff1681565b3480156107ff57600080fd5b5061035861080e3660046124b4565b60046020526000908152604090205460ff1681565b34801561082f57600080fd5b5061035861083e3660046124b4565b60036020526000908152604090205460ff1681565b34801561085f57600080fd5b5061037e61086e3660046124f3565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156108a557600080fd5b506102ee6108b436600461256b565b611497565b3480156108c557600080fd5b5061037e60125481565b3480156108db57600080fd5b506102ee6108ea3660046124b4565b611571565b3480156108fb57600080fd5b5061037e600d5481565b61090e3361169a565b6109335760405162461bcd60e51b815260040161092a90612724565b60405180910390fd5b6016544210156109785760405162461bcd60e51b815260206004820152601060248201526f139bdd081e595d081d5b9b1bd8dad95960821b604482015260640161092a565b600f546040516370a0823160e01b81523060048201526001600160a01b039091169060009082906370a082319060240160206040518083038186803b1580156109c057600080fd5b505afa1580156109d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f89190612613565b60175490915060ff1615610a3057610a1362093a80426127cb565b601655600a610a238260026128f1565b610a2d91906127e3565b90505b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb90604401602060405180830381600087803b158015610a7857600080fd5b505af1158015610a8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab091906125df565b506040517f28bacca46f5c57fe13623e9d5093cb2fab892814aca9b39384ab86550d9aa67590600090a15050565b6000610aeb3384846116c7565b5060015b92915050565b610b016012600a612846565b610b0f906305f5e1006128f1565b81565b6000610b1f8484846117ba565b6001600160a01b038416600090815260026020908152604080832033845290915290205482811015610b8a5760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b604482015260640161092a565b610b9e8533610b998685612910565b6116c7565b506001949350505050565b610bb23361169a565b610bce5760405162461bcd60e51b815260040161092a90612724565b60006002610bdf600a6103e86127e3565b610be991906127e3565b9050808711158015610bfb5750808611155b8015610c075750808511155b610c485760405162461bcd60e51b81526020600482015260126024820152710a8c2f040caf0c6cacac8e640dac2f0a8c2f60731b604482015260640161092a565b6103e882610c5685876127cb565b610c6091906127cb565b14610cb75760405162461bcd60e51b815260206004820152602160248201527f546178657320646f6e27742061646420757020746f2064656e6f6d696e61746f6044820152603960f91b606482015260840161092a565b600787905560088690556009859055600c839055600b829055600a8490556040805188815260208101889052908101869052606081018590526080810184905260a081018390527f95617e149b678679d65360792e6610c8fc9add72efd72fc3c8d94792801ca5c99060c00160405180910390a150505050505050565b610d3d3361169a565b610d595760405162461bcd60e51b815260040161092a90612724565b610d6b610d6642836127cb565b611971565b50565b610d773361169a565b610d935760405162461bcd60e51b815260040161092a90612724565b6002811115610dfa5760405162461bcd60e51b815260206004820152602d60248201527f44756d70206d6561737572652063616e277420626520756e646572203530252060448201526c1bd9881d1a19481dd85b1b195d609a1b606482015260840161092a565b600e8190556040518181527fdfcf82c64ef2a938975f4ad1599e559af165a244802754595fcbffcf5ffdd0d9906020015b60405180910390a150565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610aeb918590610b999086906127cb565b610e763361169a565b610e925760405162461bcd60e51b815260040161092a90612724565b610e9c60016119b4565b565b60006103e8601354600654610eb391906128f1565b610ebd91906127e3565b600f546001600160a01b031660009081526001602052604090205411919050565b610ee73361169a565b610f035760405162461bcd60e51b815260040161092a90612724565b6032811115610f6e5760405162461bcd60e51b815260206004820152603160248201527f4d61782077616c6c6574202063616e277420626520756e646572203225206f666044820152702074686520746f74616c20737570706c7960781b606482015260840161092a565b600d8190556040518181527fd1db3c8f76ced548252ac593ebef6129c122ab13cce5b9367eb4421cebe3885590602001610e2b565b610fac3361169a565b610fc85760405162461bcd60e51b815260040161092a90612724565b600f546001600160a01b038381169116141561101d5760405162461bcd60e51b8152602060048201526014602482015273063616e2774206368616e676520756e69737761760641b604482015260640161092a565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b3361105b6000546001600160a01b031690565b6001600160a01b0316146110b15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161092a565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6111043361169a565b6111205760405162461bcd60e51b815260040161092a90612724565b601554156111625760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e53185d5b98da1959608a1b604482015260640161092a565b426015556040517f2cb945e0498987ef06dbd68025b0bc276116c63345296379c28a8e8f09b47dc190600090a1565b6011546001600160a01b031633146111a857600080fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6111d33361169a565b6111ef5760405162461bcd60e51b815260040161092a90612724565b6014805460ff1916911515919091179055565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156112655760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b604482015260640161092a565b6112743385610b998685612910565b5060019392505050565b6112873361169a565b6112a35760405162461bcd60e51b815260040161092a90612724565b6017805460ff19166001179055565b6000610aeb3384846117ba565b6112c83361169a565b6112e45760405162461bcd60e51b815260040161092a90612724565b6001600160a01b03821630141561133d5760405162461bcd60e51b815260206004820152601a60248201527f63616e277420496e636c7564652074686520636f6e7472616374000000000000604482015260640161092a565b6001600160a01b038216600081815260046020908152604091829020805460ff19168515159081179091558251938452908301527f9a547f2adf55e10d7297ec9f54496d4044ad440b7cd8f5b5d5700778377d71d391015b60405180910390a15050565b6113aa3361169a565b6113c65760405162461bcd60e51b815260040161092a90612724565b6103e88111156113d557600080fd5b601355565b60006016544210156113f957426016546113f49190612910565b905090565b50600090565b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d5460065461143d6012600a612846565b61144b906305f5e1006128f1565b6114559190612910565b6113f491906127cb565b6114683361169a565b6114845760405162461bcd60e51b815260040161092a90612724565b600f81111561149257600080fd5b601255565b6114a03361169a565b6114bc5760405162461bcd60e51b815260040161092a90612724565b6001600160a01b0382163014156115155760405162461bcd60e51b815260206004820152601a60248201527f63616e277420496e636c7564652074686520636f6e7472616374000000000000604482015260640161092a565b6001600160a01b038216600081815260036020908152604091829020805460ff19168515159081179091558251938452908301527fa22b25479919d4ac678f064a05daa1ee9c0adc3b8198942ea45255e364e04ed49101611395565b336115846000546001600160a01b031690565b6001600160a01b0316146115da5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161092a565b6001600160a01b03811661163f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161092a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b0383811691161480610aef5750506011546001600160a01b0390811691161490565b6001600160a01b0383166117115760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b604482015260640161092a565b6001600160a01b0382166117595760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b604482015260640161092a565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166118055760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b604482015260640161092a565b6001600160a01b03821661184e5760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b604482015260640161092a565b6001600160a01b03831660009081526003602052604090205460ff168061188d57506001600160a01b03821660009081526003602052604090205460ff165b156118a25761189d838383611b6d565b505050565b6001600160a01b03821660009081526004602052604090205460ff161561191a5760006015541161190f5760405162461bcd60e51b81526020600482015260176024820152761d1c98591a5b99c81b9bdd081e595d08195b98589b1959604a1b604482015260640161092a565b61189d838383611c55565b6000601554116119665760405162461bcd60e51b81526020600482015260176024820152761d1c98591a5b99c81b9bdd081e595d08195b98589b1959604a1b604482015260640161092a565b61189d838383611eb1565b601654811161197f57600080fd5b60168190556040518181527f8ff9dc93846a022986f54e8f219a1fa780225726858e39e850da826852b4042e90602001610e2b565b6011805460ff60a01b1916600160a01b17905530600090815260016020526040812054600c54600b549192916119ea91906127cb565b601254600f546001600160a01b0316600090815260016020526040812054929350916103e891611a19916128f1565b611a2391906127e3565b905081611a3257505050611b5d565b8315611a4e575030600090815260016020526040902054611a5e565b80831015611a5e57505050611b5d565b6000611a68610e9e565b611a8a5782600b5483611a7b91906128f1565b611a8591906127e3565b611a8d565b60005b90506000611a9b8284612910565b90506000611aaa6002846127e3565b90506000611ab883836127cb565b905047611ac482612207565b6000611ad08247612910565b90508515611afd57600083611ae586846128f1565b611aef91906127e3565b9050611afb8582612381565b505b6011546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611b4a576040519150601f19603f3d011682016040523d82523d6000602084013e611b4f565b606091505b505050505050505050505050505b506011805460ff60a01b19169055565b6001600160a01b03831660009081526001602052604090205481811015611ba65760405162461bcd60e51b815260040161092a906126ed565b6001600160a01b03841660009081526001602052604081208054849290611bce908490612910565b90915550506001600160a01b03831660009081526001602052604081208054849290611bfb9084906127cb565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c4791815260200190565b60405180910390a350505050565b6001600160a01b03831660009081526001602052604090205481811015611c8e5760405162461bcd60e51b815260040161092a906126ed565b6001600160a01b0380851660009081526005602052604080822054928616825281205460ff9283169216908115611cf65760155460b490611cd09082906127cb565b421015611cea57611ce3816103e7612441565b9150611cf0565b60085491505b50611d2f565b8215611d2a57601554603c90611d0d9082906127cb565b421015611d2057611ce3816103e7612441565b5050600754611d2f565b506009545b600f546001600160a01b03888116911614801590611d50575060145460ff16155b8015611d665750601154600160a01b900460ff16155b15611d7557611d7560006119b4565b6000611d848683600a54612487565b90506000611da28784600b54600c54611d9d91906127cb565b612487565b90506000611db082846127cb565b611dba9089612910565b6001600160a01b038b16600090815260016020526040812080549293508a92909190611de7908490612910565b90915550503060009081526001602052604081208054849290611e0b9084906127cb565b925050819055508260066000828254611e249190612910565b90915550506001600160a01b03891660009081526001602052604081208054839290611e519084906127cb565b92505081905550886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e9d91815260200190565b60405180910390a350505050505050505050565b6001600160a01b0380841660009081526001602052604080822054928516825290205482821015611ef45760405162461bcd60e51b815260040161092a906126ed565b82600e5483611f0391906127e3565b1015611f515760405162461bcd60e51b815260206004820152601f60248201527f5472616e73666572206578636565647320617574686f726973652073656c6c00604482015260640161092a565b600d54611f606012600a612846565b611f6e906305f5e1006128f1565b611f7891906127e3565b611f8284836127cb565b1115611fe85760405162461bcd60e51b815260206004820152602f60248201527f57616c6c657420636f6e7461696e206d6f7265207468616e206365727461696e60448201526e202520546f74616c20537570706c7960881b606482015260840161092a565b6001600160a01b0380861660009081526005602052604080822054928716825281205460ff92831692169081156120505760155460b49061202a9082906127cb565b4210156120445761203d816103e7612441565b915061204a565b60085491505b50612089565b821561208457601554603c906120679082906127cb565b42101561207a5761203d816103e7612441565b5050600754612089565b506009545b600f546001600160a01b038981169116148015906120aa575060145460ff16155b80156120c05750601154600160a01b900460ff16155b156120cf576120cf60006119b4565b60006120de8783600a54612487565b905060006120f78884600b54600c54611d9d91906127cb565b9050600061210582846127cb565b61210f908a612910565b6001600160a01b038c16600090815260016020526040812080549293508b9290919061213c908490612910565b909155505030600090815260016020526040812080548492906121609084906127cb565b9250508190555082600660008282546121799190612910565b90915550506001600160a01b038a16600090815260016020526040812080548392906121a69084906127cb565b92505081905550896001600160a01b03168b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121f291815260200190565b60405180910390a35050505050505050505050565b60105461221f9030906001600160a01b0316836116c7565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061226257634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156122b657600080fd5b505afa1580156122ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ee91906124d7565b8160018151811061230f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260105460405163791ac94760e01b815291169063791ac9479061235590859060009086903090429060040161275b565b600060405180830381600087803b15801561236f57600080fd5b505af192505050801561189d57505050565b6010546123999030906001600160a01b0316846116c7565b60105460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b15801561240157600080fd5b505af1158015612415573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061243a919061262b565b5050505050565b600080601554426124529190612910565b90508381612461603286612910565b61246b91906128f1565b61247591906127e3565b61247f9084612910565b949350505050565b60006124956103e8806128f1565b826124a085876128f1565b6124aa91906128f1565b61247f91906127e3565b6000602082840312156124c5578081fd5b81356124d08161293d565b9392505050565b6000602082840312156124e8578081fd5b81516124d08161293d565b60008060408385031215612505578081fd5b82356125108161293d565b915060208301356125208161293d565b809150509250929050565b60008060006060848603121561253f578081fd5b833561254a8161293d565b9250602084013561255a8161293d565b929592945050506040919091013590565b6000806040838503121561257d578182fd5b82356125888161293d565b9150602083013561252081612952565b600080604083850312156125aa578182fd5b82356125b58161293d565b946020939093013593505050565b6000602082840312156125d4578081fd5b81356124d081612952565b6000602082840312156125f0578081fd5b81516124d081612952565b60006020828403121561260c578081fd5b5035919050565b600060208284031215612624578081fd5b5051919050565b60008060006060848603121561263f578283fd5b8351925060208401519150604084015190509250925092565b60008060008060008060c08789031215612670578182fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6000602080835283518082850152825b818110156126c6578581018301518582016040015282016126aa565b818111156126d75783604083870101525b50601f01601f1916929092016040019392505050565b60208082526018908201527f5472616e7366657220657863656564732062616c616e63650000000000000000604082015260600190565b60208082526018908201527f43616c6c6572206e6f74205465616d206f72204f776e65720000000000000000604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156127aa5784516001600160a01b031683529383019391830191600101612785565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156127de576127de612927565b500190565b6000826127fe57634e487b7160e01b81526012600452602481fd5b500490565b600181815b8085111561283e57816000190482111561282457612824612927565b8085161561283157918102915b93841c9390800290612808565b509250929050565b60006124d060ff84168360008261285f57506001610aef565b8161286c57506000610aef565b8160018114612882576002811461288c576128a8565b6001915050610aef565b60ff84111561289d5761289d612927565b50506001821b610aef565b5060208310610133831016604e8410600b84101617156128cb575081810a610aef565b6128d58383612803565b80600019048211156128e9576128e9612927565b029392505050565b600081600019048311821515161561290b5761290b612927565b500290565b60008282101561292257612922612927565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610d6b57600080fd5b8015158114610d6b57600080fdfea26469706673582212204d0f321d7cbc45dbda92f5977369543abaf2e3d8206ef9331fc10ebb36584f3b64736f6c63430008040033

Deployed Bytecode Sourcemap

83:22290:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19092:665;;;;;;;;;;;;;:::i;:::-;;20126:92;;;;;;;;;;-1:-1:-1;20206:5:0;;;;;;;;;;;;-1:-1:-1;;;20206:5:0;;;;20126:92;;;;;;;:::i;:::-;;;;;;;;20970:155;;;;;;;;;;-1:-1:-1;20970:155:0;;;;;:::i;:::-;;:::i;:::-;;;5675:14:2;;5668:22;5650:41;;5638:2;5623:18;20970:155:0;5605:92:2;10380:35:0;;;;;;;;;;;;;;;;;;;14104:25:2;;;14092:2;14077:18;10380:35:0;14059:76:2;20424:103:0;;;;;;;;;;-1:-1:-1;20502:18:0;;20424:103;;1339:29;;;;;;;;;;;;;;;;1280:21;;;;;;;;;;;;;;;;565:59;;;;;;;;;;;;;:::i;21426:378::-;;;;;;;;;;-1:-1:-1;21426:378:0;;;;;:::i;:::-;;:::i;10897:600::-;;;;;;;;;;-1:-1:-1;10897:600:0;;;;;:::i;:::-;;:::i;20326:92::-;;;;;;;;;;-1:-1:-1;20326:92:0;;557:2;15810:36:2;;15798:2;15783:18;20326:92:0;15765:87:2;18530:147:0;;;;;;;;;;-1:-1:-1;18530:147:0;;;;;:::i;:::-;;:::i;11789:210::-;;;;;;;;;;-1:-1:-1;11789:210:0;;;;;:::i;:::-;;:::i;21835:199::-;;;;;;;;;;-1:-1:-1;21835:199:0;;;;;:::i;:::-;;:::i;16600:81::-;;;;;;;;;;;;;:::i;12111:150::-;;;;;;;;;;;;;:::i;11543:202::-;;;;;;;;;;-1:-1:-1;11543:202:0;;;;;:::i;:::-;;:::i;1188:23::-;;;;;;;;;;;;;;;;16182:151;;;;;;;;;;-1:-1:-1;16182:151:0;;;;;:::i;:::-;;:::i;16343:22::-;;;;;;;;;;-1:-1:-1;16343:22:0;;;;;;;;1483:25;;;;;;;;;;;;;;;;20533:116;;;;;;;;;;-1:-1:-1;20533:116:0;;;;;:::i;:::-;-1:-1:-1;;;;;20624:18:0;20601:4;20624:18;;;:9;:18;;;;;;;20533:116;2801:137:1;;;;;;;;;;;;;:::i;1644:30:0:-;;;;;;;;;;-1:-1:-1;1644:30:0;;;;-1:-1:-1;;;;;1644:30:0;;;;;;-1:-1:-1;;;;;4286:32:2;;;4268:51;;4256:2;4241:18;1644:30:0;4223:102:2;17575:180:0;;;;;;;;;;;;;:::i;1247:27::-;;;;;;;;;;;;;;;;1734:144;;;;;;;;;;-1:-1:-1;1734:144:0;;;;;:::i;:::-;;:::i;16446:88::-;;;;;;;;;;-1:-1:-1;16446:88:0;;;;;:::i;:::-;;:::i;2179:77:1:-;;;;;;;;;;-1:-1:-1;2217:7:1;2243:6;-1:-1:-1;;;;;2243:6:1;2179:77;;20224:96:0;;;;;;;;;;-1:-1:-1;20306:7:0;;;;;;;;;;;;-1:-1:-1;;;20306:7:0;;;;20224:96;;18161:39;;;;;;;;;;-1:-1:-1;18161:39:0;;;;;;;;22040:330;;;;;;;;;;-1:-1:-1;22040:330:0;;;;;:::i;:::-;;:::i;18360:108::-;;;;;;;;;;;;;:::i;20655:161::-;;;;;;;;;;-1:-1:-1;20655:161:0;;;;;:::i;:::-;;:::i;17192:245::-;;;;;;;;;;-1:-1:-1;17192:245:0;;;;;:::i;:::-;;:::i;17542:27::-;;;;;;;;;;;;;;;;10421:208;;;;;;;;;;-1:-1:-1;10421:208:0;;;;;:::i;:::-;;:::i;1307:26::-;;;;;;;;;;;;;;;;15458:201;;;;;;;;;;;;;:::i;15664:137::-;;;;;;;;;;;;;:::i;1217:24::-;;;;;;;;;;;;;;;;10119:188;;;;;;;;;;-1:-1:-1;10119:188:0;;;;;:::i;:::-;;:::i;364:35::-;;;;;;;;;;-1:-1:-1;364:35:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;309:49;;;;;;;;;;-1:-1:-1;309:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;255:48;;;;;;;;;;-1:-1:-1;255:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;20822:142;;;;;;;;;;-1:-1:-1;20822:142:0;;;;;:::i;:::-;-1:-1:-1;;;;;20929:19:0;;;20906:4;20929:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;20822:142;16793:244;;;;;;;;;;-1:-1:-1;16793:244:0;;;;;:::i;:::-;;:::i;10087:26::-;;;;;;;;;;;;;;;;3087:232:1;;;;;;;;;;-1:-1:-1;3087:232:1;;;;;:::i;:::-;;:::i;1454:23:0:-;;;;;;;;;;;;;;;;19092:665;1973:19;1981:10;1973:7;:19::i;:::-;1965:56;;;;-1:-1:-1;;;1965:56:0;;;;;;;:::i;:::-;;;;;;;;;19230:20:::1;;19211:15;:39;;19203:68;;;::::0;-1:-1:-1;;;19203:68:0;;6859:2:2;19203:68:0::1;::::0;::::1;6841:21:2::0;6898:2;6878:18;;;6871:30;-1:-1:-1;;;6917:18:2;;;6910:46;6973:18;;19203:68:0::1;6831:166:2::0;19203:68:0::1;19313:19;::::0;19357:39:::1;::::0;-1:-1:-1;;;19357:39:0;;19390:4:::1;19357:39;::::0;::::1;4268:51:2::0;-1:-1:-1;;;;;19313:19:0;;::::1;::::0;19282:21:::1;::::0;19313:19;;19357:24:::1;::::0;4241:18:2;;19357:39:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19409:27;::::0;19343:53;;-1:-1:-1;19409:27:0::1;;19406:264;;;19481:40;678:6;19481:15;:40;:::i;:::-;19460:20;:61:::0;19657:2:::1;19648:8;:6:::0;19655:1:::1;19648:8;:::i;:::-;:11;;;;:::i;:::-;19641:18;;19406:264;19679:43;::::0;-1:-1:-1;;;19679:43:0;;19703:10:::1;19679:43;::::0;::::1;4793:51:2::0;4860:18;;;4853:34;;;-1:-1:-1;;;;;19679:23:0;::::1;::::0;::::1;::::0;4766:18:2;;19679:43:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;19737:13:0::1;::::0;::::1;::::0;;;::::1;2031:1;;19092:665::o:0;20970:155::-;21044:4;21060:37;21069:10;21081:7;21090:6;21060:8;:37::i;:::-;-1:-1:-1;21114:4:0;20970:155;;;;;:::o;565:59::-;611:13;557:2;611;:13;:::i;:::-;601:23;;:9;:23;:::i;:::-;565:59;:::o;21426:378::-;21523:4;21539:36;21549:6;21557:9;21568:6;21539:9;:36::i;:::-;-1:-1:-1;;;;;21610:19:0;;21586:21;21610:19;;;:11;:19;;;;;;;;21630:10;21610:31;;;;;;;;21659:26;;;;21651:59;;;;-1:-1:-1;;;21651:59:0;;9073:2:2;21651:59:0;;;9055:21:2;9112:2;9092:18;;;9085:30;-1:-1:-1;;;9131:18:2;;;9124:50;9191:18;;21651:59:0;9045:170:2;21651:59:0;21721:55;21730:6;21738:10;21750:25;21769:6;21750:16;:25;:::i;:::-;21721:8;:55::i;:::-;-1:-1:-1;21793:4:0;;21426:378;-1:-1:-1;;;;21426:378:0:o;10897:600::-;1973:19;1981:10;1973:7;:19::i;:::-;1965:56;;;;-1:-1:-1;;;1965:56:0;;;;;;;:::i;:::-;11019:11:::1;11067:1;11032:33;1446:2;1404:4;11032:33;:::i;:::-;11031:37;;;;:::i;:::-;11019:49;;11091:6;11086:3;:11;;:25;;;;;11105:6;11099:4;:12;;11086:25;:44;;;;;11124:6;11113:9;:17;;11086:44;11078:74;;;::::0;-1:-1:-1;;;11078:74:0;;9775:2:2;11078:74:0::1;::::0;::::1;9757:21:2::0;9814:2;9794:18;;;9787:30;-1:-1:-1;;;9833:18:2;;;9826:48;9891:18;;11078:74:0::1;9747:168:2::0;11078:74:0::1;1404:4;11185:9:::0;11170:14:::1;11175:9:::0;11170:4;:14:::1;:::i;:::-;:24;;;;:::i;:::-;:41;11162:86;;;::::0;-1:-1:-1;;;11162:86:0;;13758:2:2;11162:86:0::1;::::0;::::1;13740:21:2::0;13797:2;13777:18;;;13770:30;13836:34;13816:18;;;13809:62;-1:-1:-1;;;13887:18:2;;;13880:31;13928:19;;11162:86:0::1;13730:223:2::0;11162:86:0::1;11267:6;:10:::0;;;11287:7:::1;:12:::0;;;11309:11:::1;:21:::0;;;11340:12:::1;:22:::0;;;11372:12:::1;:22:::0;;;11404:7:::1;:12:::0;;;11431:59:::1;::::0;;15415:25:2;;;15471:2;15456:18;;15449:34;;;15499:18;;;15492:34;;;15557:2;15542:18;;15535:34;;;15600:3;15585:19;;15578:35;;;15644:3;15629:19;;15622:35;;;11431:59:0::1;::::0;15402:3:2;15387:19;11431:59:0::1;;;;;;;2031:1;10897:600:::0;;;;;;:::o;18530:147::-;1973:19;1981:10;1973:7;:19::i;:::-;1965:56;;;;-1:-1:-1;;;1965:56:0;;;;;;;:::i;:::-;18613:57:::1;18635:34;18654:15;18635:18:::0;:34:::1;:::i;:::-;18613:21;:57::i;:::-;18530:147:::0;:::o;11789:210::-;1973:19;1981:10;1973:7;:19::i;:::-;1965:56;;;;-1:-1:-1;;;1965:56:0;;;;;;;:::i;:::-;11868:1:::1;11856:10;:13;;11848:70;;;::::0;-1:-1:-1;;;11848:70:0;;12299:2:2;11848:70:0::1;::::0;::::1;12281:21:2::0;12338:2;12318:18;;;12311:30;12377:34;12357:18;;;12350:62;-1:-1:-1;;;12428:18:2;;;12421:43;12481:19;;11848:70:0::1;12271:235:2::0;11848:70:0::1;11928:9;:20:::0;;;11971:21:::1;::::0;14104:25:2;;;11971:21:0::1;::::0;14092:2:2;14077:18;11971:21:0::1;;;;;;;;11789:210:::0;:::o;21835:199::-;21939:10;21914:4;21960:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;21960:32:0;;;;;;;;;;21914:4;;21930:76;;21951:7;;21960:45;;21995:10;;21960:45;:::i;16600:81::-;1973:19;1981:10;1973:7;:19::i;:::-;1965:56;;;;-1:-1:-1;;;1965:56:0;;;;;;;:::i;:::-;16650:24:::1;16669:4;16650:18;:24::i;:::-;16600:81::o:0;12111:150::-;12158:4;12250;12230:19;;12211:18;;:38;;;;:::i;:::-;:43;;;;:::i;:::-;12190:19;;-1:-1:-1;;;;;12190:19:0;12180:30;;;;:9;:30;;;;;;:74;;12111:150;-1:-1:-1;12111:150:0:o;11543:202::-;1973:19;1981:10;1973:7;:19::i;:::-;1965:56;;;;-1:-1:-1;;;1965:56:0;;;;;;;:::i;:::-;11617:2:::1;11608:7;:11;;11600:72;;;::::0;-1:-1:-1;;;11600:72:0;;7964:2:2;11600:72:0::1;::::0;::::1;7946:21:2::0;8003:2;7983:18;;;7976:30;8042:34;8022:18;;;8015:62;-1:-1:-1;;;8093:18:2;;;8086:47;8150:19;;11600:72:0::1;7936:239:2::0;11600:72:0::1;11682:6;:14:::0;;;11719:19:::1;::::0;14104:25:2;;;11719:19:0::1;::::0;14092:2:2;14077:18;11719:19:0::1;14059:76:2::0;16182:151:0;1973:19;1981:10;1973:7;:19::i;:::-;1965:56;;;;-1:-1:-1;;;1965:56:0;;;;;;;:::i;:::-;16259:19:::1;::::0;-1:-1:-1;;;;;16254:24:0;;::::1;16259:19:::0;::::1;16254:24;;16246:56;;;::::0;-1:-1:-1;;;16246:56:0;;12713:2:2;16246:56:0::1;::::0;::::1;12695:21:2::0;12752:2;12732:18;;;12725:30;-1:-1:-1;;;12771:18:2;;;12764:50;12831:18;;16246:56:0::1;12685:170:2::0;16246:56:0::1;-1:-1:-1::0;;;;;16312:10:0;;;::::1;;::::0;;;:5:::1;:10;::::0;;;;:14;;-1:-1:-1;;16312:14:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16182:151::o;2801:137:1:-;2394:10;2383:7;2217;2243:6;-1:-1:-1;;;;;2243:6:1;;2179:77;2383:7;-1:-1:-1;;;;;2383:21:1;;2375:66;;;;-1:-1:-1;;;2375:66:1;;11242:2:2;2375:66:1;;;11224:21:2;;;11261:18;;;11254:30;11320:34;11300:18;;;11293:62;11372:18;;2375:66:1;11214:182:2;2375:66:1;2899:1:::1;2883:6:::0;;2862:40:::1;::::0;-1:-1:-1;;;;;2883:6:1;;::::1;::::0;2862:40:::1;::::0;2899:1;;2862:40:::1;2929:1;2912:19:::0;;-1:-1:-1;;;;;;2912:19:1::1;::::0;;2801:137::o;17575:180:0:-;1973:19;1981:10;1973:7;:19::i;:::-;1965:56;;;;-1:-1:-1;;;1965:56:0;;;;;;;:::i;:::-;17638:15:::1;::::0;:18;17630:45:::1;;;::::0;-1:-1:-1;;;17630:45:0;;11955:2:2;17630:45:0::1;::::0;::::1;11937:21:2::0;11994:2;11974:18;;;11967:30;-1:-1:-1;;;12013:18:2;;;12006:45;12068:18;;17630:45:0::1;11927:165:2::0;17630:45:0::1;17701:15;17685;:31:::0;17731:17:::1;::::0;::::1;::::0;;;::::1;17575:180::o:0;1734:144::-;1820:15;;-1:-1:-1;;;;;1820:15:0;1808:10;:27;1800:36;;;;;;1846:15;:25;;-1:-1:-1;;;;;;1846:25:0;-1:-1:-1;;;;;1846:25:0;;;;;;;;;;1734:144::o;16446:88::-;1973:19;1981:10;1973:7;:19::i;:::-;1965:56;;;;-1:-1:-1;;;1965:56:0;;;;;;;:::i;:::-;16510:10:::1;:17:::0;;-1:-1:-1;;16510:17:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16446:88::o;22040:330::-;22176:10;22124:4;22164:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;22164:32:0;;;;;;;;;;22214:35;;;;22206:60;;;;-1:-1:-1;;;22206:60:0;;13417:2:2;22206:60:0;;;13399:21:2;13456:2;13436:18;;;13429:30;-1:-1:-1;;;13475:18:2;;;13468:42;13527:18;;22206:60:0;13389:162:2;22206:60:0;22277:65;22286:10;22298:7;22307:34;22326:15;22307:16;:34;:::i;22277:65::-;-1:-1:-1;22359:4:0;;22040:330;-1:-1:-1;;;22040:330:0:o;18360:108::-;1973:19;1981:10;1973:7;:19::i;:::-;1965:56;;;;-1:-1:-1;;;1965:56:0;;;;;;;:::i;:::-;18429:27:::1;:32:::0;;-1:-1:-1;;18429:32:0::1;18457:4;18429:32;::::0;;18360:108::o;20655:161::-;20732:4;20748:40;20758:10;20770:9;20781:6;20748:9;:40::i;17192:245::-;1973:19;1981:10;1973:7;:19::i;:::-;1965:56;;;;-1:-1:-1;;;1965:56:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17283:22:0;::::1;17300:4;17283:22;;17275:60;;;::::0;-1:-1:-1;;;17275:60:0;;13062:2:2;17275:60:0::1;::::0;::::1;13044:21:2::0;13101:2;13081:18;;;13074:30;13140:28;13120:18;;;13113:56;13186:18;;17275:60:0::1;13034:176:2::0;17275:60:0::1;-1:-1:-1::0;;;;;17345:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;;;;:34;;-1:-1:-1;;17345:34:0::1;::::0;::::1;;::::0;;::::1;::::0;;;17394:36;;4498:51:2;;;4565:18;;;4558:50;17394:36:0::1;::::0;4471:18:2;17394:36:0::1;;;;;;;;17192:245:::0;;:::o;10421:208::-;1973:19;1981:10;1973:7;:19::i;:::-;1965:56;;;;-1:-1:-1;;;1965:56:0;;;;;;;:::i;:::-;10557:4:::1;10525:30;:36;;10517:45;;;::::0;::::1;;10572:19;:50:::0;10421:208::o;15458:201::-;15523:4;15557:20;;15541:15;:36;15538:96;;;15619:15;15598:20;;:36;;;;:::i;:::-;15591:43;;15458:201;:::o;15538:96::-;-1:-1:-1;15651:1:0;;15458:201::o;15664:137::-;15786:6;15711:4;15768:26;;;:9;:26;;;;15748:18;;611:13;557:2;611;:13;:::i;:::-;601:23;;:9;:23;:::i;:::-;15734:32;;;;:::i;:::-;15733:61;;;;:::i;10119:188::-;1973:19;1981:10;1973:7;:19::i;:::-;1965:56;;;;-1:-1:-1;;;1965:56:0;;;;;;;:::i;:::-;10232:2:::1;10207:23;:27;;10199:36;;;::::0;::::1;;10264:12;:36:::0;10119:188::o;16793:244::-;1973:19;1981:10;1973:7;:19::i;:::-;1965:56;;;;-1:-1:-1;;;1965:56:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16889:22:0;::::1;16906:4;16889:22;;16881:60;;;::::0;-1:-1:-1;;;16881:60:0;;13062:2:2;16881:60:0::1;::::0;::::1;13044:21:2::0;13101:2;13081:18;;;13074:30;13140:28;13120:18;;;13113:56;13186:18;;16881:60:0::1;13034:176:2::0;16881:60:0::1;-1:-1:-1::0;;;;;16951:25:0;::::1;;::::0;;;:16:::1;:25;::::0;;;;;;;;:33;;-1:-1:-1;;16951:33:0::1;::::0;::::1;;::::0;;::::1;::::0;;;16999:31;;4498:51:2;;;4565:18;;;4558:50;16999:31:0::1;::::0;4471:18:2;16999:31:0::1;4453:161:2::0;3087:232:1;2394:10;2383:7;2217;2243:6;-1:-1:-1;;;;;2243:6:1;;2179:77;2383:7;-1:-1:-1;;;;;2383:21:1;;2375:66;;;;-1:-1:-1;;;2375:66:1;;11242:2:2;2375:66:1;;;11224:21:2;;;11261:18;;;11254:30;11320:34;11300:18;;;11293:62;11372:18;;2375:66:1;11214:182:2;2375:66:1;-1:-1:-1;;;;;3167:22:1;::::1;3159:73;;;::::0;-1:-1:-1;;;3159:73:1;;7557:2:2;3159:73:1::1;::::0;::::1;7539:21:2::0;7596:2;7576:18;;;7569:30;7635:34;7615:18;;;7608:62;-1:-1:-1;;;7686:18:2;;;7679:36;7732:19;;3159:73:1::1;7529:228:2::0;3159:73:1::1;3268:6;::::0;;3247:38:::1;::::0;-1:-1:-1;;;;;3247:38:1;;::::1;::::0;3268:6;::::1;::::0;3247:38:::1;::::0;::::1;3295:6;:17:::0;;-1:-1:-1;;;;;;3295:17:1::1;-1:-1:-1::0;;;;;3295:17:1;;;::::1;::::0;;;::::1;::::0;;3087:232::o;2254:118:0:-;2307:4;2243:6:1;;-1:-1:-1;;;;;2329:13:0;;;2243:6:1;;2329:13:0;;:36;;-1:-1:-1;;2350:15:0;;-1:-1:-1;;;;;2350:15:0;;;2344:21;;;;2254:118::o;21130:290::-;-1:-1:-1;;;;;21219:19:0;;21211:49;;;;-1:-1:-1;;;21211:49:0;;8382:2:2;21211:49:0;;;8364:21:2;8421:2;8401:18;;;8394:30;-1:-1:-1;;;8440:18:2;;;8433:47;8497:18;;21211:49:0;8354:167:2;21211:49:0;-1:-1:-1;;;;;21278:21:0;;21270:49;;;;-1:-1:-1;;;21270:49:0;;10538:2:2;21270:49:0;;;10520:21:2;10577:2;10557:18;;;10550:30;-1:-1:-1;;;10596:18:2;;;10589:45;10651:18;;21270:49:0;10510:165:2;21270:49:0;-1:-1:-1;;;;;21330:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;21381:32;;14104:25:2;;;21381:32:0;;14077:18:2;21381:32:0;;;;;;;21130:290;;;:::o;3881:861::-;-1:-1:-1;;;;;3973:20:0;;3965:51;;;;-1:-1:-1;;;3965:51:0;;6512:2:2;3965:51:0;;;6494:21:2;6551:2;6531:18;;;6524:30;-1:-1:-1;;;6570:18:2;;;6563:48;6628:18;;3965:51:0;6484:168:2;3965:51:0;-1:-1:-1;;;;;4034:23:0;;4026:52;;;;-1:-1:-1;;;4026:52:0;;8728:2:2;4026:52:0;;;8710:21:2;8767:2;8747:18;;;8740:30;-1:-1:-1;;;8786:18:2;;;8779:46;8842:18;;4026:52:0;8700:166:2;4026:52:0;-1:-1:-1;;;;;4117:24:0;;;;;;:16;:24;;;;;;;;;:55;;-1:-1:-1;;;;;;4145:27:0;;;;;;:16;:27;;;;;;;;4117:55;4114:622;;;4186:43;4203:6;4211:9;4222:6;4186:16;:43::i;:::-;3881:861;;;:::o;4114:622::-;-1:-1:-1;;;;;4247:28:0;;;;;;:17;:28;;;;;;;;4244:492;;;4383:1;4367:15;;:17;4359:52;;;;-1:-1:-1;;;4359:52:0;;11603:2:2;4359:52:0;;;11585:21:2;11642:2;11622:18;;;11615:30;-1:-1:-1;;;11661:18:2;;;11654:53;11724:18;;4359:52:0;11575:173:2;4359:52:0;4425:51;4452:6;4459:9;4469:6;4425:26;:51::i;4244:492::-;4626:1;4610:15;;:17;4602:52;;;;-1:-1:-1;;;4602:52:0;;11603:2:2;4602:52:0;;;11585:21:2;11642:2;11622:18;;;11615:30;-1:-1:-1;;;11661:18:2;;;11654:53;11724:18;;4602:52:0;11575:173:2;4602:52:0;4668:39;4683:6;4690:9;4700:6;4668:14;:39::i;18731:275::-;18882:20;;18868:13;:34;18860:43;;;;;;18913:20;:34;;;18962:37;;14104:25:2;;;18962:37:0;;14092:2:2;14077:18;18962:37:0;14059:76:2;12415:1781:0;9910:27;:34;;-1:-1:-1;;;;9910:34:0;-1:-1:-1;;;9910:34:0;;;12530:4:::1;9910:34:::0;12512:24;;;9940:4;12512:24:::1;::::0;;;;;12573:12:::1;::::0;12560::::1;::::0;12512:24;;9910:34;12560:25:::1;::::0;12573:12;12560:25:::1;:::i;:::-;12737:12;::::0;12716:19:::1;::::0;-1:-1:-1;;;;;12716:19:0::1;12689:16;12706:30:::0;;;:9:::1;:30;::::0;;;;;12546:39;;-1:-1:-1;12689:16:0;12750:4:::1;::::0;12706:43:::1;::::0;::::1;:::i;:::-;:48;;;;:::i;:::-;12689:65:::0;-1:-1:-1;12804:11:0;12801:22:::1;;12816:7;;;;;12801:22;12989:12;12986:131;;;-1:-1:-1::0;13045:4:0::1;13027:24;::::0;;;:9:::1;:24;::::0;;;;;12986:131:::1;;;13085:11;13069:15;:27;13066:51;;;13110:7;;;;;13066:51;13246:22;13278:17;:15;:17::i;:::-;:64;;13334:8;13320:12;;13308:11;:24;;;;:::i;:::-;13307:35;;;;:::i;:::-;13278:64;;;13296:1;13278:64;13246:96:::0;-1:-1:-1;13353:22:0::1;13377:29;13246:96:::0;13377:11;:29:::1;:::i;:::-;13353:53:::0;-1:-1:-1;13417:12:0::1;13430:19;13448:1;13430:17:::0;:19:::1;:::i;:::-;13417:32:::0;-1:-1:-1;13528:14:0::1;13543:25;13551:17:::0;13417:32;13543:25:::1;:::i;:::-;13528:40:::0;-1:-1:-1;13680:21:0::1;13711:27;13528:40:::0;13711:16:::1;:27::i;:::-;13748:11;13761:41;13785:17:::0;13761:21:::1;:41;:::i;:::-;13748:55:::0;-1:-1:-1;13905:19:0;;13902:132:::1;;13939:11;13970:9:::0;13954:14:::1;13961:7:::0;13954:6;:14:::1;:::i;:::-;13953:26;;;;:::i;:::-;13939:40;;13993:30;14007:7;14016:6;13993:13;:30::i;:::-;13902:132;;14117:15;::::0;:53:::1;::::0;14105:9:::1;::::0;-1:-1:-1;;;;;14117:15:0::1;::::0;14144:21:::1;::::0;14105:9;14117:53;14105:9;14117:53;14144:21;14117:15;:53:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;9954:1:0::1;-1:-1:-1::0;9965:27:0;:35;;-1:-1:-1;;;;9965:35:0;;;12415:1781::o;7366:333::-;-1:-1:-1;;;;;7478:17:0;;7457:18;7478:17;;;:9;:17;;;;;;7513:23;;;;7505:60;;;;-1:-1:-1;;;7505:60:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7575:17:0;;;;;;:9;:17;;;;;:25;;7594:6;;7575:17;:25;;7594:6;;7575:25;:::i;:::-;;;;-1:-1:-1;;;;;;;7610:20:0;;;;;;:9;:20;;;;;:28;;7632:6;;7610:20;:28;;7632:6;;7610:28;:::i;:::-;;;;;;;;7675:9;-1:-1:-1;;;;;7659:33:0;7668:6;-1:-1:-1;;;;;7659:33:0;;7685:6;7659:33;;;;14104:25:2;;14092:2;14077:18;;14059:76;7659:33:0;;;;;;;;7366:333;;;;:::o;7766:1669::-;-1:-1:-1;;;;;7889:17:0;;7868:18;7889:17;;;:9;:17;;;;;;7924:23;;;;7916:60;;;;-1:-1:-1;;;7916:60:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7998:13:0;;;7987:10;7998:13;;;:5;:13;;;;;;;8033:16;;;;;;;;7998:13;;;;;8033:16;;8078:485;;;;8179:15;;8125:11;;8179:31;;8125:11;;8179:31;:::i;:::-;8163:15;:47;8160:141;;;8233:33;8246:15;8262:3;8233:12;:33::i;:::-;8229:37;;8160:141;;;8294:7;;8290:11;;8160:141;8078:485;;;;8333:5;8330:233;;;8416:15;;8373:10;;8416:30;;8373:10;;8416:30;:::i;:::-;8400:15;:46;8397:134;;;8469:32;8482:14;8497:3;8469:12;:32::i;8397:134::-;-1:-1:-1;;8525:6:0;;8330:233;;;-1:-1:-1;8552:11:0;;8330:233;8586:19;;-1:-1:-1;;;;;8578:27:0;;;8586:19;;8578:27;;;;8577:44;;-1:-1:-1;8610:10:0;;;;8609:11;8577:44;:76;;;;-1:-1:-1;8625:27:0;;-1:-1:-1;;;8625:27:0;;;;8624:28;8577:76;8574:118;;;8667:25;8686:5;8667:18;:25::i;:::-;8760:20;8781:35;8795:6;8803:3;8808:7;;8781:13;:35::i;:::-;8760:56;;8922:18;8941:53;8955:6;8963:3;8981:12;;8968;;:25;;;;:::i;:::-;8941:13;:53::i;:::-;8922:72;-1:-1:-1;9056:16:0;9081:31;8922:72;9081:15;:31;:::i;:::-;9073:40;;:6;:40;:::i;:::-;-1:-1:-1;;;;;9124:17:0;;;;;;:9;:17;;;;;:25;;9056:57;;-1:-1:-1;9143:6:0;;9124:17;;;:25;;9143:6;;9124:25;:::i;:::-;;;;-1:-1:-1;;9232:4:0;9214:24;;;;:9;:24;;;;;:41;;9242:13;;9214:24;:41;;9242:13;;9214:41;:::i;:::-;;;;;;;;9308:15;9288:18;;:35;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;9333:20:0;;;;;;:9;:20;;;;;:33;;9355:11;;9333:20;:33;;9355:11;;9333:33;:::i;:::-;;;;;;;;9406:9;-1:-1:-1;;;;;9390:38:0;9399:6;-1:-1:-1;;;;;9390:38:0;;9416:11;9390:38;;;;14104:25:2;;14092:2;14077:18;;14059:76;9390:38:0;;;;;;;;7766:1669;;;;;;;;;;:::o;4846:1919::-;-1:-1:-1;;;;;4956:17:0;;;4935:18;4956:17;;;:9;:17;;;;;;;5007:20;;;;;;;;5045:23;;;;5037:60;;;;-1:-1:-1;;;5037:60:0;;;;;;;:::i;:::-;5142:6;5129:9;;5115:13;:23;;;;:::i;:::-;:33;;5107:77;;;;-1:-1:-1;;;5107:77:0;;10882:2:2;5107:77:0;;;10864:21:2;10921:2;10901:18;;;10894:30;10960:33;10940:18;;;10933:61;11011:18;;5107:77:0;10854:181:2;5107:77:0;5248:6;;611:13;557:2;611;:13;:::i;:::-;601:23;;:9;:23;:::i;:::-;5234:20;;;;:::i;:::-;5203:25;5222:6;5203:16;:25;:::i;:::-;5202:52;;5194:112;;;;-1:-1:-1;;;5194:112:0;;10122:2:2;5194:112:0;;;10104:21:2;10161:2;10141:18;;;10134:30;10200:34;10180:18;;;10173:62;-1:-1:-1;;;10251:18:2;;;10244:45;10306:19;;5194:112:0;10094:237:2;5194:112:0;-1:-1:-1;;;;;5328:13:0;;;5317:10;5328:13;;;:5;:13;;;;;;;5363:16;;;;;;;;5328:13;;;;;5363:16;;5408:485;;;;5509:15;;5455:11;;5509:31;;5455:11;;5509:31;:::i;:::-;5493:15;:47;5490:141;;;5563:33;5576:15;5592:3;5563:12;:33::i;:::-;5559:37;;5490:141;;;5624:7;;5620:11;;5490:141;5408:485;;;;5663:5;5660:233;;;5746:15;;5703:10;;5746:30;;5703:10;;5746:30;:::i;:::-;5730:15;:46;5727:134;;;5799:32;5812:14;5827:3;5799:12;:32::i;5727:134::-;-1:-1:-1;;5855:6:0;;5660:233;;;-1:-1:-1;5882:11:0;;5660:233;5916:19;;-1:-1:-1;;;;;5908:27:0;;;5916:19;;5908:27;;;;5907:44;;-1:-1:-1;5940:10:0;;;;5939:11;5907:44;:76;;;;-1:-1:-1;5955:27:0;;-1:-1:-1;;;5955:27:0;;;;5954:28;5907:76;5904:118;;;5997:25;6016:5;5997:18;:25::i;:::-;6090:20;6111:35;6125:6;6133:3;6138:7;;6111:13;:35::i;:::-;6090:56;;6252:18;6271:53;6285:6;6293:3;6311:12;;6298;;:25;;;;:::i;6271:53::-;6252:72;-1:-1:-1;6386:16:0;6411:31;6252:72;6411:15;:31;:::i;:::-;6403:40;;:6;:40;:::i;:::-;-1:-1:-1;;;;;6454:17:0;;;;;;:9;:17;;;;;:25;;6386:57;;-1:-1:-1;6473:6:0;;6454:17;;;:25;;6473:6;;6454:25;:::i;:::-;;;;-1:-1:-1;;6562:4:0;6544:24;;;;:9;:24;;;;;:41;;6572:13;;6544:24;:41;;6572:13;;6544:41;:::i;:::-;;;;;;;;6638:15;6618:18;;:35;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;6663:20:0;;;;;;:9;:20;;;;;:33;;6685:11;;6663:20;:33;;6685:11;;6663:33;:::i;:::-;;;;;;;;6736:9;-1:-1:-1;;;;;6720:38:0;6729:6;-1:-1:-1;;;;;6720:38:0;;6746:11;6720:38;;;;14104:25:2;;14092:2;14077:18;;14059:76;6720:38:0;;;;;;;;4846:1919;;;;;;;;;;;:::o;14244:460::-;14333:14;;14301:56;;14318:4;;-1:-1:-1;;;;;14333:14:0;14350:6;14301:8;:56::i;:::-;14391:16;;;14405:1;14391:16;;;;;;;;14367:21;;14391:16;;;;;;;;;;-1:-1:-1;14391:16:0;14367:40;;14435:4;14417;14422:1;14417:7;;;;;;-1:-1:-1;;;14417:7:0;;;;;;;;;-1:-1:-1;;;;;14417:23:0;;;:7;;;;;;;;;;:23;;;;14460:14;;:21;;;-1:-1:-1;;;14460:21:0;;;;:14;;;;;:19;;:21;;;;;14417:7;;14460:21;;;;;:14;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14450:4;14455:1;14450:7;;;;;;-1:-1:-1;;;14450:7:0;;;;;;;;;-1:-1:-1;;;;;14450:31:0;;;:7;;;;;;;;;:31;14496:14;;:184;;-1:-1:-1;;;14496:184:0;;:14;;;:65;;:184;;14575:6;;14496:14;;14610:4;;14636;;14655:15;;14496:184;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14244:460;;:::o;14775:349::-;14882:14;;14850:61;;14867:4;;-1:-1:-1;;;;;14882:14:0;14899:11;14850:8;:61::i;:::-;14921:14;;:196;;-1:-1:-1;;;14921:196:0;;14991:4;14921:196;;;5239:34:2;;;5289:18;;;5282:34;;;14921:14:0;5332:18:2;;;5325:34;;;5375:18;;;5368:34;5418:19;;;5411:44;15092:15:0;5471:19:2;;;5464:35;-1:-1:-1;;;;;14921:14:0;;;;:30;;14959:9;;5173:19:2;;14921:196:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14775:349;;:::o;6871:208::-;6943:4;6958:20;6995:15;;6979;:31;;;;:::i;:::-;6958:52;-1:-1:-1;7063:8:0;6958:52;7036:9;7043:2;7036:6;:9;:::i;:::-;7035:27;;;;:::i;:::-;:36;;;;:::i;:::-;7027:45;;:6;:45;:::i;:::-;7020:52;6871:208;-1:-1:-1;;;;6871:208:0:o;7132:174::-;7217:4;7267:31;1404:4;;7267:31;:::i;:::-;7252:10;7241;7248:3;7241:6;:10;:::i;:::-;:21;;;;:::i;:::-;7240:59;;;;:::i;14:257:2:-;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:31;235:5;210:31;:::i;:::-;260:5;84:187;-1:-1:-1;;;84:187:2:o;276:261::-;346:6;399:2;387:9;378:7;374:23;370:32;367:2;;;420:6;412;405:22;367:2;457:9;451:16;476:31;501:5;476:31;:::i;542:398::-;610:6;618;671:2;659:9;650:7;646:23;642:32;639:2;;;692:6;684;677:22;639:2;736:9;723:23;755:31;780:5;755:31;:::i;:::-;805:5;-1:-1:-1;862:2:2;847:18;;834:32;875:33;834:32;875:33;:::i;:::-;927:7;917:17;;;629:311;;;;;:::o;945:466::-;1022:6;1030;1038;1091:2;1079:9;1070:7;1066:23;1062:32;1059:2;;;1112:6;1104;1097:22;1059:2;1156:9;1143:23;1175:31;1200:5;1175:31;:::i;:::-;1225:5;-1:-1:-1;1282:2:2;1267:18;;1254:32;1295:33;1254:32;1295:33;:::i;:::-;1049:362;;1347:7;;-1:-1:-1;;;1401:2:2;1386:18;;;;1373:32;;1049:362::o;1416:392::-;1481:6;1489;1542:2;1530:9;1521:7;1517:23;1513:32;1510:2;;;1563:6;1555;1548:22;1510:2;1607:9;1594:23;1626:31;1651:5;1626:31;:::i;:::-;1676:5;-1:-1:-1;1733:2:2;1718:18;;1705:32;1746:30;1705:32;1746:30;:::i;1813:325::-;1881:6;1889;1942:2;1930:9;1921:7;1917:23;1913:32;1910:2;;;1963:6;1955;1948:22;1910:2;2007:9;1994:23;2026:31;2051:5;2026:31;:::i;:::-;2076:5;2128:2;2113:18;;;;2100:32;;-1:-1:-1;;;1900:238:2:o;2143:251::-;2199:6;2252:2;2240:9;2231:7;2227:23;2223:32;2220:2;;;2273:6;2265;2258:22;2220:2;2317:9;2304:23;2336:28;2358:5;2336:28;:::i;2399:255::-;2466:6;2519:2;2507:9;2498:7;2494:23;2490:32;2487:2;;;2540:6;2532;2525:22;2487:2;2577:9;2571:16;2596:28;2618:5;2596:28;:::i;2659:190::-;2718:6;2771:2;2759:9;2750:7;2746:23;2742:32;2739:2;;;2792:6;2784;2777:22;2739:2;-1:-1:-1;2820:23:2;;2729:120;-1:-1:-1;2729:120:2:o;2854:194::-;2924:6;2977:2;2965:9;2956:7;2952:23;2948:32;2945:2;;;2998:6;2990;2983:22;2945:2;-1:-1:-1;3026:16:2;;2935:113;-1:-1:-1;2935:113:2:o;3053:316::-;3141:6;3149;3157;3210:2;3198:9;3189:7;3185:23;3181:32;3178:2;;;3231:6;3223;3216:22;3178:2;3265:9;3259:16;3249:26;;3315:2;3304:9;3300:18;3294:25;3284:35;;3359:2;3348:9;3344:18;3338:25;3328:35;;3168:201;;;;;:::o;3374:533::-;3478:6;3486;3494;3502;3510;3518;3571:3;3559:9;3550:7;3546:23;3542:33;3539:2;;;3593:6;3585;3578:22;3539:2;-1:-1:-1;;3621:23:2;;;3691:2;3676:18;;3663:32;;-1:-1:-1;3742:2:2;3727:18;;3714:32;;3793:2;3778:18;;3765:32;;-1:-1:-1;3844:3:2;3829:19;;3816:33;;-1:-1:-1;3896:3:2;3881:19;3868:33;;-1:-1:-1;3529:378:2;-1:-1:-1;3529:378:2:o;5702:603::-;5814:4;5843:2;5872;5861:9;5854:21;5904:6;5898:13;5947:6;5942:2;5931:9;5927:18;5920:34;5972:4;5985:140;5999:6;5996:1;5993:13;5985:140;;;6094:14;;;6090:23;;6084:30;6060:17;;;6079:2;6056:26;6049:66;6014:10;;5985:140;;;6143:6;6140:1;6137:13;6134:2;;;6213:4;6208:2;6199:6;6188:9;6184:22;6180:31;6173:45;6134:2;-1:-1:-1;6289:2:2;6268:15;-1:-1:-1;;6264:29:2;6249:45;;;;6296:2;6245:54;;5823:482;-1:-1:-1;;;5823:482:2:o;7002:348::-;7204:2;7186:21;;;7243:2;7223:18;;;7216:30;7282:26;7277:2;7262:18;;7255:54;7341:2;7326:18;;7176:174::o;9220:348::-;9422:2;9404:21;;;9461:2;9441:18;;;9434:30;9500:26;9495:2;9480:18;;9473:54;9559:2;9544:18;;9394:174::o;14140:983::-;14402:4;14450:3;14439:9;14435:19;14481:6;14470:9;14463:25;14507:2;14545:6;14540:2;14529:9;14525:18;14518:34;14588:3;14583:2;14572:9;14568:18;14561:31;14612:6;14647;14641:13;14678:6;14670;14663:22;14716:3;14705:9;14701:19;14694:26;;14755:2;14747:6;14743:15;14729:29;;14776:4;14789:195;14803:6;14800:1;14797:13;14789:195;;;14868:13;;-1:-1:-1;;;;;14864:39:2;14852:52;;14959:15;;;;14924:12;;;;14900:1;14818:9;14789:195;;;-1:-1:-1;;;;;;;15040:32:2;;;;15035:2;15020:18;;15013:60;-1:-1:-1;;;15104:3:2;15089:19;15082:35;15001:3;14411:712;-1:-1:-1;;;14411:712:2:o;15857:128::-;15897:3;15928:1;15924:6;15921:1;15918:13;15915:2;;;15934:18;;:::i;:::-;-1:-1:-1;15970:9:2;;15905:80::o;15990:217::-;16030:1;16056;16046:2;;-1:-1:-1;;;16081:31:2;;16135:4;16132:1;16125:15;16163:4;16088:1;16153:15;16046:2;-1:-1:-1;16192:9:2;;16036:171::o;16212:422::-;16301:1;16344:5;16301:1;16358:270;16379:7;16369:8;16366:21;16358:270;;;16438:4;16434:1;16430:6;16426:17;16420:4;16417:27;16414:2;;;16447:18;;:::i;:::-;16497:7;16487:8;16483:22;16480:2;;;16517:16;;;;16480:2;16596:22;;;;16556:15;;;;16358:270;;;16362:3;16276:358;;;;;:::o;16639:140::-;16697:5;16726:47;16767:4;16757:8;16753:19;16747:4;16833:5;16863:8;16853:2;;-1:-1:-1;16904:1:2;16918:5;;16853:2;16952:4;16942:2;;-1:-1:-1;16989:1:2;17003:5;;16942:2;17034:4;17052:1;17047:59;;;;17120:1;17115:130;;;;17027:218;;17047:59;17077:1;17068:10;;17091:5;;;17115:130;17152:3;17142:8;17139:17;17136:2;;;17159:18;;:::i;:::-;-1:-1:-1;;17215:1:2;17201:16;;17230:5;;17027:218;;17329:2;17319:8;17316:16;17310:3;17304:4;17301:13;17297:36;17291:2;17281:8;17278:16;17273:2;17267:4;17264:12;17260:35;17257:77;17254:2;;;-1:-1:-1;17366:19:2;;;17398:5;;17254:2;17445:34;17470:8;17464:4;17445:34;:::i;:::-;17515:6;17511:1;17507:6;17503:19;17494:7;17491:32;17488:2;;;17526:18;;:::i;:::-;17564:20;;16843:747;-1:-1:-1;;;16843:747:2:o;17595:168::-;17635:7;17701:1;17697;17693:6;17689:14;17686:1;17683:21;17678:1;17671:9;17664:17;17660:45;17657:2;;;17708:18;;:::i;:::-;-1:-1:-1;17748:9:2;;17647:116::o;17768:125::-;17808:4;17836:1;17833;17830:8;17827:2;;;17841:18;;:::i;:::-;-1:-1:-1;17878:9:2;;17817:76::o;17898:127::-;17959:10;17954:3;17950:20;17947:1;17940:31;17990:4;17987:1;17980:15;18014:4;18011:1;18004:15;18030:131;-1:-1:-1;;;;;18105:31:2;;18095:42;;18085:2;;18151:1;18148;18141:12;18166:118;18252:5;18245:13;18238:21;18231:5;18228:32;18218:2;;18274:1;18271;18264:12

Swarm Source

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