ETH Price: $2,640.96 (-0.02%)

Token

What HAPPENED (HAPPENED)
 

Overview

Max Total Supply

1,000,000,000 HAPPENED

Holders

16

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
6,857,887.870357346051742187 HAPPENED

Value
$0.00
0xcE3C9e1D0667500Cb89cc805BB0BD29bA58ba065
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:
Token

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.4;

abstract contract Context {

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

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

interface IERC20 {

    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {codehash := extcodehash(account)}
        return (codehash != accountHash && codehash != 0x0);
    }

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

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success,) = recipient.call{ value : amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value : weiValue}(data);
        if (success) {
            return returndata;
        } else {

            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address public _owner;

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


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

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

    function waiveOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

    function getTime() public view returns (uint256) {
        return block.timestamp;
    }

}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);

    function allPairs(uint) external view returns (address pair);

    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint);

    function balanceOf(address owner) external view returns (uint);

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

    function approve(address spender, uint value) external returns (bool);

    function transfer(address to, uint value) external returns (bool);

    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

    function price0CumulativeLast() external view returns (uint);

    function price1CumulativeLast() external view returns (uint);

    function kLast() external view returns (uint);

    function burn(address to) external returns (uint amount0, uint amount1);

    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

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

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);

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

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);

    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);

    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);

    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);

    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);

    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);

    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);

    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);

    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

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

