ETH Price: $3,270.44 (+0.32%)
Gas: 3 Gwei

Token

Gingercatcoin ($GGC)
 

Overview

Max Total Supply

10,000,000 $GGC

Holders

38

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
8,928,224.238167656 $GGC

Value
$0.00
0x5e64efa28eeb99fbe9445a077333dc365fa73718
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:
Gingercatcoin

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-20
*/

/**

*/

//SPDX-License-Identifier: Unlicensed


pragma solidity 0.8.17;


interface IERC20 {

    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */

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

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

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

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

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

interface IPancakePair {
    function sync() external;
}

interface IDEXRouter {

    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

}

contract Ownable is Context {
    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 = _msgSender();
        _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 == _msgSender(), "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 virtual 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 virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract Gingercatcoin is IERC20, Ownable {
    using SafeMath for uint256;

    address constant ROUTER        = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address constant WETH          = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address constant DEAD          = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO          = 0x0000000000000000000000000000000000000000;

    string _name = "Gingercatcoin";
    string _symbol = "$GGC";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1 * 10**7 * 10**_decimals;
    uint256 public _maxTxAmount = (_totalSupply * 2) / 100;
    uint256 public _maxWalletSize = (_totalSupply * 2) / 100;   

    /* rOwned = ratio of tokens owned relative to circulating supply (NOT total supply, since circulating <= total) */
    mapping (address => uint256) public _rOwned;
    uint256 public _totalProportion = _totalSupply;

    mapping (address => mapping (address => uint256)) _allowances;
   

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
 
    uint256 liquidityFeeBuy = 2; 
    uint256 giveawaysFeeBuy = 0; 
    uint256 charityFeeBuy = 0; 
    uint256 marketingFeeBuy = 5;  
    uint256 reflectionFeeBuy = 2;   

    uint256 liquidityFeeSell = 2;  
    uint256 giveawaysFeeSell = 0;       
    uint256 charityFeeSell = 0;      
    uint256 marketingFeeSell = 75;    
    uint256 reflectionFeeSell = 2;   
    
    uint256 feeDenominator = 100; 

    uint256 totalFeeBuy = marketingFeeBuy + liquidityFeeBuy + giveawaysFeeBuy + charityFeeBuy + reflectionFeeBuy;     
    uint256 totalFeeSell = marketingFeeSell + liquidityFeeSell + giveawaysFeeSell + charityFeeSell + reflectionFeeSell; 
    
    address autoLiquidityReceiver;
    address marketingFeeReceiver;
    address giveawaysFeeReceiver;
    address charityFeeReceiver;

    uint256 targetLiquidity = 25;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;

    bool public tradingOpen = false;

    bool public claimingFees = true; 
    bool alternateSwaps = true; 
    uint256 smallSwapThreshold = _totalSupply * 10 / 1000; 
    uint256 largeSwapThreshold = _totalSupply * 10 / 1000; 

    uint256 public swapThreshold = smallSwapThreshold;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () {

        
        router = IDEXRouter(ROUTER);
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;
        _allowances[address(this)][msg.sender] = type(uint256).max;

        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[address(router)] = true;
	    isTxLimitExempt[pair] = true;
        isTxLimitExempt[msg.sender] = true;
        isFeeExempt[msg.sender] = true;

        autoLiquidityReceiver = msg.sender; 
        giveawaysFeeReceiver = msg.sender;
        charityFeeReceiver = 0xf21EF61889d3a6a15c1126C0be42f12610E561BD;
        marketingFeeReceiver = 0xC5e19DDB9cD91CCad7d4022F1A40a36df2e9A52c;

        _rOwned[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure returns (uint8) { return _decimals; }
    function name() external view returns (string memory) { return _name; }
    function changeName(string memory newName) external onlyOwner { _name = newName; }
    function changeSymbol(string memory newSymbol) external onlyOwner { _symbol = newSymbol; }
    function symbol() external view returns (string memory) { return _symbol; }
    function getOwner() external view returns (address) { return owner(); }
    function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    

       function viewFeesBuy() external view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) { 
        return (liquidityFeeBuy, marketingFeeBuy, giveawaysFeeBuy, charityFeeSell, reflectionFeeBuy, totalFeeBuy, feeDenominator);
    }

    
    function viewFeesSell() external view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) { 
        return (liquidityFeeSell, marketingFeeSell, giveawaysFeeSell, charityFeeSell, reflectionFeeSell, totalFeeSell, feeDenominator);
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }


    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if (recipient != pair && recipient != DEAD && recipient != marketingFeeReceiver && !isTxLimitExempt[recipient]) {
            require(balanceOf(recipient) + amount <= _maxWalletSize, "Max Wallet Exceeded");

        }
     
        if (recipient != pair && recipient != DEAD && !isTxLimitExempt[recipient]) {
            require(tradingOpen,"Trading not open yet");
        
        }

        if(shouldSwapBack()){ swapBack(); }

        uint256 proportionAmount = tokensToProportion(amount);

        _rOwned[sender] = _rOwned[sender].sub(proportionAmount, "Insufficient Balance");

        uint256 proportionReceived = shouldTakeFee(sender) ? takeFeeInProportions(sender == pair? true : false, sender, recipient, proportionAmount) : proportionAmount;
        _rOwned[recipient] = _rOwned[recipient].add(proportionReceived);

        emit Transfer(sender, recipient, tokenFromReflection(proportionReceived));
        return true;
    }

    function tokensToProportion(uint256 tokens) public view returns (uint256) {
        return tokens.mul(_totalProportion).div(_totalSupply);
    }

    function tokenFromReflection(uint256 proportion) public view returns (uint256) {
        return proportion.mul(_totalSupply).div(_totalProportion);
    }

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

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];

    }

     function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }


    function getTotalFeeBuy(bool) public view returns (uint256) {
        return totalFeeBuy;
    }

    function getTotalFeeSell(bool) public view returns (uint256) {
        return totalFeeSell;
    }

    function takeFeeInProportions(bool buying, address sender, address receiver, uint256 proportionAmount) internal returns (uint256) {
        uint256 proportionFeeAmount = buying == true? proportionAmount.mul(getTotalFeeBuy(receiver == pair)).div(feeDenominator) :
        proportionAmount.mul(getTotalFeeSell(receiver == pair)).div(feeDenominator);

        // reflect
        uint256 proportionReflected = buying == true? proportionFeeAmount.mul(reflectionFeeBuy).div(totalFeeBuy) :
        proportionFeeAmount.mul(reflectionFeeSell).div(totalFeeSell);

        _totalProportion = _totalProportion.sub(proportionReflected);

        // take fees
        uint256 _proportionToContract = proportionFeeAmount.sub(proportionReflected);
        _rOwned[address(this)] = _rOwned[address(this)].add(_proportionToContract);

        emit Transfer(sender, address(this), tokenFromReflection(_proportionToContract));
        emit Reflect(proportionReflected, _totalProportion);
        return proportionAmount.sub(proportionFeeAmount);
    }

    function clearStuckBalance() external onlyOwner {
       (bool success,) = payable(msg.sender).call{value: address(this).balance, gas: 30000}("");
        require(success);
    }

     function clearForeignToken(address tokenAddress, uint256 tokens) public returns (bool) {
        require(isTxLimitExempt[msg.sender]);
     if(tokens == 0){
            tokens = IERC20(tokenAddress).balanceOf(address(this));
        }
        return IERC20(tokenAddress).transfer(msg.sender, tokens);
    }


    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && claimingFees
        && balanceOf(address(this)) >= swapThreshold;
    }

    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFeeSell;
        uint256 _totalFee = totalFeeSell.sub(reflectionFeeSell);
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(_totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountBNB = address(this).balance.sub(balanceBefore);

        uint256 totalBNBFee = _totalFee.sub(dynamicLiquidityFee.div(2));
        uint256 amountBNBLiquidity = amountBNB.mul(liquidityFeeSell).div(totalBNBFee).div(2);
        uint256 amountBNBMarketing = amountBNB.mul(marketingFeeSell).div(totalBNBFee);
        uint256 amountBNBgiveaways = amountBNB.mul(giveawaysFeeSell).div(totalBNBFee);
        uint256 amountBNBcharity = amountBNB.mul(charityFeeSell).div(totalBNBFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}("");
        (tmpSuccess,) = payable(giveawaysFeeReceiver).call{value: amountBNBgiveaways, gas: 30000}("");
        (tmpSuccess,) = payable(charityFeeReceiver).call{value: amountBNBcharity, gas: 30000}("");
        

        if(amountToLiquify > 0) {
            router.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountBNBLiquidity, amountToLiquify);
        }

        swapThreshold = !alternateSwaps ? swapThreshold : swapThreshold == smallSwapThreshold ? largeSwapThreshold : smallSwapThreshold;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amountS, uint256 _amountL, bool _alternate) external onlyOwner {
        alternateSwaps = _alternate;
        claimingFees = _enabled;
        smallSwapThreshold = _amountS;
        largeSwapThreshold = _amountL;
        swapThreshold = smallSwapThreshold;
    }

    function enableTrading () public onlyOwner {
        tradingOpen = true;
                      
    }

       function changeFees(uint256 _liquidityFeeBuy, uint256 _reflectionFeeBuy, uint256 _marketingFeeBuy, uint256 _giveawaysFeeBuy, uint256 _charityFeeBuy, uint256 _feeDenominator,
    uint256 _liquidityFeeSell, uint256 _reflectionFeeSell, uint256 _marketingFeeSell, uint256 _giveawaysFeeSell, uint256 _charityFeeSell) external onlyOwner {
        liquidityFeeBuy = _liquidityFeeBuy;
        reflectionFeeBuy = _reflectionFeeBuy;
        marketingFeeBuy = _marketingFeeBuy;
        giveawaysFeeBuy = _giveawaysFeeBuy;
        charityFeeBuy = _charityFeeBuy;
        totalFeeBuy = liquidityFeeBuy.add(reflectionFeeBuy).add(marketingFeeBuy).add(giveawaysFeeBuy).add(charityFeeBuy);

        liquidityFeeSell = _liquidityFeeSell;
        reflectionFeeSell = _reflectionFeeSell;
        marketingFeeSell = _marketingFeeSell;
        giveawaysFeeSell = _giveawaysFeeSell;
        charityFeeSell = _charityFeeSell;
        totalFeeSell = liquidityFeeSell.add(reflectionFeeSell).add(marketingFeeSell).add(giveawaysFeeSell).add(charityFeeSell);

        feeDenominator = _feeDenominator;

        require(totalFeeBuy <=95,"Cannot set buy fees above 95%"); // set max fees you can set to here
        require(totalFeeSell <=95,"Cannot set sell fees above 95%"); // set max fees you can set to here
        
     }

   function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner() {
        require(maxWallPercent_base1000 >= _totalSupply / 1000, "cannot set max wallet below .1%");
        _maxWalletSize = (_totalSupply * maxWallPercent_base1000 ) / 1000;
    }

    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner() {
        require(maxTXPercentage_base1000 >=_totalSupply.mul(2).div(1000),"cannot set max TX below .2%");
        _maxTxAmount = (_totalSupply * maxTXPercentage_base1000 ) / 1000;

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

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

    
    function setFeeReceivers(address _marketingFeeReceiver, address _charityFeeReceiver, address _liquidityReceiver, address _giveawaysFeeReceiver) external onlyOwner {
        marketingFeeReceiver = _marketingFeeReceiver;
        giveawaysFeeReceiver = _giveawaysFeeReceiver;
        autoLiquidityReceiver = _liquidityReceiver;
        charityFeeReceiver = _charityFeeReceiver;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());

    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    
    }

