ETH Price: $3,639.37 (-0.29%)
 

Overview

Max Total Supply

10,000,000,000 GoldenShiba

Holders

38

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
100,000,000 GoldenShiba

Value
$0.00
0x4517469361a2154f8be534fb4060b4d9d044212c
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:
GOLDENSHIBA

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-21
*/

pragma solidity ^0.8.1;
// SPDX-License-Identifier: Unlicensed
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;

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

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

library Address {

    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        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 private _owner;
    address private _previousOwner;
    uint256 private _lockTime;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() 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 geUnlockTime() public view returns (uint256) {
        return _lockTime;
    }

    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = address(0);
        _lockTime = block.timestamp + time;
        emit OwnershipTransferred(_owner, address(0));
    }
    
    function unlock() public virtual {
        require(_previousOwner == msg.sender, "You don't have permission to unlock");
        require(block.timestamp > _lockTime , "Contract is locked until 7 days");
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
    }
}

// pragma solidity >=0.5.0;

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


// pragma solidity >=0.5.0;

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 Mint(address indexed sender, uint amount0, uint amount1);
    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 mint(address to) external returns (uint liquidity);
    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;
}

// pragma solidity >=0.6.2;

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



// pragma solidity >=0.6.2;

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 GOLDENSHIBA is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    address deadAddress = 0x000000000000000000000000000000000000dEaD;

    string private _name = "GoldenShiba";
    string private _symbol = "GoldenShiba";
    uint8 private _decimals = 9;    
    uint256 private initialsupply = 10_000_000_000;
    uint256 private _tTotal = initialsupply * 10 ** _decimals;
    address payable private _marketingWallet;
    
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping(address => uint256) private buycooldown;
    mapping(address => uint256) private sellcooldown;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    mapping (address => bool) private _isBlacklisted;
    address[] private _excluded;

    bool private cooldownEnabled = true;
    uint256 public cooldown = 30 seconds;
    uint256 public cooldownLimit = 60 seconds;
    
    uint256 private constant MAX = ~uint256(0);
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 public _taxFee = 0;
    uint256 private _previousTaxFee = _taxFee;
    uint256 public _liquidityFee = 4;
    uint256 private _previousLiquidityFee = _liquidityFee;
    uint256 public _marketingFee = 3;
    uint256 private _previousMarketingFee = _marketingFee;
    uint256 public _buyTaxFee = 0;
    uint256 private _previousBuyTaxFee = _buyTaxFee;    
    uint256 public _buyLiquidityFee = 4;
    uint256 private _previousBuyLiquidityFee = _buyLiquidityFee;
    uint256 public _buyMarketingFee = 3;
    uint256 private _previousBuyMarketingFee = _buyMarketingFee;

    uint256 private maxBuyPercent = 1;
    uint256 private maxBuyDivisor = 100;
    uint256 public _maxBuyAmount = (_tTotal * maxBuyPercent) / maxBuyDivisor;
   
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    bool inSwapAndLiquify;
    bool private swapAndLiquifyEnabled = true;
    
    uint256 private numTokensSellToAddToLiquidity = _tTotal.mul(1).div(100);
    
    event ToMarketing(uint256 ETHSent);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor (address marketingWallet) {
        _rOwned[_msgSender()] = _rTotal;
         _marketingWallet = payable(marketingWallet);
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
        .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingWallet] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    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 _tTotal;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }
    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function setNumTokensSellToAddToLiquidity(uint256 percent, uint256 divisor) external onlyOwner() {
        uint256 swapAmount = _tTotal.mul(percent).div(divisor);
        numTokensSellToAddToLiquidity = swapAmount;
    }
        
    function setSellFee(uint256 liquidityFee, uint256 marketingFee) external onlyOwner() {
        _liquidityFee = liquidityFee;
        _marketingFee = marketingFee;
    }    
    
    function setBuyFee(uint256 marketingFee, uint256 liquidityFee) external onlyOwner() {
        _buyMarketingFee = marketingFee;
        _buyLiquidityFee = liquidityFee;
    }    
    
    function setCooldown(uint256 amount) external onlyOwner() {
        require(amount <= cooldownLimit);
        cooldown = amount;
    }
    
    function setMaxBuyPercent(uint256 percent, uint divisor) external onlyOwner {
        require(percent >= 1 && divisor <= 1000); // cannot set lower than .1%
        uint256 new_tx = _tTotal.mul(percent).div(divisor);
        _maxBuyAmount = new_tx;
    }

    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 setBlacklistStatus(address account, bool Blacklisted) external onlyOwner {
    		if (Blacklisted = true) {
                _isBlacklisted[account] = true; 
    		} else if(Blacklisted = false) {
                _isBlacklisted[account] = false;
                }
    }
    
    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount,,,,,,) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,,,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

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

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function excludeFromReward(address account) public onlyOwner() {
        require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.');
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }
    
    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }
    
    function isBlacklisted(address account) public view returns(bool) {
        return _isBlacklisted[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

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

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

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tMarketing, uint256 tLiquidity) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tMarketing, tLiquidity, _getRate());
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tMarketing, tLiquidity);
    }

    function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(_taxFee).div(100);
        uint256 tMarketing = tAmount.mul(_marketingFee).div(100);
        uint256 tLiquidity = tAmount.mul(_liquidityFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tMarketing).sub(tLiquidity);
        return (tTransferAmount, tFee, tMarketing, tLiquidity);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 tMarketing, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rMarketing = tMarketing.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity).sub(rMarketing);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getValuesBuy(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tMarketing) = _getTValuesBuy(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValuesBuy(tAmount, tFee, tLiquidity, tMarketing, _getRate());
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity, tMarketing);
    }

    function _getTValuesBuy(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(_buyTaxFee).div(100);
        uint256 tLiquidity = tAmount.mul(_buyLiquidityFee).div(100);
        uint256 tMarketing = tAmount.mul(_buyMarketingFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity).sub(tMarketing);
        return (tTransferAmount, tFee, tMarketing, tLiquidity);
    }

    function _getRValuesBuy(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 tMarketing, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rMarketing = tMarketing.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity).sub(rMarketing);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _takeLiquidity(uint256 tLiquidity) private {
        uint256 currentRate =  _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if(_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
    }    
    
    function _takeMarketing(uint256 tMarketing) private {
        uint256 currentRate =  _getRate();
        uint256 rMarketing = tMarketing.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rMarketing);
        if(_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tMarketing);
    }

    function removeAllFee() private {
        if(_taxFee == 0 && _liquidityFee == 0 && _marketingFee == 0 && _buyMarketingFee == 0 && _buyTaxFee == 0 && _buyLiquidityFee == 0) return;
        _previousTaxFee = _taxFee;
        _previousMarketingFee = _marketingFee;
        _previousLiquidityFee = _liquidityFee;
        _previousBuyTaxFee = _buyTaxFee;
        _previousBuyMarketingFee = _buyMarketingFee;
        _previousBuyLiquidityFee = _buyLiquidityFee;
        _buyTaxFee = 0;
        _buyMarketingFee = 0;
        _buyLiquidityFee = 0;
        _taxFee = 0;
        _marketingFee = 0;
        _liquidityFee = 0;
    }

    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _marketingFee = _previousMarketingFee;
        _liquidityFee = _previousLiquidityFee;
        _buyLiquidityFee = _previousBuyLiquidityFee;
        _buyMarketingFee = _previousBuyMarketingFee;
        _buyTaxFee = _previousBuyTaxFee;
    }

    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 swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 marketingTokenBalance = contractTokenBalance.mul(85).div(100);
        uint256 liquidityTokenBalance = contractTokenBalance.sub(marketingTokenBalance);
        uint256 tokenBalanceToLiquifyAsETH = liquidityTokenBalance.div(2);
        uint256 tokenBalanceToLiquify = liquidityTokenBalance.sub(tokenBalanceToLiquifyAsETH);
        uint256 initialBalance = address(this).balance;
        uint256 tokensToSwapToETH = tokenBalanceToLiquifyAsETH.add(marketingTokenBalance);
        swapTokensForEth(tokensToSwapToETH);
        uint256 ETHSwapped = address(this).balance.sub(initialBalance);
        uint256 ETHToLiquify = ETHSwapped.mul(10).div(100);
        addLiquidity(tokenBalanceToLiquify, ETHToLiquify);
        emit SwapAndLiquify(tokenBalanceToLiquifyAsETH, ETHToLiquify, tokenBalanceToLiquify);
        uint256 marketingETH = ETHSwapped.sub(ETHToLiquify);
        _marketingWallet.transfer(marketingETH);
        emit ToMarketing(marketingETH);
    }

    function clearStuckBalance(uint256 amountPercentage) external onlyOwner {
        require(amountPercentage <= 100);
        uint256 amountETH = address(this).balance;
        payable(_marketingWallet).transfer(amountETH.mul(amountPercentage).div(100));
    }

    function clearStuckToken(address to) external onlyOwner {
        uint256 _balance = balanceOf(address(this));
        _transfer(address(this), to, _balance);
    }

    function clearStuckTokens(address _token, address _to) external onlyOwner returns (bool _sent){
        require(_token != address(0));
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
    }

    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),
            block.timestamp
        );
    }

    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 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 from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(_isBlacklisted[from] == false, "Hehe");
        require(_isBlacklisted[to] == false, "Hehe");
        if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to] && cooldownEnabled) {
                require(amount <= _maxBuyAmount);
                require(buycooldown[to] < block.timestamp);
                buycooldown[to] = block.timestamp.add(cooldown);        
            } else if(from != uniswapV2Pair && cooldownEnabled && !_isExcludedFromFee[to]) {
            require(sellcooldown[from] <= block.timestamp);
            sellcooldown[from] = block.timestamp.add(cooldown);
        }
            
        uint256 contractTokenBalance = balanceOf(address(this));

        if(contractTokenBalance >= numTokensSellToAddToLiquidity)
        {
            contractTokenBalance = numTokensSellToAddToLiquidity;
        }

        bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity;
        if (
            overMinTokenBalance &&
            !inSwapAndLiquify &&
            from != uniswapV2Pair &&
            swapAndLiquifyEnabled            
        ) {
            contractTokenBalance = numTokensSellToAddToLiquidity;
            swapAndLiquify(contractTokenBalance);
        }

        //indicates if fee should be deducted from transfer
        bool takeFee = true;

        //if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
            takeFee = false;
        }

        //transfer amount, it will take tax, marketing, liquidity fee
        _tokenTransfer(from,to,amount,takeFee);
    }

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

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {
        if(!takeFee)
            removeAllFee();

        if (sender == uniswapV2Pair && recipient != address(uniswapV2Router)) {
            _transferStandardBuy(sender, recipient, amount);
        } else if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }

        if(!takeFee)
            restoreAllFee();
    }

    function _transferStandardBuy(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tMarketing, uint256 tLiquidity) = _getValuesBuy(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _takeMarketing(tMarketing);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount); 
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tMarketing) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);        
        _takeMarketing(tMarketing);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tMarketing) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);        
        _takeMarketing(tMarketing);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tMarketing) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);       
        _takeMarketing(tMarketing);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    
    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tMarketing) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);        
        _takeMarketing(tMarketing);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function cooldownStatus() public view returns (bool) {
        return cooldownEnabled;
    }
    
    function setCooldownEnabled(bool onoff) external onlyOwner() {
        cooldownEnabled = onoff;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"marketingWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"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":"ETHSent","type":"uint256"}],"name":"ToMarketing","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":"_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":"_buyTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","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":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"clearStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"clearStuckTokens","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldownLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldownStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","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":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"Blacklisted","type":"bool"}],"name":"setBlacklistStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxBuyPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setNumTokensSellToAddToLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"uniswapV2Pair","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":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