contract Token is Context, IERC20, Ownable {

    using SafeMath for uint256;
    using Address for address;

    string private _name;
    string private _symbol;
    uint8 private _decimals;
    address payable public marketingWalletAddress;
    address payable public teamWalletAddress;
    address public deadAddress = 0x000000000000000000000000000000000000dEaD;
    mapping(address => bool) public _isBlacklisted;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isMarketPair;

    uint256 public _buyLiquidityFee = 2;
    uint256 public _buyMarketingFee = 3;
    uint256 public _buyTeamFee = 4;
    uint256 public _buyDestroyFee = 0;

    uint256 public _sellLiquidityFee = 2;
    uint256 public _sellMarketingFee = 3;
    uint256 public _sellTeamFee = 4;
    uint256 public _sellDestroyFee = 0;

    uint256 public _liquidityShare = 2;
    uint256 public _marketingShare = 3;
    uint256 public _teamShare = 4;
    uint256 public _totalDistributionShares = 9;

    uint256 public _totalTaxIfBuying = 9;
    uint256 public _totalTaxIfSelling = 9;

    uint256 public _tFeeTotal;
    uint256 public _maxDestroyAmount;
    uint256 private _totalSupply;
    uint256 public _maxTxAmount;
    uint256 public _walletMax;
    uint256 private _minimumTokensBeforeSwap = 0;


    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;
    bool public checkWalletLimit = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );

    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

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


    constructor (
        string memory coinName,
        string memory coinSymbol,
        uint8 coinDecimals,
        uint256 supply,
        address router,
        address owner,
        address marketingAddress,
        address teamAddress,
        address service
    ) payable {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router);

        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _name = coinName;
        _symbol = coinSymbol;
        _decimals = coinDecimals;
        _owner = owner;
        _totalSupply = supply  * 10 ** _decimals;
        _maxTxAmount = supply * 10**_decimals;
        _walletMax = supply * 10**_decimals;
        _maxDestroyAmount = supply * 10**_decimals;
        _minimumTokensBeforeSwap = 1 * 10**_decimals;
        marketingWalletAddress = payable(marketingAddress);
        teamWalletAddress = payable(teamAddress);
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee);
        _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);
        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;
        isExcludedFromFee[owner] = true;
        isExcludedFromFee[address(this)] = true;

        isWalletLimitExempt[owner] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[deadAddress] = true;

        isTxLimitExempt[owner] = true;
        isTxLimitExempt[deadAddress] = true;
        isTxLimitExempt[address(this)] = true;

        isMarketPair[address(uniswapPair)] = true;

        _balances[owner] = _totalSupply;
        payable(service).transfer(msg.value);
        emit Transfer(address(0), owner, _totalSupply);
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

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

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function minimumTokensBeforeSwapAmount() public view returns (uint256) {
        return _minimumTokensBeforeSwap;
    }

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

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

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function setMarketPairStatus(address account, bool newValue) public onlyOwner {
        isMarketPair[account] = newValue;
    }

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

    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
        isExcludedFromFee[account] = newValue;
    }

    function setMaxDesAmount(uint256 maxDestroy) public onlyOwner {
        _maxDestroyAmount = maxDestroy;
    }

    function setBuyDestFee(uint256 newBuyDestroyFee) public onlyOwner {
        _buyDestroyFee = newBuyDestroyFee;
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee).add(_buyDestroyFee);
    }

    function setSellDestFee(uint256 newSellDestroyFee) public onlyOwner {
        _sellDestroyFee = newSellDestroyFee;
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee).add(_sellDestroyFee);
    }

    function setBuyTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external onlyOwner() {
        _buyLiquidityFee = newLiquidityTax;
        _buyMarketingFee = newMarketingTax;
        _buyTeamFee = newTeamTax;

        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee).add(_buyDestroyFee);
    }

    function setSelTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external onlyOwner() {
        _sellLiquidityFee = newLiquidityTax;
        _sellMarketingFee = newMarketingTax;
        _sellTeamFee = newTeamTax;

        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee).add(_sellDestroyFee);
    }

    function multipleBotlistAddress(address[] calldata accounts, bool excluded) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isBlacklisted[accounts[i]] = excluded;
        }
    }

    function setDistributionSettings(uint256 newLiquidityShare, uint256 newMarketingShare, uint256 newTeamShare) external onlyOwner() {
        _liquidityShare = newLiquidityShare;
        _marketingShare = newMarketingShare;
        _teamShare = newTeamShare;

        _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);
    }

    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        _maxTxAmount = maxTxAmount;
    }

    function enableDisableWalletLimit(bool newValue) external onlyOwner {
       checkWalletLimit = newValue;
    }

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

    function setWalletLimit(uint256 newLimit) external onlyOwner {
        _walletMax  = newLimit;
    }

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
        _minimumTokensBeforeSwap = newLimit;
    }

    function setMarketingWalletAddress(address newAddress) external onlyOwner() {
        marketingWalletAddress = payable(newAddress);
    }

    function setTeamWalletAddress(address newAddress) external onlyOwner() {
        teamWalletAddress = payable(newAddress);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }

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

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }

    function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress);

        newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());

        if(newPairAddress == address(0)) //Create If Doesnt exist
        {
            newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());
        }

        uniswapPair = newPairAddress; //Set new pair address
        uniswapV2Router = _uniswapV2Router; //Set new router address

        isWalletLimitExempt[address(uniswapPair)] = true;
        isMarketPair[address(uniswapPair)] = true;
    }

     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!_isBlacklisted[sender] && !_isBlacklisted[recipient], 'Blacklisted address');

        if(inSwapAndLiquify)
        {
            return _basicTransfer(sender, recipient, amount);
        }
        else
        {
            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient]) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= _minimumTokensBeforeSwap;

            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled)
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = _minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ?
                                         amount : takeFee(sender, recipient, amount);

            if(checkWalletLimit && !isWalletLimitExempt[recipient])
                require(balanceOf(recipient).add(finalAmount) <= _walletMax);

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
    }

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

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {

        uint256 tokensForLP = tAmount.mul(_liquidityShare).div(_totalDistributionShares).div(2);
        uint256 tokensForSwap = tAmount.sub(tokensForLP);

        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance;

        uint256 totalBNBFee = _totalDistributionShares.sub(_liquidityShare.div(2));

        uint256 amountBNBLiquidity = amountReceived.mul(_liquidityShare).div(totalBNBFee).div(2);
        uint256 amountBNBTeam = amountReceived.mul(_teamShare).div(totalBNBFee);
        uint256 amountBNBMarketing = amountReceived.sub(amountBNBLiquidity).sub(amountBNBTeam);

        if(amountBNBMarketing > 0)
            transferToAddressETH(marketingWalletAddress, amountBNBMarketing);

        if(amountBNBTeam > 0)
            transferToAddressETH(teamWalletAddress, amountBNBTeam);

        if(amountBNBLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountBNBLiquidity);
    }

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

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );

        emit SwapTokensForETH(tokenAmount, path);
    }

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

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

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {

        uint256 feeAmount = 0;
        uint256 destAmount = 0;

        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying.sub(_buyDestroyFee)).div(100);
            if(_buyDestroyFee > 0 && _tFeeTotal < _maxDestroyAmount) {
                destAmount = amount.mul(_buyDestroyFee).div(100);
                destroyFee(sender,destAmount);
            }
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling.sub(_sellDestroyFee)).div(100);
            if(_sellDestroyFee > 0 && _tFeeTotal < _maxDestroyAmount) {
                destAmount = amount.mul(_sellDestroyFee).div(100);
                destroyFee(sender,destAmount);
            }
        }

        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount.add(destAmount));
    }

    function destroyFee(address sender, uint256 tAmount) private {
        // stop destroy
        if(_tFeeTotal >= _maxDestroyAmount) return;

        _balances[deadAddress] = _balances[deadAddress].add(tAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
        emit Transfer(sender, deadAddress, tAmount);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"coinName","type":"string"},{"internalType":"string","name":"coinSymbol","type":"string"},{"internalType":"uint8","name":"coinDecimals","type":"uint8"},{"internalType":"uint256","name":"supply","type":"uint256"},{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"marketingAddress","type":"address"},{"internalType":"address","name":"teamAddress","type":"address"},{"internalType":"address","name":"service","type":"address"}],"stateMutability":"payable","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":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":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"_buyDestroyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxDestroyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDestroyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tFeeTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"multipleBotlistAddress","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":[{"internalType":"uint256","name":"newBuyDestroyFee","type":"uint256"}],"name":"setBuyDestFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"newMarketingShare","type":"uint256"},{"internalType":"uint256","name":"newTeamShare","type":"uint256"}],"name":"setDistributionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","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":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxDestroy","type":"uint256"}],"name":"setMaxDesAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setSelTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSellDestroyFee","type":"uint256"}],"name":"setSellDestFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setTeamWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040819052600580546001600160a01b03191661dead1790556002600d8190556003600e8190556004600f819055600060108190556011849055601283905560138290556014819055601593909355601691909155601755600960188190556019819055601a55602055602280546201000160a81b62ffffff60a81b199091161790556200376838819003908190833981016040819052620000a391620007bb565b6000859050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620000e257600080fd5b505afa158015620000f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200011d919062000796565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200016657600080fd5b505afa1580156200017b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a1919062000796565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620001ea57600080fd5b505af1158015620001ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000225919062000796565b602280546001600160a01b0319166001600160a01b039290921691909117905589516200025a9060019060208d01906200061c565b508851620002709060029060208c01906200061c565b506003805460ff191660ff8a16908117909155600080546001600160a01b0319166001600160a01b038816179055620002ab90600a6200090b565b620002b79088620009ca565b601d55600354620002cd9060ff16600a6200090b565b620002d99088620009ca565b601e55600354620002ef9060ff16600a6200090b565b620002fb9088620009ca565b601f55600354620003119060ff16600a6200090b565b6200031d9088620009ca565b601c55600354620003339060ff16600a6200090b565b62000340906001620009ca565b602090815560038054610100600160a81b0319166101006001600160a01b038881169190910291909117909155600480546001600160a01b031916918616919091179055600f54600e54600d54620003bb93620003a79290620005ad811b6200195b17901c565b620005ad60201b6200195b1790919060201c565b601981905550620003e6601354620003a7601254601154620005ad60201b6200195b1790919060201c565b601a8190555062000411601754620003a7601654601554620005ad60201b6200195b1790919060201c565b601855602180546001600160a01b038084166001600160a01b03199092168217909255601d8054306000818152600860209081526040808320968352958152858220939093558a861680825260098452858220805460ff1990811660019081179092558484528784208054821683179055828452600a86528784208054821683179055602280548a16855288852080548316841790558585528885208054831684179055600580548b1686528986208054841685179055848652600b88528986208054841685179055548a16855288852080548316841790559484528784208054821683179055935488168352600c855286832080549094161790925592549083526007909152828220559051918416913480156108fc0292909190818181858888f193505050501580156200054b573d6000803e3d6000fd5b50846001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601d546040516200059591815260200190565b60405180910390a35050505050505050505062000a55565b600080620005bc8385620008a7565b905083811015620006135760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b8280546200062a90620009ec565b90600052602060002090601f0160209004810192826200064e576000855562000699565b82601f106200066957805160ff191683800117855562000699565b8280016001018555821562000699579182015b82811115620006995782518255916020019190600101906200067c565b50620006a7929150620006ab565b5090565b5b80821115620006a75760008155600101620006ac565b80516001600160a01b0381168114620006da57600080fd5b919050565b600082601f830112620006f157600080fd5b81516001600160401b03808211156200070e576200070e62000a3f565b604051601f8301601f19908116603f0116810190828211818310171562000739576200073962000a3f565b816040528381526020925086838588010111156200075657600080fd5b600091505b838210156200077a57858201830151818301840152908201906200075b565b838211156200078c5760008385830101525b9695505050505050565b600060208284031215620007a957600080fd5b620007b482620006c2565b9392505050565b60008060008060008060008060006101208a8c031215620007db57600080fd5b89516001600160401b0380821115620007f357600080fd5b620008018d838e01620006df565b9a5060208c01519150808211156200081857600080fd5b50620008278c828d01620006df565b98505060408a015160ff811681146200083f57600080fd5b60608b015190975095506200085760808b01620006c2565b94506200086760a08b01620006c2565b93506200087760c08b01620006c2565b92506200088760e08b01620006c2565b9150620008986101008b01620006c2565b90509295985092959850929598565b60008219821115620008bd57620008bd62000a29565b500190565b600181815b8085111562000903578160001904821115620008e757620008e762000a29565b80851615620008f557918102915b93841c9390800290620008c7565b509250929050565b6000620007b460ff841683600082620009275750600162000616565b81620009365750600062000616565b81600181146200094f57600281146200095a576200097a565b600191505062000616565b60ff8411156200096e576200096e62000a29565b50506001821b62000616565b5060208310610133831016604e8410600b84101617156200099f575081810a62000616565b620009ab8383620008c2565b8060001904821115620009c257620009c262000a29565b029392505050565b6000816000190483118215151615620009e757620009e762000a29565b500290565b600181811c9082168062000a0157607f821691505b6020821081141562000a2357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b612d038062000a656000396000f3fe6080604052600436106103fe5760003560e01c80638b42507f11610213578063c5d2418911610123578063ec28438a116100ab578063f2fde38b1161007a578063f2fde38b14610bee578063f744bf2214610c0e578063f84ba65d14610c2e578063f872858a14610c4e578063fb1eb14b14610c6f57600080fd5b8063ec28438a14610b78578063ef422a1814610b98578063f0cd1dac14610bb8578063f1d5f51714610bce57600080fd5b8063cab03471116100f2578063cab0347114610ac0578063d158272d14610ad6578063da00097d14610afb578063dc44b6a014610b1c578063dd62ed3e14610b3257600080fd5b8063c5d2418914610a44578063c816841b14610a5a578063c860795214610a7a578063c867d60b14610a9057600080fd5b8063a457c2d7116101a6578063b2bdfa7b11610175578063b2bdfa7b146109ae578063b6b36643146109ce578063c2d4640e146109ee578063c469b6dd14610a0e578063c49b9a8014610a2457600080fd5b8063a457c2d714610938578063a5d69d1f14610958578063a83f53a714610978578063a9059cbb1461098e57600080fd5b8063993945ac116101e2578063993945ac146108d75780639a55fff0146108ed578063a073d37f1461090d578063a08e671f1461092257600080fd5b80638b42507f1461085f5780638da5cb5b1461088f578063914eb66a146108ad57806395d89b41146108c257600080fd5b8063395093511161030e5780635881f3ef116102a1578063807c2d9c11610270578063807c2d9c146107dd57806382eefb43146107f3578063844d591c14610809578063865541e71461082957806388790a681461084957600080fd5b80635881f3ef1461075b57806361a23c691461077b57806370a08231146107915780637d1db4a5146107c757600080fd5b80634cb80fd5116102dd5780634cb80fd5146106e25780635342acb414610702578063557ed1ba1461073257806357a5802f1461074557600080fd5b806339509351146106515780633b97084a146106715780633ecad271146106915780634a74bb02146106c157600080fd5b80632198cf6c11610391578063297ac6de11610360578063297ac6de146105ce5780632b112e49146105e45780632c4b2334146105f9578063313ce5671461061957806337e5ccf71461063b57600080fd5b80632198cf6c1461054e57806323b872dd1461056e5780632563ae831461058e57806327c8f835146105ae57600080fd5b80631694505e116103cd5780631694505e146104bf57806318160ddd146104df5780631870517a146104fe5780631cdd3be31461051e57600080fd5b806306fdde031461040a578063095ea7b3146104355780630d5e5c87146104655780631245e3471461048757600080fd5b3661040557005b600080fd5b34801561041657600080fd5b5061041f610c85565b60405161042c9190612a6f565b60405180910390f35b34801561044157600080fd5b506104556104503660046128ed565b610d17565b604051901515815260200161042c565b34801561047157600080fd5b506104856104803660046129d1565b610d2e565b005b34801561049357600080fd5b506004546104a7906001600160a01b031681565b6040516001600160a01b03909116815260200161042c565b3480156104cb57600080fd5b506021546104a7906001600160a01b031681565b3480156104eb57600080fd5b50601d545b60405190815260200161042c565b34801561050a57600080fd5b506104856105193660046129d1565b610d91565b34801561052a57600080fd5b50610455610539366004612804565b60066020526000908152604090205460ff1681565b34801561055a57600080fd5b506104856105693660046128b8565b610de5565b34801561057a57600080fd5b50610455610589366004612877565b610e3a565b34801561059a57600080fd5b506104856105a936600461299d565b610ea5565b3480156105ba57600080fd5b506005546104a7906001600160a01b031681565b3480156105da57600080fd5b506104f060145481565b3480156105f057600080fd5b506104f0610eed565b34801561060557600080fd5b50610485610614366004612804565b610f19565b34801561062557600080fd5b5060035460405160ff909116815260200161042c565b34801561064757600080fd5b506104f060105481565b34801561065d57600080fd5b5061045561066c3660046128ed565b610f65565b34801561067d57600080fd5b5061048561068c3660046129b8565b610f9b565b34801561069d57600080fd5b506104556106ac366004612804565b600c6020526000908152604090205460ff1681565b3480156106cd57600080fd5b5060225461045590600160a81b900460ff1681565b3480156106ee57600080fd5b506104856106fd366004612804565b610fca565b34801561070e57600080fd5b5061045561071d366004612804565b60096020526000908152604090205460ff1681565b34801561073e57600080fd5b50426104f0565b34801561075157600080fd5b506104f060155481565b34801561076757600080fd5b506104a7610776366004612804565b61101c565b34801561078757600080fd5b506104f060165481565b34801561079d57600080fd5b506104f06107ac366004612804565b6001600160a01b031660009081526007602052604090205490565b3480156107d357600080fd5b506104f0601e5481565b3480156107e957600080fd5b506104f0601f5481565b3480156107ff57600080fd5b506104f0601a5481565b34801561081557600080fd5b506104856108243660046128b8565b6113ae565b34801561083557600080fd5b506104856108443660046129b8565b611403565b34801561085557600080fd5b506104f060115481565b34801561086b57600080fd5b5061045561087a366004612804565b600b6020526000908152604090205460ff1681565b34801561089b57600080fd5b506000546001600160a01b03166104a7565b3480156108b957600080fd5b50610485611452565b3480156108ce57600080fd5b5061041f6114c6565b3480156108e357600080fd5b506104f0601c5481565b3480156108f957600080fd5b50610485610908366004612919565b6114d5565b34801561091957600080fd5b506020546104f0565b34801561092e57600080fd5b506104f060185481565b34801561094457600080fd5b506104556109533660046128ed565b611576565b34801561096457600080fd5b5061048561097336600461299d565b6115c5565b34801561098457600080fd5b506104f060175481565b34801561099a57600080fd5b506104556109a93660046128ed565b61160d565b3480156109ba57600080fd5b506000546104a7906001600160a01b031681565b3480156109da57600080fd5b506104856109e93660046129b8565b61161a565b3480156109fa57600080fd5b50610485610a093660046129d1565b611649565b348015610a1a57600080fd5b506104f0600f5481565b348015610a3057600080fd5b50610485610a3f36600461299d565b611698565b348015610a5057600080fd5b506104f0600e5481565b348015610a6657600080fd5b506022546104a7906001600160a01b031681565b348015610a8657600080fd5b506104f060125481565b348015610a9c57600080fd5b50610455610aab366004612804565b600a6020526000908152604090205460ff1681565b348015610acc57600080fd5b506104f060135481565b348015610ae257600080fd5b506003546104a79061010090046001600160a01b031681565b348015610b0757600080fd5b5060225461045590600160b01b900460ff1681565b348015610b2857600080fd5b506104f0600d5481565b348015610b3e57600080fd5b506104f0610b4d36600461283e565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b348015610b8457600080fd5b50610485610b933660046129b8565b61171a565b348015610ba457600080fd5b50610485610bb33660046128b8565b611749565b348015610bc457600080fd5b506104f060195481565b348015610bda57600080fd5b50610485610be93660046129b8565b61179e565b348015610bfa57600080fd5b50610485610c09366004612804565b6117cd565b348015610c1a57600080fd5b50610485610c293660046129b8565b6118b7565b348015610c3a57600080fd5b50610485610c493660046128b8565b611906565b348015610c5a57600080fd5b5060225461045590600160b81b900460ff1681565b348015610c7b57600080fd5b506104f0601b5481565b606060018054610c9490612bc6565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc090612bc6565b8015610d0d5780601f10610ce257610100808354040283529160200191610d0d565b820191906000526020600020905b815481529060010190602001808311610cf057829003601f168201915b5050505050905090565b6000610d243384846119ba565b5060015b92915050565b6000546001600160a01b03163314610d615760405162461bcd60e51b8152600401610d5890612ac4565b60405180910390fd5b601183905560128290556013819055601454610d8990610d838381878761195b565b9061195b565b601a55505050565b6000546001600160a01b03163314610dbb5760405162461bcd60e51b8152600401610d5890612ac4565b600d839055600e829055600f819055601054610ddd90610d838381878761195b565b601955505050565b6000546001600160a01b03163314610e0f5760405162461bcd60e51b8152600401610d5890612ac4565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000610e47848484611ade565b50610e9a8433610e9585604051806060016040528060288152602001612c61602891396001600160a01b038a1660009081526008602090815260408083203384529091529020549190611f84565b6119ba565b5060015b9392505050565b6000546001600160a01b03163314610ecf5760405162461bcd60e51b8152600401610d5890612ac4565b60228054911515600160b81b0260ff60b81b19909216919091179055565b6005546001600160a01b0316600090815260076020526040812054601d54610f1491611fbe565b905090565b6000546001600160a01b03163314610f435760405162461bcd60e51b8152600401610d5890612ac4565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526008602090815260408083206001600160a01b03871684529091528120549091610d24918590610e95908661195b565b6000546001600160a01b03163314610fc55760405162461bcd60e51b8152600401610d5890612ac4565b602055565b6000546001600160a01b03163314610ff45760405162461bcd60e51b8152600401610d5890612ac4565b600380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600080546001600160a01b031633146110475760405162461bcd60e51b8152600401610d5890612ac4565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561108557600080fd5b505afa158015611099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110bd9190612821565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561110557600080fd5b505afa158015611119573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113d9190612821565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561118357600080fd5b505afa158015611197573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bb9190612821565b91506001600160a01b03821661133f57806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561120457600080fd5b505afa158015611218573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123c9190612821565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561128457600080fd5b505afa158015611298573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bc9190612821565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561130457600080fd5b505af1158015611318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133c9190612821565b91505b602280546001600160a01b03199081166001600160a01b03858116918217845560218054909316948116949094179091556000908152600a60209081526040808320805460ff19908116600190811790925594549095168352600c909152902080549091169091179055919050565b6000546001600160a01b031633146113d85760405162461bcd60e51b8152600401610d5890612ac4565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461142d5760405162461bcd60e51b8152600401610d5890612ac4565b6010819055600f54600e54600d5461144c928492610d8392839161195b565b60195550565b6000546001600160a01b0316331461147c5760405162461bcd60e51b8152600401610d5890612ac4565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b606060028054610c9490612bc6565b6000546001600160a01b031633146114ff5760405162461bcd60e51b8152600401610d5890612ac4565b60005b8281101561157057816006600086868581811061152157611521612c32565b90506020020160208101906115369190612804565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061156881612c01565b915050611502565b50505050565b6000610d243384610e9585604051806060016040528060258152602001612ca9602591393360009081526008602090815260408083206001600160a01b038d1684529091529020549190611f84565b6000546001600160a01b031633146115ef5760405162461bcd60e51b8152600401610d5890612ac4565b60228054911515600160b01b0260ff60b01b19909216919091179055565b6000610e9a338484611ade565b6000546001600160a01b031633146116445760405162461bcd60e51b8152600401610d5890612ac4565b601c55565b6000546001600160a01b031633146116735760405162461bcd60e51b8152600401610d5890612ac4565b60158390556016829055601781905561169081610d83858561195b565b601855505050565b6000546001600160a01b031633146116c25760405162461bcd60e51b8152600401610d5890612ac4565b60228054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061170f90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146117445760405162461bcd60e51b8152600401610d5890612ac4565b601e55565b6000546001600160a01b031633146117735760405162461bcd60e51b8152600401610d5890612ac4565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146117c85760405162461bcd60e51b8152600401610d5890612ac4565b601f55565b6000546001600160a01b031633146117f75760405162461bcd60e51b8152600401610d5890612ac4565b6001600160a01b03811661185c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d58565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118e15760405162461bcd60e51b8152600401610d5890612ac4565b6014819055601354601254601154611900928492610d8392839161195b565b601a5550565b6000546001600160a01b031633146119305760405162461bcd60e51b8152600401610d5890612ac4565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000806119688385612b56565b905083811015610e9e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610d58565b6001600160a01b038316611a1c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d58565b6001600160a01b038216611a7d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d58565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611b445760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d58565b6001600160a01b038316611ba65760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d58565b60008211611c085760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610d58565b6001600160a01b03841660009081526006602052604090205460ff16158015611c4a57506001600160a01b03831660009081526006602052604090205460ff16155b611c8c5760405162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b6044820152606401610d58565b602254600160a01b900460ff1615611cb057611ca9848484612000565b9050610e9e565b6001600160a01b0384166000908152600b602052604090205460ff16158015611cf257506001600160a01b0383166000908152600b602052604090205460ff16155b15611d5a57601e54821115611d5a5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610d58565b3060009081526007602052604081205460205490915081108015908190611d8b5750602254600160a01b900460ff16155b8015611db057506001600160a01b0386166000908152600c602052604090205460ff16155b8015611dc55750602254600160a81b900460ff165b15611deb57602254600160b01b900460ff1615611de25760205491505b611deb826120d4565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038916600090815260079091529190912054611e3d918690611f84565b6001600160a01b038716600090815260076020908152604080832093909355600990529081205460ff1680611e8a57506001600160a01b03861660009081526009602052604090205460ff165b611e9e57611e9987878761220f565b611ea0565b845b602254909150600160b81b900460ff168015611ed557506001600160a01b0386166000908152600a602052604090205460ff16155b15611f0b57601f54611f0082610d83896001600160a01b031660009081526007602052604090205490565b1115611f0b57600080fd5b6001600160a01b038616600090815260076020526040902054611f2e908261195b565b6001600160a01b038088166000818152600760205260409081902093909355915190891690600080516020612c8983398151915290611f709085815260200190565b60405180910390a360019350505050610e9e565b60008184841115611fa85760405162461bcd60e51b8152600401610d589190612a6f565b506000611fb58486612baf565b95945050505050565b6000610e9e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f84565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600790915291822054612051918490611f84565b6001600160a01b038086166000908152600760205260408082209390935590851681522054612080908361195b565b6001600160a01b038085166000818152600760205260409081902093909355915190861690600080516020612c89833981519152906120c29086815260200190565b60405180910390a35060019392505050565b6022805460ff60a01b1916600160a01b17905560185460155460009161210a9160029161210491829087906123a9565b90612428565b905060006121188383611fbe565b90506121238161246a565b60155447906000906121439061213a906002612428565b60185490611fbe565b90506000612165600261210484612104601554886123a990919063ffffffff16565b9050600061218283612104601754876123a990919063ffffffff16565b9050600061219a826121948786611fbe565b90611fbe565b905080156121bd576003546121bd9061010090046001600160a01b03168261260c565b81156121d9576004546121d9906001600160a01b03168361260c565b6000831180156121e95750600087115b156121f8576121f88784612647565b50506022805460ff60a01b19169055505050505050565b6001600160a01b0383166000908152600c60205260408120548190819060ff16156122a15761225a6064612104612253601054601954611fbe90919063ffffffff16565b87906123a9565b915060006010541180156122715750601c54601b54105b1561229c576122906064612104601054876123a990919063ffffffff16565b905061229c868261272b565b612323565b6001600160a01b0385166000908152600c602052604090205460ff1615612323576122e16064612104612253601454601a54611fbe90919063ffffffff16565b915060006014541180156122f85750601c54601b54105b15612323576123176064612104601454876123a990919063ffffffff16565b9050612323868261272b565b811561238b5730600090815260076020526040902054612343908361195b565b30600081815260076020526040908190209290925590516001600160a01b03881690600080516020612c89833981519152906123829086815260200190565b60405180910390a35b61239f612398838361195b565b8590611fbe565b9695505050505050565b6000826123b857506000610d28565b60006123c48385612b90565b9050826123d18583612b6e565b14610e9e5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610d58565b6000610e9e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127c1565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061249f5761249f612c32565b6001600160a01b03928316602091820292909201810191909152602154604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156124f357600080fd5b505afa158015612507573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252b9190612821565b8160018151811061253e5761253e612c32565b6001600160a01b03928316602091820292909201015260215461256491309116846119ba565b60215460405163791ac94760e01b81526001600160a01b039091169063791ac9479061259d908590600090869030904290600401612b1a565b600060405180830381600087803b1580156125b757600080fd5b505af11580156125cb573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612600929190612af9565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015612642573d6000803e3d6000fd5b505050565b60215461265f9030906001600160a01b0316846119ba565b6021546001600160a01b031663f305d7198230856000806126886000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b1580156126eb57600080fd5b505af11580156126ff573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061272491906129fd565b5050505050565b601c54601b541061273a575050565b6005546001600160a01b031660009081526007602052604090205461275f908261195b565b6005546001600160a01b0316600090815260076020526040902055601b54612787908261195b565b601b556005546040518281526001600160a01b0391821691841690600080516020612c898339815191529060200160405180910390a35050565b600081836127e25760405162461bcd60e51b8152600401610d589190612a6f565b506000611fb58486612b6e565b803580151581146127ff57600080fd5b919050565b60006020828403121561281657600080fd5b8135610e9e81612c48565b60006020828403121561283357600080fd5b8151610e9e81612c48565b6000806040838503121561285157600080fd5b823561285c81612c48565b9150602083013561286c81612c48565b809150509250929050565b60008060006060848603121561288c57600080fd5b833561289781612c48565b925060208401356128a781612c48565b929592945050506040919091013590565b600080604083850312156128cb57600080fd5b82356128d681612c48565b91506128e4602084016127ef565b90509250929050565b6000806040838503121561290057600080fd5b823561290b81612c48565b946020939093013593505050565b60008060006040848603121561292e57600080fd5b833567ffffffffffffffff8082111561294657600080fd5b818601915086601f83011261295a57600080fd5b81358181111561296957600080fd5b8760208260051b850101111561297e57600080fd5b60209283019550935061299491860190506127ef565b90509250925092565b6000602082840312156129af57600080fd5b610e9e826127ef565b6000602082840312156129ca57600080fd5b5035919050565b6000806000606084860312156129e657600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612a1257600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b83811015612a645781516001600160a01b031687529582019590820190600101612a3f565b509495945050505050565b600060208083528351808285015260005b81811015612a9c57858101830151858201604001528201612a80565b81811115612aae576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b828152604060208201526000612b126040830184612a2b565b949350505050565b85815284602082015260a060408201526000612b3960a0830186612a2b565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612b6957612b69612c1c565b500190565b600082612b8b57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612baa57612baa612c1c565b500290565b600082821015612bc157612bc1612c1c565b500390565b600181811c90821680612bda57607f821691505b60208210811415612bfb57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612c1557612c15612c1c565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612c5d57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220154359123a9d2ef931781be9cc8003ebede4eebf54854d64ecae6a06fd011dae64736f6c63430008070033000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000e1ac4ce6fa29de6cb25201b3cbd6b1dd323dec09000000000000000000000000e9482bf27b95856bef0932522803391507d5e5650000000000000000000000003053c90866cadf94aaa52291a8e885e71968cac00000000000000000000000009bb69e4ddda0a1865fec3ba828787e6f886750f7000000000000000000000000000000000000000000000000000000000000000d576861742048415050454e454400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000848415050454e4544000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106103fe5760003560e01c80638b42507f11610213578063c5d2418911610123578063ec28438a116100ab578063f2fde38b1161007a578063f2fde38b14610bee578063f744bf2214610c0e578063f84ba65d14610c2e578063f872858a14610c4e578063fb1eb14b14610c6f57600080fd5b8063ec28438a14610b78578063ef422a1814610b98578063f0cd1dac14610bb8578063f1d5f51714610bce57600080fd5b8063cab03471116100f2578063cab0347114610ac0578063d158272d14610ad6578063da00097d14610afb578063dc44b6a014610b1c578063dd62ed3e14610b3257600080fd5b8063c5d2418914610a44578063c816841b14610a5a578063c860795214610a7a578063c867d60b14610a9057600080fd5b8063a457c2d7116101a6578063b2bdfa7b11610175578063b2bdfa7b146109ae578063b6b36643146109ce578063c2d4640e146109ee578063c469b6dd14610a0e578063c49b9a8014610a2457600080fd5b8063a457c2d714610938578063a5d69d1f14610958578063a83f53a714610978578063a9059cbb1461098e57600080fd5b8063993945ac116101e2578063993945ac146108d75780639a55fff0146108ed578063a073d37f1461090d578063a08e671f1461092257600080fd5b80638b42507f1461085f5780638da5cb5b1461088f578063914eb66a146108ad57806395d89b41146108c257600080fd5b8063395093511161030e5780635881f3ef116102a1578063807c2d9c11610270578063807c2d9c146107dd57806382eefb43146107f3578063844d591c14610809578063865541e71461082957806388790a681461084957600080fd5b80635881f3ef1461075b57806361a23c691461077b57806370a08231146107915780637d1db4a5146107c757600080fd5b80634cb80fd5116102dd5780634cb80fd5146106e25780635342acb414610702578063557ed1ba1461073257806357a5802f1461074557600080fd5b806339509351146106515780633b97084a146106715780633ecad271146106915780634a74bb02146106c157600080fd5b80632198cf6c11610391578063297ac6de11610360578063297ac6de146105ce5780632b112e49146105e45780632c4b2334146105f9578063313ce5671461061957806337e5ccf71461063b57600080fd5b80632198cf6c1461054e57806323b872dd1461056e5780632563ae831461058e57806327c8f835146105ae57600080fd5b80631694505e116103cd5780631694505e146104bf57806318160ddd146104df5780631870517a146104fe5780631cdd3be31461051e57600080fd5b806306fdde031461040a578063095ea7b3146104355780630d5e5c87146104655780631245e3471461048757600080fd5b3661040557005b600080fd5b34801561041657600080fd5b5061041f610c85565b60405161042c9190612a6f565b60405180910390f35b34801561044157600080fd5b506104556104503660046128ed565b610d17565b604051901515815260200161042c565b34801561047157600080fd5b506104856104803660046129d1565b610d2e565b005b34801561049357600080fd5b506004546104a7906001600160a01b031681565b6040516001600160a01b03909116815260200161042c565b3480156104cb57600080fd5b506021546104a7906001600160a01b031681565b3480156104eb57600080fd5b50601d545b60405190815260200161042c565b34801561050a57600080fd5b506104856105193660046129d1565b610d91565b34801561052a57600080fd5b50610455610539366004612804565b60066020526000908152604090205460ff1681565b34801561055a57600080fd5b506104856105693660046128b8565b610de5565b34801561057a57600080fd5b50610455610589366004612877565b610e3a565b34801561059a57600080fd5b506104856105a936600461299d565b610ea5565b3480156105ba57600080fd5b506005546104a7906001600160a01b031681565b3480156105da57600080fd5b506104f060145481565b3480156105f057600080fd5b506104f0610eed565b34801561060557600080fd5b50610485610614366004612804565b610f19565b34801561062557600080fd5b5060035460405160ff909116815260200161042c565b34801561064757600080fd5b506104f060105481565b34801561065d57600080fd5b5061045561066c3660046128ed565b610f65565b34801561067d57600080fd5b5061048561068c3660046129b8565b610f9b565b34801561069d57600080fd5b506104556106ac366004612804565b600c6020526000908152604090205460ff1681565b3480156106cd57600080fd5b5060225461045590600160a81b900460ff1681565b3480156106ee57600080fd5b506104856106fd366004612804565b610fca565b34801561070e57600080fd5b5061045561071d366004612804565b60096020526000908152604090205460ff1681565b34801561073e57600080fd5b50426104f0565b34801561075157600080fd5b506104f060155481565b34801561076757600080fd5b506104a7610776366004612804565b61101c565b34801561078757600080fd5b506104f060165481565b34801561079d57600080fd5b506104f06107ac366004612804565b6001600160a01b031660009081526007602052604090205490565b3480156107d357600080fd5b506104f0601e5481565b3480156107e957600080fd5b506104f0601f5481565b3480156107ff57600080fd5b506104f0601a5481565b34801561081557600080fd5b506104856108243660046128b8565b6113ae565b34801561083557600080fd5b506104856108443660046129b8565b611403565b34801561085557600080fd5b506104f060115481565b34801561086b57600080fd5b5061045561087a366004612804565b600b6020526000908152604090205460ff1681565b34801561089b57600080fd5b506000546001600160a01b03166104a7565b3480156108b957600080fd5b50610485611452565b3480156108ce57600080fd5b5061041f6114c6565b3480156108e357600080fd5b506104f0601c5481565b3480156108f957600080fd5b50610485610908366004612919565b6114d5565b34801561091957600080fd5b506020546104f0565b34801561092e57600080fd5b506104f060185481565b34801561094457600080fd5b506104556109533660046128ed565b611576565b34801561096457600080fd5b5061048561097336600461299d565b6115c5565b34801561098457600080fd5b506104f060175481565b34801561099a57600080fd5b506104556109a93660046128ed565b61160d565b3480156109ba57600080fd5b506000546104a7906001600160a01b031681565b3480156109da57600080fd5b506104856109e93660046129b8565b61161a565b3480156109fa57600080fd5b50610485610a093660046129d1565b611649565b348015610a1a57600080fd5b506104f0600f5481565b348015610a3057600080fd5b50610485610a3f36600461299d565b611698565b348015610a5057600080fd5b506104f0600e5481565b348015610a6657600080fd5b506022546104a7906001600160a01b031681565b348015610a8657600080fd5b506104f060125481565b348015610a9c57600080fd5b50610455610aab366004612804565b600a6020526000908152604090205460ff1681565b348015610acc57600080fd5b506104f060135481565b348015610ae257600080fd5b506003546104a79061010090046001600160a01b031681565b348015610b0757600080fd5b5060225461045590600160b01b900460ff1681565b348015610b2857600080fd5b506104f0600d5481565b348015610b3e57600080fd5b506104f0610b4d36600461283e565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b348015610b8457600080fd5b50610485610b933660046129b8565b61171a565b348015610ba457600080fd5b50610485610bb33660046128b8565b611749565b348015610bc457600080fd5b506104f060195481565b348015610bda57600080fd5b50610485610be93660046129b8565b61179e565b348015610bfa57600080fd5b50610485610c09366004612804565b6117cd565b348015610c1a57600080fd5b50610485610c293660046129b8565b6118b7565b348015610c3a57600080fd5b50610485610c493660046128b8565b611906565b348015610c5a57600080fd5b5060225461045590600160b81b900460ff1681565b348015610c7b57600080fd5b506104f0601b5481565b606060018054610c9490612bc6565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc090612bc6565b8015610d0d5780601f10610ce257610100808354040283529160200191610d0d565b820191906000526020600020905b815481529060010190602001808311610cf057829003601f168201915b5050505050905090565b6000610d243384846119ba565b5060015b92915050565b6000546001600160a01b03163314610d615760405162461bcd60e51b8152600401610d5890612ac4565b60405180910390fd5b601183905560128290556013819055601454610d8990610d838381878761195b565b9061195b565b601a55505050565b6000546001600160a01b03163314610dbb5760405162461bcd60e51b8152600401610d5890612ac4565b600d839055600e829055600f819055601054610ddd90610d838381878761195b565b601955505050565b6000546001600160a01b03163314610e0f5760405162461bcd60e51b8152600401610d5890612ac4565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000610e47848484611ade565b50610e9a8433610e9585604051806060016040528060288152602001612c61602891396001600160a01b038a1660009081526008602090815260408083203384529091529020549190611f84565b6119ba565b5060015b9392505050565b6000546001600160a01b03163314610ecf5760405162461bcd60e51b8152600401610d5890612ac4565b60228054911515600160b81b0260ff60b81b19909216919091179055565b6005546001600160a01b0316600090815260076020526040812054601d54610f1491611fbe565b905090565b6000546001600160a01b03163314610f435760405162461bcd60e51b8152600401610d5890612ac4565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526008602090815260408083206001600160a01b03871684529091528120549091610d24918590610e95908661195b565b6000546001600160a01b03163314610fc55760405162461bcd60e51b8152600401610d5890612ac4565b602055565b6000546001600160a01b03163314610ff45760405162461bcd60e51b8152600401610d5890612ac4565b600380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600080546001600160a01b031633146110475760405162461bcd60e51b8152600401610d5890612ac4565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561108557600080fd5b505afa158015611099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110bd9190612821565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561110557600080fd5b505afa158015611119573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113d9190612821565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561118357600080fd5b505afa158015611197573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bb9190612821565b91506001600160a01b03821661133f57806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561120457600080fd5b505afa158015611218573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123c9190612821565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561128457600080fd5b505afa158015611298573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bc9190612821565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561130457600080fd5b505af1158015611318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133c9190612821565b91505b602280546001600160a01b03199081166001600160a01b03858116918217845560218054909316948116949094179091556000908152600a60209081526040808320805460ff19908116600190811790925594549095168352600c909152902080549091169091179055919050565b6000546001600160a01b031633146113d85760405162461bcd60e51b8152600401610d5890612ac4565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461142d5760405162461bcd60e51b8152600401610d5890612ac4565b6010819055600f54600e54600d5461144c928492610d8392839161195b565b60195550565b6000546001600160a01b0316331461147c5760405162461bcd60e51b8152600401610d5890612ac4565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b606060028054610c9490612bc6565b6000546001600160a01b031633146114ff5760405162461bcd60e51b8152600401610d5890612ac4565b60005b8281101561157057816006600086868581811061152157611521612c32565b90506020020160208101906115369190612804565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061156881612c01565b915050611502565b50505050565b6000610d243384610e9585604051806060016040528060258152602001612ca9602591393360009081526008602090815260408083206001600160a01b038d1684529091529020549190611f84565b6000546001600160a01b031633146115ef5760405162461bcd60e51b8152600401610d5890612ac4565b60228054911515600160b01b0260ff60b01b19909216919091179055565b6000610e9a338484611ade565b6000546001600160a01b031633146116445760405162461bcd60e51b8152600401610d5890612ac4565b601c55565b6000546001600160a01b031633146116735760405162461bcd60e51b8152600401610d5890612ac4565b60158390556016829055601781905561169081610d83858561195b565b601855505050565b6000546001600160a01b031633146116c25760405162461bcd60e51b8152600401610d5890612ac4565b60228054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061170f90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146117445760405162461bcd60e51b8152600401610d5890612ac4565b601e55565b6000546001600160a01b031633146117735760405162461bcd60e51b8152600401610d5890612ac4565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146117c85760405162461bcd60e51b8152600401610d5890612ac4565b601f55565b6000546001600160a01b031633146117f75760405162461bcd60e51b8152600401610d5890612ac4565b6001600160a01b03811661185c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d58565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118e15760405162461bcd60e51b8152600401610d5890612ac4565b6014819055601354601254601154611900928492610d8392839161195b565b601a5550565b6000546001600160a01b031633146119305760405162461bcd60e51b8152600401610d5890612ac4565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000806119688385612b56565b905083811015610e9e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610d58565b6001600160a01b038316611a1c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d58565b6001600160a01b038216611a7d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d58565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611b445760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d58565b6001600160a01b038316611ba65760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d58565b60008211611c085760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610d58565b6001600160a01b03841660009081526006602052604090205460ff16158015611c4a57506001600160a01b03831660009081526006602052604090205460ff16155b611c8c5760405162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b6044820152606401610d58565b602254600160a01b900460ff1615611cb057611ca9848484612000565b9050610e9e565b6001600160a01b0384166000908152600b602052604090205460ff16158015611cf257506001600160a01b0383166000908152600b602052604090205460ff16155b15611d5a57601e54821115611d5a5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610d58565b3060009081526007602052604081205460205490915081108015908190611d8b5750602254600160a01b900460ff16155b8015611db057506001600160a01b0386166000908152600c602052604090205460ff16155b8015611dc55750602254600160a81b900460ff165b15611deb57602254600160b01b900460ff1615611de25760205491505b611deb826120d4565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038916600090815260079091529190912054611e3d918690611f84565b6001600160a01b038716600090815260076020908152604080832093909355600990529081205460ff1680611e8a57506001600160a01b03861660009081526009602052604090205460ff165b611e9e57611e9987878761220f565b611ea0565b845b602254909150600160b81b900460ff168015611ed557506001600160a01b0386166000908152600a602052604090205460ff16155b15611f0b57601f54611f0082610d83896001600160a01b031660009081526007602052604090205490565b1115611f0b57600080fd5b6001600160a01b038616600090815260076020526040902054611f2e908261195b565b6001600160a01b038088166000818152600760205260409081902093909355915190891690600080516020612c8983398151915290611f709085815260200190565b60405180910390a360019350505050610e9e565b60008184841115611fa85760405162461bcd60e51b8152600401610d589190612a6f565b506000611fb58486612baf565b95945050505050565b6000610e9e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f84565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600790915291822054612051918490611f84565b6001600160a01b038086166000908152600760205260408082209390935590851681522054612080908361195b565b6001600160a01b038085166000818152600760205260409081902093909355915190861690600080516020612c89833981519152906120c29086815260200190565b60405180910390a35060019392505050565b6022805460ff60a01b1916600160a01b17905560185460155460009161210a9160029161210491829087906123a9565b90612428565b905060006121188383611fbe565b90506121238161246a565b60155447906000906121439061213a906002612428565b60185490611fbe565b90506000612165600261210484612104601554886123a990919063ffffffff16565b9050600061218283612104601754876123a990919063ffffffff16565b9050600061219a826121948786611fbe565b90611fbe565b905080156121bd576003546121bd9061010090046001600160a01b03168261260c565b81156121d9576004546121d9906001600160a01b03168361260c565b6000831180156121e95750600087115b156121f8576121f88784612647565b50506022805460ff60a01b19169055505050505050565b6001600160a01b0383166000908152600c60205260408120548190819060ff16156122a15761225a6064612104612253601054601954611fbe90919063ffffffff16565b87906123a9565b915060006010541180156122715750601c54601b54105b1561229c576122906064612104601054876123a990919063ffffffff16565b905061229c868261272b565b612323565b6001600160a01b0385166000908152600c602052604090205460ff1615612323576122e16064612104612253601454601a54611fbe90919063ffffffff16565b915060006014541180156122f85750601c54601b54105b15612323576123176064612104601454876123a990919063ffffffff16565b9050612323868261272b565b811561238b5730600090815260076020526040902054612343908361195b565b30600081815260076020526040908190209290925590516001600160a01b03881690600080516020612c89833981519152906123829086815260200190565b60405180910390a35b61239f612398838361195b565b8590611fbe565b9695505050505050565b6000826123b857506000610d28565b60006123c48385612b90565b9050826123d18583612b6e565b14610e9e5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610d58565b6000610e9e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127c1565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061249f5761249f612c32565b6001600160a01b03928316602091820292909201810191909152602154604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156124f357600080fd5b505afa158015612507573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252b9190612821565b8160018151811061253e5761253e612c32565b6001600160a01b03928316602091820292909201015260215461256491309116846119ba565b60215460405163791ac94760e01b81526001600160a01b039091169063791ac9479061259d908590600090869030904290600401612b1a565b600060405180830381600087803b1580156125b757600080fd5b505af11580156125cb573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612600929190612af9565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015612642573d6000803e3d6000fd5b505050565b60215461265f9030906001600160a01b0316846119ba565b6021546001600160a01b031663f305d7198230856000806126886000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b1580156126eb57600080fd5b505af11580156126ff573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061272491906129fd565b5050505050565b601c54601b541061273a575050565b6005546001600160a01b031660009081526007602052604090205461275f908261195b565b6005546001600160a01b0316600090815260076020526040902055601b54612787908261195b565b601b556005546040518281526001600160a01b0391821691841690600080516020612c898339815191529060200160405180910390a35050565b600081836127e25760405162461bcd60e51b8152600401610d589190612a6f565b506000611fb58486612b6e565b803580151581146127ff57600080fd5b919050565b60006020828403121561281657600080fd5b8135610e9e81612c48565b60006020828403121561283357600080fd5b8151610e9e81612c48565b6000806040838503121561285157600080fd5b823561285c81612c48565b9150602083013561286c81612c48565b809150509250929050565b60008060006060848603121561288c57600080fd5b833561289781612c48565b925060208401356128a781612c48565b929592945050506040919091013590565b600080604083850312156128cb57600080fd5b82356128d681612c48565b91506128e4602084016127ef565b90509250929050565b6000806040838503121561290057600080fd5b823561290b81612c48565b946020939093013593505050565b60008060006040848603121561292e57600080fd5b833567ffffffffffffffff8082111561294657600080fd5b818601915086601f83011261295a57600080fd5b81358181111561296957600080fd5b8760208260051b850101111561297e57600080fd5b60209283019550935061299491860190506127ef565b90509250925092565b6000602082840312156129af57600080fd5b610e9e826127ef565b6000602082840312156129ca57600080fd5b5035919050565b6000806000606084860312156129e657600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612a1257600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b83811015612a645781516001600160a01b031687529582019590820190600101612a3f565b509495945050505050565b600060208083528351808285015260005b81811015612a9c57858101830151858201604001528201612a80565b81811115612aae576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b828152604060208201526000612b126040830184612a2b565b949350505050565b85815284602082015260a060408201526000612b3960a0830186612a2b565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612b6957612b69612c1c565b500190565b600082612b8b57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612baa57612baa612c1c565b500290565b600082821015612bc157612bc1612c1c565b500390565b600181811c90821680612bda57607f821691505b60208210811415612bfb57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612c1557612c15612c1c565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612c5d57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220154359123a9d2ef931781be9cc8003ebede4eebf54854d64ecae6a06fd011dae64736f6c63430008070033

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