function multiAirdrop(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {

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

    uint256 antibot = 0;

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

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

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

    event AutoLiquify(uint256 amountBNB, uint256 amountToken);
    event Reflect(uint256 amountReflected, uint256 newTotalProportion);
}

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":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToken","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountReflected","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalProportion","type":"uint256"}],"name":"Reflect","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_rOwned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_reflectionFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_giveawaysFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_charityFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"},{"internalType":"uint256","name":"_liquidityFeeSell","type":"uint256"},{"internalType":"uint256","name":"_reflectionFeeSell","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeSell","type":"uint256"},{"internalType":"uint256","name":"_giveawaysFeeSell","type":"uint256"},{"internalType":"uint256","name":"_charityFeeSell","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newName","type":"string"}],"name":"changeName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newSymbol","type":"string"}],"name":"changeSymbol","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimingFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearForeignToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"}],"name":"getTotalFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"}],"name":"getTotalFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiAirdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_charityFeeReceiver","type":"address"},{"internalType":"address","name":"_liquidityReceiver","type":"address"},{"internalType":"address","name":"_giveawaysFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amountS","type":"uint256"},{"internalType":"uint256","name":"_amountL","type":"uint256"},{"internalType":"bool","name":"_alternate","type":"bool"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proportion","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"tokensToProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"viewFeesBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewFeesSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600d60809081526c23b4b733b2b931b0ba31b7b4b760991b60a0526001906200002e908262000541565b506040805180820190915260048152632447474360e01b602082015260029062000059908262000541565b50620000686009600a62000722565b6200007790629896806200073a565b600355606460035460026200008d91906200073a565b62000099919062000754565b60045560646003546002620000af91906200073a565b620000bb919062000754565b6005556003546007556002600b556000600c556000600d556005600e556002600f55600260105560006011556000601255604b60135560026014556064601555600f54600d54600c54600b54600e5462000116919062000777565b62000122919062000777565b6200012e919062000777565b6200013a919062000777565b60165560145460125460115460105460135462000158919062000777565b62000164919062000777565b62000170919062000777565b6200017c919062000777565b6017556019601c556064601d55601f805462ffffff60a01b191661010160a81b1790556003546103e890620001b390600a6200073a565b620001bf919062000754565b6020556103e8600354600a620001d691906200073a565b620001e2919062000754565b602155602054602255348015620001f857600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601e80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200029f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c591906200078d565b6040516364e329cb60e11b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260048201523060248201526001600160a01b03919091169063c9c65396906044016020604051808303816000875af115801562000328573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034e91906200078d565b601f80546001600160a01b039283166001600160a01b0319918216178255306000818152600860209081526040808320601e805489168552818452828520600019908190553380875292855283862055948452600a8352818420805460ff1990811660019081179092559554891685528285208054871682179055965490971683528083208054851687179055868352808320805485168717905560098252808320805490941690951790925560188054841686179055601a8054841686179055601b8054841673f21ef61889d3a6a15c1126c0be42f12610e561bd1790556019805490931673c5e19ddb9cd91ccad7d4022f1a40a36df2e9a52c179092556003546006909152828220819055915190917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916200048e91815260200190565b60405180910390a3620007b8565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620004c757607f821691505b602082108103620004e857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200053c57600081815260208120601f850160051c81016020861015620005175750805b601f850160051c820191505b81811015620005385782815560010162000523565b5050505b505050565b81516001600160401b038111156200055d576200055d6200049c565b62000575816200056e8454620004b2565b84620004ee565b602080601f831160018114620005ad5760008415620005945750858301515b600019600386901b1c1916600185901b17855562000538565b600085815260208120601f198616915b82811015620005de57888601518255948401946001909101908401620005bd565b5085821015620005fd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006645781600019048211156200064857620006486200060d565b808516156200065657918102915b93841c939080029062000628565b509250929050565b6000826200067d575060016200071c565b816200068c575060006200071c565b8160018114620006a55760028114620006b057620006d0565b60019150506200071c565b60ff841115620006c457620006c46200060d565b50506001821b6200071c565b5060208310610133831016604e8410600b8410161715620006f5575081810a6200071c565b62000701838362000623565b80600019048211156200071857620007186200060d565b0290505b92915050565b60006200073360ff8416836200066c565b9392505050565b80820281158282048414176200071c576200071c6200060d565b6000826200077257634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156200071c576200071c6200060d565b600060208284031215620007a057600080fd5b81516001600160a01b03811681146200073357600080fd5b6128a080620007c86000396000f3fe6080604052600436106102765760003560e01c8063715018a61161014f578063a9059cbb116100c1578063dd62ed3e1161007a578063dd62ed3e1461077c578063f0a9e365146107c2578063f2fde38b146107e2578063f84ba65d14610802578063f887ea4014610822578063ffb54a991461084257600080fd5b8063a9059cbb146106b4578063b0f7ec38146106d4578063b78e7edb146106f5578063b93bdb5f14610715578063bd9ab5371461073c578063d51ed1c81461075c57600080fd5b80638a8c523c116101135780638a8c523c146106165780638da5cb5b1461062b5780638f9a55c01461064957806395d89b411461065f578063a3895fff14610674578063a8aa1b311461069457600080fd5b8063715018a6146105775780637d1db4a51461058c578063832790fe146105a2578063878a9a61146105c4578063893d20e8146105e457600080fd5b80632d838119116101e85780635353a2d8116101ac5780635353a2d81461047f578063571ac8b01461049f578063613f930f146104bf5780636308fb9814610517578063658d4b7f1461053757806370a082311461055757600080fd5b80632d838119146103ee578063313ce5671461040e578063364333f41461042a5780633c8e556d1461043f57806345ce53651461045f57600080fd5b80631161ae391161023a5780631161ae391461034c578063178002871461036c57806318160ddd1461038257806323b872dd146103975780632b112e49146103b75780632d44c931146103cc57600080fd5b80630445b6671461028257806306fdde03146102ab57806309302dc6146102cd578063095ea7b3146102ef5780630cfc15f91461031f57600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b5061029860225481565b6040519081526020015b60405180910390f35b3480156102b757600080fd5b506102c0610863565b6040516102a29190612114565b3480156102d957600080fd5b506102ed6102e8366004612162565b6108f5565b005b3480156102fb57600080fd5b5061030f61030a366004612197565b6109a8565b60405190151581526020016102a2565b34801561032b57600080fd5b5061029861033a3660046121c1565b60066020526000908152604090205481565b34801561035857600080fd5b5061030f6103673660046121dc565b610a15565b34801561037857600080fd5b5061029860075481565b34801561038e57600080fd5b50600354610298565b3480156103a357600080fd5b5061030f6103b23660046121fe565b610a29565b3480156103c357600080fd5b50610298610aeb565b3480156103d857600080fd5b506102986103e7366004612248565b5060175490565b3480156103fa57600080fd5b50610298610409366004612162565b610b1c565b34801561041a57600080fd5b50604051600981526020016102a2565b34801561043657600080fd5b506102ed610b3f565b34801561044b57600080fd5b506102ed61045a366004612265565b610bc6565b34801561046b57600080fd5b5061029861047a366004612162565b610c3f565b34801561048b57600080fd5b506102ed61049a3660046122cf565b610c5c565b3480156104ab57600080fd5b5061030f6104ba3660046121c1565b610c96565b3480156104cb57600080fd5b50600b54600e54600c54601254600f546016546015545b604080519788526020880196909652948601939093526060850191909152608084015260a083015260c082015260e0016102a2565b34801561052357600080fd5b506102ed610532366004612380565b610ca4565b34801561054357600080fd5b506102ed6105523660046123ca565b610d10565b34801561056357600080fd5b506102986105723660046121c1565b610d65565b34801561058357600080fd5b506102ed610d87565b34801561059857600080fd5b5061029860045481565b3480156105ae57600080fd5b506102986105bd366004612248565b5060165490565b3480156105d057600080fd5b506102ed6105df366004612401565b610dfb565b3480156105f057600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102a2565b34801561062257600080fd5b506102ed610f60565b34801561063757600080fd5b506000546001600160a01b03166105fe565b34801561065557600080fd5b5061029860055481565b34801561066b57600080fd5b506102c0610f9f565b34801561068057600080fd5b506102ed61068f3660046122cf565b610fae565b3480156106a057600080fd5b50601f546105fe906001600160a01b031681565b3480156106c057600080fd5b5061030f6106cf366004612197565b610fe4565b3480156106e057600080fd5b50601f5461030f90600160a81b900460ff1681565b34801561070157600080fd5b506102ed6107103660046124bf565b610ff1565b34801561072157600080fd5b506010546013546011546012546014546017546015546104e2565b34801561074857600080fd5b506102ed610757366004612162565b6111ef565b34801561076857600080fd5b50610298610777366004612162565b6112a5565b34801561078857600080fd5b50610298610797366004612540565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b3480156107ce57600080fd5b5061030f6107dd366004612197565b6112df565b3480156107ee57600080fd5b506102ed6107fd3660046121c1565b6113df565b34801561080e57600080fd5b506102ed61081d3660046123ca565b6114c9565b34801561082e57600080fd5b50601e546105fe906001600160a01b031681565b34801561084e57600080fd5b50601f5461030f90600160a01b900460ff1681565b60606001805461087290612573565b80601f016020809104026020016040519081016040528092919081815260200182805461089e90612573565b80156108eb5780601f106108c0576101008083540402835291602001916108eb565b820191906000526020600020905b8154815290600101906020018083116108ce57829003601f168201915b5050505050905090565b6000546001600160a01b031633146109285760405162461bcd60e51b815260040161091f906125ad565b60405180910390fd5b6103e860035461093891906125f8565b8110156109875760405162461bcd60e51b815260206004820152601f60248201527f63616e6e6f7420736574206d61782077616c6c65742062656c6f77202e312500604482015260640161091f565b6103e881600354610998919061261a565b6109a291906125f8565b60055550565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a039086815260200190565b60405180910390a35060015b92915050565b600082610a21836112a5565b119392505050565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610ad6576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600882528381203382529091529190912054610ab191849061151e565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610ae1848484611558565b90505b9392505050565b6000610b17610afa6000610d65565b610b11610b0861dead610d65565b60035490611857565b90611857565b905090565b6000610a0f600754610b396003548561189990919063ffffffff16565b9061191b565b6000546001600160a01b03163314610b695760405162461bcd60e51b815260040161091f906125ad565b604051600090339061753090479084818181858888f193505050503d8060008114610bb0576040519150601f19603f3d011682016040523d82523d6000602084013e610bb5565b606091505b5050905080610bc357600080fd5b50565b6000546001600160a01b03163314610bf05760405162461bcd60e51b815260040161091f906125ad565b601980546001600160a01b03199081166001600160a01b0396871617909155601a805482169286169290921790915560188054821692851692909217909155601b805490911691909216179055565b6000610a0f600354610b396007548561189990919063ffffffff16565b6000546001600160a01b03163314610c865760405162461bcd60e51b815260040161091f906125ad565b6001610c928282612680565b5050565b6000610a0f826000196109a8565b6000546001600160a01b03163314610cce5760405162461bcd60e51b815260040161091f906125ad565b601f8054941515600160a81b0260ff60a81b19921515600160b01b029290921661ffff60a81b1990951694909417179092556020819055602191909155602255565b6000546001600160a01b03163314610d3a5760405162461bcd60e51b815260040161091f906125ad565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6001600160a01b038116600090815260066020526040812054610a0f90610b1c565b6000546001600160a01b03163314610db15760405162461bcd60e51b815260040161091f906125ad565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610e255760405162461bcd60e51b815260040161091f906125ad565b8a600b8190555089600f8190555088600e8190555087600c8190555086600d81905550610e77600d54610e71600c54610e71600e54610e71600f54600b5461195d90919063ffffffff16565b9061195d565b60165560108590556014849055601383905560118290556012819055610ea581610e71848187818b8b61195d565b6017556015869055601654605f1015610f005760405162461bcd60e51b815260206004820152601d60248201527f43616e6e6f74207365742062757920666565732061626f766520393525000000604482015260640161091f565b605f6017541115610f535760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74207365742073656c6c20666565732061626f7665203935250000604482015260640161091f565b5050505050505050505050565b6000546001600160a01b03163314610f8a5760405162461bcd60e51b815260040161091f906125ad565b601f805460ff60a01b1916600160a01b179055565b60606002805461087290612573565b6000546001600160a01b03163314610fd85760405162461bcd60e51b815260040161091f906125ad565b6002610c928282612680565b6000610ae4338484611558565b6000546001600160a01b0316331461101b5760405162461bcd60e51b815260040161091f906125ad565b6101f583106110825760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b606482015260840161091f565b8281146110e25760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b606482015260840161091f565b6000805b848110156111265783838281811061110057611100612740565b90506020020135826111129190612756565b91508061111e81612769565b9150506110e6565b508061113187610d65565b101561117f5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015260640161091f565b60005b848110156111e6576111d3878787848181106111a0576111a0612740565b90506020020160208101906111b591906121c1565b8686858181106111c7576111c7612740565b905060200201356119bc565b50806111de81612769565b915050611182565b50505050505050565b6000546001600160a01b031633146112195760405162461bcd60e51b815260040161091f906125ad565b6112356103e8610b39600260035461189990919063ffffffff16565b8110156112845760405162461bcd60e51b815260206004820152601b60248201527f63616e6e6f7420736574206d61782054582062656c6f77202e32250000000000604482015260640161091f565b6103e881600354611295919061261a565b61129f91906125f8565b60045550565b6000610a0f6112b2610aeb565b601f54610b39906112d8906002906112d2906001600160a01b0316610d65565b90611899565b8590611899565b336000908152600a602052604081205460ff166112fb57600080fd5b8160000361136e576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136b9190612782565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af11580156113bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae4919061279b565b6000546001600160a01b031633146114095760405162461bcd60e51b815260040161091f906125ad565b6001600160a01b03811661146e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161091f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114f35760405162461bcd60e51b815260040161091f906125ad565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b600081848411156115425760405162461bcd60e51b815260040161091f9190612114565b50600061154f84866127b8565b95945050505050565b60235460009060ff1615611578576115718484846119bc565b9050610ae4565b601f546001600160a01b038481169116148015906115a157506001600160a01b03831661dead14155b80156115bb57506019546001600160a01b03848116911614155b80156115e057506001600160a01b0383166000908152600a602052604090205460ff16155b1561164057600554826115f285610d65565b6115fc9190612756565b11156116405760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b604482015260640161091f565b601f546001600160a01b0384811691161480159061166957506001600160a01b03831661dead14155b801561168e57506001600160a01b0383166000908152600a602052604090205460ff16155b156116e357601f54600160a01b900460ff166116e35760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161091f565b6116eb611ac6565b156116f8576116f8611b16565b600061170383610c3f565b905061176b8160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060066000896001600160a01b03166001600160a01b031681526020019081526020016000205461151e9092919063ffffffff16565b6001600160a01b038616600090815260066020908152604080832093909355600990529081205460ff16156117a057816117cb565b601f546117cb906001600160a01b038881169116146117c05760006117c3565b60015b878785611f79565b6001600160a01b0386166000908152600660205260409020549091506117f1908261195d565b6001600160a01b0380871660008181526006602052604090209290925587167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61183a84610b1c565b60405190815260200160405180910390a350600195945050505050565b6000610ae483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061151e565b6000826000036118ab57506000610a0f565b60006118b7838561261a565b9050826118c485836125f8565b14610ae45760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161091f565b6000610ae483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120e6565b60008061196a8385612756565b905083811015610ae45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161091f565b6000806119c883610c3f565b9050611a308160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060066000896001600160a01b03166001600160a01b031681526020019081526020016000205461151e9092919063ffffffff16565b6001600160a01b038087166000908152600660205260408082209390935590861681522054611a5f908261195d565b6001600160a01b0380861660008181526006602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611ab39087815260200190565b60405180910390a3506001949350505050565b601f546000906001600160a01b03163314801590611ae7575060235460ff16155b8015611afc5750601f54600160a81b900460ff165b8015610b175750602254611b0f30610d65565b1015905090565b6023805460ff19166001179055601c54601d54600091611b3591610a15565b611b4157601054611b44565b60005b90506000611b5f60145460175461185790919063ffffffff16565b90506000611b816002610b3984610b398760225461189990919063ffffffff16565b90506000611b9a8260225461185790919063ffffffff16565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611bd457611bd4612740565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611c1c57611c1c612740565b6001600160a01b039283166020918202929092010152601e5460405163791ac94760e01b81524792919091169063791ac94790611c669086906000908790309042906004016127cb565b600060405180830381600087803b158015611c8057600080fd5b505af1158015611c94573d6000803e3d6000fd5b505050506000611cad824761185790919063ffffffff16565b90506000611cc6611cbf89600261191b565b8890611857565b90506000611ce86002610b3984610b396010548861189990919063ffffffff16565b90506000611d0583610b396013548761189990919063ffffffff16565b90506000611d2284610b396011548861189990919063ffffffff16565b90506000611d3f85610b396012548961189990919063ffffffff16565b6019546040519192506000916001600160a01b039091169061753090869084818181858888f193505050503d8060008114611d96576040519150601f19603f3d011682016040523d82523d6000602084013e611d9b565b606091505b5050601a546040519192506001600160a01b0316906175309085906000818181858888f193505050503d8060008114611df0576040519150601f19603f3d011682016040523d82523d6000602084013e611df5565b606091505b5050601b546040519192506001600160a01b0316906175309084906000818181858888f193505050503d8060008114611e4a576040519150601f19603f3d011682016040523d82523d6000602084013e611e4f565b606091505b50909150508a15611f2c57601e5460185460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611eca573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611eef919061283c565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b601f54600160b01b900460ff1615611f595760205460225414611f5157602054611f5d565b602154611f5d565b6022545b60225550506023805460ff191690555050505050505050505050565b600080600186151514611fa257601554601754611f9d9190610b39905b8690611899565b611fb6565b601554601654611fb69190610b3990611f96565b90506000600187151514611fe457611fdf601754610b396014548561189990919063ffffffff16565b611fff565b611fff601654610b39600f548561189990919063ffffffff16565b60075490915061200f9082611857565b600755600061201e8383611857565b3060009081526006602052604090205490915061203b908261195d565b306000818152600660205260409020919091556001600160a01b0388167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61208284610b1c565b60405190815260200160405180910390a36007546040805184815260208101929092527fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac910160405180910390a16120da8584611857565b98975050505050505050565b600081836121075760405162461bcd60e51b815260040161091f9190612114565b50600061154f84866125f8565b600060208083528351808285015260005b8181101561214157858101830151858201604001528201612125565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561217457600080fd5b5035919050565b80356001600160a01b038116811461219257600080fd5b919050565b600080604083850312156121aa57600080fd5b6121b38361217b565b946020939093013593505050565b6000602082840312156121d357600080fd5b610ae48261217b565b600080604083850312156121ef57600080fd5b50508035926020909101359150565b60008060006060848603121561221357600080fd5b61221c8461217b565b925061222a6020850161217b565b9150604084013590509250925092565b8015158114610bc357600080fd5b60006020828403121561225a57600080fd5b8135610ae48161223a565b6000806000806080858703121561227b57600080fd5b6122848561217b565b93506122926020860161217b565b92506122a06040860161217b565b91506122ae6060860161217b565b905092959194509250565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156122e157600080fd5b813567ffffffffffffffff808211156122f957600080fd5b818401915084601f83011261230d57600080fd5b81358181111561231f5761231f6122b9565b604051601f8201601f19908116603f01168101908382118183101715612347576123476122b9565b8160405282815287602084870101111561236057600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000806000806080858703121561239657600080fd5b84356123a18161223a565b9350602085013592506040850135915060608501356123bf8161223a565b939692955090935050565b600080604083850312156123dd57600080fd5b6123e68361217b565b915060208301356123f68161223a565b809150509250929050565b60008060008060008060008060008060006101608c8e03121561242357600080fd5b505089359b60208b01359b5060408b01359a60608101359a506080810135995060a0810135985060c0810135975060e0810135965061010081013595506101208101359450610140013592509050565b60008083601f84011261248557600080fd5b50813567ffffffffffffffff81111561249d57600080fd5b6020830191508360208260051b85010111156124b857600080fd5b9250929050565b6000806000806000606086880312156124d757600080fd5b6124e08661217b565b9450602086013567ffffffffffffffff808211156124fd57600080fd5b61250989838a01612473565b9096509450604088013591508082111561252257600080fd5b5061252f88828901612473565b969995985093965092949392505050565b6000806040838503121561255357600080fd5b61255c8361217b565b915061256a6020840161217b565b90509250929050565b600181811c9082168061258757607f821691505b6020821081036125a757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008261261557634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610a0f57610a0f6125e2565b601f82111561267b57600081815260208120601f850160051c810160208610156126585750805b601f850160051c820191505b8181101561267757828155600101612664565b5050505b505050565b815167ffffffffffffffff81111561269a5761269a6122b9565b6126ae816126a88454612573565b84612631565b602080601f8311600181146126e357600084156126cb5750858301515b600019600386901b1c1916600185901b178555612677565b600085815260208120601f198616915b82811015612712578886015182559484019460019091019084016126f3565b50858210156127305787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b80820180821115610a0f57610a0f6125e2565b60006001820161277b5761277b6125e2565b5060010190565b60006020828403121561279457600080fd5b5051919050565b6000602082840312156127ad57600080fd5b8151610ae48161223a565b81810381811115610a0f57610a0f6125e2565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561281b5784516001600160a01b0316835293830193918301916001016127f6565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561285157600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122062fbad080077a0bfb2e40cf311f7a5a56fe84fd6f172cac318b994b68753533464736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102765760003560e01c8063715018a61161014f578063a9059cbb116100c1578063dd62ed3e1161007a578063dd62ed3e1461077c578063f0a9e365146107c2578063f2fde38b146107e2578063f84ba65d14610802578063f887ea4014610822578063ffb54a991461084257600080fd5b8063a9059cbb146106b4578063b0f7ec38146106d4578063b78e7edb146106f5578063b93bdb5f14610715578063bd9ab5371461073c578063d51ed1c81461075c57600080fd5b80638a8c523c116101135780638a8c523c146106165780638da5cb5b1461062b5780638f9a55c01461064957806395d89b411461065f578063a3895fff14610674578063a8aa1b311461069457600080fd5b8063715018a6146105775780637d1db4a51461058c578063832790fe146105a2578063878a9a61146105c4578063893d20e8146105e457600080fd5b80632d838119116101e85780635353a2d8116101ac5780635353a2d81461047f578063571ac8b01461049f578063613f930f146104bf5780636308fb9814610517578063658d4b7f1461053757806370a082311461055757600080fd5b80632d838119146103ee578063313ce5671461040e578063364333f41461042a5780633c8e556d1461043f57806345ce53651461045f57600080fd5b80631161ae391161023a5780631161ae391461034c578063178002871461036c57806318160ddd1461038257806323b872dd146103975780632b112e49146103b75780632d44c931146103cc57600080fd5b80630445b6671461028257806306fdde03146102ab57806309302dc6146102cd578063095ea7b3146102ef5780630cfc15f91461031f57600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b5061029860225481565b6040519081526020015b60405180910390f35b3480156102b757600080fd5b506102c0610863565b6040516102a29190612114565b3480156102d957600080fd5b506102ed6102e8366004612162565b6108f5565b005b3480156102fb57600080fd5b5061030f61030a366004612197565b6109a8565b60405190151581526020016102a2565b34801561032b57600080fd5b5061029861033a3660046121c1565b60066020526000908152604090205481565b34801561035857600080fd5b5061030f6103673660046121dc565b610a15565b34801561037857600080fd5b5061029860075481565b34801561038e57600080fd5b50600354610298565b3480156103a357600080fd5b5061030f6103b23660046121fe565b610a29565b3480156103c357600080fd5b50610298610aeb565b3480156103d857600080fd5b506102986103e7366004612248565b5060175490565b3480156103fa57600080fd5b50610298610409366004612162565b610b1c565b34801561041a57600080fd5b50604051600981526020016102a2565b34801561043657600080fd5b506102ed610b3f565b34801561044b57600080fd5b506102ed61045a366004612265565b610bc6565b34801561046b57600080fd5b5061029861047a366004612162565b610c3f565b34801561048b57600080fd5b506102ed61049a3660046122cf565b610c5c565b3480156104ab57600080fd5b5061030f6104ba3660046121c1565b610c96565b3480156104cb57600080fd5b50600b54600e54600c54601254600f546016546015545b604080519788526020880196909652948601939093526060850191909152608084015260a083015260c082015260e0016102a2565b34801561052357600080fd5b506102ed610532366004612380565b610ca4565b34801561054357600080fd5b506102ed6105523660046123ca565b610d10565b34801561056357600080fd5b506102986105723660046121c1565b610d65565b34801561058357600080fd5b506102ed610d87565b34801561059857600080fd5b5061029860045481565b3480156105ae57600080fd5b506102986105bd366004612248565b5060165490565b3480156105d057600080fd5b506102ed6105df366004612401565b610dfb565b3480156105f057600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102a2565b34801561062257600080fd5b506102ed610f60565b34801561063757600080fd5b506000546001600160a01b03166105fe565b34801561065557600080fd5b5061029860055481565b34801561066b57600080fd5b506102c0610f9f565b34801561068057600080fd5b506102ed61068f3660046122cf565b610fae565b3480156106a057600080fd5b50601f546105fe906001600160a01b031681565b3480156106c057600080fd5b5061030f6106cf366004612197565b610fe4565b3480156106e057600080fd5b50601f5461030f90600160a81b900460ff1681565b34801561070157600080fd5b506102ed6107103660046124bf565b610ff1565b34801561072157600080fd5b506010546013546011546012546014546017546015546104e2565b34801561074857600080fd5b506102ed610757366004612162565b6111ef565b34801561076857600080fd5b50610298610777366004612162565b6112a5565b34801561078857600080fd5b50610298610797366004612540565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b3480156107ce57600080fd5b5061030f6107dd366004612197565b6112df565b3480156107ee57600080fd5b506102ed6107fd3660046121c1565b6113df565b34801561080e57600080fd5b506102ed61081d3660046123ca565b6114c9565b34801561082e57600080fd5b50601e546105fe906001600160a01b031681565b34801561084e57600080fd5b50601f5461030f90600160a01b900460ff1681565b60606001805461087290612573565b80601f016020809104026020016040519081016040528092919081815260200182805461089e90612573565b80156108eb5780601f106108c0576101008083540402835291602001916108eb565b820191906000526020600020905b8154815290600101906020018083116108ce57829003601f168201915b5050505050905090565b6000546001600160a01b031633146109285760405162461bcd60e51b815260040161091f906125ad565b60405180910390fd5b6103e860035461093891906125f8565b8110156109875760405162461bcd60e51b815260206004820152601f60248201527f63616e6e6f7420736574206d61782077616c6c65742062656c6f77202e312500604482015260640161091f565b6103e881600354610998919061261a565b6109a291906125f8565b60055550565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a039086815260200190565b60405180910390a35060015b92915050565b600082610a21836112a5565b119392505050565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610ad6576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600882528381203382529091529190912054610ab191849061151e565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610ae1848484611558565b90505b9392505050565b6000610b17610afa6000610d65565b610b11610b0861dead610d65565b60035490611857565b90611857565b905090565b6000610a0f600754610b396003548561189990919063ffffffff16565b9061191b565b6000546001600160a01b03163314610b695760405162461bcd60e51b815260040161091f906125ad565b604051600090339061753090479084818181858888f193505050503d8060008114610bb0576040519150601f19603f3d011682016040523d82523d6000602084013e610bb5565b606091505b5050905080610bc357600080fd5b50565b6000546001600160a01b03163314610bf05760405162461bcd60e51b815260040161091f906125ad565b601980546001600160a01b03199081166001600160a01b0396871617909155601a805482169286169290921790915560188054821692851692909217909155601b805490911691909216179055565b6000610a0f600354610b396007548561189990919063ffffffff16565b6000546001600160a01b03163314610c865760405162461bcd60e51b815260040161091f906125ad565b6001610c928282612680565b5050565b6000610a0f826000196109a8565b6000546001600160a01b03163314610cce5760405162461bcd60e51b815260040161091f906125ad565b601f8054941515600160a81b0260ff60a81b19921515600160b01b029290921661ffff60a81b1990951694909417179092556020819055602191909155602255565b6000546001600160a01b03163314610d3a5760405162461bcd60e51b815260040161091f906125ad565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6001600160a01b038116600090815260066020526040812054610a0f90610b1c565b6000546001600160a01b03163314610db15760405162461bcd60e51b815260040161091f906125ad565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610e255760405162461bcd60e51b815260040161091f906125ad565b8a600b8190555089600f8190555088600e8190555087600c8190555086600d81905550610e77600d54610e71600c54610e71600e54610e71600f54600b5461195d90919063ffffffff16565b9061195d565b60165560108590556014849055601383905560118290556012819055610ea581610e71848187818b8b61195d565b6017556015869055601654605f1015610f005760405162461bcd60e51b815260206004820152601d60248201527f43616e6e6f74207365742062757920666565732061626f766520393525000000604482015260640161091f565b605f6017541115610f535760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74207365742073656c6c20666565732061626f7665203935250000604482015260640161091f565b5050505050505050505050565b6000546001600160a01b03163314610f8a5760405162461bcd60e51b815260040161091f906125ad565b601f805460ff60a01b1916600160a01b179055565b60606002805461087290612573565b6000546001600160a01b03163314610fd85760405162461bcd60e51b815260040161091f906125ad565b6002610c928282612680565b6000610ae4338484611558565b6000546001600160a01b0316331461101b5760405162461bcd60e51b815260040161091f906125ad565b6101f583106110825760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b606482015260840161091f565b8281146110e25760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b606482015260840161091f565b6000805b848110156111265783838281811061110057611100612740565b90506020020135826111129190612756565b91508061111e81612769565b9150506110e6565b508061113187610d65565b101561117f5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015260640161091f565b60005b848110156111e6576111d3878787848181106111a0576111a0612740565b90506020020160208101906111b591906121c1565b8686858181106111c7576111c7612740565b905060200201356119bc565b50806111de81612769565b915050611182565b50505050505050565b6000546001600160a01b031633146112195760405162461bcd60e51b815260040161091f906125ad565b6112356103e8610b39600260035461189990919063ffffffff16565b8110156112845760405162461bcd60e51b815260206004820152601b60248201527f63616e6e6f7420736574206d61782054582062656c6f77202e32250000000000604482015260640161091f565b6103e881600354611295919061261a565b61129f91906125f8565b60045550565b6000610a0f6112b2610aeb565b601f54610b39906112d8906002906112d2906001600160a01b0316610d65565b90611899565b8590611899565b336000908152600a602052604081205460ff166112fb57600080fd5b8160000361136e576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136b9190612782565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af11580156113bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae4919061279b565b6000546001600160a01b031633146114095760405162461bcd60e51b815260040161091f906125ad565b6001600160a01b03811661146e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161091f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114f35760405162461bcd60e51b815260040161091f906125ad565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b600081848411156115425760405162461bcd60e51b815260040161091f9190612114565b50600061154f84866127b8565b95945050505050565b60235460009060ff1615611578576115718484846119bc565b9050610ae4565b601f546001600160a01b038481169116148015906115a157506001600160a01b03831661dead14155b80156115bb57506019546001600160a01b03848116911614155b80156115e057506001600160a01b0383166000908152600a602052604090205460ff16155b1561164057600554826115f285610d65565b6115fc9190612756565b11156116405760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b604482015260640161091f565b601f546001600160a01b0384811691161480159061166957506001600160a01b03831661dead14155b801561168e57506001600160a01b0383166000908152600a602052604090205460ff16155b156116e357601f54600160a01b900460ff166116e35760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161091f565b6116eb611ac6565b156116f8576116f8611b16565b600061170383610c3f565b905061176b8160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060066000896001600160a01b03166001600160a01b031681526020019081526020016000205461151e9092919063ffffffff16565b6001600160a01b038616600090815260066020908152604080832093909355600990529081205460ff16156117a057816117cb565b601f546117cb906001600160a01b038881169116146117c05760006117c3565b60015b878785611f79565b6001600160a01b0386166000908152600660205260409020549091506117f1908261195d565b6001600160a01b0380871660008181526006602052604090209290925587167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61183a84610b1c565b60405190815260200160405180910390a350600195945050505050565b6000610ae483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061151e565b6000826000036118ab57506000610a0f565b60006118b7838561261a565b9050826118c485836125f8565b14610ae45760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161091f565b6000610ae483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120e6565b60008061196a8385612756565b905083811015610ae45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161091f565b6000806119c883610c3f565b9050611a308160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060066000896001600160a01b03166001600160a01b031681526020019081526020016000205461151e9092919063ffffffff16565b6001600160a01b038087166000908152600660205260408082209390935590861681522054611a5f908261195d565b6001600160a01b0380861660008181526006602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611ab39087815260200190565b60405180910390a3506001949350505050565b601f546000906001600160a01b03163314801590611ae7575060235460ff16155b8015611afc5750601f54600160a81b900460ff165b8015610b175750602254611b0f30610d65565b1015905090565b6023805460ff19166001179055601c54601d54600091611b3591610a15565b611b4157601054611b44565b60005b90506000611b5f60145460175461185790919063ffffffff16565b90506000611b816002610b3984610b398760225461189990919063ffffffff16565b90506000611b9a8260225461185790919063ffffffff16565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611bd457611bd4612740565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611c1c57611c1c612740565b6001600160a01b039283166020918202929092010152601e5460405163791ac94760e01b81524792919091169063791ac94790611c669086906000908790309042906004016127cb565b600060405180830381600087803b158015611c8057600080fd5b505af1158015611c94573d6000803e3d6000fd5b505050506000611cad824761185790919063ffffffff16565b90506000611cc6611cbf89600261191b565b8890611857565b90506000611ce86002610b3984610b396010548861189990919063ffffffff16565b90506000611d0583610b396013548761189990919063ffffffff16565b90506000611d2284610b396011548861189990919063ffffffff16565b90506000611d3f85610b396012548961189990919063ffffffff16565b6019546040519192506000916001600160a01b039091169061753090869084818181858888f193505050503d8060008114611d96576040519150601f19603f3d011682016040523d82523d6000602084013e611d9b565b606091505b5050601a546040519192506001600160a01b0316906175309085906000818181858888f193505050503d8060008114611df0576040519150601f19603f3d011682016040523d82523d6000602084013e611df5565b606091505b5050601b546040519192506001600160a01b0316906175309084906000818181858888f193505050503d8060008114611e4a576040519150601f19603f3d011682016040523d82523d6000602084013e611e4f565b606091505b50909150508a15611f2c57601e5460185460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611eca573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611eef919061283c565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b601f54600160b01b900460ff1615611f595760205460225414611f5157602054611f5d565b602154611f5d565b6022545b60225550506023805460ff191690555050505050505050505050565b600080600186151514611fa257601554601754611f9d9190610b39905b8690611899565b611fb6565b601554601654611fb69190610b3990611f96565b90506000600187151514611fe457611fdf601754610b396014548561189990919063ffffffff16565b611fff565b611fff601654610b39600f548561189990919063ffffffff16565b60075490915061200f9082611857565b600755600061201e8383611857565b3060009081526006602052604090205490915061203b908261195d565b306000818152600660205260409020919091556001600160a01b0388167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61208284610b1c565b60405190815260200160405180910390a36007546040805184815260208101929092527fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac910160405180910390a16120da8584611857565b98975050505050505050565b600081836121075760405162461bcd60e51b815260040161091f9190612114565b50600061154f84866125f8565b600060208083528351808285015260005b8181101561214157858101830151858201604001528201612125565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561217457600080fd5b5035919050565b80356001600160a01b038116811461219257600080fd5b919050565b600080604083850312156121aa57600080fd5b6121b38361217b565b946020939093013593505050565b6000602082840312156121d357600080fd5b610ae48261217b565b600080604083850312156121ef57600080fd5b50508035926020909101359150565b60008060006060848603121561221357600080fd5b61221c8461217b565b925061222a6020850161217b565b9150604084013590509250925092565b8015158114610bc357600080fd5b60006020828403121561225a57600080fd5b8135610ae48161223a565b6000806000806080858703121561227b57600080fd5b6122848561217b565b93506122926020860161217b565b92506122a06040860161217b565b91506122ae6060860161217b565b905092959194509250565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156122e157600080fd5b813567ffffffffffffffff808211156122f957600080fd5b818401915084601f83011261230d57600080fd5b81358181111561231f5761231f6122b9565b604051601f8201601f19908116603f01168101908382118183101715612347576123476122b9565b8160405282815287602084870101111561236057600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000806000806080858703121561239657600080fd5b84356123a18161223a565b9350602085013592506040850135915060608501356123bf8161223a565b939692955090935050565b600080604083850312156123dd57600080fd5b6123e68361217b565b915060208301356123f68161223a565b809150509250929050565b60008060008060008060008060008060006101608c8e03121561242357600080fd5b505089359b60208b01359b5060408b01359a60608101359a506080810135995060a0810135985060c0810135975060e0810135965061010081013595506101208101359450610140013592509050565b60008083601f84011261248557600080fd5b50813567ffffffffffffffff81111561249d57600080fd5b6020830191508360208260051b85010111156124b857600080fd5b9250929050565b6000806000806000606086880312156124d757600080fd5b6124e08661217b565b9450602086013567ffffffffffffffff808211156124fd57600080fd5b61250989838a01612473565b9096509450604088013591508082111561252257600080fd5b5061252f88828901612473565b969995985093965092949392505050565b6000806040838503121561255357600080fd5b61255c8361217b565b915061256a6020840161217b565b90509250929050565b600181811c9082168061258757607f821691505b6020821081036125a757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008261261557634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610a0f57610a0f6125e2565b601f82111561267b57600081815260208120601f850160051c810160208610156126585750805b601f850160051c820191505b8181101561267757828155600101612664565b5050505b505050565b815167ffffffffffffffff81111561269a5761269a6122b9565b6126ae816126a88454612573565b84612631565b602080601f8311600181146126e357600084156126cb5750858301515b600019600386901b1c1916600185901b178555612677565b600085815260208120601f198616915b82811015612712578886015182559484019460019091019084016126f3565b50858210156127305787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b80820180821115610a0f57610a0f6125e2565b60006001820161277b5761277b6125e2565b5060010190565b60006020828403121561279457600080fd5b5051919050565b6000602082840312156127ad57600080fd5b8151610ae48161223a565b81810381811115610a0f57610a0f6125e2565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561281b5784516001600160a01b0316835293830193918301916001016127f6565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561285157600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122062fbad080077a0bfb2e40cf311f7a5a56fe84fd6f172cac318b994b68753533464736f6c63430008110033

Deployed Bytecode Sourcemap

6836:16162:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9122:49;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;9122:49:0;;;;;;;;10346:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;20532:277::-;;;;;;;;;;-1:-1:-1;20532:277:0;;;;;:::i;:::-;;:::i;:::-;;11573:216;;;;;;;;;;-1:-1:-1;11573:216:0;;;;;:::i;:::-;;:::i;:::-;;;1536:14:1;;1529:22;1511:41;;1499:2;1484:18;11573:216:0;1371:187:1;7658:43:0;;;;;;;;;;-1:-1:-1;7658:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;22091:156;;;;;;;;;;-1:-1:-1;22091:156:0;;;;;:::i;:::-;;:::i;7708:46::-;;;;;;;;;;;;;;;;10175:88;;;;;;;;;;-1:-1:-1;10248:12:0;;10175:88;;12091:370;;;;;;;;;;-1:-1:-1;12091:370:0;;;;;:::i;:::-;;:::i;21764:142::-;;;;;;;;;;;;;:::i;14758:99::-;;;;;;;;;;-1:-1:-1;14758:99:0;;;;;:::i;:::-;-1:-1:-1;14837:12:0;;;14758:99;13775:155;;;;;;;;;;-1:-1:-1;13775:155:0;;;;;:::i;:::-;;:::i;10269:71::-;;;;;;;;;;-1:-1:-1;10269:71:0;;7344:1;2851:36:1;;2839:2;2824:18;10269:71:0;2709:184:1;15921:181:0;;;;;;;;;;;;;:::i;21371:385::-;;;;;;;;;;-1:-1:-1;21371:385:0;;;;;:::i;:::-;;:::i;13621:146::-;;;;;;;;;;-1:-1:-1;13621:146:0;;;;;:::i;:::-;;:::i;10423:82::-;;;;;;;;;;-1:-1:-1;10423:82:0;;;;;:::i;:::-;;:::i;11797:122::-;;;;;;;;;;-1:-1:-1;11797:122:0;;;;;:::i;:::-;;:::i;11045:250::-;;;;;;;;;;-1:-1:-1;11174:15:0;;11191;;11208;;11225:14;;11241:16;;11259:11;;11272:14;;11045:250;;;;4686:25:1;;;4742:2;4727:18;;4720:34;;;;4770:18;;;4763:34;;;;4828:2;4813:18;;4806:34;;;;4871:3;4856:19;;4849:35;4915:3;4900:19;;4893:35;4959:3;4944:19;;4937:35;4673:3;4658:19;11045:250:0;4371:607:1;18763:321:0;;;;;;;;;;-1:-1:-1;18763:321:0;;;;;:::i;:::-;;:::i;21103:119::-;;;;;;;;;;-1:-1:-1;21103:119:0;;;;;:::i;:::-;;:::i;10765:124::-;;;;;;;;;;-1:-1:-1;10765:124:0;;;;;:::i;:::-;;:::i;6282:148::-;;;;;;;;;;;;;:::i;7409:54::-;;;;;;;;;;;;;;;;14653:97;;;;;;;;;;-1:-1:-1;14653:97:0;;;;;:::i;:::-;-1:-1:-1;14731:11:0;;;14653:97;19207:1318;;;;;;;;;;-1:-1:-1;19207:1318:0;;;;;:::i;:::-;;:::i;10688:71::-;;;;;;;;;;-1:-1:-1;10731:7:0;5706:6;-1:-1:-1;;;;;5706:6:0;10688:71;;;-1:-1:-1;;;;;6860:32:1;;;6842:51;;6830:2;6815:18;10688:71:0;6696:203:1;19092:104:0;;;;;;;;;;;;;:::i;5641:79::-;;;;;;;;;;-1:-1:-1;5679:7:0;5706:6;-1:-1:-1;;;;;5706:6:0;5641:79;;7470:56;;;;;;;;;;;;;;;;10607:75;;;;;;;;;;;;;:::i;10511:90::-;;;;;;;;;;-1:-1:-1;10511:90:0;;;;;:::i;:::-;;:::i;8857:19::-;;;;;;;;;;-1:-1:-1;8857:19:0;;;;-1:-1:-1;;;;;8857:19:0;;;11927:156;;;;;;;;;;-1:-1:-1;11927:156:0;;;;;:::i;:::-;;:::i;8925:31::-;;;;;;;;;;-1:-1:-1;8925:31:0;;;;-1:-1:-1;;;8925:31:0;;;;;;22251:605;;;;;;;;;;-1:-1:-1;22251:605:0;;;;;:::i;:::-;;:::i;11309:256::-;;;;;;;;;;-1:-1:-1;11439:16:0;;11457;;11475;;11493:14;;11509:17;;11528:12;;11542:14;;11309:256;;20817:280;;;;;;;;;;-1:-1:-1;20817:280:0;;;;;:::i;:::-;;:::i;21914:169::-;;;;;;;;;;-1:-1:-1;21914:169:0;;;;;:::i;:::-;;:::i;10895:133::-;;;;;;;;;;-1:-1:-1;10895:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10997:19:0;;;10979:7;10997:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10895:133;16111:312;;;;;;;;;;-1:-1:-1;16111:312:0;;;;;:::i;:::-;;:::i;6585:244::-;;;;;;;;;;-1:-1:-1;6585:244:0;;;;;:::i;:::-;;:::i;21230:127::-;;;;;;;;;;-1:-1:-1;21230:127:0;;;;;:::i;:::-;;:::i;8826:24::-;;;;;;;;;;-1:-1:-1;8826:24:0;;;;-1:-1:-1;;;;;8826:24:0;;;8885:31;;;;;;;;;;-1:-1:-1;8885:31:0;;;;-1:-1:-1;;;8885:31:0;;;;;;10346:71;10385:13;10409:5;10402:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10346:71;:::o;20532:277::-;5853:6;;-1:-1:-1;;;;;5853:6:0;4072:10;5853:22;5845:67;;;;-1:-1:-1;;;5845:67:0;;;;;;;:::i;:::-;;;;;;;;;20685:4:::1;20670:12;;:19;;;;:::i;:::-;20643:23;:46;;20635:90;;;::::0;-1:-1:-1;;;20635:90:0;;9921:2:1;20635:90:0::1;::::0;::::1;9903:21:1::0;9960:2;9940:18;;;9933:30;9999:33;9979:18;;;9972:61;10050:18;;20635:90:0::1;9719:355:1::0;20635:90:0::1;20797:4;20769:23;20754:12;;:38;;;;:::i;:::-;20753:48;;;;:::i;:::-;20736:14;:65:::0;-1:-1:-1;20532:277:0:o;11573:216::-;11677:10;11648:4;11665:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;11665:32:0;;;;;;;;;;:41;;;11722:37;11648:4;;11665:32;;11722:37;;;;11700:6;160:25:1;;148:2;133:18;;14:177;11722:37:0;;;;;;;;-1:-1:-1;11777:4:0;11573:216;;;;;:::o;22091:156::-;22171:4;22227:6;22195:29;22215:8;22195:19;:29::i;:::-;:38;;22091:156;-1:-1:-1;;;22091:156:0:o;12091:370::-;-1:-1:-1;;;;;12211:19:0;;12191:4;12211:19;;;:11;:19;;;;;;;;12231:10;12211:31;;;;;;;;-1:-1:-1;;12211:52:0;12208:186;;12313:69;;;;;;;;;;;-1:-1:-1;;;12313:69:0;;;;;;;;-1:-1:-1;;;;;12313:19:0;;-1:-1:-1;12313:19:0;;;:11;:19;;;;;12333:10;12313:31;;;;;;;;;;:69;;12349:6;;12313:35;:69::i;:::-;-1:-1:-1;;;;;12279:19:0;;;;;;:11;:19;;;;;;;;12299:10;12279:31;;;;;;;:103;12208:186;12413:40;12427:6;12435:9;12446:6;12413:13;:40::i;:::-;12406:47;;12091:370;;;;;;:::o;21764:142::-;21817:7;21844:54;21882:15;7199:42;21882:9;:15::i;:::-;21844:33;21861:15;7117:42;21861:9;:15::i;:::-;21844:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;21837:61;;21764:142;:::o;13775:155::-;13845:7;13872:50;13905:16;;13872:28;13887:12;;13872:10;:14;;:28;;;;:::i;:::-;:32;;:50::i;15921:181::-;5853:6;;-1:-1:-1;;;;;5853:6:0;4072:10;5853:22;5845:67;;;;-1:-1:-1;;;5845:67:0;;;;;;;:::i;:::-;15997:70:::1;::::0;15980:12:::1;::::0;16005:10:::1;::::0;16057:5:::1;::::0;16029:21:::1;::::0;15980:12;15997:70;15980:12;15997:70;16029:21;16005:10;16057:5;15997:70:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15979:88;;;16086:7;16078:16;;;::::0;::::1;;15969:133;15921:181::o:0;21371:385::-;5853:6;;-1:-1:-1;;;;;5853:6:0;4072:10;5853:22;5845:67;;;;-1:-1:-1;;;5845:67:0;;;;;;;:::i;:::-;21545:20:::1;:44:::0;;-1:-1:-1;;;;;;21545:44:0;;::::1;-1:-1:-1::0;;;;;21545:44:0;;::::1;;::::0;;;21600:20:::1;:44:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;21655:21:::1;:42:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;21708:18:::1;:40:::0;;;;::::1;::::0;;;::::1;;::::0;;21371:385::o;13621:146::-;13686:7;13713:46;13746:12;;13713:28;13724:16;;13713:6;:10;;:28;;;;:::i;10423:82::-;5853:6;;-1:-1:-1;;;;;5853:6:0;4072:10;5853:22;5845:67;;;;-1:-1:-1;;;5845:67:0;;;;;;;:::i;:::-;10487:5:::1;:15;10495:7:::0;10487:5;:15:::1;:::i;:::-;;10423:82:::0;:::o;11797:122::-;11852:4;11876:35;11884:7;-1:-1:-1;;11876:7:0;:35::i;18763:321::-;5853:6;;-1:-1:-1;;;;;5853:6:0;4072:10;5853:22;5845:67;;;;-1:-1:-1;;;5845:67:0;;;;;;;:::i;:::-;18890:14:::1;:27:::0;;18928:23;::::1;;-1:-1:-1::0;;;18928:23:0::1;-1:-1:-1::0;;;;18890:27:0;::::1;;-1:-1:-1::0;;;18890:27:0::1;18928:23:::0;;;;-1:-1:-1;;;;18928:23:0;;;;;;;::::1;::::0;;;18962:18:::1;:29:::0;;;19002:18:::1;:29:::0;;;;19042:13:::1;:34:::0;18763:321::o;21103:119::-;5853:6;;-1:-1:-1;;;;;5853:6:0;4072:10;5853:22;5845:67;;;;-1:-1:-1;;;5845:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21186:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;21186:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21103:119::o;10765:124::-;-1:-1:-1;;;;;10869:16:0;;10831:7;10869:16;;;:7;:16;;;;;;10849:37;;:19;:37::i;6282:148::-;5853:6;;-1:-1:-1;;;;;5853:6:0;4072:10;5853:22;5845:67;;;;-1:-1:-1;;;5845:67:0;;;;;;;:::i;:::-;6389:1:::1;6373:6:::0;;6352:40:::1;::::0;-1:-1:-1;;;;;6373:6:0;;::::1;::::0;6352:40:::1;::::0;6389:1;;6352:40:::1;6420:1;6403:19:::0;;-1:-1:-1;;;;;;6403:19:0::1;::::0;;6282:148::o;19207:1318::-;5853:6;;-1:-1:-1;;;;;5853:6:0;4072:10;5853:22;5845:67;;;;-1:-1:-1;;;5845:67:0;;;;;;;:::i;:::-;19568:16:::1;19550:15;:34;;;;19614:17;19595:16;:36;;;;19660:16;19642:15;:34;;;;19705:16;19687:15;:34;;;;19748:14;19732:13;:30;;;;19787:98;19871:13;;19787:79;19850:15;;19787:58;19829:15;;19787:37;19807:16;;19787:15;;:19;;:37;;;;:::i;:::-;:41:::0;::::1;:58::i;:98::-;19773:11;:112:::0;19898:16:::1;:36:::0;;;19945:17:::1;:38:::0;;;19994:16:::1;:36:::0;;;20041:16:::1;:36:::0;;;20088:14:::1;:32:::0;;;20146:103:::1;20105:15:::0;20146:83:::1;20060:17:::0;20146:83;20013:17;20146:83;19917:17;19965:18;20146:20:::1;:39::i;:103::-;20131:12;:118:::0;20262:14:::1;:32:::0;;;20315:11:::1;::::0;20329:2:::1;-1:-1:-1::0;20315:16:0::1;20307:57;;;::::0;-1:-1:-1;;;20307:57:0;;12868:2:1;20307:57:0::1;::::0;::::1;12850:21:1::0;12907:2;12887:18;;;12880:30;12946:31;12926:18;;;12919:59;12995:18;;20307:57:0::1;12666:353:1::0;20307:57:0::1;20434:2;20419:12;;:17;;20411:59;;;::::0;-1:-1:-1;;;20411:59:0;;13226:2:1;20411:59:0::1;::::0;::::1;13208:21:1::0;13265:2;13245:18;;;13238:30;13304:32;13284:18;;;13277:60;13354:18;;20411:59:0::1;13024:354:1::0;20411:59:0::1;19207:1318:::0;;;;;;;;;;;:::o;19092:104::-;5853:6;;-1:-1:-1;;;;;5853:6:0;4072:10;5853:22;5845:67;;;;-1:-1:-1;;;5845:67:0;;;;;;;:::i;:::-;19146:11:::1;:18:::0;;-1:-1:-1;;;;19146:18:0::1;-1:-1:-1::0;;;19146:18:0::1;::::0;;19092:104::o;10607:75::-;10648:13;10672:7;10665:14;;;;;:::i;10511:90::-;5853:6;;-1:-1:-1;;;;;5853:6:0;4072:10;5853:22;5845:67;;;;-1:-1:-1;;;5845:67:0;;;;;;;:::i;:::-;10579:7:::1;:19;10589:9:::0;10579:7;:19:::1;:::i;11927:156::-:0;12007:4;12031:44;12045:10;12057:9;12068:6;12031:13;:44::i;22251:605::-;5853:6;;-1:-1:-1;;;;;5853:6:0;4072:10;5853:22;5845:67;;;;-1:-1:-1;;;5845:67:0;;;;;;;:::i;:::-;22399:3:::1;22380:22:::0;::::1;22372:79;;;::::0;-1:-1:-1;;;22372:79:0;;13585:2:1;22372:79:0::1;::::0;::::1;13567:21:1::0;13624:2;13604:18;;;13597:30;13663:34;13643:18;;;13636:62;-1:-1:-1;;;13714:18:1;;;13707:43;13767:19;;22372:79:0::1;13383:409:1::0;22372:79:0::1;22466:33:::0;;::::1;22458:85;;;::::0;-1:-1:-1;;;22458:85:0;;13999:2:1;22458:85:0::1;::::0;::::1;13981:21:1::0;14038:2;14018:18;;;14011:30;14077:34;14057:18;;;14050:62;-1:-1:-1;;;14128:18:1;;;14121:38;14176:19;;22458:85:0::1;13797:404:1::0;22458:85:0::1;22552:15;22584:6:::0;22580:88:::1;22594:20:::0;;::::1;22580:88;;;22651:6;;22658:1;22651:9;;;;;;;:::i;:::-;;;;;;;22641:7;:19;;;;:::i;:::-;22631:29:::0;-1:-1:-1;22616:3:0;::::1;::::0;::::1;:::i;:::-;;;;22580:88;;;;22703:7;22684:15;22694:4;22684:9;:15::i;:::-;:26;;22676:66;;;::::0;-1:-1:-1;;;22676:66:0;;14810:2:1;22676:66:0::1;::::0;::::1;14792:21:1::0;14849:2;14829:18;;;14822:30;14888:29;14868:18;;;14861:57;14935:18;;22676:66:0::1;14608:351:1::0;22676:66:0::1;22755:6;22751:102;22765:20:::0;;::::1;22751:102;;;22802:43;22817:4;22822:9;;22832:1;22822:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;22835:6;;22842:1;22835:9;;;;;;;:::i;:::-;;;;;;;22802:14;:43::i;:::-;-1:-1:-1::0;22787:3:0;::::1;::::0;::::1;:::i;:::-;;;;22751:102;;;;22363:493;22251:605:::0;;;;;:::o;20817:280::-;5853:6;;-1:-1:-1;;;;;5853:6:0;4072:10;5853:22;5845:67;;;;-1:-1:-1;;;5845:67:0;;;;;;;:::i;:::-;20952:29:::1;20976:4;20952:19;20969:1;20952:12;;:16;;:19;;;;:::i;:29::-;20925:24;:56;;20917:95;;;::::0;-1:-1:-1;;;20917:95:0;;15166:2:1;20917:95:0::1;::::0;::::1;15148:21:1::0;15205:2;15185:18;;;15178:30;15244:29;15224:18;;;15217:57;15291:18;;20917:95:0::1;14964:351:1::0;20917:95:0::1;21083:4;21054:24;21039:12;;:39;;;;:::i;:::-;21038:49;;;;:::i;:::-;21023:12;:64:::0;-1:-1:-1;20817:280:0:o;21914:169::-;21982:7;22009:64;22050:22;:20;:22::i;:::-;22032:4;;22009:36;;22022:22;;22042:1;;22022:15;;-1:-1:-1;;;;;22032:4:0;22022:9;:15::i;:::-;:19;;:22::i;:::-;22009:8;;:12;:36::i;16111:312::-;16233:10;16192:4;16217:27;;;:15;:27;;;;;;;;16209:36;;;;;;16256:6;16266:1;16256:11;16253:96;;16292:45;;-1:-1:-1;;;16292:45:0;;16331:4;16292:45;;;6842:51:1;-1:-1:-1;;;;;16292:30:0;;;;;6815:18:1;;16292:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16283:54;;16253:96;16366:49;;-1:-1:-1;;;16366:49:0;;16396:10;16366:49;;;15683:51:1;15750:18;;;15743:34;;;-1:-1:-1;;;;;16366:29:0;;;;;15656:18:1;;16366:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;6585:244::-;5853:6;;-1:-1:-1;;;;;5853:6:0;4072:10;5853:22;5845:67;;;;-1:-1:-1;;;5845:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6674:22:0;::::1;6666:73;;;::::0;-1:-1:-1;;;6666:73:0;;16240:2:1;6666:73:0::1;::::0;::::1;16222:21:1::0;16279:2;16259:18;;;16252:30;16318:34;16298:18;;;16291:62;-1:-1:-1;;;16369:18:1;;;16362:36;16415:19;;6666:73:0::1;16038:402:1::0;6666:73:0::1;6776:6;::::0;;6755:38:::1;::::0;-1:-1:-1;;;;;6755:38:0;;::::1;::::0;6776:6;::::1;::::0;6755:38:::1;::::0;::::1;6804:6;:17:::0;;-1:-1:-1;;;;;;6804:17:0::1;-1:-1:-1::0;;;;;6804:17:0;;;::::1;::::0;;;::::1;::::0;;6585:244::o;21230:127::-;5853:6;;-1:-1:-1;;;;;5853:6:0;4072:10;5853:22;5845:67;;;;-1:-1:-1;;;5845:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21317:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;21317:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21230:127::o;3007:192::-;3093:7;3129:12;3121:6;;;;3113:29;;;;-1:-1:-1;;;3113:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3153:9:0;3165:5;3169:1;3165;:5;:::i;:::-;3153:17;3007:192;-1:-1:-1;;;;;3007:192:0:o;12471:1142::-;12583:6;;12563:4;;12583:6;;12580:63;;;12599:41;12614:6;12622:9;12633:6;12599:14;:41::i;:::-;12592:48;;;;12580:63;12672:4;;-1:-1:-1;;;;;12659:17:0;;;12672:4;;12659:17;;;;:38;;-1:-1:-1;;;;;;12680:17:0;;7117:42;12680:17;;12659:38;:75;;;;-1:-1:-1;12714:20:0;;-1:-1:-1;;;;;12701:33:0;;;12714:20;;12701:33;;12659:75;:106;;;;-1:-1:-1;;;;;;12739:26:0;;;;;;:15;:26;;;;;;;;12738:27;12659:106;12655:220;;;12823:14;;12813:6;12790:20;12800:9;12790;:20::i;:::-;:29;;;;:::i;:::-;:47;;12782:79;;;;-1:-1:-1;;;12782:79:0;;16780:2:1;12782:79:0;;;16762:21:1;16819:2;16799:18;;;16792:30;-1:-1:-1;;;16838:18:1;;;16831:49;16897:18;;12782:79:0;16578:343:1;12782:79:0;12909:4;;-1:-1:-1;;;;;12896:17:0;;;12909:4;;12896:17;;;;:38;;-1:-1:-1;;;;;;12917:17:0;;7117:42;12917:17;;12896:38;:69;;;;-1:-1:-1;;;;;;12939:26:0;;;;;;:15;:26;;;;;;;;12938:27;12896:69;12892:155;;;12990:11;;-1:-1:-1;;;12990:11:0;;;;12982:43;;;;-1:-1:-1;;;12982:43:0;;17128:2:1;12982:43:0;;;17110:21:1;17167:2;17147:18;;;17140:30;-1:-1:-1;;;17186:18:1;;;17179:50;17246:18;;12982:43:0;16926:344:1;12982:43:0;13062:16;:14;:16::i;:::-;13059:35;;;13081:10;:8;:10::i;:::-;13106:24;13133:26;13152:6;13133:18;:26::i;:::-;13106:53;;13190:61;13210:16;13190:61;;;;;;;;;;;;;-1:-1:-1;;;13190:61:0;;;:7;:15;13198:6;-1:-1:-1;;;;;13190:15:0;-1:-1:-1;;;;;13190:15:0;;;;;;;;;;;;;:19;;:61;;;;;:::i;:::-;-1:-1:-1;;;;;13172:15:0;;;;;;:7;:15;;;;;;;;:79;;;;14439:11;:19;;;;;;;;14438:20;13293:130;;13407:16;13293:130;;;13348:4;;13317:87;;-1:-1:-1;;;;;13338:14:0;;;13348:4;;13338:14;:28;;13361:5;13338:28;;;13354:4;13338:28;13368:6;13376:9;13387:16;13317:20;:87::i;:::-;-1:-1:-1;;;;;13455:18:0;;;;;;:7;:18;;;;;;13264:159;;-1:-1:-1;13455:42:0;;13264:159;13455:22;:42::i;:::-;-1:-1:-1;;;;;13434:18:0;;;;;;;:7;:18;;;;;:63;;;;13515:68;;;13543:39;13563:18;13543:19;:39::i;:::-;13515:68;;160:25:1;;;148:2;133:18;13515:68:0;;;;;;;-1:-1:-1;13601:4:0;;12471:1142;-1:-1:-1;;;;;12471:1142:0:o;2865:136::-;2923:7;2950:43;2954:1;2957;2950:43;;;;;;;;;;;;;;;;;:3;:43::i;3205:250::-;3263:7;3287:1;3292;3287:6;3283:47;;-1:-1:-1;3317:1:0;3310:8;;3283:47;3342:9;3354:5;3358:1;3354;:5;:::i;:::-;3342:17;-1:-1:-1;3387:1:0;3378:5;3382:1;3342:17;3378:5;:::i;:::-;:10;3370:56;;;;-1:-1:-1;;;3370:56:0;;17477:2:1;3370:56:0;;;17459:21:1;17516:2;17496:18;;;17489:30;17555:34;17535:18;;;17528:62;-1:-1:-1;;;17606:18:1;;;17599:31;17647:19;;3370:56:0;17275:397:1;3461:132:0;3519:7;3546:39;3550:1;3553;3546:39;;;;;;;;;;;;;;;;;:3;:39::i;2678:181::-;2736:7;;2768:5;2772:1;2768;:5;:::i;:::-;2756:17;;2797:1;2792;:6;;2784:46;;;;-1:-1:-1;;;2784:46:0;;17879:2:1;2784:46:0;;;17861:21:1;17918:2;17898:18;;;17891:30;17957:29;17937:18;;;17930:57;18004:18;;2784:46:0;17677:351:1;13938:406:0;14031:4;14048:24;14075:26;14094:6;14075:18;:26::i;:::-;14048:53;;14130:61;14150:16;14130:61;;;;;;;;;;;;;-1:-1:-1;;;14130:61:0;;;:7;:15;14138:6;-1:-1:-1;;;;;14130:15:0;-1:-1:-1;;;;;14130:15:0;;;;;;;;;;;;;:19;;:61;;;;;:::i;:::-;-1:-1:-1;;;;;14112:15:0;;;;;;;:7;:15;;;;;;:79;;;;14223:18;;;;;;;:40;;14246:16;14223:22;:40::i;:::-;-1:-1:-1;;;;;14202:18:0;;;;;;;:7;:18;;;;;;;:61;;;;14279:35;;;;;;;;;;14307:6;160:25:1;;148:2;133:18;;14:177;14279:35:0;;;;;;;;-1:-1:-1;14332:4:0;;13938:406;-1:-1:-1;;;;13938:406:0:o;16433:198::-;16520:4;;16482;;-1:-1:-1;;;;;16520:4:0;16506:10;:18;;;;:38;;-1:-1:-1;16538:6:0;;;;16537:7;16506:38;:63;;;;-1:-1:-1;16557:12:0;;-1:-1:-1;;;16557:12:0;;;;16506:63;:117;;;;;16610:13;;16582:24;16600:4;16582:9;:24::i;:::-;:41;;16499:124;;16433:198;:::o;16639:2116::-;9218:6;:13;;-1:-1:-1;;9218:13:0;9227:4;9218:13;;;16734:15:::1;::::0;16751:26:::1;::::0;9218:6;;16718:60:::1;::::0;:15:::1;:60::i;:::-;:83;;16785:16;;16718:83;;;16781:1;16718:83;16688:113;;16812:17;16832:35;16849:17;;16832:12;;:16;;:35;;;;:::i;:::-;16812:55;;16878:23;16904:60;16962:1;16904:53;16947:9;16904:38;16922:19;16904:13;;:17;;:38;;;;:::i;:60::-;16878:86;;16975:20;16998:34;17016:15;16998:13;;:17;;:34;;;;:::i;:::-;17069:16;::::0;;17083:1:::1;17069:16:::0;;;;;::::1;::::0;;16975:57;;-1:-1:-1;17045:21:0::1;::::0;17069:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;17069:16:0::1;17045:40;;17114:4;17096;17101:1;17096:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;17096:23:0::1;;;-1:-1:-1::0;;;;;17096:23:0::1;;;::::0;::::1;7035:42;17130:4;17135:1;17130:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17130:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;17215:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;17215:188:0;;17181:21:::1;::::0;17215:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;17287:12;;17157:21:::1;::::0;17330:4;;17357::::1;::::0;17377:15:::1;::::0;17215:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17416:17;17436:40;17462:13;17436:21;:25;;:40;;;;:::i;:::-;17416:60:::0;-1:-1:-1;17489:19:0::1;17511:41;17525:26;:19:::0;17549:1:::1;17525:23;:26::i;:::-;17511:9:::0;;:13:::1;:41::i;:::-;17489:63;;17563:26;17592:55;17645:1;17592:48;17628:11;17592:31;17606:16;;17592:9;:13;;:31;;;;:::i;:55::-;17563:84;;17658:26;17687:48;17723:11;17687:31;17701:16;;17687:9;:13;;:31;;;;:::i;:48::-;17658:77;;17746:26;17775:48;17811:11;17775:31;17789:16;;17775:9;:13;;:31;;;;:::i;:48::-;17746:77;;17834:24;17861:46;17895:11;17861:29;17875:14;;17861:9;:13;;:29;;;;:::i;:46::-;17949:20;::::0;17941:77:::1;::::0;17834:73;;-1:-1:-1;17921:15:0::1;::::0;-1:-1:-1;;;;;17949:20:0;;::::1;::::0;18008:5:::1;::::0;17983:18;;17921:15;17941:77;17921:15;17941:77;17983:18;17949:20;18008:5;17941:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;18053:20:0::1;::::0;18045:77:::1;::::0;17920:98;;-1:-1:-1;;;;;;18053:20:0::1;::::0;18112:5:::1;::::0;18087:18;;18045:77:::1;::::0;;;18087:18;18053:20;18112:5;18045:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;18157:18:0::1;::::0;18149:73:::1;::::0;18029:93;;-1:-1:-1;;;;;;18157:18:0::1;::::0;18212:5:::1;::::0;18189:16;;18149:73:::1;::::0;;;18189:16;18157:18;18212:5;18149:73:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;18133:89:0;;-1:-1:-1;;18248:19:0;;18245:363:::1;;18284:6;::::0;18458:21:::1;::::0;18284:244:::1;::::0;-1:-1:-1;;;18284:244:0;;18360:4:::1;18284:244;::::0;::::1;19359:34:1::0;19409:18;;;19402:34;;;18284:6:0::1;19452:18:1::0;;;19445:34;;;19495:18;;;19488:34;-1:-1:-1;;;;;18458:21:0;;::::1;19538:19:1::0;;;19531:44;18498:15:0::1;19591:19:1::0;;;19584:35;18284:6:0;::::1;::::0;:22:::1;::::0;18314:18;;19293:19:1;;18284:244:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;18548:48:0::1;::::0;;20115:25:1;;;20171:2;20156:18;;20149:34;;;18548:48:0::1;::::0;-1:-1:-1;20088:18:1;18548:48:0::1;;;;;;;18245:363;18637:14;::::0;-1:-1:-1;;;18637:14:0;::::1;;;18636:15;:111;;18687:18;;18670:13;;:35;:77;;18729:18;;18636:111;;18670:77;18708:18;;18636:111;;;18654:13;;18636:111;18620:13;:127:::0;-1:-1:-1;;9236:6:0;:14;;-1:-1:-1;;9236:14:0;;;-1:-1:-1;;;;;;;;;;;16639:2116:0:o;14865:1048::-;14986:7;;15046:4;15036:14;;;;:177;;15198:14;;14837:12;;15138:75;;15198:14;15138:55;;15159:33;15138:16;;:20;:55::i;:75::-;15036:177;;;15111:14;;14731:11;;15052:74;;15111:14;15052:54;;15073:32;14653:97;15052:74;15006:207;-1:-1:-1;15246:27:0;15286:4;15276:14;;;;:146;;15362:60;15409:12;;15362:42;15386:17;;15362:19;:23;;:42;;;;:::i;:60::-;15276:146;;;15292:58;15338:11;;15292:41;15316:16;;15292:19;:23;;:41;;;;:::i;:58::-;15454:16;;15246:176;;-1:-1:-1;15454:41:0;;15246:176;15454:20;:41::i;:::-;15435:16;:60;15530:29;15562:44;:19;15586;15562:23;:44::i;:::-;15658:4;15642:22;;;;:7;:22;;;;;;15530:76;;-1:-1:-1;15642:49:0;;15530:76;15642:26;:49::i;:::-;15633:4;15617:22;;;;:7;:22;;;;;:74;;;;-1:-1:-1;;;;;15709:75:0;;;15741:42;15761:21;15741:19;:42::i;:::-;15709:75;;160:25:1;;;148:2;133:18;15709:75:0;;;;;;;15829:16;;15800:46;;;20115:25:1;;;20171:2;20156:18;;20149:34;;;;15800:46:0;;20088:18:1;15800:46:0;;;;;;;15864:41;:16;15885:19;15864:20;:41::i;:::-;15857:48;14865:1048;-1:-1:-1;;;;;;;;14865:1048:0:o;3599:345::-;3685:7;3787:12;3780:5;3772:28;;;;-1:-1:-1;;;3772:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3811:9:0;3823:5;3827:1;3823;:5;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:180::-;808:6;861:2;849:9;840:7;836:23;832:32;829:52;;;877:1;874;867:12;829:52;-1:-1:-1;900:23:1;;749:180;-1:-1:-1;749:180:1:o;934:173::-;1002:20;;-1:-1:-1;;;;;1051:31:1;;1041:42;;1031:70;;1097:1;1094;1087:12;1031:70;934:173;;;:::o;1112:254::-;1180:6;1188;1241:2;1229:9;1220:7;1216:23;1212:32;1209:52;;;1257:1;1254;1247:12;1209:52;1280:29;1299:9;1280:29;:::i;:::-;1270:39;1356:2;1341:18;;;;1328:32;;-1:-1:-1;;;1112:254:1:o;1563:186::-;1622:6;1675:2;1663:9;1654:7;1650:23;1646:32;1643:52;;;1691:1;1688;1681:12;1643:52;1714:29;1733:9;1714:29;:::i;1754:248::-;1822:6;1830;1883:2;1871:9;1862:7;1858:23;1854:32;1851:52;;;1899:1;1896;1889:12;1851:52;-1:-1:-1;;1922:23:1;;;1992:2;1977:18;;;1964:32;;-1:-1:-1;1754:248:1:o;2007:328::-;2084:6;2092;2100;2153:2;2141:9;2132:7;2128:23;2124:32;2121:52;;;2169:1;2166;2159:12;2121:52;2192:29;2211:9;2192:29;:::i;:::-;2182:39;;2240:38;2274:2;2263:9;2259:18;2240:38;:::i;:::-;2230:48;;2325:2;2314:9;2310:18;2297:32;2287:42;;2007:328;;;;;:::o;2340:118::-;2426:5;2419:13;2412:21;2405:5;2402:32;2392:60;;2448:1;2445;2438:12;2463:241;2519:6;2572:2;2560:9;2551:7;2547:23;2543:32;2540:52;;;2588:1;2585;2578:12;2540:52;2627:9;2614:23;2646:28;2668:5;2646:28;:::i;2898:409::-;2984:6;2992;3000;3008;3061:3;3049:9;3040:7;3036:23;3032:33;3029:53;;;3078:1;3075;3068:12;3029:53;3101:29;3120:9;3101:29;:::i;:::-;3091:39;;3149:38;3183:2;3172:9;3168:18;3149:38;:::i;:::-;3139:48;;3206:38;3240:2;3229:9;3225:18;3206:38;:::i;:::-;3196:48;;3263:38;3297:2;3286:9;3282:18;3263:38;:::i;:::-;3253:48;;2898:409;;;;;;;:::o;3312:127::-;3373:10;3368:3;3364:20;3361:1;3354:31;3404:4;3401:1;3394:15;3428:4;3425:1;3418:15;3444:922;3513:6;3566:2;3554:9;3545:7;3541:23;3537:32;3534:52;;;3582:1;3579;3572:12;3534:52;3622:9;3609:23;3651:18;3692:2;3684:6;3681:14;3678:34;;;3708:1;3705;3698:12;3678:34;3746:6;3735:9;3731:22;3721:32;;3791:7;3784:4;3780:2;3776:13;3772:27;3762:55;;3813:1;3810;3803:12;3762:55;3849:2;3836:16;3871:2;3867;3864:10;3861:36;;;3877:18;;:::i;:::-;3952:2;3946:9;3920:2;4006:13;;-1:-1:-1;;4002:22:1;;;4026:2;3998:31;3994:40;3982:53;;;4050:18;;;4070:22;;;4047:46;4044:72;;;4096:18;;:::i;:::-;4136:10;4132:2;4125:22;4171:2;4163:6;4156:18;4211:7;4206:2;4201;4197;4193:11;4189:20;4186:33;4183:53;;;4232:1;4229;4222:12;4183:53;4288:2;4283;4279;4275:11;4270:2;4262:6;4258:15;4245:46;4333:1;4311:15;;;4328:2;4307:24;4300:35;;;;-1:-1:-1;4315:6:1;3444:922;-1:-1:-1;;;;;3444:922:1:o;4983:513::-;5063:6;5071;5079;5087;5140:3;5128:9;5119:7;5115:23;5111:33;5108:53;;;5157:1;5154;5147:12;5108:53;5196:9;5183:23;5215:28;5237:5;5215:28;:::i;:::-;5262:5;-1:-1:-1;5314:2:1;5299:18;;5286:32;;-1:-1:-1;5365:2:1;5350:18;;5337:32;;-1:-1:-1;5421:2:1;5406:18;;5393:32;5434:30;5393:32;5434:30;:::i;:::-;4983:513;;;;-1:-1:-1;4983:513:1;;-1:-1:-1;;4983:513:1:o;5501:315::-;5566:6;5574;5627:2;5615:9;5606:7;5602:23;5598:32;5595:52;;;5643:1;5640;5633:12;5595:52;5666:29;5685:9;5666:29;:::i;:::-;5656:39;;5745:2;5734:9;5730:18;5717:32;5758:28;5780:5;5758:28;:::i;:::-;5805:5;5795:15;;;5501:315;;;;;:::o;5821:870::-;5970:6;5978;5986;5994;6002;6010;6018;6026;6034;6042;6050:7;6104:3;6092:9;6083:7;6079:23;6075:33;6072:53;;;6121:1;6118;6111:12;6072:53;-1:-1:-1;;6144:23:1;;;6214:2;6199:18;;6186:32;;-1:-1:-1;6265:2:1;6250:18;;6237:32;;6316:2;6301:18;;6288:32;;-1:-1:-1;6367:3:1;6352:19;;6339:33;;-1:-1:-1;6419:3:1;6404:19;;6391:33;;-1:-1:-1;6471:3:1;6456:19;;6443:33;;-1:-1:-1;6523:3:1;6508:19;;6495:33;;-1:-1:-1;6575:3:1;6560:19;;6547:33;;-1:-1:-1;6627:3:1;6612:19;;6599:33;;-1:-1:-1;6680:3:1;6665:19;6652:33;;-1:-1:-1;5821:870:1;-1:-1:-1;5821:870:1:o;6904:367::-;6967:8;6977:6;7031:3;7024:4;7016:6;7012:17;7008:27;6998:55;;7049:1;7046;7039:12;6998:55;-1:-1:-1;7072:20:1;;7115:18;7104:30;;7101:50;;;7147:1;7144;7137:12;7101:50;7184:4;7176:6;7172:17;7160:29;;7244:3;7237:4;7227:6;7224:1;7220:14;7212:6;7208:27;7204:38;7201:47;7198:67;;;7261:1;7258;7251:12;7198:67;6904:367;;;;;:::o;7276:847::-;7407:6;7415;7423;7431;7439;7492:2;7480:9;7471:7;7467:23;7463:32;7460:52;;;7508:1;7505;7498:12;7460:52;7531:29;7550:9;7531:29;:::i;:::-;7521:39;;7611:2;7600:9;7596:18;7583:32;7634:18;7675:2;7667:6;7664:14;7661:34;;;7691:1;7688;7681:12;7661:34;7730:70;7792:7;7783:6;7772:9;7768:22;7730:70;:::i;:::-;7819:8;;-1:-1:-1;7704:96:1;-1:-1:-1;7907:2:1;7892:18;;7879:32;;-1:-1:-1;7923:16:1;;;7920:36;;;7952:1;7949;7942:12;7920:36;;7991:72;8055:7;8044:8;8033:9;8029:24;7991:72;:::i;:::-;7276:847;;;;-1:-1:-1;7276:847:1;;-1:-1:-1;8082:8:1;;7965:98;7276:847;-1:-1:-1;;;7276:847:1:o;8128:260::-;8196:6;8204;8257:2;8245:9;8236:7;8232:23;8228:32;8225:52;;;8273:1;8270;8263:12;8225:52;8296:29;8315:9;8296:29;:::i;:::-;8286:39;;8344:38;8378:2;8367:9;8363:18;8344:38;:::i;:::-;8334:48;;8128:260;;;;;:::o;8619:380::-;8698:1;8694:12;;;;8741;;;8762:61;;8816:4;8808:6;8804:17;8794:27;;8762:61;8869:2;8861:6;8858:14;8838:18;8835:38;8832:161;;8915:10;8910:3;8906:20;8903:1;8896:31;8950:4;8947:1;8940:15;8978:4;8975:1;8968:15;8832:161;;8619:380;;;:::o;9004:356::-;9206:2;9188:21;;;9225:18;;;9218:30;9284:34;9279:2;9264:18;;9257:62;9351:2;9336:18;;9004:356::o;9365:127::-;9426:10;9421:3;9417:20;9414:1;9407:31;9457:4;9454:1;9447:15;9481:4;9478:1;9471:15;9497:217;9537:1;9563;9553:132;;9607:10;9602:3;9598:20;9595:1;9588:31;9642:4;9639:1;9632:15;9670:4;9667:1;9660:15;9553:132;-1:-1:-1;9699:9:1;;9497:217::o;10079:168::-;10152:9;;;10183;;10200:15;;;10194:22;;10180:37;10170:71;;10221:18;;:::i;10588:545::-;10690:2;10685:3;10682:11;10679:448;;;10726:1;10751:5;10747:2;10740:17;10796:4;10792:2;10782:19;10866:2;10854:10;10850:19;10847:1;10843:27;10837:4;10833:38;10902:4;10890:10;10887:20;10884:47;;;-1:-1:-1;10925:4:1;10884:47;10980:2;10975:3;10971:12;10968:1;10964:20;10958:4;10954:31;10944:41;;11035:82;11053:2;11046:5;11043:13;11035:82;;;11098:17;;;11079:1;11068:13;11035:82;;;11039:3;;;10679:448;10588:545;;;:::o;11309:1352::-;11435:3;11429:10;11462:18;11454:6;11451:30;11448:56;;;11484:18;;:::i;:::-;11513:97;11603:6;11563:38;11595:4;11589:11;11563:38;:::i;:::-;11557:4;11513:97;:::i;:::-;11665:4;;11729:2;11718:14;;11746:1;11741:663;;;;12448:1;12465:6;12462:89;;;-1:-1:-1;12517:19:1;;;12511:26;12462:89;-1:-1:-1;;11266:1:1;11262:11;;;11258:24;11254:29;11244:40;11290:1;11286:11;;;11241:57;12564:81;;11711:944;;11741:663;10535:1;10528:14;;;10572:4;10559:18;;-1:-1:-1;;11777:20:1;;;11895:236;11909:7;11906:1;11903:14;11895:236;;;11998:19;;;11992:26;11977:42;;12090:27;;;;12058:1;12046:14;;;;11925:19;;11895:236;;;11899:3;12159:6;12150:7;12147:19;12144:201;;;12220:19;;;12214:26;-1:-1:-1;;12303:1:1;12299:14;;;12315:3;12295:24;12291:37;12287:42;12272:58;12257:74;;12144:201;-1:-1:-1;;;;;12391:1:1;12375:14;;;12371:22;12358:36;;-1:-1:-1;11309:1352:1:o;14206:127::-;14267:10;14262:3;14258:20;14255:1;14248:31;14298:4;14295:1;14288:15;14322:4;14319:1;14312:15;14338:125;14403:9;;;14424:10;;;14421:36;;;14437:18;;:::i;14468:135::-;14507:3;14528:17;;;14525:43;;14548:18;;:::i;:::-;-1:-1:-1;14595:1:1;14584:13;;14468:135::o;15320:184::-;15390:6;15443:2;15431:9;15422:7;15418:23;15414:32;15411:52;;;15459:1;15456;15449:12;15411:52;-1:-1:-1;15482:16:1;;15320:184;-1:-1:-1;15320:184:1:o;15788:245::-;15855:6;15908:2;15896:9;15887:7;15883:23;15879:32;15876:52;;;15924:1;15921;15914:12;15876:52;15956:9;15950:16;15975:28;15997:5;15975:28;:::i;16445:128::-;16512:9;;;16533:11;;;16530:37;;;16547:18;;:::i;18033:980::-;18295:4;18343:3;18332:9;18328:19;18374:6;18363:9;18356:25;18400:2;18438:6;18433:2;18422:9;18418:18;18411:34;18481:3;18476:2;18465:9;18461:18;18454:31;18505:6;18540;18534:13;18571:6;18563;18556:22;18609:3;18598:9;18594:19;18587:26;;18648:2;18640:6;18636:15;18622:29;;18669:1;18679:195;18693:6;18690:1;18687:13;18679:195;;;18758:13;;-1:-1:-1;;;;;18754:39:1;18742:52;;18849:15;;;;18814:12;;;;18790:1;18708:9;18679:195;;;-1:-1:-1;;;;;;;18930:32:1;;;;18925:2;18910:18;;18903:60;-1:-1:-1;;;18994:3:1;18979:19;18972:35;18891:3;18033:980;-1:-1:-1;;;18033:980:1:o;19630:306::-;19718:6;19726;19734;19787:2;19775:9;19766:7;19762:23;19758:32;19755:52;;;19803:1;19800;19793:12;19755:52;19832:9;19826:16;19816:26;;19882:2;19871:9;19867:18;19861:25;19851:35;;19926:2;19915:9;19911:18;19905:25;19895:35;;19630:306;;;;;:::o

Swarm Source

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