600380546001600160a01b03191661dead179055610100604052600b60c08190526a476f6c64656e536869626160a81b60e0908152620000439160049190620005db565b5060408051808201909152600b8082526a476f6c64656e536869626160a81b60209092019182526200007891600591620005db565b506006805460ff191660099081179091556402540be4006007556200009f90600a62000764565b600754620000ae919062000823565b60088190556013805460ff19166001179055601e601455603c601555620000d8906000196200089c565b620000e69060001962000845565b60165560006018556018546019556004601a55601a54601b556003601c55601c54601d556000601e55601e54601f5560046020556020546021556003602255602254602355600160245560646025556025546024546008546200014a919062000823565b62000156919062000704565b6026556027805461010061ff0019909116179055600854620001a2906064906200018e906001620004c1602090811b620018ff17901c565b6200055560201b6200197e1790919060201c565b602855348015620001b257600080fd5b5060405162003da238038062003da2833981016040819052620001d59162000681565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601654336000908152600a602090815260409182902092909255600980546001600160a01b0319166001600160a01b038516179055805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a01559260048083019392829003018186803b1580156200029357600080fd5b505afa158015620002a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ce919062000681565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200031757600080fd5b505afa1580156200032c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000352919062000681565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200039b57600080fd5b505af1158015620003b0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d6919062000681565b6001600160601b0319606091821b811660a0529082901b166080526001600f60006200040a6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600f909352818320805485166001908117909155600954909116835291208054909216179055620004693390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600854604051620004b191815260200190565b60405180910390a35050620008df565b600082620004d2575060006200054f565b6000620004e0838562000823565b905082620004ef858362000704565b146200054c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200054c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200059f60201b60201c565b60008183620005c35760405162461bcd60e51b8152600401620005439190620006ac565b506000620005d2848662000704565b95945050505050565b828054620005e9906200085f565b90600052602060002090601f0160209004810192826200060d576000855562000658565b82601f106200062857805160ff191683800117855562000658565b8280016001018555821562000658579182015b82811115620006585782518255916020019190600101906200063b565b50620006669291506200066a565b5090565b5b808211156200066657600081556001016200066b565b6000602082840312156200069457600080fd5b81516001600160a01b03811681146200054c57600080fd5b600060208083528351808285015260005b81811015620006db57858101830151858201604001528201620006bd565b81811115620006ee576000604083870101525b50601f01601f1916929092016040019392505050565b600082620007165762000716620008c9565b500490565b600181815b808511156200075c578160001904821115620007405762000740620008b3565b808516156200074e57918102915b93841c939080029062000720565b509250929050565b60006200054c60ff84168360008262000780575060016200054f565b816200078f575060006200054f565b8160018114620007a85760028114620007b357620007d3565b60019150506200054f565b60ff841115620007c757620007c7620008b3565b50506001821b6200054f565b5060208310610133831016604e8410600b8410161715620007f8575081810a6200054f565b6200080483836200071b565b80600019048211156200081b576200081b620008b3565b029392505050565b6000816000190483118215151615620008405762000840620008b3565b500290565b6000828210156200085a576200085a620008b3565b500390565b600181811c908216806200087457607f821691505b602082108114156200089657634e487b7160e01b600052602260045260246000fd5b50919050565b600082620008ae57620008ae620008c9565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b60805160601c60a05160601c61344a620009586000396000818161057d01528181611cb201528181611dbc01528181611eb001526122620152600081816103b801528181611cee0152818161229e0152818161272e015281816127f601528181612832015281816128a401526128cb015261344a6000f3fe6080604052600436106102e85760003560e01c80636ac9a87011610190578063a9059cbb116100dc578063dd46706411610095578063efcc52de1161006f578063efcc52de146108f9578063f2fde38b1461090f578063fb0ecfa41461092f578063fe575a871461094f57600080fd5b8063dd46706414610873578063dd62ed3e14610893578063ea2f0b37146108d957600080fd5b8063a9059cbb146107d2578063b6c52324146107f2578063c40fedc614610807578063c49b9a8014610827578063c5d2418914610847578063dc44b6a01461085d57600080fd5b806388f820201161014957806395d89b411161012357806395d89b41146107685780639be953b31461077d578063a457c2d71461079d578063a69df4b5146107bd57600080fd5b806388f82020146106f15780638da5cb5b1461072a5780638fcc250d1461074857600080fd5b80636ac9a870146106585780636bc87c3a1461067857806370a082311461068e578063715018a6146106ae578063787a08a6146106c3578063809157c5146106d957600080fd5b80633685d4191161024f57806347f2914c116102085780634fc3f41a116101e25780634fc3f41a146105bf57806352390c02146105df5780635342acb4146105ff5780635932ead11461063857600080fd5b806347f2914c1461055557806349bd5a5e1461056b5780634f6625661461059f57600080fd5b80633685d4191461049f57806339509351146104bf5780633b124fe7146104df5780633bd5d173146104f5578063437823ec146105155780634549b0391461053557600080fd5b806318160ddd116102a157806318160ddd146103f25780631da1db5e1461040757806322976e0d1461042757806323b872dd1461043d5780632d8381191461045d578063313ce5671461047d57600080fd5b806303d29d28146102f45780630492f0551461031657806306fdde031461033f578063095ea7b31461036157806313114a9d146103915780631694505e146103a657600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b5061031461030f366004613043565b610988565b005b34801561032257600080fd5b5061032c60265481565b6040519081526020015b60405180910390f35b34801561034b57600080fd5b506103546109e6565b604051610336919061317e565b34801561036d57600080fd5b5061038161037c366004613071565b610a78565b6040519015158152602001610336565b34801561039d57600080fd5b5060175461032c565b3480156103b257600080fd5b506103da7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610336565b3480156103fe57600080fd5b5060085461032c565b34801561041357600080fd5b506103146104223660046130d7565b610a8f565b34801561043357600080fd5b5061032c601c5481565b34801561044957600080fd5b50610381610458366004613002565b610b1a565b34801561046957600080fd5b5061032c6104783660046130d7565b610b83565b34801561048957600080fd5b5060065460405160ff9091168152602001610336565b3480156104ab57600080fd5b506103146104ba366004612f8f565b610c07565b3480156104cb57600080fd5b506103816104da366004613071565b610dba565b3480156104eb57600080fd5b5061032c60185481565b34801561050157600080fd5b506103146105103660046130d7565b610df0565b34801561052157600080fd5b50610314610530366004612f8f565b610edc565b34801561054157600080fd5b5061032c610550366004613109565b610f2a565b34801561056157600080fd5b5061032c60155481565b34801561057757600080fd5b506103da7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105ab57600080fd5b506103146105ba36600461312e565b610fb9565b3480156105cb57600080fd5b506103146105da3660046130d7565b611022565b3480156105eb57600080fd5b506103146105fa366004612f8f565b611060565b34801561060b57600080fd5b5061038161061a366004612f8f565b6001600160a01b03166000908152600f602052604090205460ff1690565b34801561064457600080fd5b5061031461065336600461309d565b61122b565b34801561066457600080fd5b5061031461067336600461312e565b611268565b34801561068457600080fd5b5061032c601a5481565b34801561069a57600080fd5b5061032c6106a9366004612f8f565b61129d565b3480156106ba57600080fd5b506103146112fc565b3480156106cf57600080fd5b5061032c60145481565b3480156106e557600080fd5b5060135460ff16610381565b3480156106fd57600080fd5b5061038161070c366004612f8f565b6001600160a01b031660009081526010602052604090205460ff1690565b34801561073657600080fd5b506000546001600160a01b03166103da565b34801561075457600080fd5b5061031461076336600461312e565b61135e565b34801561077457600080fd5b506103546113ab565b34801561078957600080fd5b50610314610798366004612f8f565b6113ba565b3480156107a957600080fd5b506103816107b8366004613071565b6113fc565b3480156107c957600080fd5b5061031461144b565b3480156107de57600080fd5b506103816107ed366004613071565b611551565b3480156107fe57600080fd5b5060025461032c565b34801561081357600080fd5b50610381610822366004612fc9565b61155e565b34801561083357600080fd5b5061031461084236600461309d565b6116a4565b34801561085357600080fd5b5061032c60225481565b34801561086957600080fd5b5061032c60205481565b34801561087f57600080fd5b5061031461088e3660046130d7565b611722565b34801561089f57600080fd5b5061032c6108ae366004612fc9565b6001600160a01b039182166000908152600e6020908152604080832093909416825291909152205490565b3480156108e557600080fd5b506103146108f4366004612f8f565b6117a7565b34801561090557600080fd5b5061032c601e5481565b34801561091b57600080fd5b5061031461092a366004612f8f565b6117f2565b34801561093b57600080fd5b5061031461094a36600461312e565b6118ca565b34801561095b57600080fd5b5061038161096a366004612f8f565b6001600160a01b031660009081526011602052604090205460ff1690565b6000546001600160a01b031633146109bb5760405162461bcd60e51b81526004016109b2906131d3565b60405180910390fd5b5060016001600160a01b0382166000908152601160205260409020805460ff191660011790555b5050565b6060600480546109f5906132e9565b80601f0160208091040260200160405190810160405280929190818152602001828054610a21906132e9565b8015610a6e5780601f10610a4357610100808354040283529160200191610a6e565b820191906000526020600020905b815481529060010190602001808311610a5157829003601f168201915b5050505050905090565b6000610a853384846119c0565b5060015b92915050565b6000546001600160a01b03163314610ab95760405162461bcd60e51b81526004016109b2906131d3565b6064811115610ac757600080fd5b60095447906001600160a01b03166108fc610aed6064610ae785876118ff565b9061197e565b6040518115909202916000818181858888f19350505050158015610b15573d6000803e3d6000fd5b505050565b6000610b27848484611ae4565b610b798433610b74856040518060600160405280602881526020016133a8602891396001600160a01b038a166000908152600e602090815260408083203384529091529020549190611f6a565b6119c0565b5060019392505050565b6000601654821115610bea5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016109b2565b6000610bf4611fa4565b9050610c00838261197e565b9392505050565b6000546001600160a01b03163314610c315760405162461bcd60e51b81526004016109b2906131d3565b6001600160a01b03811660009081526010602052604090205460ff16610c995760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109b2565b60005b6012548110156109e257816001600160a01b031660128281548110610cc357610cc361336b565b6000918252602090912001546001600160a01b03161415610da85760128054610cee906001906132d2565b81548110610cfe57610cfe61336b565b600091825260209091200154601280546001600160a01b039092169183908110610d2a57610d2a61336b565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600b82526040808220829055601090925220805460ff191690556012805480610d8257610d82613355565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610db281613324565b915050610c9c565b336000818152600e602090815260408083206001600160a01b03871684529091528120549091610a85918590610b749086611fc7565b3360008181526010602052604090205460ff1615610e655760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016109b2565b6000610e7083612026565b5050506001600160a01b0386166000908152600a6020526040902054939450610e9e93925084915050612081565b6001600160a01b0383166000908152600a6020526040902055601654610ec49082612081565b601655601754610ed49084611fc7565b601755505050565b6000546001600160a01b03163314610f065760405162461bcd60e51b81526004016109b2906131d3565b6001600160a01b03166000908152600f60205260409020805460ff19166001179055565b6000600854831115610f7e5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016109b2565b81610f9e576000610f8e84612026565b50949650610a8995505050505050565b6000610fa984612026565b50939650610a8995505050505050565b6000546001600160a01b03163314610fe35760405162461bcd60e51b81526004016109b2906131d3565b60018210158015610ff657506103e88111155b610fff57600080fd5b600061101a82610ae7856008546118ff90919063ffffffff16565b602655505050565b6000546001600160a01b0316331461104c5760405162461bcd60e51b81526004016109b2906131d3565b60155481111561105b57600080fd5b601455565b6000546001600160a01b0316331461108a5760405162461bcd60e51b81526004016109b2906131d3565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03821614156111025760405162461bcd60e51b815260206004820152602260248201527f57652063616e206e6f74206578636c75646520556e697377617020726f757465604482015261391760f11b60648201526084016109b2565b6001600160a01b03811660009081526010602052604090205460ff161561116b5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109b2565b6001600160a01b0381166000908152600a6020526040902054156111c5576001600160a01b0381166000908152600a60205260409020546111ab90610b83565b6001600160a01b0382166000908152600b60205260409020555b6001600160a01b03166000818152601060205260408120805460ff191660019081179091556012805491820181559091527fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec34440180546001600160a01b0319169091179055565b6000546001600160a01b031633146112555760405162461bcd60e51b81526004016109b2906131d3565b6013805460ff1916911515919091179055565b6000546001600160a01b031633146112925760405162461bcd60e51b81526004016109b2906131d3565b601a91909155601c55565b6001600160a01b03811660009081526010602052604081205460ff16156112da57506001600160a01b03166000908152600b602052604090205490565b6001600160a01b0382166000908152600a6020526040902054610a8990610b83565b6000546001600160a01b031633146113265760405162461bcd60e51b81526004016109b2906131d3565b600080546040516001600160a01b03909116906000805160206133d0833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146113885760405162461bcd60e51b81526004016109b2906131d3565b60006113a382610ae7856008546118ff90919063ffffffff16565b602855505050565b6060600580546109f5906132e9565b6000546001600160a01b031633146113e45760405162461bcd60e51b81526004016109b2906131d3565b60006113ef3061129d565b90506109e2308383611ae4565b6000610a853384610b74856040518060600160405280602581526020016133f060259139336000908152600e602090815260408083206001600160a01b038d1684529091529020549190611f6a565b6001546001600160a01b031633146114b15760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b60648201526084016109b2565b60025442116115025760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c203720646179730060448201526064016109b2565b600154600080546040516001600160a01b0393841693909116916000805160206133d083398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610a85338484611ae4565b600080546001600160a01b031633146115895760405162461bcd60e51b81526004016109b2906131d3565b6001600160a01b03831661159c57600080fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a082319060240160206040518083038186803b1580156115de57600080fd5b505afa1580156115f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161691906130f0565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb90604401602060405180830381600087803b15801561166457600080fd5b505af1158015611678573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169c91906130ba565b949350505050565b6000546001600160a01b031633146116ce5760405162461bcd60e51b81526004016109b2906131d3565b602780548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061171790831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461174c5760405162461bcd60e51b81526004016109b2906131d3565b60008054600180546001600160a01b03199081166001600160a01b0384161790915516905561177b8142613279565b600255600080546040516001600160a01b03909116906000805160206133d0833981519152908390a350565b6000546001600160a01b031633146117d15760405162461bcd60e51b81526004016109b2906131d3565b6001600160a01b03166000908152600f60205260409020805460ff19169055565b6000546001600160a01b0316331461181c5760405162461bcd60e51b81526004016109b2906131d3565b6001600160a01b0381166118815760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109b2565b600080546040516001600160a01b03808516939216916000805160206133d083398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118f45760405162461bcd60e51b81526004016109b2906131d3565b602291909155602055565b60008261190e57506000610a89565b600061191a83856132b3565b9050826119278583613291565b14610c005760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109b2565b6000610c0083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120c3565b6001600160a01b038316611a225760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109b2565b6001600160a01b038216611a835760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109b2565b6001600160a01b038381166000818152600e602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611b485760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109b2565b6001600160a01b038216611baa5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109b2565b60008111611c0c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109b2565b6001600160a01b03831660009081526011602052604090205460ff1615611c5e5760405162461bcd60e51b81526004016109b2906020808252600490820152634865686560e01b604082015260600190565b6001600160a01b03821660009081526011602052604090205460ff1615611cb05760405162461bcd60e51b81526004016109b2906020808252600490820152634865686560e01b604082015260600190565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316148015611d2357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b8015611d4857506001600160a01b0382166000908152600f602052604090205460ff16155b8015611d56575060135460ff165b15611dba57602654811115611d6a57600080fd5b6001600160a01b0382166000908152600c60205260409020544211611d8e57600080fd5b601454611d9c904290611fc7565b6001600160a01b0383166000908152600c6020526040902055611e75565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614158015611dfe575060135460ff165b8015611e2357506001600160a01b0382166000908152600f602052604090205460ff16155b15611e75576001600160a01b0383166000908152600d6020526040902054421015611e4d57600080fd5b601454611e5b904290611fc7565b6001600160a01b0384166000908152600d60205260409020555b6000611e803061129d565b90506028548110611e9057506028545b60285481108015908190611ea7575060275460ff16155b8015611ee557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b8015611ef85750602754610100900460ff165b15611f0b576028549150611f0b826120f1565b6001600160a01b0385166000908152600f602052604090205460019060ff1680611f4d57506001600160a01b0385166000908152600f602052604090205460ff165b15611f56575060005b611f6286868684612253565b505050505050565b60008184841115611f8e5760405162461bcd60e51b81526004016109b2919061317e565b506000611f9b84866132d2565b95945050505050565b6000806000611fb161246b565b9092509050611fc0828261197e565b9250505090565b600080611fd48385613279565b905083811015610c005760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109b2565b60008060008060008060008060008060006120408c6125ed565b935093509350935060008060006120618f87878761205c611fa4565b612675565b919f509d509b509599509397509195509350505050919395979092949650565b6000610c0083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f6a565b600081836120e45760405162461bcd60e51b81526004016109b2919061317e565b506000611f9b8486613291565b6027805460ff1916600117905560006121106064610ae78460556118ff565b9050600061211e8383612081565b9050600061212d82600261197e565b9050600061213b8383612081565b905047600061214a8487611fc7565b9050612155816126d7565b60006121614784612081565b905060006121756064610ae784600a6118ff565b9050612181858261289e565b60408051878152602081018390529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a160006121ce8383612081565b6009546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015612209573d6000803e3d6000fd5b506040518181527f4d5c7c4ddada689ed3a12644234d0a26ec361d8a6f55c9b05805a57bd636f14b9060200160405180910390a150506027805460ff191690555050505050505050565b80612260576122606129b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03161480156122d357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b156122e8576122e3848484612a3c565b612437565b6001600160a01b03841660009081526010602052604090205460ff16801561232957506001600160a01b03831660009081526010602052604090205460ff16155b15612339576122e3848484612b53565b6001600160a01b03841660009081526010602052604090205460ff1615801561237a57506001600160a01b03831660009081526010602052604090205460ff165b1561238a576122e3848484612c36565b6001600160a01b03841660009081526010602052604090205460ff161580156123cc57506001600160a01b03831660009081526010602052604090205460ff16155b156123dc576122e3848484612cf5565b6001600160a01b03841660009081526010602052604090205460ff16801561241c57506001600160a01b03831660009081526010602052604090205460ff165b1561242c576122e3848484612d4f565b612437848484612cf5565b8061246557612465601954601855601d54601c55601b54601a55602154602055602354602255601f54601e55565b50505050565b6016546008546000918291825b6012548110156125bd5782600a60006012848154811061249a5761249a61336b565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612505575081600b6000601284815481106124de576124de61336b565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561251b57601654600854945094505050509091565b612561600a6000601284815481106125355761253561336b565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612081565b92506125a9600b60006012848154811061257d5761257d61336b565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612081565b9150806125b581613324565b915050612478565b506008546016546125cd9161197e565b8210156125e4576016546008549350935050509091565b90939092509050565b600080600080600061260f6064610ae7601854896118ff90919063ffffffff16565b9050600061262d6064610ae7601c548a6118ff90919063ffffffff16565b9050600061264b6064610ae7601a548b6118ff90919063ffffffff16565b905060006126658261265f85818d89612081565b90612081565b9993985091965094509092505050565b600080808061268489866118ff565b9050600061269289876118ff565b905060006126a088886118ff565b905060006126ae8a896118ff565b905060006126c28361265f84818989612081565b949d949c50929a509298505050505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061270c5761270c61336b565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561278557600080fd5b505afa158015612799573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127bd9190612fac565b816001815181106127d0576127d061336b565b60200260200101906001600160a01b031690816001600160a01b03168152505061281b307f0000000000000000000000000000000000000000000000000000000000000000846119c0565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612870908590600090869030904290600401613208565b600060405180830381600087803b15801561288a57600080fd5b505af1158015611f62573d6000803e3d6000fd5b6128c9307f0000000000000000000000000000000000000000000000000000000000000000846119c0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d7198230856000806129106000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561297357600080fd5b505af1158015612987573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129ac9190613150565b5050505050565b6018541580156129c35750601a54155b80156129cf5750601c54155b80156129db5750602254155b80156129e75750601e54155b80156129f35750602054155b156129fa57565b60188054601955601c8054601d55601a8054601b55601e8054601f55602280546023556020805460215560009283905590829055819055928390559082905555565b6000806000806000806000612a5088612dd8565b9650965096509650965096509650612a9687600a60008d6001600160a01b03166001600160a01b031681526020019081526020016000205461208190919063ffffffff16565b6001600160a01b03808c166000908152600a602052604080822093909355908b1681522054612ac59087611fc7565b6001600160a01b038a166000908152600a6020526040902055612ae781612e13565b612af082612e13565b612afa8584612e9b565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612b3f91815260200190565b60405180910390a350505050505050505050565b6000806000806000806000612b6788612026565b9650965096509650965096509650612bad88600b60008d6001600160a01b03166001600160a01b031681526020019081526020016000205461208190919063ffffffff16565b6001600160a01b038b166000908152600b6020908152604080832093909355600a90522054612bdc9088612081565b6001600160a01b03808c166000908152600a602052604080822093909355908b1681522054612c0b9087611fc7565b6001600160a01b038a166000908152600a6020526040902055612c2d82612e13565b612af081612e13565b6000806000806000806000612c4a88612026565b9650965096509650965096509650612c9087600a60008d6001600160a01b03166001600160a01b031681526020019081526020016000205461208190919063ffffffff16565b6001600160a01b03808c166000908152600a6020908152604080832094909455918c168152600b9091522054612cc69085611fc7565b6001600160a01b038a166000908152600b6020908152604080832093909355600a90522054612c0b9087611fc7565b6000806000806000806000612d0988612026565b9650965096509650965096509650612bdc87600a60008d6001600160a01b03166001600160a01b031681526020019081526020016000205461208190919063ffffffff16565b6000806000806000806000612d6388612026565b9650965096509650965096509650612da988600b60008d6001600160a01b03166001600160a01b031681526020019081526020016000205461208190919063ffffffff16565b6001600160a01b038b166000908152600b6020908152604080832093909355600a90522054612c909088612081565b6000806000806000806000806000806000612df28c612ebf565b935093509350935060008060006120618f878787612e0e611fa4565b612f42565b6000612e1d611fa4565b90506000612e2b83836118ff565b306000908152600a6020526040902054909150612e489082611fc7565b306000908152600a602090815260408083209390935560109052205460ff1615610b1557306000908152600b6020526040902054612e869084611fc7565b306000908152600b6020526040902055505050565b601654612ea89083612081565b601655601754612eb89082611fc7565b6017555050565b6000806000806000612ee16064610ae7601e54896118ff90919063ffffffff16565b90506000612eff6064610ae76020548a6118ff90919063ffffffff16565b90506000612f1d6064610ae76022548b6118ff90919063ffffffff16565b90506000612f318261265f85818d89612081565b975092955093509150509193509193565b6000808080612f5189866118ff565b90506000612f5f89876118ff565b90506000612f6d89886118ff565b90506000612f7b89896118ff565b905060006126c28261265f85818989612081565b600060208284031215612fa157600080fd5b8135610c0081613381565b600060208284031215612fbe57600080fd5b8151610c0081613381565b60008060408385031215612fdc57600080fd5b8235612fe781613381565b91506020830135612ff781613381565b809150509250929050565b60008060006060848603121561301757600080fd5b833561302281613381565b9250602084013561303281613381565b929592945050506040919091013590565b6000806040838503121561305657600080fd5b823561306181613381565b91506020830135612ff781613399565b6000806040838503121561308457600080fd5b823561308f81613381565b946020939093013593505050565b6000602082840312156130af57600080fd5b8135610c0081613399565b6000602082840312156130cc57600080fd5b8151610c0081613399565b6000602082840312156130e957600080fd5b5035919050565b60006020828403121561310257600080fd5b5051919050565b6000806040838503121561311c57600080fd5b823591506020830135612ff781613399565b6000806040838503121561314157600080fd5b50508035926020909101359150565b60008060006060848603121561316557600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b818110156131ab5785810183015185820160400152820161318f565b818111156131bd576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156132585784516001600160a01b031683529383019391830191600101613233565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561328c5761328c61333f565b500190565b6000826132ae57634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156132cd576132cd61333f565b500290565b6000828210156132e4576132e461333f565b500390565b600181811c908216806132fd57607f821691505b6020821081141561331e57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156133385761333861333f565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461339657600080fd5b50565b801515811461339657600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220231d4dd928aedbd4c7ab6b8b8a74c1f34a09922b9a37cae4245bed001961cf3264736f6c63430008070033000000000000000000000000c787a4ba168288a8e67f73bc4167e9db57589dd2