000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000e1ac4ce6fa29de6cb25201b3cbd6b1dd323dec09000000000000000000000000e9482bf27b95856bef0932522803391507d5e5650000000000000000000000003053c90866cadf94aaa52291a8e885e71968cac00000000000000000000000009bb69e4ddda0a1865fec3ba828787e6f886750f7000000000000000000000000000000000000000000000000000000000000000d576861742048415050454e454400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000848415050454e4544000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : coinName (string): What HAPPENED
Arg [1] : coinSymbol (string): HAPPENED
Arg [2] : coinDecimals (uint8): 18
Arg [3] : supply (uint256): 1000000000
Arg [4] : router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [5] : owner (address): 0xE1AC4Ce6FA29dE6Cb25201B3CbD6B1dd323dec09
Arg [6] : marketingAddress (address): 0xe9482BF27b95856beF0932522803391507D5E565
Arg [7] : teamAddress (address): 0x3053c90866cADF94Aaa52291a8E885e71968cac0
Arg [8] : service (address): 0x9bB69e4dDDA0a1865FEC3ba828787E6f886750F7

-----Encoded View---------------
13 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 000000000000000000000000000000000000000000000000000000003b9aca00
Arg [4] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [5] : 000000000000000000000000e1ac4ce6fa29de6cb25201b3cbd6b1dd323dec09
Arg [6] : 000000000000000000000000e9482bf27b95856bef0932522803391507d5e565
Arg [7] : 0000000000000000000000003053c90866cadf94aaa52291a8e885e71968cac0
Arg [8] : 0000000000000000000000009bb69e4ddda0a1865fec3ba828787e6f886750f7
Arg [9] : 000000000000000000000000000000000000000000000000000000000000000d
Arg [10] : 576861742048415050454e454400000000000000000000000000000000000000
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [12] : 48415050454e4544000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