Deployed Bytecode

0x6080604052600436106102e85760003560e01c80636ac9a87011610190578063a9059cbb116100dc578063dd46706411610095578063efcc52de1161006f578063efcc52de146108f9578063f2fde38b1461090f578063fb0ecfa41461092f578063fe575a871461094f57600080fd5b8063dd46706414610873578063dd62ed3e14610893578063ea2f0b37146108d957600080fd5b8063a9059cbb146107d2578063b6c52324146107f2578063c40fedc614610807578063c49b9a8014610827578063c5d2418914610847578063dc44b6a01461085d57600080fd5b806388f820201161014957806395d89b411161012357806395d89b41146107685780639be953b31461077d578063a457c2d71461079d578063a69df4b5146107bd57600080fd5b806388f82020146106f15780638da5cb5b1461072a5780638fcc250d1461074857600080fd5b80636ac9a870146106585780636bc87c3a1461067857806370a082311461068e578063715018a6146106ae578063787a08a6146106c3578063809157c5146106d957600080fd5b80633685d4191161024f57806347f2914c116102085780634fc3f41a116101e25780634fc3f41a146105bf57806352390c02146105df5780635342acb4146105ff5780635932ead11461063857600080fd5b806347f2914c1461055557806349bd5a5e1461056b5780634f6625661461059f57600080fd5b80633685d4191461049f57806339509351146104bf5780633b124fe7146104df5780633bd5d173146104f5578063437823ec146105155780634549b0391461053557600080fd5b806318160ddd116102a157806318160ddd146103f25780631da1db5e1461040757806322976e0d1461042757806323b872dd1461043d5780632d8381191461045d578063313ce5671461047d57600080fd5b806303d29d28146102f45780630492f0551461031657806306fdde031461033f578063095ea7b31461036157806313114a9d146103915780631694505e146103a657600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b5061031461030f366004613043565b610988565b005b34801561032257600080fd5b5061032c60265481565b6040519081526020015b60405180910390f35b34801561034b57600080fd5b506103546109e6565b604051610336919061317e565b34801561036d57600080fd5b5061038161037c366004613071565b610a78565b6040519015158152602001610336565b34801561039d57600080fd5b5060175461032c565b3480156103b257600080fd5b506103da7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610336565b3480156103fe57600080fd5b5060085461032c565b34801561041357600080fd5b506103146104223660046130d7565b610a8f565b34801561043357600080fd5b5061032c601c5481565b34801561044957600080fd5b50610381610458366004613002565b610b1a565b34801561046957600080fd5b5061032c6104783660046130d7565b610b83565b34801561048957600080fd5b5060065460405160ff9091168152602001610336565b3480156104ab57600080fd5b506103146104ba366004612f8f565b610c07565b3480156104cb57600080fd5b506103816104da366004613071565b610dba565b3480156104eb57600080fd5b5061032c60185481565b34801561050157600080fd5b506103146105103660046130d7565b610df0565b34801561052157600080fd5b50610314610530366004612f8f565b610edc565b34801561054157600080fd5b5061032c610550366004613109565b610f2a565b34801561056157600080fd5b5061032c60155481565b34801561057757600080fd5b506103da7f00000000000000000000000003473dabb354e39030bb5e973a272765cc61a91c81565b3480156105ab57600080fd5b506103146105ba36600461312e565b610fb9565b3480156105cb57600080fd5b506103146105da3660046130d7565b611022565b3480156105eb57600080fd5b506103146105fa366004612f8f565b611060565b34801561060b57600080fd5b5061038161061a366004612f8f565b6001600160a01b03166000908152600f602052604090205460ff1690565b34801561064457600080fd5b5061031461065336600461309d565b61122b565b34801561066457600080fd5b5061031461067336600461312e565b611268565b34801561068457600080fd5b5061032c601a5481565b34801561069a57600080fd5b5061032c6106a9366004612f8f565b61129d565b3480156106ba57600080fd5b506103146112fc565b3480156106cf57600080fd5b5061032c60145481565b3480156106e557600080fd5b5060135460ff16610381565b3480156106fd57600080fd5b5061038161070c366004612f8f565b6001600160a01b031660009081526010602052604090205460ff1690565b34801561073657600080fd5b506000546001600160a01b03166103da565b34801561075457600080fd5b5061031461076336600461312e565b61135e565b34801561077457600080fd5b506103546113ab565b34801561078957600080fd5b50610314610798366004612f8f565b6113ba565b3480156107a957600080fd5b506103816107b8366004613071565b6113fc565b3480156107c957600080fd5b5061031461144b565b3480156107de57600080fd5b506103816107ed366004613071565b611551565b3480156107fe57600080fd5b5060025461032c565b34801561081357600080fd5b50610381610822366004612fc9565b61155e565b34801561083357600080fd5b5061031461084236600461309d565b6116a4565b34801561085357600080fd5b5061032c60225481565b34801561086957600080fd5b5061032c60205481565b34801561087f57600080fd5b5061031461088e3660046130d7565b611722565b34801561089f57600080fd5b5061032c6108ae366004612fc9565b6001600160a01b039182166000908152600e6020908152604080832093909416825291909152205490565b3480156108e557600080fd5b506103146108f4366004612f8f565b6117a7565b34801561090557600080fd5b5061032c601e5481565b34801561091b57600080fd5b5061031461092a366004612f8f565b6117f2565b34801561093b57600080fd5b5061031461094a36600461312e565b6118ca565b34801561095b57600080fd5b5061038161096a366004612f8f565b6001600160a01b031660009081526011602052604090205460ff1690565b6000546001600160a01b031633146109bb5760405162461bcd60e51b81526004016109b2906131d3565b60405180910390fd5b5060016001600160a01b0382166000908152601160205260409020805460ff191660011790555b5050565b6060600480546109f5906132e9565b80601f0160208091040260200160405190810160405280929190818152602001828054610a21906132e9565b8015610a6e5780601f10610a4357610100808354040283529160200191610a6e565b820191906000526020600020905b815481529060010190602001808311610a5157829003601f168201915b5050505050905090565b6000610a853384846119c0565b5060015b92915050565b6000546001600160a01b03163314610ab95760405162461bcd60e51b81526004016109b2906131d3565b6064811115610ac757600080fd5b60095447906001600160a01b03166108fc610aed6064610ae785876118ff565b9061197e565b6040518115909202916000818181858888f19350505050158015610b15573d6000803e3d6000fd5b505050565b6000610b27848484611ae4565b610b798433610b74856040518060600160405280602881526020016133a8602891396001600160a01b038a166000908152600e602090815260408083203384529091529020549190611f6a565b6119c0565b5060019392505050565b6000601654821115610bea5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016109b2565b6000610bf4611fa4565b9050610c00838261197e565b9392505050565b6000546001600160a01b03163314610c315760405162461bcd60e51b81526004016109b2906131d3565b6001600160a01b03811660009081526010602052604090205460ff16610c995760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109b2565b60005b6012548110156109e257816001600160a01b031660128281548110610cc357610cc361336b565b6000918252602090912001546001600160a01b03161415610da85760128054610cee906001906132d2565b81548110610cfe57610cfe61336b565b600091825260209091200154601280546001600160a01b039092169183908110610d2a57610d2a61336b565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600b82526040808220829055601090925220805460ff191690556012805480610d8257610d82613355565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610db281613324565b915050610c9c565b336000818152600e602090815260408083206001600160a01b03871684529091528120549091610a85918590610b749086611fc7565b3360008181526010602052604090205460ff1615610e655760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016109b2565b6000610e7083612026565b5050506001600160a01b0386166000908152600a6020526040902054939450610e9e93925084915050612081565b6001600160a01b0383166000908152600a6020526040902055601654610ec49082612081565b601655601754610ed49084611fc7565b601755505050565b6000546001600160a01b03163314610f065760405162461bcd60e51b81526004016109b2906131d3565b6001600160a01b03166000908152600f60205260409020805460ff19166001179055565b6000600854831115610f7e5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016109b2565b81610f9e576000610f8e84612026565b50949650610a8995505050505050565b6000610fa984612026565b50939650610a8995505050505050565b6000546001600160a01b03163314610fe35760405162461bcd60e51b81526004016109b2906131d3565b60018210158015610ff657506103e88111155b610fff57600080fd5b600061101a82610ae7856008546118ff90919063ffffffff16565b602655505050565b6000546001600160a01b0316331461104c5760405162461bcd60e51b81526004016109b2906131d3565b60155481111561105b57600080fd5b601455565b6000546001600160a01b0316331461108a5760405162461bcd60e51b81526004016109b2906131d3565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03821614156111025760405162461bcd60e51b815260206004820152602260248201527f57652063616e206e6f74206578636c75646520556e697377617020726f757465604482015261391760f11b60648201526084016109b2565b6001600160a01b03811660009081526010602052604090205460ff161561116b5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109b2565b6001600160a01b0381166000908152600a6020526040902054156111c5576001600160a01b0381166000908152600a60205260409020546111ab90610b83565b6001600160a01b0382166000908152600b60205260409020555b6001600160a01b03166000818152601060205260408120805460ff191660019081179091556012805491820181559091527fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec34440180546001600160a01b0319169091179055565b6000546001600160a01b031633146112555760405162461bcd60e51b81526004016109b2906131d3565b6013805460ff1916911515919091179055565b6000546001600160a01b031633146112925760405162461bcd60e51b81526004016109b2906131d3565b601a91909155601c55565b6001600160a01b03811660009081526010602052604081205460ff16156112da57506001600160a01b03166000908152600b602052604090205490565b6001600160a01b0382166000908152600a6020526040902054610a8990610b83565b6000546001600160a01b031633146113265760405162461bcd60e51b81526004016109b2906131d3565b600080546040516001600160a01b03909116906000805160206133d0833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146113885760405162461bcd60e51b81526004016109b2906131d3565b60006113a382610ae7856008546118ff90919063ffffffff16565b602855505050565b6060600580546109f5906132e9565b6000546001600160a01b031633146113e45760405162461bcd60e51b81526004016109b2906131d3565b60006113ef3061129d565b90506109e2308383611ae4565b6000610a853384610b74856040518060600160405280602581526020016133f060259139336000908152600e602090815260408083206001600160a01b038d1684529091529020549190611f6a565b6001546001600160a01b031633146114b15760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b60648201526084016109b2565b60025442116115025760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c203720646179730060448201526064016109b2565b600154600080546040516001600160a01b0393841693909116916000805160206133d083398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610a85338484611ae4565b600080546001600160a01b031633146115895760405162461bcd60e51b81526004016109b2906131d3565b6001600160a01b03831661159c57600080fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a082319060240160206040518083038186803b1580156115de57600080fd5b505afa1580156115f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161691906130f0565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb90604401602060405180830381600087803b15801561166457600080fd5b505af1158015611678573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169c91906130ba565b949350505050565b6000546001600160a01b031633146116ce5760405162461bcd60e51b81526004016109b2906131d3565b602780548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061171790831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461174c5760405162461bcd60e51b81526004016109b2906131d3565b60008054600180546001600160a01b03199081166001600160a01b0384161790915516905561177b8142613279565b600255600080546040516001600160a01b03909116906000805160206133d0833981519152908390a350565b6000546001600160a01b031633146117d15760405162461bcd60e51b81526004016109b2906131d3565b6001600160a01b03166000908152600f60205260409020805460ff19169055565b6000546001600160a01b0316331461181c5760405162461bcd60e51b81526004016109b2906131d3565b6001600160a01b0381166118815760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109b2565b600080546040516001600160a01b03808516939216916000805160206133d083398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118f45760405162461bcd60e51b81526004016109b2906131d3565b602291909155602055565b60008261190e57506000610a89565b600061191a83856132b3565b9050826119278583613291565b14610c005760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109b2565b6000610c0083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120c3565b6001600160a01b038316611a225760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109b2565b6001600160a01b038216611a835760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109b2565b6001600160a01b038381166000818152600e602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611b485760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109b2565b6001600160a01b038216611baa5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109b2565b60008111611c0c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109b2565b6001600160a01b03831660009081526011602052604090205460ff1615611c5e5760405162461bcd60e51b81526004016109b2906020808252600490820152634865686560e01b604082015260600190565b6001600160a01b03821660009081526011602052604090205460ff1615611cb05760405162461bcd60e51b81526004016109b2906020808252600490820152634865686560e01b604082015260600190565b7f00000000000000000000000003473dabb354e39030bb5e973a272765cc61a91c6001600160a01b0316836001600160a01b0316148015611d2357507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b8015611d4857506001600160a01b0382166000908152600f602052604090205460ff16155b8015611d56575060135460ff165b15611dba57602654811115611d6a57600080fd5b6001600160a01b0382166000908152600c60205260409020544211611d8e57600080fd5b601454611d9c904290611fc7565b6001600160a01b0383166000908152600c6020526040902055611e75565b7f00000000000000000000000003473dabb354e39030bb5e973a272765cc61a91c6001600160a01b0316836001600160a01b031614158015611dfe575060135460ff165b8015611e2357506001600160a01b0382166000908152600f602052604090205460ff16155b15611e75576001600160a01b0383166000908152600d6020526040902054421015611e4d57600080fd5b601454611e5b904290611fc7565b6001600160a01b0384166000908152600d60205260409020555b6000611e803061129d565b90506028548110611e9057506028545b60285481108015908190611ea7575060275460ff16155b8015611ee557507f00000000000000000000000003473dabb354e39030bb5e973a272765cc61a91c6001600160a01b0316856001600160a01b031614155b8015611ef85750602754610100900460ff165b15611f0b576028549150611f0b826120f1565b6001600160a01b0385166000908152600f602052604090205460019060ff1680611f4d57506001600160a01b0385166000908152600f602052604090205460ff165b15611f56575060005b611f6286868684612253565b505050505050565b60008184841115611f8e5760405162461bcd60e51b81526004016109b2919061317e565b506000611f9b84866132d2565b95945050505050565b6000806000611fb161246b565b9092509050611fc0828261197e565b9250505090565b600080611fd48385613279565b905083811015610c005760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109b2565b60008060008060008060008060008060006120408c6125ed565b935093509350935060008060006120618f87878761205c611fa4565b612675565b919f509d509b509599509397509195509350505050919395979092949650565b6000610c0083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f6a565b600081836120e45760405162461bcd60e51b81526004016109b2919061317e565b506000611f9b8486613291565b6027805460ff1916600117905560006121106064610ae78460556118ff565b9050600061211e8383612081565b9050600061212d82600261197e565b9050600061213b8383612081565b905047600061214a8487611fc7565b9050612155816126d7565b60006121614784612081565b905060006121756064610ae784600a6118ff565b9050612181858261289e565b60408051878152602081018390529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a160006121ce8383612081565b6009546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015612209573d6000803e3d6000fd5b506040518181527f4d5c7c4ddada689ed3a12644234d0a26ec361d8a6f55c9b05805a57bd636f14b9060200160405180910390a150506027805460ff191690555050505050505050565b80612260576122606129b3565b7f00000000000000000000000003473dabb354e39030bb5e973a272765cc61a91c6001600160a01b0316846001600160a01b03161480156122d357507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316836001600160a01b031614155b156122e8576122e3848484612a3c565b612437565b6001600160a01b03841660009081526010602052604090205460ff16801561232957506001600160a01b03831660009081526010602052604090205460ff16155b15612339576122e3848484612b53565b6001600160a01b03841660009081526010602052604090205460ff1615801561237a57506001600160a01b03831660009081526010602052604090205460ff165b1561238a576122e3848484612c36565b6001600160a01b03841660009081526010602052604090205460ff161580156123cc57506001600160a01b03831660009081526010602052604090205460ff16155b156123dc576122e3848484612cf5565b6001600160a01b03841660009081526010602052604090205460ff16801561241c57506001600160a01b03831660009081526010602052604090205460ff165b1561242c576122e3848484612d4f565b612437848484612cf5565b8061246557612465601954601855601d54601c55601b54601a55602154602055602354602255601f54601e55565b50505050565b6016546008546000918291825b6012548110156125bd5782600a60006012848154811061249a5761249a61336b565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612505575081600b6000601284815481106124de576124de61336b565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561251b57601654600854945094505050509091565b612561600a6000601284815481106125355761253561336b565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612081565b92506125a9600b60006012848154811061257d5761257d61336b565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612081565b9150806125b581613324565b915050612478565b506008546016546125cd9161197e565b8210156125e4576016546008549350935050509091565b90939092509050565b600080600080600061260f6064610ae7601854896118ff90919063ffffffff16565b9050600061262d6064610ae7601c548a6118ff90919063ffffffff16565b9050600061264b6064610ae7601a548b6118ff90919063ffffffff16565b905060006126658261265f85818d89612081565b90612081565b9993985091965094509092505050565b600080808061268489866118ff565b9050600061269289876118ff565b905060006126a088886118ff565b905060006126ae8a896118ff565b905060006126c28361265f84818989612081565b949d949c50929a509298505050505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061270c5761270c61336b565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561278557600080fd5b505afa158015612799573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127bd9190612fac565b816001815181106127d0576127d061336b565b60200260200101906001600160a01b031690816001600160a01b03168152505061281b307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846119c0565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612870908590600090869030904290600401613208565b600060405180830381600087803b15801561288a57600080fd5b505af1158015611f62573d6000803e3d6000fd5b6128c9307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846119c0565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d7198230856000806129106000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561297357600080fd5b505af1158015612987573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129ac9190613150565b5050505050565b6018541580156129c35750601a54155b80156129cf5750601c54155b80156129db5750602254155b80156129e75750601e54155b80156129f35750602054155b156129fa57565b60188054601955601c8054601d55601a8054601b55601e8054601f55602280546023556020805460215560009283905590829055819055928390559082905555565b6000806000806000806000612a5088612dd8565b9650965096509650965096509650612a9687600a60008d6001600160a01b03166001600160a01b031681526020019081526020016000205461208190919063ffffffff16565b6001600160a01b03808c166000908152600a602052604080822093909355908b1681522054612ac59087611fc7565b6001600160a01b038a166000908152600a6020526040902055612ae781612e13565b612af082612e13565b612afa8584612e9b565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612b3f91815260200190565b60405180910390a350505050505050505050565b6000806000806000806000612b6788612026565b9650965096509650965096509650612bad88600b60008d6001600160a01b03166001600160a01b031681526020019081526020016000205461208190919063ffffffff16565b6001600160a01b038b166000908152600b6020908152604080832093909355600a90522054612bdc9088612081565b6001600160a01b03808c166000908152600a602052604080822093909355908b1681522054612c0b9087611fc7565b6001600160a01b038a166000908152600a6020526040902055612c2d82612e13565b612af081612e13565b6000806000806000806000612c4a88612026565b9650965096509650965096509650612c9087600a60008d6001600160a01b03166001600160a01b031681526020019081526020016000205461208190919063ffffffff16565b6001600160a01b03808c166000908152600a6020908152604080832094909455918c168152600b9091522054612cc69085611fc7565b6001600160a01b038a166000908152600b6020908152604080832093909355600a90522054612c0b9087611fc7565b6000806000806000806000612d0988612026565b9650965096509650965096509650612bdc87600a60008d6001600160a01b03166001600160a01b031681526020019081526020016000205461208190919063ffffffff16565b6000806000806000806000612d6388612026565b9650965096509650965096509650612da988600b60008d6001600160a01b03166001600160a01b031681526020019081526020016000205461208190919063ffffffff16565b6001600160a01b038b166000908152600b6020908152604080832093909355600a90522054612c909088612081565b6000806000806000806000806000806000612df28c612ebf565b935093509350935060008060006120618f878787612e0e611fa4565b612f42565b6000612e1d611fa4565b90506000612e2b83836118ff565b306000908152600a6020526040902054909150612e489082611fc7565b306000908152600a602090815260408083209390935560109052205460ff1615610b1557306000908152600b6020526040902054612e869084611fc7565b306000908152600b6020526040902055505050565b601654612ea89083612081565b601655601754612eb89082611fc7565b6017555050565b6000806000806000612ee16064610ae7601e54896118ff90919063ffffffff16565b90506000612eff6064610ae76020548a6118ff90919063ffffffff16565b90506000612f1d6064610ae76022548b6118ff90919063ffffffff16565b90506000612f318261265f85818d89612081565b975092955093509150509193509193565b6000808080612f5189866118ff565b90506000612f5f89876118ff565b90506000612f6d89886118ff565b90506000612f7b89896118ff565b905060006126c28261265f85818989612081565b600060208284031215612fa157600080fd5b8135610c0081613381565b600060208284031215612fbe57600080fd5b8151610c0081613381565b60008060408385031215612fdc57600080fd5b8235612fe781613381565b91506020830135612ff781613381565b809150509250929050565b60008060006060848603121561301757600080fd5b833561302281613381565b9250602084013561303281613381565b929592945050506040919091013590565b6000806040838503121561305657600080fd5b823561306181613381565b91506020830135612ff781613399565b6000806040838503121561308457600080fd5b823561308f81613381565b946020939093013593505050565b6000602082840312156130af57600080fd5b8135610c0081613399565b6000602082840312156130cc57600080fd5b8151610c0081613399565b6000602082840312156130e957600080fd5b5035919050565b60006020828403121561310257600080fd5b5051919050565b6000806040838503121561311c57600080fd5b823591506020830135612ff781613399565b6000806040838503121561314157600080fd5b50508035926020909101359150565b60008060006060848603121561316557600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b818110156131ab5785810183015185820160400152820161318f565b818111156131bd576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156132585784516001600160a01b031683529383019391830191600101613233565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561328c5761328c61333f565b500190565b6000826132ae57634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156132cd576132cd61333f565b500290565b6000828210156132e4576132e461333f565b500390565b600181811c908216806132fd57607f821691505b6020821081141561331e57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156133385761333861333f565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461339657600080fd5b50565b801515811461339657600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220231d4dd928aedbd4c7ab6b8b8a74c1f34a09922b9a37cae4245bed001961cf3264736f6c63430008070033

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

000000000000000000000000c787a4ba168288a8e67f73bc4167e9db57589dd2

-----Decoded View---------------
Arg [0] : marketingWallet (address): 0xc787a4bA168288a8e67F73Bc4167e9dB57589dD2

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000c787a4ba168288a8e67f73bc4167e9db57589dd2


Deployed Bytecode Sourcemap

14597:24724:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20235:282;;;;;;;;;;-1:-1:-1;20235:282:0;;;;;:::i;:::-;;:::i;:::-;;16526:72;;;;;;;;;;;;;;;;;;;12698:25:1;;;12686:2;12671:18;16526:72:0;;;;;;;;17881:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;18526:161::-;;;;;;;;;;-1:-1:-1;18526:161:0;;;;;:::i;:::-;;:::i;:::-;;;5095:14:1;;5088:22;5070:41;;5058:2;5043:18;18526:161:0;4930:187:1;23188:87:0;;;;;;;;;;-1:-1:-1;23257:10:0;;23188:87;;16610:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3995:32:1;;;3977:51;;3965:2;3950:18;16610:51:0;3831:203:1;18104:79:0;;;;;;;;;;-1:-1:-1;18174:7:0;;18104:79;;30518:262;;;;;;;;;;-1:-1:-1;30518:262:0;;;;;:::i;:::-;;:::i;16033:32::-;;;;;;;;;;;;;;;;32377:313;;;;;;;;;;-1:-1:-1;32377:313:0;;;;;:::i;:::-;;:::i;21361:253::-;;;;;;;;;;-1:-1:-1;21361:253:0;;;;;:::i;:::-;;:::i;18031:67::-;;;;;;;;;;-1:-1:-1;18087:9:0;;18031:67;;18087:9;;;;14185:36:1;;14173:2;14158:18;18031:67:0;14043:184:1;22202:479:0;;;;;;;;;;-1:-1:-1;22202:479:0;;;;;:::i;:::-;;:::i;19728:218::-;;;;;;;;;;-1:-1:-1;19728:218:0;;;;;:::i;:::-;;:::i;15853:26::-;;;;;;;;;;;;;;;;20529:378;;;;;;;;;;-1:-1:-1;20529:378:0;;;;;:::i;:::-;;:::i;22689:111::-;;;;;;;;;;-1:-1:-1;22689:111:0;;;;;:::i;:::-;;:::i;20915:438::-;;;;;;;;;;-1:-1:-1;20915:438:0;;;;;:::i;:::-;;:::i;15661:41::-;;;;;;;;;;;;;;;;16668:38;;;;;;;;;;;;;;;19462:258;;;;;;;;;;-1:-1:-1;19462:258:0;;;;;:::i;:::-;;:::i;19313:137::-;;;;;;;;;;-1:-1:-1;19313:137:0;;;;;:::i;:::-;;:::i;21750:444::-;;;;;;;;;;-1:-1:-1;21750:444:0;;;;;:::i;:::-;;:::i;22930:123::-;;;;;;;;;;-1:-1:-1;22930:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;23018:27:0;22994:4;23018:27;;;:18;:27;;;;;;;;;22930:123;39215:103;;;;;;;;;;-1:-1:-1;39215:103:0;;;;;:::i;:::-;;:::i;18934:171::-;;;;;;;;;;-1:-1:-1;18934:171:0;;;;;:::i;:::-;;:::i;15934:32::-;;;;;;;;;;;;;;;;18322:198;;;;;;;;;;-1:-1:-1;18322:198:0;;;;;:::i;:::-;;:::i;5489:148::-;;;;;;;;;;;;;:::i;15618:36::-;;;;;;;;;;;;;;;;39109:94;;;;;;;;;;-1:-1:-1;39180:15:0;;;;39109:94;;21622:120;;;;;;;;;;-1:-1:-1;21622:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;21714:20:0;21690:4;21714:20;;;:11;:20;;;;;;;;;21622:120;5275:79;;;;;;;;;;-1:-1:-1;5313:7:0;5340:6;-1:-1:-1;;;;;5340:6:0;5275:79;;18695:223;;;;;;;;;;-1:-1:-1;18695:223:0;;;;;:::i;:::-;;:::i;17954:71::-;;;;;;;;;;;;;:::i;30788:167::-;;;;;;;;;;-1:-1:-1;30788:167:0;;;;;:::i;:::-;;:::i;19954:269::-;;;;;;;;;;-1:-1:-1;19954:269:0;;;;;:::i;:::-;;:::i;6232:305::-;;;;;;;;;;;;;:::i;34742:167::-;;;;;;;;;;-1:-1:-1;34742:167:0;;;;;:::i;:::-;;:::i;5897:89::-;;;;;;;;;;-1:-1:-1;5969:9:0;;5897:89;;30963:284;;;;;;;;;;-1:-1:-1;30963:284:0;;;;;:::i;:::-;;:::i;23283:171::-;;;;;;;;;;-1:-1:-1;23283:171:0;;;;;:::i;:::-;;:::i;16334:35::-;;;;;;;;;;;;;;;;16226;;;;;;;;;;;;;;;;5994:226;;;;;;;;;;-1:-1:-1;5994:226:0;;;;;:::i;:::-;;:::i;18189:127::-;;;;;;;;;;-1:-1:-1;18189:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;18287:18:0;;;18270:7;18287:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;18189:127;22808:110;;;;;;;;;;-1:-1:-1;22808:110:0;;;;;:::i;:::-;;:::i;16132:29::-;;;;;;;;;;;;;;;;5645:244;;;;;;;;;;-1:-1:-1;5645:244:0;;;;;:::i;:::-;;:::i;19121:176::-;;;;;;;;;;-1:-1:-1;19121:176:0;;;;;:::i;:::-;;:::i;23065:115::-;;;;;;;;;;-1:-1:-1;23065:115:0;;;;;:::i;:::-;-1:-1:-1;;;;;23149:23:0;23125:4;23149:23;;;:14;:23;;;;;;;;;23065:115;20235:282;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;20344:4:0::1;-1:-1:-1::0;;;;;20369:23:0;::::1;;::::0;;;:14:::1;:23;::::0;;;;:30;;-1:-1:-1;;20369:30:0::1;20395:4;20369:30;::::0;;20416:94:::1;20235:282:::0;;:::o;17881:67::-;17918:13;17941:5;17934:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17881:67;:::o;18526:161::-;18601:4;18618:39;2338:10;18641:7;18650:6;18618:8;:39::i;:::-;-1:-1:-1;18675:4:0;18526:161;;;;;:::o;30518:262::-;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;30629:3:::1;30609:16;:23;;30601:32;;;::::0;::::1;;30704:16;::::0;30664:21:::1;::::0;-1:-1:-1;;;;;30704:16:0::1;30696:76;30731:40;30767:3;30731:31;30664:21:::0;30745:16;30731:13:::1;:31::i;:::-;:35:::0;::::1;:40::i;:::-;30696:76;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;30590:190;30518:262:::0;:::o;32377:313::-;32475:4;32492:36;32502:6;32510:9;32521:6;32492:9;:36::i;:::-;32539:121;32548:6;2338:10;32570:89;32608:6;32570:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;32570:19:0;;;;;;:11;:19;;;;;;;;2338:10;32570:33;;;;;;;;;;:37;:89::i;:::-;32539:8;:121::i;:::-;-1:-1:-1;32678:4:0;32377:313;;;;;:::o;21361:253::-;21427:7;21466;;21455;:18;;21447:73;;;;-1:-1:-1;;;21447:73:0;;6565:2:1;21447:73:0;;;6547:21:1;6604:2;6584:18;;;6577:30;6643:34;6623:18;;;6616:62;-1:-1:-1;;;6694:18:1;;;6687:40;6744:19;;21447:73:0;6363:406:1;21447:73:0;21531:19;21554:10;:8;:10::i;:::-;21531:33;-1:-1:-1;21582:24:0;:7;21531:33;21582:11;:24::i;:::-;21575:31;21361:253;-1:-1:-1;;;21361:253:0:o;22202:479::-;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22284:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;22276:60;;;::::0;-1:-1:-1;;;22276:60:0;;8142:2:1;22276:60:0::1;::::0;::::1;8124:21:1::0;8181:2;8161:18;;;8154:30;8220:29;8200:18;;;8193:57;8267:18;;22276:60:0::1;7940:351:1::0;22276:60:0::1;22352:9;22347:327;22371:9;:16:::0;22367:20;::::1;22347:327;;;22429:7;-1:-1:-1::0;;;;;22413:23:0::1;:9;22423:1;22413:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;22413:12:0::1;:23;22409:254;;;22472:9;22482:16:::0;;:20:::1;::::0;22501:1:::1;::::0;22482:20:::1;:::i;:::-;22472:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;22457:9:::1;:12:::0;;-1:-1:-1;;;;;22472:31:0;;::::1;::::0;22467:1;;22457:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;22457:46:0::1;-1:-1:-1::0;;;;;22457:46:0;;::::1;;::::0;;22522:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;22561:11:::1;:20:::0;;;;:28;;-1:-1:-1;;22561:28:0::1;::::0;;22608:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;22608:15:0;;;;;-1:-1:-1;;;;;;22608:15:0::1;::::0;;;;;20235:282;;:::o;22409:254::-:1;22389:3:::0;::::1;::::0;::::1;:::i;:::-;;;;22347:327;;19728:218:::0;2338:10;19816:4;19865:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19865:34:0;;;;;;;;;;19816:4;;19833:83;;19856:7;;19865:50;;19904:10;19865:38;:50::i;20529:378::-;2338:10;20581:14;20630:19;;;:11;:19;;;;;;;;20629:20;20621:77;;;;-1:-1:-1;;;20621:77:0;;11937:2:1;20621:77:0;;;11919:21:1;11976:2;11956:18;;;11949:30;12015:34;11995:18;;;11988:62;-1:-1:-1;;;12066:18:1;;;12059:42;12118:19;;20621:77:0;11735:408:1;20621:77:0;20710:15;20735:19;20746:7;20735:10;:19::i;:::-;-1:-1:-1;;;;;;;;20783:15:0;;;;;;:7;:15;;;;;;20709:45;;-1:-1:-1;20783:28:0;;:15;-1:-1:-1;20709:45:0;;-1:-1:-1;;20783:19:0;:28::i;:::-;-1:-1:-1;;;;;20765:15:0;;;;;;:7;:15;;;;;:46;20832:7;;:20;;20844:7;20832:11;:20::i;:::-;20822:7;:30;20876:10;;:23;;20891:7;20876:14;:23::i;:::-;20863:10;:36;-1:-1:-1;;;20529:378:0:o;22689:111::-;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22758:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;22758:34:0::1;22788:4;22758:34;::::0;;22689:111::o;20915:438::-;21005:7;21044;;21033;:18;;21025:62;;;;-1:-1:-1;;;21025:62:0;;8498:2:1;21025:62:0;;;8480:21:1;8537:2;8517:18;;;8510:30;8576:33;8556:18;;;8549:61;8627:18;;21025:62:0;8296:355:1;21025:62:0;21103:17;21098:248;;21138:15;21163:19;21174:7;21163:10;:19::i;:::-;-1:-1:-1;21137:45:0;;-1:-1:-1;21197:14:0;;-1:-1:-1;;;;;;21197:14:0;21098:248;21246:23;21278:19;21289:7;21278:10;:19::i;:::-;-1:-1:-1;21244:53:0;;-1:-1:-1;21312:22:0;;-1:-1:-1;;;;;;21312:22:0;19462:258;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;19568:1:::1;19557:7;:12;;:31;;;;;19584:4;19573:7;:15;;19557:31;19549:40;;;::::0;::::1;;19629:14;19646:33;19671:7;19646:20;19658:7;19646;;:11;;:20;;;;:::i;:33::-;19690:13;:22:::0;-1:-1:-1;;;19462:258:0:o;19313:137::-;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;19400:13:::1;;19390:6;:23;;19382:32;;;::::0;::::1;;19425:8;:17:::0;19313:137::o;21750:444::-;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;21843:42:::1;-1:-1:-1::0;;;;;21832:53:0;::::1;;;21824:100;;;::::0;-1:-1:-1;;;21824:100:0;;11534:2:1;21824:100:0::1;::::0;::::1;11516:21:1::0;11573:2;11553:18;;;11546:30;11612:34;11592:18;;;11585:62;-1:-1:-1;;;11663:18:1;;;11656:32;11705:19;;21824:100:0::1;11332:398:1::0;21824:100:0::1;-1:-1:-1::0;;;;;21944:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;21943:21;21935:61;;;::::0;-1:-1:-1;;;21935:61:0;;8142:2:1;21935:61:0::1;::::0;::::1;8124:21:1::0;8181:2;8161:18;;;8154:30;8220:29;8200:18;;;8193:57;8267:18;;21935:61:0::1;7940:351:1::0;21935:61:0::1;-1:-1:-1::0;;;;;22010:16:0;::::1;22029:1;22010:16:::0;;;:7:::1;:16;::::0;;;;;:20;22007:108:::1;;-1:-1:-1::0;;;;;22086:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;22066:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;22047:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;22007:108:::1;-1:-1:-1::0;;;;;22125:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;22125:27:0::1;22148:4;22125:27:::0;;::::1;::::0;;;22163:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;22163:23:0::1;::::0;;::::1;::::0;;21750:444::o;39215:103::-;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;39287:15:::1;:23:::0;;-1:-1:-1;;39287:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;39215:103::o;18934:171::-;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;19030:13:::1;:28:::0;;;;19069:13:::1;:28:::0;18934:171::o;18322:198::-;-1:-1:-1;;;;;18412:20:0;;18388:7;18412:20;;;:11;:20;;;;;;;;18408:49;;;-1:-1:-1;;;;;;18441:16:0;;;;;:7;:16;;;;;;;18322:198::o;18408:49::-;-1:-1:-1;;;;;18495:16:0;;;;;;:7;:16;;;;;;18475:37;;:19;:37::i;5489:148::-;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;5596:1:::1;5580:6:::0;;5559:40:::1;::::0;-1:-1:-1;;;;;5580:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;5559:40:0;5596:1;;5559:40:::1;5627:1;5610:19:::0;;-1:-1:-1;;;;;;5610:19:0::1;::::0;;5489:148::o;18695:223::-;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;18803:18:::1;18824:33;18849:7;18824:20;18836:7;18824;;:11;;:20;;;;:::i;:33::-;18868:29;:42:::0;-1:-1:-1;;;18695:223:0:o;17954:71::-;17993:13;18016:7;18009:14;;;;;:::i;30788:167::-;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;30855:16:::1;30874:24;30892:4;30874:9;:24::i;:::-;30855:43;;30909:38;30927:4;30934:2;30938:8;30909:9;:38::i;19954:269::-:0;20047:4;20064:129;2338:10;20087:7;20096:96;20135:15;20096:96;;;;;;;;;;;;;;;;;2338:10;20096:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;20096:34:0;;;;;;;;;;;;:38;:96::i;6232:305::-;6284:14;;-1:-1:-1;;;;;6284:14:0;6302:10;6284:28;6276:76;;;;-1:-1:-1;;;6276:76:0;;12350:2:1;6276:76:0;;;12332:21:1;12389:2;12369:18;;;12362:30;12428:34;12408:18;;;12401:62;-1:-1:-1;;;12479:18:1;;;12472:33;12522:19;;6276:76:0;12148:399:1;6276:76:0;6389:9;;6371:15;:27;6363:72;;;;-1:-1:-1;;;6363:72:0;;11174:2:1;6363:72:0;;;11156:21:1;11213:2;11193:18;;;11186:30;11252:33;11232:18;;;11225:61;11303:18;;6363:72:0;10972:355:1;6363:72:0;6480:14;;;6472:6;;6451:44;;-1:-1:-1;;;;;6480:14:0;;;;6472:6;;;;-1:-1:-1;;;;;;;;;;;6451:44:0;;6515:14;;;6506:23;;-1:-1:-1;;;;;;6506:23:0;-1:-1:-1;;;;;6515:14:0;;;6506:23;;;;;;6232:305::o;34742:167::-;34820:4;34837:42;2338:10;34861:9;34872:6;34837:9;:42::i;30963:284::-;31046:10;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;31076:20:0;::::1;31068:29;;;::::0;::::1;;31135:39;::::0;-1:-1:-1;;;31135:39:0;;31168:4:::1;31135:39;::::0;::::1;3977:51:1::0;31108:24:0::1;::::0;-1:-1:-1;;;;;31135:24:0;::::1;::::0;::::1;::::0;3950:18:1;;31135:39:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31193:46;::::0;-1:-1:-1;;;31193:46:0;;-1:-1:-1;;;;;4231:32:1;;;31193:46:0::1;::::0;::::1;4213:51:1::0;4280:18;;;4273:34;;;31108:66:0;;-1:-1:-1;31193:23:0;;::::1;::::0;::::1;::::0;4186:18:1;;31193:46:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31185:54:::0;30963:284;-1:-1:-1;;;;30963:284:0:o;23283:171::-;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;23360:21:::1;:32:::0;;;::::1;;;;-1:-1:-1::0;;23360:32:0;;::::1;;::::0;;23408:38:::1;::::0;::::1;::::0;::::1;::::0;23384:8;5095:14:1;5088:22;5070:41;;5058:2;5043:18;;4930:187;23408:38:0::1;;;;;;;;23283:171:::0;:::o;5994:226::-;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;6075:6:::1;::::0;;;6058:23;;-1:-1:-1;;;;;;6058:23:0;;::::1;-1:-1:-1::0;;;;;6075:6:0;::::1;6058:23;::::0;;;6092:19:::1;::::0;;6134:22:::1;6152:4:::0;6134:15:::1;:22;:::i;:::-;6122:9;:34:::0;6209:1:::1;6193:6:::0;;6172:40:::1;::::0;-1:-1:-1;;;;;6193:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;6172:40:0;6209:1;;6172:40:::1;5994:226:::0;:::o;22808:110::-;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22875:27:0::1;22905:5;22875:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;22875:35:0::1;::::0;;22808:110::o;5645:244::-;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5734:22:0;::::1;5726:73;;;::::0;-1:-1:-1;;;5726:73:0;;6976:2:1;5726:73:0::1;::::0;::::1;6958:21:1::0;7015:2;6995:18;;;6988:30;7054:34;7034:18;;;7027:62;-1:-1:-1;;;7105:18:1;;;7098:36;7151:19;;5726:73:0::1;6774:402:1::0;5726:73:0::1;5836:6;::::0;;5815:38:::1;::::0;-1:-1:-1;;;;;5815:38:0;;::::1;::::0;5836:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;5815:38:0;::::1;5864:6;:17:::0;;-1:-1:-1;;;;;;5864:17:0::1;-1:-1:-1::0;;;;;5864:17:0;;;::::1;::::0;;;::::1;::::0;;5645:244::o;19121:176::-;5402:6;;-1:-1:-1;;;;;5402:6:0;2338:10;5402:22;5394:67;;;;-1:-1:-1;;;5394:67:0;;;;;;;:::i;:::-;19216:16:::1;:31:::0;;;;19258:16:::1;:31:::0;19121:176::o;1317:250::-;1375:7;1399:6;1395:47;;-1:-1:-1;1429:1:0;1422:8;;1395:47;1454:9;1466:5;1470:1;1466;:5;:::i;:::-;1454:17;-1:-1:-1;1499:1:0;1490:5;1494:1;1454:17;1490:5;:::i;:::-;:10;1482:56;;;;-1:-1:-1;;;1482:56:0;;8858:2:1;1482:56:0;;;8840:21:1;8897:2;8877:18;;;8870:30;8936:34;8916:18;;;8909:62;-1:-1:-1;;;8987:18:1;;;8980:31;9028:19;;1482:56:0;8656:397:1;1575:132:0;1633:7;1660:39;1664:1;1667;1660:39;;;;;;;;;;;;;;;;;:3;:39::i;29104:337::-;-1:-1:-1;;;;;29197:19:0;;29189:68;;;;-1:-1:-1;;;29189:68:0;;10769:2:1;29189:68:0;;;10751:21:1;10808:2;10788:18;;;10781:30;10847:34;10827:18;;;10820:62;-1:-1:-1;;;10898:18:1;;;10891:34;10942:19;;29189:68:0;10567:400:1;29189:68:0;-1:-1:-1;;;;;29276:21:0;;29268:68;;;;-1:-1:-1;;;29268:68:0;;7383:2:1;29268:68:0;;;7365:21:1;7422:2;7402:18;;;7395:30;7461:34;7441:18;;;7434:62;-1:-1:-1;;;7512:18:1;;;7505:32;7554:19;;29268:68:0;7181:398:1;29268:68:0;-1:-1:-1;;;;;29349:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;29401:32;;12698:25:1;;;29401:32:0;;12671:18:1;29401:32:0;;;;;;;29104:337;;;:::o;32698:2036::-;-1:-1:-1;;;;;32820:18:0;;32812:68;;;;-1:-1:-1;;;32812:68:0;;10363:2:1;32812:68:0;;;10345:21:1;10402:2;10382:18;;;10375:30;10441:34;10421:18;;;10414:62;-1:-1:-1;;;10492:18:1;;;10485:35;10537:19;;32812:68:0;10161:401:1;32812:68:0;-1:-1:-1;;;;;32899:16:0;;32891:64;;;;-1:-1:-1;;;32891:64:0;;6161:2:1;32891:64:0;;;6143:21:1;6200:2;6180:18;;;6173:30;6239:34;6219:18;;;6212:62;-1:-1:-1;;;6290:18:1;;;6283:33;6333:19;;32891:64:0;5959:399:1;32891:64:0;32983:1;32974:6;:10;32966:64;;;;-1:-1:-1;;;32966:64:0;;9621:2:1;32966:64:0;;;9603:21:1;9660:2;9640:18;;;9633:30;9699:34;9679:18;;;9672:62;-1:-1:-1;;;9750:18:1;;;9743:39;9799:19;;32966:64:0;9419:405:1;32966:64:0;-1:-1:-1;;;;;33049:20:0;;;;;;:14;:20;;;;;;;;:29;33041:46;;;;-1:-1:-1;;;33041:46:0;;;;;;10031:2:1;10013:21;;;10070:1;10050:18;;;10043:29;-1:-1:-1;;;10103:2:1;10088:18;;10081:34;10147:2;10132:18;;9829:327;33041:46:0;-1:-1:-1;;;;;33106:18:0;;;;;;:14;:18;;;;;;;;:27;33098:44;;;;-1:-1:-1;;;33098:44:0;;;;;;10031:2:1;10013:21;;;10070:1;10050:18;;;10043:29;-1:-1:-1;;;10103:2:1;10088:18;;10081:34;10147:2;10132:18;;9829:327;33098:44:0;33165:13;-1:-1:-1;;;;;33157:21:0;:4;-1:-1:-1;;;;;33157:21:0;;:55;;;;;33196:15;-1:-1:-1;;;;;33182:30:0;:2;-1:-1:-1;;;;;33182:30:0;;;33157:55;:82;;;;-1:-1:-1;;;;;;33217:22:0;;;;;;:18;:22;;;;;;;;33216:23;33157:82;:101;;;;-1:-1:-1;33243:15:0;;;;33157:101;33153:525;;;33297:13;;33287:6;:23;;33279:32;;;;;;-1:-1:-1;;;;;33338:15:0;;;;;;:11;:15;;;;;;33356;-1:-1:-1;33330:42:0;;;;;;33429:8;;33409:29;;:15;;:19;:29::i;:::-;-1:-1:-1;;;;;33391:15:0;;;;;;:11;:15;;;;;:47;33153:525;;;33479:13;-1:-1:-1;;;;;33471:21:0;:4;-1:-1:-1;;;;;33471:21:0;;;:40;;;;-1:-1:-1;33496:15:0;;;;33471:40;:67;;;;-1:-1:-1;;;;;;33516:22:0;;;;;;:18;:22;;;;;;;;33515:23;33471:67;33468:210;;;-1:-1:-1;;;;;33563:18:0;;;;;;:12;:18;;;;;;33585:15;-1:-1:-1;33563:37:0;33555:46;;;;;;33657:8;;33637:29;;:15;;:19;:29::i;:::-;-1:-1:-1;;;;;33616:18:0;;;;;;:12;:18;;;;;:50;33468:210;33702:28;33733:24;33751:4;33733:9;:24::i;:::-;33702:55;;33797:29;;33773:20;:53;33770:146;;-1:-1:-1;33875:29:0;;33770:146;33979:29;;33955:53;;;;;;;34037;;-1:-1:-1;34074:16:0;;;;34073:17;34037:53;:91;;;;;34115:13;-1:-1:-1;;;;;34107:21:0;:4;-1:-1:-1;;;;;34107:21:0;;;34037:91;:129;;;;-1:-1:-1;34145:21:0;;;;;;;34037:129;34019:301;;;34228:29;;34205:52;;34272:36;34287:20;34272:14;:36::i;:::-;-1:-1:-1;;;;;34512:24:0;;34393:12;34512:24;;;:18;:24;;;;;;34408:4;;34512:24;;;:50;;-1:-1:-1;;;;;;34540:22:0;;;;;;:18;:22;;;;;;;;34512:50;34509:96;;;-1:-1:-1;34588:5:0;34509:96;34688:38;34703:4;34708:2;34711:6;34718:7;34688:14;:38::i;:::-;32801:1933;;;32698:2036;;;:::o;1117:192::-;1203:7;1239:12;1231:6;;;;1223:29;;;;-1:-1:-1;;;1223:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1263:9:0;1275:5;1279:1;1275;:5;:::i;:::-;1263:17;1117:192;-1:-1:-1;;;;;1117:192:0:o;26663:163::-;26704:7;26725:15;26742;26761:19;:17;:19::i;:::-;26724:56;;-1:-1:-1;26724:56:0;-1:-1:-1;26798:20:0;26724:56;;26798:11;:20::i;:::-;26791:27;;;;26663:163;:::o;784:181::-;842:7;;874:5;878:1;874;:5;:::i;:::-;862:17;;903:1;898;:6;;890:46;;;;-1:-1:-1;;;890:46:0;;7786:2:1;890:46:0;;;7768:21:1;7825:2;7805:18;;;7798:30;7864:29;7844:18;;;7837:57;7911:18;;890:46:0;7584:351:1;23711:472:0;23770:7;23779;23788;23797;23806;23815;23824;23845:23;23870:12;23884:18;23904;23926:20;23938:7;23926:11;:20::i;:::-;23844:102;;;;;;;;23958:15;23975:23;24000:12;24016:62;24028:7;24037:4;24043:10;24055;24067;:8;:10::i;:::-;24016:11;:62::i;:::-;23957:121;;-1:-1:-1;23957:121:0;-1:-1:-1;23957:121:0;-1:-1:-1;24129:15:0;;-1:-1:-1;24146:4:0;;-1:-1:-1;24152:10:0;;-1:-1:-1;24164:10:0;-1:-1:-1;;;;23711:472:0;;;;;;;;;:::o;973:136::-;1031:7;1058:43;1062:1;1065;1058:43;;;;;;;;;;;;;;;;;:3;:43::i;1715:191::-;1801:7;1836:12;1829:5;1821:28;;;;-1:-1:-1;;;1821:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1860:9:0;1872:5;1876:1;1872;:5;:::i;29449:1061::-;17146:16;:23;;-1:-1:-1;;17146:23:0;17165:4;17146:23;;;:16;29566:37:::1;29599:3;29566:28;:20:::0;29591:2:::1;29566:24;:28::i;:37::-;29534:69:::0;-1:-1:-1;29614:29:0::1;29646:47;:20:::0;29534:69;29646:24:::1;:47::i;:::-;29614:79:::0;-1:-1:-1;29704:34:0::1;29741:28;29614:79:::0;29767:1:::1;29741:25;:28::i;:::-;29704:65:::0;-1:-1:-1;29780:29:0::1;29812:53;:21:::0;29704:65;29812:25:::1;:53::i;:::-;29780:85:::0;-1:-1:-1;29901:21:0::1;29876:22;29961:53;:26:::0;29992:21;29961:30:::1;:53::i;:::-;29933:81;;30025:35;30042:17;30025:16;:35::i;:::-;30071:18;30092:41;:21;30118:14:::0;30092:25:::1;:41::i;:::-;30071:62:::0;-1:-1:-1;30144:20:0::1;30167:27;30190:3;30167:18;30071:62:::0;30182:2:::1;30167:14;:18::i;:27::-;30144:50;;30205:49;30218:21;30241:12;30205;:49::i;:::-;30270:79;::::0;;13921:25:1;;;13977:2;13962:18;;13955:34;;;14005:18;;;13998:34;;;30270:79:0::1;::::0;13909:2:1;13894:18;30270:79:0::1;;;;;;;30360:20;30383:28;:10:::0;30398:12;30383:14:::1;:28::i;:::-;30422:16;::::0;:39:::1;::::0;30360:51;;-1:-1:-1;;;;;;30422:16:0::1;::::0;:39;::::1;;;::::0;30360:51;;30422:16:::1;:39:::0;:16;:39;30360:51;30422:16;:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;30477:25:0::1;::::0;12698::1;;;30477::0::1;::::0;12686:2:1;12671:18;30477:25:0::1;;;;;;;-1:-1:-1::0;;17192:16:0;:24;;-1:-1:-1;;17192:24:0;;;-1:-1:-1;;;;;;;;29449:1061:0:o;34990:968::-;35101:7;35097:40;;35123:14;:12;:14::i;:::-;35164:13;-1:-1:-1;;;;;35154:23:0;:6;-1:-1:-1;;;;;35154:23:0;;:64;;;;;35202:15;-1:-1:-1;;;;;35181:37:0;:9;-1:-1:-1;;;;;35181:37:0;;;35154:64;35150:747;;;35235:47;35256:6;35264:9;35275:6;35235:20;:47::i;:::-;35150:747;;;-1:-1:-1;;;;;35304:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;35328:22:0;;;;;;:11;:22;;;;;;;;35327:23;35304:46;35300:597;;;35367:48;35389:6;35397:9;35408:6;35367:21;:48::i;35300:597::-;-1:-1:-1;;;;;35438:19:0;;;;;;:11;:19;;;;;;;;35437:20;:46;;;;-1:-1:-1;;;;;;35461:22:0;;;;;;:11;:22;;;;;;;;35437:46;35433:464;;;35500:46;35520:6;35528:9;35539:6;35500:19;:46::i;35433:464::-;-1:-1:-1;;;;;35569:19:0;;;;;;:11;:19;;;;;;;;35568:20;:47;;;;-1:-1:-1;;;;;;35593:22:0;;;;;;:11;:22;;;;;;;;35592:23;35568:47;35564:333;;;35632:44;35650:6;35658:9;35669:6;35632:17;:44::i;35564:333::-;-1:-1:-1;;;;;35698:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;35721:22:0;;;;;;:11;:22;;;;;;;;35698:45;35694:203;;;35760:48;35782:6;35790:9;35801:6;35760:21;:48::i;35694:203::-;35841:44;35859:6;35867:9;35878:6;35841:17;:44::i;:::-;35913:7;35909:41;;35935:15;28827;;28817:7;:25;28869:21;;28853:13;:37;28917:21;;28901:13;:37;28968:24;;28949:16;:43;29022:24;;29003:16;:43;29070:18;;29057:10;:31;28773:323;35935:15;34990:968;;;;:::o;26834:555::-;26931:7;;26967;;26884;;;;;26985:289;27009:9;:16;27005:20;;26985:289;;;27075:7;27051;:21;27059:9;27069:1;27059:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;27059:12:0;27051:21;;;;;;;;;;;;;:31;;:66;;;27110:7;27086;:21;27094:9;27104:1;27094:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;27094:12:0;27086:21;;;;;;;;;;;;;:31;27051:66;27047:97;;;27127:7;;27136;;27119:25;;;;;;;26834:555;;:::o;27047:97::-;27169:34;27181:7;:21;27189:9;27199:1;27189:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;27189:12:0;27181:21;;;;;;;;;;;;;27169:7;;:11;:34::i;:::-;27159:44;;27228:34;27240:7;:21;27248:9;27258:1;27248:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;27248:12:0;27240:21;;;;;;;;;;;;;27228:7;;:11;:34::i;:::-;27218:44;-1:-1:-1;27027:3:0;;;;:::i;:::-;;;;26985:289;;;-1:-1:-1;27310:7:0;;27298;;:20;;:11;:20::i;:::-;27288:7;:30;27284:61;;;27328:7;;27337;;27320:25;;;;;;26834:555;;:::o;27284:61::-;27364:7;;27373;;-1:-1:-1;26834:555:0;-1:-1:-1;26834:555:0:o;24191:444::-;24251:7;24260;24269;24278;24298:12;24313:29;24338:3;24313:20;24325:7;;24313;:11;;:20;;;;:::i;:29::-;24298:44;;24353:18;24374:35;24405:3;24374:26;24386:13;;24374:7;:11;;:26;;;;:::i;:35::-;24353:56;;24420:18;24441:35;24472:3;24441:26;24453:13;;24441:7;:11;;:26;;;;:::i;:35::-;24420:56;-1:-1:-1;24487:23:0;24513:49;24420:56;24513:33;24535:10;24513:33;:7;24525:4;24513:11;:17::i;:::-;:21;;:33::i;:49::-;24487:75;24598:4;;-1:-1:-1;24604:10:0;;-1:-1:-1;24604:10:0;-1:-1:-1;24191:444:0;;-1:-1:-1;;;24191:444:0:o;24643:524::-;24778:7;;;;24834:24;:7;24846:11;24834;:24::i;:::-;24816:42;-1:-1:-1;24869:12:0;24884:21;:4;24893:11;24884:8;:21::i;:::-;24869:36;-1:-1:-1;24916:18:0;24937:27;:10;24952:11;24937:14;:27::i;:::-;24916:48;-1:-1:-1;24975:18:0;24996:27;:10;25011:11;24996:14;:27::i;:::-;24975:48;-1:-1:-1;25034:23:0;25060:49;25098:10;25060:33;24975:48;25060:33;:7;25072:4;25060:11;:17::i;:49::-;25128:7;;;;-1:-1:-1;25154:4:0;;-1:-1:-1;24643:524:0;;-1:-1:-1;;;;;;;;;24643:524:0:o;31255:589::-;31405:16;;;31419:1;31405:16;;;;;;;;31381:21;;31405:16;;;;;;;;;;-1:-1:-1;31405:16:0;31381:40;;31450:4;31432;31437:1;31432:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;31432:23:0;;;-1:-1:-1;;;;;31432:23:0;;;;;31476:15;-1:-1:-1;;;;;31476:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31466:4;31471:1;31466:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;31466:32:0;;;-1:-1:-1;;;;;31466:32:0;;;;;31511:62;31528:4;31543:15;31561:11;31511:8;:62::i;:::-;31612:224;;-1:-1:-1;;;31612:224:0;;-1:-1:-1;;;;;31612:15:0;:66;;;;:224;;31693:11;;31719:1;;31763:4;;31790;;31810:15;;31612:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31852:513;32000:62;32017:4;32032:15;32050:11;32000:8;:62::i;:::-;32105:15;-1:-1:-1;;;;;32105:31:0;;32144:9;32177:4;32197:11;32223:1;32266;32309:7;5313;5340:6;-1:-1:-1;;;;;5340:6:0;;5275:79;32309:7;32105:252;;;;;;-1:-1:-1;;;;;;32105:252:0;;;-1:-1:-1;;;;;4677:15:1;;;32105:252:0;;;4659:34:1;4709:18;;;4702:34;;;;4752:18;;;4745:34;;;;4795:18;;;4788:34;4859:15;;;4838:19;;;4831:44;32331:15:0;4891:19:1;;;4884:35;4593:19;;32105:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;31852:513;;:::o;28131:634::-;28177:7;;:12;:34;;;;-1:-1:-1;28193:13:0;;:18;28177:34;:56;;;;-1:-1:-1;28215:13:0;;:18;28177:56;:81;;;;-1:-1:-1;28237:16:0;;:21;28177:81;:100;;;;-1:-1:-1;28262:10:0;;:15;28177:100;:125;;;;-1:-1:-1;28281:16:0;;:21;28177:125;28174:137;;;28131:634::o;28174:137::-;28339:7;;;28321:15;:25;28381:13;;;28357:21;:37;28429:13;;;28405:21;:37;28474:10;;;28453:18;:31;28522:16;;;28495:24;:43;28576:16;;;28549:24;:43;-1:-1:-1;28603:14:0;;;;28628:20;;;;28659;;;28690:11;;;;28712:17;;;;28740;28131:634::o;35966:566::-;36068:15;36085:23;36110:12;36124:23;36149:12;36163:18;36183;36205:22;36219:7;36205:13;:22::i;:::-;36067:160;;;;;;;;;;;;;;36256:28;36276:7;36256;:15;36264:6;-1:-1:-1;;;;;36256:15:0;-1:-1:-1;;;;;36256:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;36238:15:0;;;;;;;:7;:15;;;;;;:46;;;;36316:18;;;;;;;:39;;36339:15;36316:22;:39::i;:::-;-1:-1:-1;;;;;36295:18:0;;;;;;:7;:18;;;;;:60;36366:26;36381:10;36366:14;:26::i;:::-;36403;36418:10;36403:14;:26::i;:::-;36440:23;36452:4;36458;36440:11;:23::i;:::-;36496:9;-1:-1:-1;;;;;36479:44:0;36488:6;-1:-1:-1;;;;;36479:44:0;;36507:15;36479:44;;;;12698:25:1;;12686:2;12671:18;;12552:177;36479:44:0;;;;;;;;36056:476;;;;;;;35966:566;;;:::o;37763:627::-;37866:15;37883:23;37908:12;37922:23;37947:12;37961:18;37981;38003:19;38014:7;38003:10;:19::i;:::-;37865:157;;;;;;;;;;;;;;38051:28;38071:7;38051;:15;38059:6;-1:-1:-1;;;;;38051:15:0;-1:-1:-1;;;;;38051:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;38033:15:0;;;;;;:7;:15;;;;;;;;:46;;;;38108:7;:15;;;;:28;;38128:7;38108:19;:28::i;:::-;-1:-1:-1;;;;;38090:15:0;;;;;;;:7;:15;;;;;;:46;;;;38168:18;;;;;;;:39;;38191:15;38168:22;:39::i;:::-;-1:-1:-1;;;;;38147:18:0;;;;;;:7;:18;;;;;:60;38218:26;38233:10;38218:14;:26::i;:::-;38262;38277:10;38262:14;:26::i;37115:640::-;37216:15;37233:23;37258:12;37272:23;37297:12;37311:18;37331;37353:19;37364:7;37353:10;:19::i;:::-;37215:157;;;;;;;;;;;;;;37401:28;37421:7;37401;:15;37409:6;-1:-1:-1;;;;;37401:15:0;-1:-1:-1;;;;;37401:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;37383:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;37461:18;;;;;:7;:18;;;;;:39;;37484:15;37461:22;:39::i;:::-;-1:-1:-1;;;;;37440:18:0;;;;;;:7;:18;;;;;;;;:60;;;;37532:7;:18;;;;:39;;37555:15;37532:22;:39::i;36540:567::-;36639:15;36656:23;36681:12;36695:23;36720:12;36734:18;36754;36776:19;36787:7;36776:10;:19::i;:::-;36638:157;;;;;;;;;;;;;;36824:28;36844:7;36824;:15;36832:6;-1:-1:-1;;;;;36824:15:0;-1:-1:-1;;;;;36824:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;38402:699::-;38505:15;38522:23;38547:12;38561:23;38586:12;38600:18;38620;38642:19;38653:7;38642:10;:19::i;:::-;38504:157;;;;;;;;;;;;;;38690:28;38710:7;38690;:15;38698:6;-1:-1:-1;;;;;38690:15:0;-1:-1:-1;;;;;38690:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;38672:15:0;;;;;;:7;:15;;;;;;;;:46;;;;38747:7;:15;;;;:28;;38767:7;38747:19;:28::i;25175:481::-;25237:7;25246;25255;25264;25273;25282;25291;25312:23;25337:12;25351:18;25371;25393:23;25408:7;25393:14;:23::i;:::-;25311:105;;;;;;;;25428:15;25445:23;25470:12;25486:65;25501:7;25510:4;25516:10;25528;25540;:8;:10::i;:::-;25486:14;:65::i;27397:355::-;27460:19;27483:10;:8;:10::i;:::-;27460:33;-1:-1:-1;27504:18:0;27525:27;:10;27460:33;27525:14;:27::i;:::-;27604:4;27588:22;;;;:7;:22;;;;;;27504:48;;-1:-1:-1;27588:38:0;;27504:48;27588:26;:38::i;:::-;27579:4;27563:22;;;;:7;:22;;;;;;;;:63;;;;27640:11;:26;;;;;;27637:107;;;27722:4;27706:22;;;;:7;:22;;;;;;:38;;27733:10;27706:26;:38::i;:::-;27697:4;27681:22;;;;:7;:22;;;;;:63;27449:303;;27397:355;:::o;23556:147::-;23634:7;;:17;;23646:4;23634:11;:17::i;:::-;23624:7;:27;23675:10;;:20;;23690:4;23675:14;:20::i;:::-;23662:10;:33;-1:-1:-1;;23556:147:0:o;25664:456::-;25727:7;25736;25745;25754;25774:12;25789:32;25817:3;25789:23;25801:10;;25789:7;:11;;:23;;;;:::i;:32::-;25774:47;;25832:18;25853:38;25887:3;25853:29;25865:16;;25853:7;:11;;:29;;;;:::i;:38::-;25832:59;;25902:18;25923:38;25957:3;25923:29;25935:16;;25923:7;:11;;:29;;;;:::i;:38::-;25902:59;-1:-1:-1;25972:23:0;25998:49;25902:59;25998:33;26020:10;25998:33;:7;26010:4;25998:11;:17::i;:49::-;25972:75;-1:-1:-1;26083:4:0;;-1:-1:-1;26089:10:0;-1:-1:-1;26101:10:0;-1:-1:-1;;25664:456:0;;;;;:::o;26128:527::-;26266:7;;;;26322:24;:7;26334:11;26322;:24::i;:::-;26304:42;-1:-1:-1;26357:12:0;26372:21;:4;26381:11;26372:8;:21::i;:::-;26357:36;-1:-1:-1;26404:18:0;26425:27;:10;26440:11;26425:14;:27::i;:::-;26404:48;-1:-1:-1;26463:18:0;26484:27;:10;26499:11;26484:14;:27::i;:::-;26463:48;-1:-1:-1;26522:23:0;26548:49;26463:48;26548:33;26570:10;26548:33;:7;26560:4;26548:11;:17::i;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:52;;;405:1;402;395:12;357:52;437:9;431:16;456:31;481:5;456:31;:::i;522:388::-;590:6;598;651:2;639:9;630:7;626:23;622:32;619:52;;;667:1;664;657:12;619:52;706:9;693:23;725:31;750:5;725:31;:::i;:::-;775:5;-1:-1:-1;832:2:1;817:18;;804:32;845:33;804:32;845:33;:::i;:::-;897:7;887:17;;;522:388;;;;;:::o;915:456::-;992:6;1000;1008;1061:2;1049:9;1040:7;1036:23;1032:32;1029:52;;;1077:1;1074;1067:12;1029:52;1116:9;1103:23;1135:31;1160:5;1135:31;:::i;:::-;1185:5;-1:-1:-1;1242:2:1;1227:18;;1214:32;1255:33;1214:32;1255:33;:::i;:::-;915:456;;1307:7;;-1:-1:-1;;;1361:2:1;1346:18;;;;1333:32;;915:456::o;1376:382::-;1441:6;1449;1502:2;1490:9;1481:7;1477:23;1473:32;1470:52;;;1518:1;1515;1508:12;1470:52;1557:9;1544:23;1576:31;1601:5;1576:31;:::i;:::-;1626:5;-1:-1:-1;1683:2:1;1668:18;;1655:32;1696:30;1655:32;1696:30;:::i;1763:315::-;1831:6;1839;1892:2;1880:9;1871:7;1867:23;1863:32;1860:52;;;1908:1;1905;1898:12;1860:52;1947:9;1934:23;1966:31;1991:5;1966:31;:::i;:::-;2016:5;2068:2;2053:18;;;;2040:32;;-1:-1:-1;;;1763:315:1:o;2083:241::-;2139:6;2192:2;2180:9;2171:7;2167:23;2163:32;2160:52;;;2208:1;2205;2198:12;2160:52;2247:9;2234:23;2266:28;2288:5;2266:28;:::i;2329:245::-;2396:6;2449:2;2437:9;2428:7;2424:23;2420:32;2417:52;;;2465:1;2462;2455:12;2417:52;2497:9;2491:16;2516:28;2538:5;2516:28;:::i;2579:180::-;2638:6;2691:2;2679:9;2670:7;2666:23;2662:32;2659:52;;;2707:1;2704;2697:12;2659:52;-1:-1:-1;2730:23:1;;2579:180;-1:-1:-1;2579:180:1:o;2764:184::-;2834:6;2887:2;2875:9;2866:7;2862:23;2858:32;2855:52;;;2903:1;2900;2893:12;2855:52;-1:-1:-1;2926:16:1;;2764:184;-1:-1:-1;2764:184:1:o;2953:309::-;3018:6;3026;3079:2;3067:9;3058:7;3054:23;3050:32;3047:52;;;3095:1;3092;3085:12;3047:52;3131:9;3118:23;3108:33;;3191:2;3180:9;3176:18;3163:32;3204:28;3226:5;3204:28;:::i;3267:248::-;3335:6;3343;3396:2;3384:9;3375:7;3371:23;3367:32;3364:52;;;3412:1;3409;3402:12;3364:52;-1:-1:-1;;3435:23:1;;;3505:2;3490:18;;;3477:32;;-1:-1:-1;3267:248:1:o;3520:306::-;3608:6;3616;3624;3677:2;3665:9;3656:7;3652:23;3648:32;3645:52;;;3693:1;3690;3683:12;3645:52;3722:9;3716:16;3706:26;;3772:2;3761:9;3757:18;3751:25;3741:35;;3816:2;3805:9;3801:18;3795:25;3785:35;;3520:306;;;;;:::o;5357:597::-;5469:4;5498:2;5527;5516:9;5509:21;5559:6;5553:13;5602:6;5597:2;5586:9;5582:18;5575:34;5627:1;5637:140;5651:6;5648:1;5645:13;5637:140;;;5746:14;;;5742:23;;5736:30;5712:17;;;5731:2;5708:26;5701:66;5666:10;;5637:140;;;5795:6;5792:1;5789:13;5786:91;;;5865:1;5860:2;5851:6;5840:9;5836:22;5832:31;5825:42;5786:91;-1:-1:-1;5938:2:1;5917:15;-1:-1:-1;;5913:29:1;5898:45;;;;5945:2;5894:54;;5357:597;-1:-1:-1;;;5357:597:1:o;9058:356::-;9260:2;9242:21;;;9279:18;;;9272:30;9338:34;9333:2;9318:18;;9311:62;9405:2;9390:18;;9058:356::o;12734:980::-;12996:4;13044:3;13033:9;13029:19;13075:6;13064:9;13057:25;13101:2;13139:6;13134:2;13123:9;13119:18;13112:34;13182:3;13177:2;13166:9;13162:18;13155:31;13206:6;13241;13235:13;13272:6;13264;13257:22;13310:3;13299:9;13295:19;13288:26;;13349:2;13341:6;13337:15;13323:29;;13370:1;13380:195;13394:6;13391:1;13388:13;13380:195;;;13459:13;;-1:-1:-1;;;;;13455:39:1;13443:52;;13550:15;;;;13515:12;;;;13491:1;13409:9;13380:195;;;-1:-1:-1;;;;;;;13631:32:1;;;;13626:2;13611:18;;13604:60;-1:-1:-1;;;13695:3:1;13680:19;13673:35;13592:3;12734:980;-1:-1:-1;;;12734:980:1:o;14232:128::-;14272:3;14303:1;14299:6;14296:1;14293:13;14290:39;;;14309:18;;:::i;:::-;-1:-1:-1;14345:9:1;;14232:128::o;14365:217::-;14405:1;14431;14421:132;;14475:10;14470:3;14466:20;14463:1;14456:31;14510:4;14507:1;14500:15;14538:4;14535:1;14528:15;14421:132;-1:-1:-1;14567:9:1;;14365:217::o;14587:168::-;14627:7;14693:1;14689;14685:6;14681:14;14678:1;14675:21;14670:1;14663:9;14656:17;14652:45;14649:71;;;14700:18;;:::i;:::-;-1:-1:-1;14740:9:1;;14587:168::o;14760:125::-;14800:4;14828:1;14825;14822:8;14819:34;;;14833:18;;:::i;:::-;-1:-1:-1;14870:9:1;;14760:125::o;14890:380::-;14969:1;14965:12;;;;15012;;;15033:61;;15087:4;15079:6;15075:17;15065:27;;15033:61;15140:2;15132:6;15129:14;15109:18;15106:38;15103:161;;;15186:10;15181:3;15177:20;15174:1;15167:31;15221:4;15218:1;15211:15;15249:4;15246:1;15239:15;15103:161;;14890:380;;;:::o;15275:135::-;15314:3;-1:-1:-1;;15335:17:1;;15332:43;;;15355:18;;:::i;:::-;-1:-1:-1;15402:1:1;15391:13;;15275:135::o;15415:127::-;15476:10;15471:3;15467:20;15464:1;15457:31;15507:4;15504:1;15497:15;15531:4;15528:1;15521:15;15547:127;15608:10;15603:3;15599:20;15596:1;15589:31;15639:4;15636:1;15629:15;15663:4;15660:1;15653:15;15679:127;15740:10;15735:3;15731:20;15728:1;15721:31;15771:4;15768:1;15761:15;15795:4;15792:1;15785:15;15943:131;-1:-1:-1;;;;;16018:31:1;;16008:42;;15998:70;;16064:1;16061;16054:12;15998:70;15943:131;:::o;16079:118::-;16165:5;16158:13;16151:21;16144:5;16141:32;16131:60;;16187:1;16184;16177:12

Swarm Source

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