14168:17261:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18542:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19837:161;;;;;;;;;;-1:-1:-1;19837:161:0;;;;;:::i;:::-;;:::i;:::-;;;5861:14:1;;5854:22;5836:41;;5824:2;5809:18;19837:161:0;5696:187:1;21719:361:0;;;;;;;;;;-1:-1:-1;21719:361:0;;;;;:::i;:::-;;:::i;:::-;;14425:40;;;;;;;;;;-1:-1:-1;14425:40:0;;;;-1:-1:-1;;;;;14425:40:0;;;;;;-1:-1:-1;;;;;4507:32:1;;;4489:51;;4477:2;4462:18;14425:40:0;4343:203:1;15767:41:0;;;;;;;;;;-1:-1:-1;15767:41:0;;;;-1:-1:-1;;;;;15767:41:0;;;18819:100;;;;;;;;;;-1:-1:-1;18899:12:0;;18819:100;;;11182:25:1;;;11170:2;11155:18;18819:100:0;11036:177:1;21358:353:0;;;;;;;;;;-1:-1:-1;21358:353:0;;;;;:::i;:::-;;:::i;14550:46::-;;;;;;;;;;-1:-1:-1;14550:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;22924:135;;;;;;;;;;-1:-1:-1;22924:135:0;;;;;:::i;:::-;;:::i;25259:313::-;;;;;;;;;;-1:-1:-1;25259:313:0;;;;;:::i;:::-;;:::i;22803:113::-;;;;;;;;;;-1:-1:-1;22803:113:0;;;;;:::i;:::-;;:::i;14472:71::-;;;;;;;;;;-1:-1:-1;14472:71:0;;;;-1:-1:-1;;;;;14472:71:0;;;15238:34;;;;;;;;;;;;;;;;23906:128;;;;;;;;;;;;;:::i;23457:129::-;;;;;;;;;;-1:-1:-1;23457:129:0;;;;;:::i;:::-;;:::i;18728:83::-;;;;;;;;;;-1:-1:-1;18794:9:0;;18728:83;;18794:9;;;;12284:36:1;;12272:2;12257:18;18728:83:0;12142:184:1;15072:33:0;;;;;;;;;;;;;;;;19205:218;;;;;;;;;;-1:-1:-1;19205:218:0;;;;;:::i;:::-;;:::i;23177:125::-;;;;;;;;;;-1:-1:-1;23177:125:0;;;;;:::i;:::-;;:::i;14897:45::-;;;;;;;;;;-1:-1:-1;14897:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15878:40;;;;;;;;;;-1:-1:-1;15878:40:0;;;;-1:-1:-1;;;15878:40:0;;;;;;23310:139;;;;;;;;;;-1:-1:-1;23310:139:0;;;;;:::i;:::-;;:::i;14726:50::-;;;;;;;;;;-1:-1:-1;14726:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6197:90;;;;;;;;;;-1:-1:-1;6264:15:0;6197:90;;15281:34;;;;;;;;;;;;;;;;24176:806;;;;;;;;;;-1:-1:-1;24176:806:0;;;;;:::i;:::-;;:::i;15322:34::-;;;;;;;;;;;;;;;;18927:119;;;;;;;;;;-1:-1:-1;18927:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;19020:18:0;18993:7;19020:18;;;:9;:18;;;;;;;18927:119;15646:27;;;;;;;;;;;;;;;;15680:25;;;;;;;;;;;;;;;;15494:37;;;;;;;;;;;;;;;;20351:129;;;;;;;;;;-1:-1:-1;20351:129:0;;;;;:::i;:::-;;:::i;20885:224::-;;;;;;;;;;-1:-1:-1;20885:224:0;;;;;:::i;:::-;;:::i;15114:36::-;;;;;;;;;;;;;;;;14842:48;;;;;;;;;;-1:-1:-1;14842:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5578:79;;;;;;;;;;-1:-1:-1;5616:7:0;5643:6;-1:-1:-1;;;;;5643:6:0;5578:79;;5792:145;;;;;;;;;;;;;:::i;18633:87::-;;;;;;;;;;;;;:::i;15572:32::-;;;;;;;;;;;;;;;;22088:222;;;;;;;;;;-1:-1:-1;22088:222:0;;;;;:::i;:::-;;:::i;19708:121::-;;;;;;;;;;-1:-1:-1;19797:24:0;;19708:121;;15399:43;;;;;;;;;;;;;;;;19431:269;;;;;;;;;;-1:-1:-1;19431:269:0;;;;;:::i;:::-;;:::i;23773:125::-;;;;;;;;;;-1:-1:-1;23773:125:0;;;;;:::i;:::-;;:::i;15363:29::-;;;;;;;;;;;;;;;;25084:167;;;;;;;;;;-1:-1:-1;25084:167:0;;;;;:::i;:::-;;:::i;5454:21::-;;;;;;;;;;-1:-1:-1;5454:21:0;;;;-1:-1:-1;;;;;5454:21:0;;;20766:111;;;;;;;;;;-1:-1:-1;20766:111:0;;;;;:::i;:::-;;:::i;22318:358::-;;;;;;;;;;-1:-1:-1;22318:358:0;;;;;:::i;:::-;;:::i;15035:30::-;;;;;;;;;;;;;;;;23594:171;;;;;;;;;;-1:-1:-1;23594:171:0;;;;;:::i;:::-;;:::i;14993:35::-;;;;;;;;;;;;;;;;15815:26;;;;;;;;;;-1:-1:-1;15815:26:0;;;;-1:-1:-1;;;;;15815:26:0;;;15157:36;;;;;;;;;;;;;;;;14783:52;;;;;;;;;;-1:-1:-1;14783:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15200:31;;;;;;;;;;;;;;;;14373:45;;;;;;;;;;-1:-1:-1;14373:45:0;;;;;;;-1:-1:-1;;;;;14373:45:0;;;15925;;;;;;;;;;-1:-1:-1;15925:45:0;;;;-1:-1:-1;;;15925:45:0;;;;;;14951:35;;;;;;;;;;;;;;;;19054:143;;;;;;;;;;-1:-1:-1;19054:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;19162:18:0;;;19135:7;19162:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;19054:143;22684:111;;;;;;;;;;-1:-1:-1;22684:111:0;;;;;:::i;:::-;;:::i;20623:135::-;;;;;;;;;;-1:-1:-1;20623:135:0;;;;;:::i;:::-;;:::i;15451:36::-;;;;;;;;;;;;;;;;23067:102;;;;;;;;;;-1:-1:-1;23067:102:0;;;;;:::i;:::-;;:::i;5945:244::-;;;;;;;;;;-1:-1:-1;5945:244:0;;;;;:::i;:::-;;:::i;21117:233::-;;;;;;;;;;-1:-1:-1;21117:233:0;;;;;:::i;:::-;;:::i;20488:127::-;;;;;;;;;;-1:-1:-1;20488:127:0;;;;;:::i;:::-;;:::i;15977:35::-;;;;;;;;;;-1:-1:-1;15977:35:0;;;;-1:-1:-1;;;15977:35:0;;;;;;15540:25;;;;;;;;;;;;;;;;18542:83;18579:13;18612:5;18605:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18542:83;:::o;19837:161::-;19912:4;19929:39;198:10;19952:7;19961:6;19929:8;:39::i;:::-;-1:-1:-1;19986:4:0;19837:161;;;;;:::o;21719:361::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;;;;;;;;;21842:17:::1;:35:::0;;;21888:17:::1;:35:::0;;;21934:12:::1;:25:::0;;;22056:15:::1;::::0;21993:79:::1;::::0;:58:::1;21949:10:::0;21993:58;21862:15;21908;21993:21:::1;:40::i;:::-;:44:::0;::::1;:58::i;:79::-;21972:18;:100:::0;-1:-1:-1;;;21719:361:0:o;21358:353::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;21481:16:::1;:34:::0;;;21526:16:::1;:34:::0;;;21571:11:::1;:24:::0;;;21688:14:::1;::::0;21628:75:::1;::::0;:55:::1;21585:10:::0;21628:55;21500:15;21545;21628:20:::1;:38::i;:75::-;21608:17;:95:::0;-1:-1:-1;;;21358:353:0:o;22924:135::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23015:27:0;;;::::1;;::::0;;;:19:::1;:27;::::0;;;;:36;;-1:-1:-1;;23015:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22924:135::o;25259:313::-;25357:4;25374:36;25384:6;25392:9;25403:6;25374:9;:36::i;:::-;-1:-1:-1;25421:121:0;25430:6;198:10;25452:89;25490:6;25452:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25452:19:0;;;;;;:11;:19;;;;;;;;198:10;25452:33;;;;;;;;;;:37;:89::i;:::-;25421:8;:121::i;:::-;-1:-1:-1;25560:4:0;25259:313;;;;;;:::o;22803:113::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;22881:16:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;22881:27:0::1;-1:-1:-1::0;;;;22881:27:0;;::::1;::::0;;;::::1;::::0;;22803:113::o;23906:128::-;24013:11;;-1:-1:-1;;;;;24013:11:0;23959:7;19020:18;;;:9;:18;;;;;;23986:12;;:40;;:16;:40::i;:::-;23979:47;;23906:128;:::o;23457:129::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;23539:17:::1;:39:::0;;-1:-1:-1;;;;;;23539:39:0::1;-1:-1:-1::0;;;;;23539:39:0;;;::::1;::::0;;;::::1;::::0;;23457:129::o;19205:218::-;198:10;19293:4;19342:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19342:34:0;;;;;;;;;;19293:4;;19310:83;;19333:7;;19342:50;;19381:10;19342:38;:50::i;23177:125::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;23259:24:::1;:35:::0;23177:125::o;23310:139::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;23397:22:::1;:44:::0;;-1:-1:-1;;;;;23397:44:0;;::::1;;;-1:-1:-1::0;;;;;;23397:44:0;;::::1;::::0;;;::::1;::::0;;23310:139::o;24176:806::-;24256:22;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;24293:35:::1;24350:16;24293:74;;24415:16;-1:-1:-1::0;;;;;24415:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24397:53:0::1;;24459:4;24466:16;-1:-1:-1::0;;;;;24466:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24397:93;::::0;-1:-1:-1;;;;;;24397:93:0::1;::::0;;;;;;-1:-1:-1;;;;;5005:15:1;;;24397:93:0::1;::::0;::::1;4987:34:1::0;5057:15;;5037:18;;;5030:43;4922:18;;24397:93:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24380:110:::0;-1:-1:-1;;;;;;24506:28:0;::::1;24503:225;;24620:16;-1:-1:-1::0;;;;;24620:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24602:74:0::1;;24685:4;24692:16;-1:-1:-1::0;;;;;24692:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24602:114;::::0;-1:-1:-1;;;;;;24602:114:0::1;::::0;;;;;;-1:-1:-1;;;;;5005:15:1;;;24602:114:0::1;::::0;::::1;4987:34:1::0;5057:15;;5037:18;;;5030:43;4922:18;;24602:114:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24585:131;;24503:225;24740:11;:28:::0;;-1:-1:-1;;;;;;24740:28:0;;::::1;-1:-1:-1::0;;;;;24740:28:0;;::::1;::::0;;::::1;::::0;;24802:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;24874:41:0;;;:19:::1;:41;::::0;;;;;;;:48;;-1:-1:-1;;24874:48:0;;::::1;-1:-1:-1::0;24874:48:0;;::::1;::::0;;;24954:11;;;;::::1;24933:34:::0;;:12:::1;:34:::0;;;;;:41;;;;::::1;::::0;;::::1;::::0;;24740:28;24754:14;-1:-1:-1;24176:806:0:o;20351:129::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20440:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:32;;-1:-1:-1;;20440:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20351:129::o;20885:224::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;20962:14:::1;:33:::0;;;21069:11:::1;::::0;21047:16:::1;::::0;21026::::1;::::0;:75:::1;::::0;20979:16;;21026:55:::1;::::0;;;:20:::1;:38::i;:75::-;21006:17;:95:::0;-1:-1:-1;20885:224:0:o;5792:145::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;5896:1:::1;5880:6:::0;;5859:40:::1;::::0;-1:-1:-1;;;;;5880:6:0;;::::1;::::0;5859:40:::1;::::0;5896:1;;5859:40:::1;5927:1;5910:19:::0;;-1:-1:-1;;;;;;5910:19:0::1;::::0;;5792:145::o;18633:87::-;18672:13;18705:7;18698:14;;;;;:::i;22088:222::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;22197:9:::1;22192:111;22212:19:::0;;::::1;22192:111;;;22283:8;22253:14;:27;22268:8;;22277:1;22268:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22253:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;22253:27:0;:38;;-1:-1:-1;;22253:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22233:3;::::1;::::0;::::1;:::i;:::-;;;;22192:111;;;;22088:222:::0;;;:::o;19431:269::-;19524:4;19541:129;198:10;19564:7;19573:96;19612:15;19573:96;;;;;;;;;;;;;;;;;198:10;19573:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19573:34:0;;;;;;;;;;;;:38;:96::i;23773:125::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;23854:25:::1;:36:::0;;;::::1;;-1:-1:-1::0;;;23854:36:0::1;-1:-1:-1::0;;;;23854:36:0;;::::1;::::0;;;::::1;::::0;;23773:125::o;25084:167::-;25162:4;25179:42;198:10;25203:9;25214:6;25179:9;:42::i;20766:111::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;20839:17:::1;:30:::0;20766:111::o;22318:358::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;22459:15:::1;:35:::0;;;22505:15:::1;:35:::0;;;22551:10:::1;:25:::0;;;22616:52:::1;22564:12:::0;22616:36:::1;22477:17:::0;22523;22616:19:::1;:36::i;:52::-;22589:24;:79:::0;-1:-1:-1;;;22318:358:0:o;23594:171::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;23671:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;23671:32:0::1;-1:-1:-1::0;;;;23671:32:0;;::::1;;::::0;;23719:38:::1;::::0;::::1;::::0;::::1;::::0;23695:8;5861:14:1;5854:22;5836:41;;5824:2;5809:18;;5696:187;23719:38:0::1;;;;;;;;23594:171:::0;:::o;22684:111::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;22761:12:::1;:26:::0;22684:111::o;20623:135::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20713:26:0;;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:37;;-1:-1:-1;;20713:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20623:135::o;23067:102::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;23139:10:::1;:22:::0;23067:102::o;5945:244::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6034:22:0;::::1;6026:73;;;::::0;-1:-1:-1;;;6026:73:0;;7331:2:1;6026:73:0::1;::::0;::::1;7313:21:1::0;7370:2;7350:18;;;7343:30;7409:34;7389:18;;;7382:62;-1:-1:-1;;;7460:18:1;;;7453:36;7506:19;;6026:73:0::1;7129:402:1::0;6026:73:0::1;6136:6;::::0;;6115:38:::1;::::0;-1:-1:-1;;;;;6115:38:0;;::::1;::::0;6136:6;::::1;::::0;6115:38:::1;::::0;::::1;6164:6;:17:::0;;-1:-1:-1;;;;;;6164:17:0::1;-1:-1:-1::0;;;;;6164:17:0;;;::::1;::::0;;;::::1;::::0;;5945:244::o;21117:233::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;21196:15:::1;:35:::0;;;21308:12:::1;::::0;21285:17:::1;::::0;21263::::1;::::0;:79:::1;::::0;21214:17;;21263:58:::1;::::0;;;:21:::1;:40::i;:79::-;21242:18;:100:::0;-1:-1:-1;21117:233:0:o;20488:127::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20575:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;20575:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20488:127::o;1191:181::-;1249:7;;1281:5;1285:1;1281;:5;:::i;:::-;1269:17;;1310:1;1305;:6;;1297:46;;;;-1:-1:-1;;;1297:46:0;;8141:2:1;1297:46:0;;;8123:21:1;8180:2;8160:18;;;8153:30;8219:29;8199:18;;;8192:57;8266:18;;1297:46:0;7939:351:1;20006:337:0;-1:-1:-1;;;;;20099:19:0;;20091:68;;;;-1:-1:-1;;;20091:68:0;;10833:2:1;20091:68:0;;;10815:21:1;10872:2;10852:18;;;10845:30;10911:34;10891:18;;;10884:62;-1:-1:-1;;;10962:18:1;;;10955:34;11006:19;;20091:68:0;10631:400:1;20091:68:0;-1:-1:-1;;;;;20178:21:0;;20170:68;;;;-1:-1:-1;;;20170:68:0;;7738:2:1;20170:68:0;;;7720:21:1;7777:2;7757:18;;;7750:30;7816:34;7796:18;;;7789:62;-1:-1:-1;;;7867:18:1;;;7860:32;7909:19;;20170:68:0;7536:398:1;20170:68:0;-1:-1:-1;;;;;20251:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;20303:32;;11182:25:1;;;20303:32:0;;11155:18:1;20303:32:0;;;;;;;20006:337;;;:::o;25580:1848::-;25667:4;-1:-1:-1;;;;;25694:20:0;;25686:70;;;;-1:-1:-1;;;25686:70:0;;10427:2:1;25686:70:0;;;10409:21:1;10466:2;10446:18;;;10439:30;10505:34;10485:18;;;10478:62;-1:-1:-1;;;10556:18:1;;;10549:35;10601:19;;25686:70:0;10225:401:1;25686:70:0;-1:-1:-1;;;;;25775:23:0;;25767:71;;;;-1:-1:-1;;;25767:71:0;;6927:2:1;25767:71:0;;;6909:21:1;6966:2;6946:18;;;6939:30;7005:34;6985:18;;;6978:62;-1:-1:-1;;;7056:18:1;;;7049:33;7099:19;;25767:71:0;6725:399:1;25767:71:0;25866:1;25857:6;:10;25849:64;;;;-1:-1:-1;;;25849:64:0;;10017:2:1;25849:64:0;;;9999:21:1;10056:2;10036:18;;;10029:30;10095:34;10075:18;;;10068:62;-1:-1:-1;;;10146:18:1;;;10139:39;10195:19;;25849:64:0;9815:405:1;25849:64:0;-1:-1:-1;;;;;25933:22:0;;;;;;:14;:22;;;;;;;;25932:23;:53;;;;-1:-1:-1;;;;;;25960:25:0;;;;;;:14;:25;;;;;;;;25959:26;25932:53;25924:85;;;;-1:-1:-1;;;25924:85:0;;8497:2:1;25924:85:0;;;8479:21:1;8536:2;8516:18;;;8509:30;-1:-1:-1;;;8555:18:1;;;8548:49;8614:18;;25924:85:0;8295:343:1;25924:85:0;26025:16;;-1:-1:-1;;;26025:16:0;;;;26022:1399;;;26074:41;26089:6;26097:9;26108:6;26074:14;:41::i;:::-;26067:48;;;;26022:1399;-1:-1:-1;;;;;26170:23:0;;;;;;:15;:23;;;;;;;;26169:24;:55;;;;-1:-1:-1;;;;;;26198:26:0;;;;;;:15;:26;;;;;;;;26197:27;26169:55;26166:170;;;26263:12;;26253:6;:22;;26245:75;;;;-1:-1:-1;;;26245:75:0;;8845:2:1;26245:75:0;;;8827:21:1;8884:2;8864:18;;;8857:30;8923:34;8903:18;;;8896:62;-1:-1:-1;;;8974:18:1;;;8967:38;9022:19;;26245:75:0;8643:404:1;26245:75:0;26401:4;26352:28;19020:18;;;:9;:18;;;;;;26477:24;;26352:55;;-1:-1:-1;26453:48:0;;;;;;;26522:44;;-1:-1:-1;26550:16:0;;-1:-1:-1;;;26550:16:0;;;;26549:17;26522:44;:69;;;;-1:-1:-1;;;;;;26571:20:0;;;;;;:12;:20;;;;;;;;26570:21;26522:69;:94;;;;-1:-1:-1;26595:21:0;;-1:-1:-1;;;26595:21:0;;;;26522:94;26518:301;;;26653:25;;-1:-1:-1;;;26653:25:0;;;;26650:98;;;26724:24;;26701:47;;26650:98;26767:36;26782:20;26767:14;:36::i;:::-;26855:53;;;;;;;;;;;-1:-1:-1;;;26855:53:0;;;;;;;;-1:-1:-1;;;;;26855:17:0;;-1:-1:-1;26855:17:0;;;:9;:17;;;;;;;;:53;;26877:6;;26855:21;:53::i;:::-;-1:-1:-1;;;;;26835:17:0;;;;;;:9;:17;;;;;;;;:73;;;;26948:17;:25;;;;;;;;;:57;;-1:-1:-1;;;;;;26977:28:0;;;;;;:17;:28;;;;;;;;26948:57;26947:147;;27060:34;27068:6;27076:9;27087:6;27060:7;:34::i;:::-;26947:147;;;27051:6;26947:147;27114:16;;26925:169;;-1:-1:-1;;;;27114:16:0;;;;:51;;;;-1:-1:-1;;;;;;27135:30:0;;;;;;:19;:30;;;;;;;;27134:31;27114:51;27111:133;;;27233:10;;27192:37;27217:11;27192:20;27202:9;-1:-1:-1;;;;;19020:18:0;18993:7;19020:18;;;:9;:18;;;;;;;18927:119;27192:37;:51;;27184:60;;;;;;-1:-1:-1;;;;;27284:20:0;;;;;;:9;:20;;;;;;:37;;27309:11;27284:24;:37::i;:::-;-1:-1:-1;;;;;27261:20:0;;;;;;;:9;:20;;;;;;;:60;;;;27343:40;;;;;;-1:-1:-1;;;;;;;;;;;27343:40:0;;;27371:11;11182:25:1;;11170:2;11155:18;;11036:177;27343:40:0;;;;;;;;27405:4;27398:11;;;;;;;1524:192;1610:7;1646:12;1638:6;;;;1630:29;;;;-1:-1:-1;;;1630:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1670:9:0;1682:5;1686:1;1682;:5;:::i;:::-;1670:17;1524:192;-1:-1:-1;;;;;1524:192:0:o;1380:136::-;1438:7;1465:43;1469:1;1472;1465:43;;;;;;;;;;;;;;;;;:3;:43::i;27436:330::-;27566:53;;;;;;;;;;;-1:-1:-1;;;27566:53:0;;;;;;;;-1:-1:-1;;;;;27566:17:0;;27529:4;27566:17;;;:9;:17;;;;;;;:53;;27588:6;;27566:21;:53::i;:::-;-1:-1:-1;;;;;27546:17:0;;;;;;;:9;:17;;;;;;:73;;;;27653:20;;;;;;;:32;;27678:6;27653:24;:32::i;:::-;-1:-1:-1;;;;;27630:20:0;;;;;;;:9;:20;;;;;;;:55;;;;27701:35;;;;;;-1:-1:-1;;;;;;;;;;;27701:35:0;;;27729:6;11182:25:1;;11170:2;11155:18;;11036:177;27701:35:0;;;;;;;;-1:-1:-1;27754:4:0;27436:330;;;;;:::o;27774:1032::-;16423:16;:23;;-1:-1:-1;;;;16423:23:0;-1:-1:-1;;;16423:23:0;;;27903:24:::1;::::0;27882:15:::1;::::0;16423:23;;27870:65:::1;::::0;27933:1:::1;::::0;27870:58:::1;::::0;;;:7;;:11:::1;:28::i;:::-;:32:::0;::::1;:58::i;:65::-;27848:87:::0;-1:-1:-1;27946:21:0::1;27970:24;:7:::0;27848:87;27970:11:::1;:24::i;:::-;27946:48;;28007:31;28024:13;28007:16;:31::i;:::-;28159:15;::::0;28074:21:::1;::::0;28049:22:::1;::::0;28130:52:::1;::::0;28159:22:::1;::::0;28179:1:::1;28159:19;:22::i;:::-;28130:24;::::0;;:28:::1;:52::i;:::-;28108:74;;28195:26;28224:59;28281:1;28224:52;28264:11;28224:35;28243:15;;28224:14;:18;;:35;;;;:::i;:59::-;28195:88;;28294:21;28318:47;28353:11;28318:30;28337:10;;28318:14;:18;;:30;;;;:::i;:47::-;28294:71:::0;-1:-1:-1;28376:26:0::1;28405:57;28294:71:::0;28405:38:::1;:14:::0;28424:18;28405::::1;:38::i;:::-;:42:::0;::::1;:57::i;:::-;28376:86:::0;-1:-1:-1;28478:22:0;;28475:104:::1;;28536:22;::::0;28515:64:::1;::::0;28536:22:::1;::::0;::::1;-1:-1:-1::0;;;;;28536:22:0::1;28560:18:::0;28515:20:::1;:64::i;:::-;28595:17:::0;;28592:89:::1;;28648:17;::::0;28627:54:::1;::::0;-1:-1:-1;;;;;28648:17:0::1;28667:13:::0;28627:20:::1;:54::i;:::-;28718:1;28697:18;:22;:41;;;;;28737:1;28723:11;:15;28697:41;28694:104;;;28753:45;28766:11;28779:18;28753:12;:45::i;:::-;-1:-1:-1::0;;16469:16:0;:24;;-1:-1:-1;;;;16469:24:0;;;-1:-1:-1;;;;;;27774:1032:0:o;30001:1094::-;-1:-1:-1;;;;;30179:20:0;;30087:7;30179:20;;;:12;:20;;;;;;30087:7;;;;30179:20;;30176:670;;;30228:58;30282:3;30228:49;30239:37;30261:14;;30239:17;;:21;;:37;;;;:::i;:::-;30228:6;;:10;:49::i;:58::-;30216:70;;30321:1;30304:14;;:18;:52;;;;;30339:17;;30326:10;;:30;30304:52;30301:188;;;30390:35;30421:3;30390:26;30401:14;;30390:6;:10;;:26;;;;:::i;:35::-;30377:48;;30444:29;30455:6;30462:10;30444;:29::i;:::-;30176:670;;;-1:-1:-1;;;;;30518:23:0;;;;;;:12;:23;;;;;;;;30515:331;;;30570:60;30626:3;30570:51;30581:39;30604:15;;30581:18;;:22;;:39;;;;:::i;30570:60::-;30558:72;;30666:1;30648:15;;:19;:53;;;;;30684:17;;30671:10;;:30;30648:53;30645:190;;;30735:36;30767:3;30735:27;30746:15;;30735:6;:10;;:27;;;;:::i;:36::-;30722:49;;30790:29;30801:6;30808:10;30790;:29::i;:::-;30861:13;;30858:173;;30936:4;30918:24;;;;:9;:24;;;;;;:39;;30947:9;30918:28;:39::i;:::-;30909:4;30891:24;;;;:9;:24;;;;;;;:66;;;;30977:42;;-1:-1:-1;;;;;30977:42:0;;;-1:-1:-1;;;;;;;;;;;30977:42:0;;;31009:9;11182:25:1;;11170:2;11155:18;;11036:177;30977:42:0;;;;;;;;30858:173;31050:37;31061:25;:9;31075:10;31061:13;:25::i;:::-;31050:6;;:10;:37::i;:::-;31043:44;30001:1094;-1:-1:-1;;;;;;30001:1094:0:o;1724:250::-;1782:7;1806:6;1802:47;;-1:-1:-1;1836:1:0;1829:8;;1802:47;1861:9;1873:5;1877:1;1873;:5;:::i;:::-;1861:17;-1:-1:-1;1906:1:0;1897:5;1901:1;1861:17;1897:5;:::i;:::-;:10;1889:56;;;;-1:-1:-1;;;1889:56:0;;9254:2:1;1889:56:0;;;9236:21:1;9293:2;9273:18;;;9266:30;9332:34;9312:18;;;9305:62;-1:-1:-1;;;9383:18:1;;;9376:31;9424:19;;1889:56:0;9052:397:1;1982:132:0;2040:7;2067:39;2071:1;2074;2067:39;;;;;;;;;;;;;;;;;:3;:39::i;28814:658::-;28964:16;;;28978:1;28964:16;;;;;;;;28940:21;;28964:16;;;;;;;;;;-1:-1:-1;28964:16:0;28940:40;;29009:4;28991;28996:1;28991:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;28991:23:0;;;:7;;;;;;;;;;:23;;;;29035:15;;:22;;;-1:-1:-1;;;29035:22:0;;;;:15;;;;;:20;;:22;;;;;28991:7;;29035:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29025:4;29030:1;29025:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29025:32:0;;;:7;;;;;;;;;:32;29102:15;;29070:62;;29087:4;;29102:15;29120:11;29070:8;:62::i;:::-;29171:15;;:240;;-1:-1:-1;;;29171:240:0;;-1:-1:-1;;;;;29171:15:0;;;;:66;;:240;;29252:11;;29171:15;;29322:4;;29349;;29385:15;;29171:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29429:35;29446:11;29459:4;29429:35;;;;;;;:::i;:::-;;;;;;;;28869:603;28814:658;:::o;24042:126::-;24134:26;;-1:-1:-1;;;;;24134:18:0;;;:26;;;;;24153:6;;24134:26;;;;24153:6;24134:18;:26;;;;;;;;;;;;;;;;;;;;;24042:126;;:::o;29480:513::-;29660:15;;29628:62;;29645:4;;-1:-1:-1;;;;;29660:15:0;29678:11;29628:8;:62::i;:::-;29733:15;;-1:-1:-1;;;;;29733:15:0;:31;29772:9;29805:4;29825:11;29733:15;;29937:7;5616;5643:6;-1:-1:-1;;;;;5643:6:0;;5578:79;29937:7;29733:252;;;;;;-1:-1:-1;;;;;;29733:252:0;;;-1:-1:-1;;;;;5443:15:1;;;29733:252:0;;;5425:34:1;5475:18;;;5468:34;;;;5518:18;;;5511:34;;;;5561:18;;;5554:34;5625:15;;;5604:19;;;5597:44;29959:15:0;5657:19:1;;;5650:35;5359:19;;29733:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;29480:513;;:::o;31103:321::-;31217:17;;31203:10;;:31;31200:43;;31103:321;;:::o;31200:43::-;31290:11;;-1:-1:-1;;;;;31290:11:0;31280:22;;;;:9;:22;;;;;;:35;;31307:7;31280:26;:35::i;:::-;31265:11;;-1:-1:-1;;;;;31265:11:0;31255:22;;;;:9;:22;;;;;:60;31339:10;;:23;;31354:7;31339:14;:23::i;:::-;31326:10;:36;31395:11;;31378:38;;11182:25:1;;;-1:-1:-1;;;;;31395:11:0;;;;31378:38;;;-1:-1:-1;;;;;;;;;;;31378:38:0;11170:2:1;11155:18;31378:38:0;;;;;;;31103:321;;:::o;2122:278::-;2208:7;2243:12;2236:5;2228:28;;;;-1:-1:-1;;;2228:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2267:9:0;2279:5;2283:1;2279;:5;:::i;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:52;;;570:1;567;560:12;522:52;602:9;596:16;621:31;646:5;621:31;:::i;687:388::-;755:6;763;816:2;804:9;795:7;791:23;787:32;784:52;;;832:1;829;822:12;784:52;871:9;858:23;890:31;915:5;890:31;:::i;:::-;940:5;-1:-1:-1;997:2:1;982:18;;969:32;1010:33;969:32;1010:33;:::i;:::-;1062:7;1052:17;;;687:388;;;;;:::o;1080:456::-;1157:6;1165;1173;1226:2;1214:9;1205:7;1201:23;1197:32;1194:52;;;1242:1;1239;1232:12;1194:52;1281:9;1268:23;1300:31;1325:5;1300:31;:::i;:::-;1350:5;-1:-1:-1;1407:2:1;1392:18;;1379:32;1420:33;1379:32;1420:33;:::i;:::-;1080:456;;1472:7;;-1:-1:-1;;;1526:2:1;1511:18;;;;1498:32;;1080:456::o;1541:315::-;1606:6;1614;1667:2;1655:9;1646:7;1642:23;1638:32;1635:52;;;1683:1;1680;1673:12;1635:52;1722:9;1709:23;1741:31;1766:5;1741:31;:::i;:::-;1791:5;-1:-1:-1;1815:35:1;1846:2;1831:18;;1815:35;:::i;:::-;1805:45;;1541:315;;;;;:::o;1861:::-;1929:6;1937;1990:2;1978:9;1969:7;1965:23;1961:32;1958:52;;;2006:1;2003;1996:12;1958:52;2045:9;2032:23;2064:31;2089:5;2064:31;:::i;:::-;2114:5;2166:2;2151:18;;;;2138:32;;-1:-1:-1;;;1861:315:1:o;2181:689::-;2273:6;2281;2289;2342:2;2330:9;2321:7;2317:23;2313:32;2310:52;;;2358:1;2355;2348:12;2310:52;2398:9;2385:23;2427:18;2468:2;2460:6;2457:14;2454:34;;;2484:1;2481;2474:12;2454:34;2522:6;2511:9;2507:22;2497:32;;2567:7;2560:4;2556:2;2552:13;2548:27;2538:55;;2589:1;2586;2579:12;2538:55;2629:2;2616:16;2655:2;2647:6;2644:14;2641:34;;;2671:1;2668;2661:12;2641:34;2726:7;2719:4;2709:6;2706:1;2702:14;2698:2;2694:23;2690:34;2687:47;2684:67;;;2747:1;2744;2737:12;2684:67;2778:4;2770:13;;;;-1:-1:-1;2802:6:1;-1:-1:-1;2827:37:1;;2843:20;;;-1:-1:-1;2827:37:1;:::i;:::-;2817:47;;2181:689;;;;;:::o;2875:180::-;2931:6;2984:2;2972:9;2963:7;2959:23;2955:32;2952:52;;;3000:1;2997;2990:12;2952:52;3023:26;3039:9;3023:26;:::i;3060:180::-;3119:6;3172:2;3160:9;3151:7;3147:23;3143:32;3140:52;;;3188:1;3185;3178:12;3140:52;-1:-1:-1;3211:23:1;;3060:180;-1:-1:-1;3060:180:1:o;3245:316::-;3322:6;3330;3338;3391:2;3379:9;3370:7;3366:23;3362:32;3359:52;;;3407:1;3404;3397:12;3359:52;-1:-1:-1;;3430:23:1;;;3500:2;3485:18;;3472:32;;-1:-1:-1;3551:2:1;3536:18;;;3523:32;;3245:316;-1:-1:-1;3245:316:1:o;3566:306::-;3654:6;3662;3670;3723:2;3711:9;3702:7;3698:23;3694:32;3691:52;;;3739:1;3736;3729:12;3691:52;3768:9;3762:16;3752:26;;3818:2;3807:9;3803:18;3797:25;3787:35;;3862:2;3851:9;3847:18;3841:25;3831:35;;3566:306;;;;;:::o;3877:461::-;3930:3;3968:5;3962:12;3995:6;3990:3;3983:19;4021:4;4050:2;4045:3;4041:12;4034:19;;4087:2;4080:5;4076:14;4108:1;4118:195;4132:6;4129:1;4126:13;4118:195;;;4197:13;;-1:-1:-1;;;;;4193:39:1;4181:52;;4253:12;;;;4288:15;;;;4229:1;4147:9;4118:195;;;-1:-1:-1;4329:3:1;;3877:461;-1:-1:-1;;;;;3877:461:1:o;6123:597::-;6235:4;6264:2;6293;6282:9;6275:21;6325:6;6319:13;6368:6;6363:2;6352:9;6348:18;6341:34;6393:1;6403:140;6417:6;6414:1;6411:13;6403:140;;;6512:14;;;6508:23;;6502:30;6478:17;;;6497:2;6474:26;6467:66;6432:10;;6403:140;;;6561:6;6558:1;6555:13;6552:91;;;6631:1;6626:2;6617:6;6606:9;6602:22;6598:31;6591:42;6552:91;-1:-1:-1;6704:2:1;6683:15;-1:-1:-1;;6679:29:1;6664:45;;;;6711:2;6660:54;;6123:597;-1:-1:-1;;;6123:597:1:o;9454:356::-;9656:2;9638:21;;;9675:18;;;9668:30;9734:34;9729:2;9714:18;;9707:62;9801:2;9786:18;;9454:356::o;11218:332::-;11425:6;11414:9;11407:25;11468:2;11463;11452:9;11448:18;11441:30;11388:4;11488:56;11540:2;11529:9;11525:18;11517:6;11488:56;:::i;:::-;11480:64;11218:332;-1:-1:-1;;;;11218:332:1:o;11555:582::-;11854:6;11843:9;11836:25;11897:6;11892:2;11881:9;11877:18;11870:34;11940:3;11935:2;11924:9;11920:18;11913:31;11817:4;11961:57;12013:3;12002:9;11998:19;11990:6;11961:57;:::i;:::-;-1:-1:-1;;;;;12054:32:1;;;;12049:2;12034:18;;12027:60;-1:-1:-1;12118:3:1;12103:19;12096:35;11953:65;11555:582;-1:-1:-1;;;11555:582:1:o;12331:128::-;12371:3;12402:1;12398:6;12395:1;12392:13;12389:39;;;12408:18;;:::i;:::-;-1:-1:-1;12444:9:1;;12331:128::o;12464:217::-;12504:1;12530;12520:132;;12574:10;12569:3;12565:20;12562:1;12555:31;12609:4;12606:1;12599:15;12637:4;12634:1;12627:15;12520:132;-1:-1:-1;12666:9:1;;12464:217::o;12686:168::-;12726:7;12792:1;12788;12784:6;12780:14;12777:1;12774:21;12769:1;12762:9;12755:17;12751:45;12748:71;;;12799:18;;:::i;:::-;-1:-1:-1;12839:9:1;;12686:168::o;12859:125::-;12899:4;12927:1;12924;12921:8;12918:34;;;12932:18;;:::i;:::-;-1:-1:-1;12969:9:1;;12859:125::o;12989:380::-;13068:1;13064:12;;;;13111;;;13132:61;;13186:4;13178:6;13174:17;13164:27;;13132:61;13239:2;13231:6;13228:14;13208:18;13205:38;13202:161;;;13285:10;13280:3;13276:20;13273:1;13266:31;13320:4;13317:1;13310:15;13348:4;13345:1;13338:15;13202:161;;12989:380;;;:::o;13374:135::-;13413:3;-1:-1:-1;;13434:17:1;;13431:43;;;13454:18;;:::i;:::-;-1:-1:-1;13501:1:1;13490:13;;13374:135::o;13514:127::-;13575:10;13570:3;13566:20;13563:1;13556:31;13606:4;13603:1;13596:15;13630:4;13627:1;13620:15;13646:127;13707:10;13702:3;13698:20;13695:1;13688:31;13738:4;13735:1;13728:15;13762:4;13759:1;13752:15;13910:131;-1:-1:-1;;;;;13985:31:1;;13975:42;;13965:70;;14031:1;14028;14021:12;13965:70;13910:131;:::o

Swarm Source

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