ETH Price: $1,500.45 (-16.39%)

Token

The Dragon Kuri (KURI)
 

Overview

Max Total Supply

10,000,000,000 KURI

Holders

5

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
169,584,013.904011186 KURI

Value
$0.00
0x0902517E3Db2F8Ea81cdb4ED22aaC6c16597F26F
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:
TheDragonKuri

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-07
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.6.12;

    abstract contract Context {
        function _msgSender() internal view virtual returns (address payable) {
            return msg.sender;
        }
        function _msgData() internal view virtual returns (bytes memory) {
            this; 
            return msg.data;
        }
    }

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

    library SafeMath {
        function add(uint256 a, uint256 b) internal pure returns (uint256) {
            uint256 c = a + b;
            require(c >= a, "SafeMath: addition overflow");
            return c;
        }
        function sub(uint256 a, uint256 b) internal pure returns (uint256) {
            return sub(a, b, "SafeMath: subtraction overflow");
        }
        function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
            require(b <= a, errorMessage);
            uint256 c = a - b;
            return c;
        }
        function mul(uint256 a, uint256 b) internal pure returns (uint256) {
            if (a == 0) {
                return 0;
            }
            uint256 c = a * b;
            require(c / a == b, "SafeMath: multiplication overflow");
            return c;
        }
        function div(uint256 a, uint256 b) internal pure returns (uint256) {
            return div(a, b, "SafeMath: division by zero");
        }
        function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
            require(b > 0, errorMessage);
            uint256 c = a / b;
            return c;
        }
        function mod(uint256 a, uint256 b) internal pure returns (uint256) {
            return mod(a, b, "SafeMath: modulo by zero");
        }
        function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
            require(b != 0, errorMessage);
            return a % b;
        }
    }

    library Address {
        function isContract(address account) internal view returns (bool) {
            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");
            (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 () internal {
            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 = now + time;
            emit OwnershipTransferred(_owner, address(0));
        }
        function unlock() public virtual {
            require(_previousOwner == msg.sender, "You don't have permission to unlock");
            require(now > _lockTime , "Contract is locked until 7 days");
            emit OwnershipTransferred(_owner, _previousOwner);
            _owner = _previousOwner;
        }
    }  

    interface IUniswapV2Factory {
        event PairCreated(address indexed token0, address indexed token1, address pair, uint);
        function feeTo() external view returns (address);
        function feeToSetter() external view returns (address);
        function getPair(address tokenA, address tokenB) external view returns (address pair);
        function allPairs(uint) external view returns (address pair);
        function allPairsLength() external view returns (uint);
        function createPair(address tokenA, address tokenB) external returns (address pair);
        function setFeeTo(address) external;
        function setFeeToSetter(address) external;
    } 

    interface IUniswapV2Pair {
        event Approval(address indexed owner, address indexed spender, uint value);
        event Transfer(address indexed from, address indexed to, uint value);
        function name() external pure returns (string memory);
        function symbol() external pure returns (string memory);
        function decimals() external pure returns (uint8);
        function totalSupply() external view returns (uint);
        function balanceOf(address owner) external view returns (uint);
        function allowance(address owner, address spender) external view returns (uint);
        function approve(address spender, uint value) external returns (bool);
        function transfer(address to, uint value) external returns (bool);
        function transferFrom(address from, address to, uint value) external returns (bool);
        function DOMAIN_SEPARATOR() external view returns (bytes32);
        function PERMIT_TYPEHASH() external pure returns (bytes32);
        function nonces(address owner) external view returns (uint);
        function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
        event 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;
    }

    interface IUniswapV2Router01 {
        function factory() external pure returns (address);
        function WETH() external pure returns (address);
        function addLiquidity(
            address tokenA,
            address tokenB,
            uint amountADesired,
            uint amountBDesired,
            uint amountAMin,
            uint amountBMin,
            address to,
            uint deadline
        ) external returns (uint amountA, uint amountB, uint liquidity);
        function addLiquidityETH(
            address token,
            uint amountTokenDesired,
            uint amountTokenMin,
            uint amountETHMin,
            address to,
            uint deadline
        ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
        function removeLiquidity(
            address tokenA,
            address tokenB,
            uint liquidity,
            uint amountAMin,
            uint amountBMin,
            address to,
            uint deadline
        ) external returns (uint amountA, uint amountB);
        function removeLiquidityETH(
            address token,
            uint liquidity,
            uint amountTokenMin,
            uint amountETHMin,
            address to,
            uint deadline
        ) external returns (uint amountToken, uint amountETH);
        function removeLiquidityWithPermit(
            address tokenA,
            address tokenB,
            uint liquidity,
            uint amountAMin,
            uint amountBMin,
            address to,
            uint deadline,
            bool approveMax, uint8 v, bytes32 r, bytes32 s
        ) external returns (uint amountA, uint amountB);
        function removeLiquidityETHWithPermit(
            address token,
            uint liquidity,
            uint amountTokenMin,
            uint amountETHMin,
            address to,
            uint deadline,
            bool approveMax, uint8 v, bytes32 r, bytes32 s
        ) external returns (uint amountToken, uint amountETH);
        function swapExactTokensForTokens(
            uint amountIn,
            uint amountOutMin,
            address[] calldata path,
            address to,
            uint deadline
        ) external returns (uint[] memory amounts);
        function swapTokensForExactTokens(
            uint amountOut,
            uint amountInMax,
            address[] calldata path,
            address to,
            uint deadline
        ) external returns (uint[] memory amounts);
        function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
            external
            payable
            returns (uint[] memory amounts);
        function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
            external
            returns (uint[] memory amounts);
        function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
            external
            returns (uint[] memory amounts);
        function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
            external
            payable
            returns (uint[] memory amounts);

        function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
        function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
        function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
        function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
        function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
    }

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

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

    contract TheDragonKuri is Context, IERC20, Ownable {
        using SafeMath for uint256;
        using Address for address;

        mapping (address => bool) public _isBlacklisted;
        mapping (address => uint256) private _rOwned;
        mapping (address => uint256) private _tOwned;
        mapping (address => mapping (address => uint256)) private _allowances;
        mapping (address => bool) private _isExcludedFromFee;

        mapping (address => bool) private _isExcluded;
        address[] private _excluded;
    
        uint256 private constant MAX = ~uint256(0);
        uint256 private _tTotal = 10000000000 * 10**9;
        uint256 private _rTotal = (MAX - (MAX % _tTotal));
        uint256 private _tFeeTotal;

        string private _name = 'The Dragon Kuri';
        string private _symbol = 'KURI';
        uint8 private _decimals = 9;

        uint256 private _taxFee = 1; 
        uint256 private _MarketingFee = 10;
        uint256 private _previousTaxFee = _taxFee;
        uint256 private _previousMarketingFee = _MarketingFee;

        address payable public _MarketingWalletAddress;
        
        IUniswapV2Router02 public immutable uniswapV2Router;
        address public immutable uniswapV2Pair;

        bool inSwap = false;
        bool public swapEnabled = true;

        uint256 private _maxTxAmount = 200000000e9;
        // We will set a minimum amount of tokens to be swaped => 5M
        uint256 private _numOfTokensToExchangeForMarketing = 5 * 10**3 * 10**9;

        event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
        event SwapEnabledUpdated(bool enabled);

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

        constructor (address payable MarketingWalletAddress) public {
            _MarketingWalletAddress = MarketingWalletAddress;
            _rOwned[_msgSender()] = _rTotal;

            IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            // Create a uniswap pair for this new token
            uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());

            // set the rest of the contract variables
            uniswapV2Router = _uniswapV2Router;

            // Exclude owner and this contract from fee
            _isExcludedFromFee[owner()] = true;
            _isExcludedFromFee[address(this)] = true;
            _isExcludedFromFee[_MarketingWalletAddress] = 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 balanceOf(address account) public view override returns (uint256) {
            if (_isExcluded[account]) return _tOwned[account];
            return tokenFromReflection(_rOwned[account]);
        }

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

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

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

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

        function 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 isExcluded(address account) public view returns (bool) {
            return _isExcluded[account];
        }

        function setExcludeFromFee(address account, bool excluded) external onlyOwner() {
            _isExcludedFromFee[account] = excluded;
        }

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

        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 excludeAccount(address account) external onlyOwner() {
            require(account != 0x4FfF8Ef86B068d6D44BaAD063375D608bB1a841b, '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 includeAccount(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 removeAllFee() private {
            if(_taxFee == 0 && _MarketingFee == 0) return;
            
            _previousTaxFee = _taxFee;
            _previousMarketingFee = _MarketingFee;
            
            _taxFee = 0;
            _MarketingFee = 0;
        }
    
        function restoreAllFee() private {
            _taxFee = _previousTaxFee;
            _MarketingFee = _previousMarketingFee;
        }
    
        function isExcludedFromFee(address account) public view returns(bool) {
            return _isExcludedFromFee[account];
        }

        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 _transfer(address sender, address recipient, uint256 amount) private {
            //blacklisted addresses can not buy! If you have ever used a bot, or scammed anybody, then you're wallet address will probably be blacklisted.
            require(!_isBlacklisted[sender] && !_isBlacklisted[recipient], "This address is blacklisted");
            require(sender != address(0), "ERC20: transfer from the zero address");
            require(recipient != address(0), "ERC20: transfer to the zero address");
            require(amount > 0, "Transfer amount must be greater than zero");
            
            if(sender != owner() && recipient != owner())
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");

            // is the token balance of this contract address over the min number of
            // tokens that we need to initiate a swap?
            // also, don't swap if sender is uniswap pair.
            uint256 contractTokenBalance = balanceOf(address(this));
            
            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }
            
            bool overMinTokenBalance = contractTokenBalance >= _numOfTokensToExchangeForMarketing;
            if (!inSwap && swapEnabled && overMinTokenBalance && sender != uniswapV2Pair) {
                // We need to swap the current tokens to ETH and send to the Marketing wallet
                swapTokensForEth(contractTokenBalance);
                
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToMarketing(address(this).balance);
                }
            }
            
            //indicates if fee should be deducted from transfer
            bool takeFee = true;
            
            //if any account belongs to _isExcludedFromFee account then remove the fee
            if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){
                takeFee = false;
            }
            
            //transfer amount, it will take tax and Marketing fee
            _tokenTransfer(sender,recipient,amount,takeFee);
        }

        function swapTokensForEth(uint256 tokenAmount) private lockTheSwap{
            // 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 sendETHToMarketing(uint256 amount) private {
            _MarketingWalletAddress.transfer(amount.mul(3).div(8));
          
        }
        
        // We are exposing these functions to be able to manual swap and send
        // in case the token is highly valued and 5M becomes too much
        function manualSwap() external onlyOwner() {
            uint256 contractBalance = balanceOf(address(this));
            swapTokensForEth(contractBalance);
        }
        
        function manualSend() external {
            require(msg.sender==_MarketingWalletAddress);
            uint256 contractETHBalance = address(this).balance;
            sendETHToMarketing(contractETHBalance);
        }

        function setSwapEnabled(bool enabled) external onlyOwner(){
            swapEnabled = enabled;
        }
        
        function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
            if(!takeFee)
                removeAllFee();

            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 _transferStandard(address sender, address recipient, uint256 tAmount) private {
            (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tMarketing) = _getValues(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 
            _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 tMarketing) = _getValues(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);    
            _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 tMarketing) = _getValues(tAmount);
            _tOwned[sender] = _tOwned[sender].sub(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 
            _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 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);   
            _takeMarketing(tMarketing);         
            _reflectFee(rFee, tFee);
            emit Transfer(sender, recipient, tTransferAmount);
        }

        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 _reflectFee(uint256 rFee, uint256 tFee) private {
            _rTotal = _rTotal.sub(rFee);
            _tFeeTotal = _tFeeTotal.add(tFee);
        }

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

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

        function _getTValues(uint256 tAmount, uint256 taxFee, uint256 MarketingFee) private pure returns (uint256, uint256, uint256) {
            uint256 tFee = tAmount.mul(taxFee).div(100);
            uint256 tMarketing = tAmount.mul(MarketingFee).div(100);
            uint256 tTransferAmount = tAmount.sub(tFee).sub(tMarketing);
            return (tTransferAmount, tFee, tMarketing);
        }

        function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
            uint256 rAmount = tAmount.mul(currentRate);
            uint256 rFee = tFee.mul(currentRate);
            uint256 rTransferAmount = rAmount.sub(rFee);
            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 _getTaxFee() private view returns(uint256) {return _taxFee;}
        function _getMaxTxAmount() public view returns(uint256) {return _maxTxAmount;}
        function _getETHBalance() public view returns(uint256 balance) {return address(this).balance;}
        
        function _setTaxFee(uint256 taxFee) external onlyOwner() {
            require(taxFee >= 0 && taxFee <= 10, 'taxFee should be in 0 - 10');
            _taxFee = taxFee;
        }

        function _setMarketingFee(uint256 MarketingFee) external onlyOwner() {
            require(MarketingFee >= 1 && MarketingFee <= 10, 'MarketingFee should be in 1 - 10');
            _MarketingFee = MarketingFee;
        }
        
        function _setMarketingWallet(address payable MarketingWalletAddress) external onlyOwner() {
            _MarketingWalletAddress = MarketingWalletAddress;
        }
        
        function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {_maxTxAmount = maxTxAmount;}
        function removeFromBlackList(address account) external onlyOwner{_isBlacklisted[account] = false;}

         //adding multiple address to the blacklist - used to manually block known bots and scammers
        function addToBlackList(address[] calldata  addresses) external onlyOwner {
        for(uint256 i; i < addresses.length; ++i) {
            _isBlacklisted[addresses[i]] = true;
            }
        }
   
    }

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address payable","name":"MarketingWalletAddress","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":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabledUpdated","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":"_MarketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getETHBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getMaxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"MarketingFee","type":"uint256"}],"name":"_setMarketingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"MarketingWalletAddress","type":"address"}],"name":"_setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"_setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"addToBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"excludeAccount","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":"includeAccount","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":"isExcluded","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":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","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":[{"internalType":"address","name":"account","type":"address"}],"name":"removeFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"}]

60c0604052678ac7230489e80000600a55600a54600019816200001e57fe5b0660001903600b556040518060400160405280600f81526020017f54686520447261676f6e204b7572690000000000000000000000000000000000815250600d90805190602001906200007392919062000703565b506040518060400160405280600481526020017f4b55524900000000000000000000000000000000000000000000000000000000815250600e9080519060200190620000c192919062000703565b506009600f60006101000a81548160ff021916908360ff1602179055506001601055600a60115560105460125560115460135560006014806101000a81548160ff0219169083151502179055506001601460156101000a81548160ff0219169083151502179055506702c68af0bb14000060155565048c273950006016553480156200014c57600080fd5b5060405162005cb538038062005cb5833981810160405260208110156200017257600080fd5b8101908080519060200190929190505050600062000195620006d260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b54600460006200028b620006d260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032957600080fd5b505afa1580156200033e573d6000803e3d6000fd5b505050506040513d60208110156200035557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003c957600080fd5b505afa158015620003de573d6000803e3d6000fd5b505050506040513d6020811015620003f557600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200047057600080fd5b505af115801562000485573d6000803e3d6000fd5b505050506040513d60208110156200049c57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505060016007600062000530620006da60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000663620006d260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a546040518082815260200191505060405180910390a35050620007a9565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200074657805160ff191683800117855562000777565b8280016001018555821562000777579182015b828111156200077657825182559160200191906001019062000759565b5b5090506200078691906200078a565b5090565b5b80821115620007a55760008160009055506001016200078b565b5090565b60805160601c60a05160601c6154ce620007e76000398061167452806137d4525080610fd95280613c2e5280613d1a5280613d4152506154ce6000f3fe6080604052600436106102555760003560e01c8063715018a611610139578063dd467064116100b6578063f2fde38b1161007a578063f2fde38b14610d78578063f429389014610dc9578063f7a9159114610de0578063f815a84214610e0b578063f84354f114610e36578063ff89757014610e875761025c565b8063dd46706414610be9578063dd62ed3e14610c24578063e01af92c14610ca9578063eedeacbe14610ce6578063f2cc0c1814610d275761025c565b8063a69df4b5116100fd578063a69df4b514610a72578063a9059cbb14610a89578063af9549e014610afa578063b6c5232414610b57578063cba0e99614610b825761025c565b8063715018a6146108de5780638da5cb5b146108f557806395d89b4114610936578063a457c2d7146109c6578063a52fe9bb14610a375761025c565b8063313ce567116101d25780634a49ac4c116101965780634a49ac4c1461074257806351bc3c85146107935780635342acb4146107aa5780635880b873146108115780636ddd17131461084c57806370a08231146108795761025c565b8063313ce567146105cc57806339509351146105fa5780633bd5d1731461066b5780634549b039146106a657806349bd5a5e146107015761025c565b80631bbae6e0116102195780631bbae6e0146103f95780631cdd3be3146104345780631ff53b601461049b57806323b872dd146104ec5780632d8381191461057d5761025c565b806306fdde0314610261578063095ea7b3146102f157806313114a9d146103625780631694505e1461038d57806318160ddd146103ce5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b50610276610f0d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102b657808201518184015260208101905061029b565b50505050905090810190601f1680156102e35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102fd57600080fd5b5061034a6004803603604081101561031457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610faf565b60405180821515815260200191505060405180910390f35b34801561036e57600080fd5b50610377610fcd565b6040518082815260200191505060405180910390f35b34801561039957600080fd5b506103a2610fd7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103da57600080fd5b506103e3610ffb565b6040518082815260200191505060405180910390f35b34801561040557600080fd5b506104326004803603602081101561041c57600080fd5b8101908080359060200190929190505050611005565b005b34801561044057600080fd5b506104836004803603602081101561045757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110d7565b60405180821515815260200191505060405180910390f35b3480156104a757600080fd5b506104ea600480360360208110156104be57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110f7565b005b3480156104f857600080fd5b506105656004803603606081101561050f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611203565b60405180821515815260200191505060405180910390f35b34801561058957600080fd5b506105b6600480360360208110156105a057600080fd5b81019080803590602001909291905050506112dc565b6040518082815260200191505060405180910390f35b3480156105d857600080fd5b506105e1611360565b604051808260ff16815260200191505060405180910390f35b34801561060657600080fd5b506106536004803603604081101561061d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611377565b60405180821515815260200191505060405180910390f35b34801561067757600080fd5b506106a46004803603602081101561068e57600080fd5b810190808035906020019092919050505061142a565b005b3480156106b257600080fd5b506106eb600480360360408110156106c957600080fd5b81019080803590602001909291908035151590602001909291905050506115bb565b6040518082815260200191505060405180910390f35b34801561070d57600080fd5b50610716611672565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561074e57600080fd5b506107916004803603602081101561076557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611696565b005b34801561079f57600080fd5b506107a86117b9565b005b3480156107b657600080fd5b506107f9600480360360208110156107cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061189a565b60405180821515815260200191505060405180910390f35b34801561081d57600080fd5b5061084a6004803603602081101561083457600080fd5b81019080803590602001909291905050506118f0565b005b34801561085857600080fd5b50610861611a46565b60405180821515815260200191505060405180910390f35b34801561088557600080fd5b506108c86004803603602081101561089c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a59565b6040518082815260200191505060405180910390f35b3480156108ea57600080fd5b506108f3611b44565b005b34801561090157600080fd5b5061090a611cca565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561094257600080fd5b5061094b611cf3565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561098b578082015181840152602081019050610970565b50505050905090810190601f1680156109b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156109d257600080fd5b50610a1f600480360360408110156109e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d95565b60405180821515815260200191505060405180910390f35b348015610a4357600080fd5b50610a7060048036036020811015610a5a57600080fd5b8101908080359060200190929190505050611e62565b005b348015610a7e57600080fd5b50610a87611fb8565b005b348015610a9557600080fd5b50610ae260048036036040811015610aac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506121d5565b60405180821515815260200191505060405180910390f35b348015610b0657600080fd5b50610b5560048036036040811015610b1d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506121f3565b005b348015610b6357600080fd5b50610b6c612316565b6040518082815260200191505060405180910390f35b348015610b8e57600080fd5b50610bd160048036036020811015610ba557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612320565b60405180821515815260200191505060405180910390f35b348015610bf557600080fd5b50610c2260048036036020811015610c0c57600080fd5b8101908080359060200190929190505050612376565b005b348015610c3057600080fd5b50610c9360048036036040811015610c4757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612567565b6040518082815260200191505060405180910390f35b348015610cb557600080fd5b50610ce460048036036020811015610ccc57600080fd5b810190808035151590602001909291905050506125ee565b005b348015610cf257600080fd5b50610cfb6126d3565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d3357600080fd5b50610d7660048036036020811015610d4a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126f9565b005b348015610d8457600080fd5b50610dc760048036036020811015610d9b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612aac565b005b348015610dd557600080fd5b50610dde612cb7565b005b348015610dec57600080fd5b50610df5612d22565b6040518082815260200191505060405180910390f35b348015610e1757600080fd5b50610e20612d2c565b6040518082815260200191505060405180910390f35b348015610e4257600080fd5b50610e8560048036036020811015610e5957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d34565b005b348015610e9357600080fd5b50610f0b60048036036020811015610eaa57600080fd5b8101908080359060200190640100000000811115610ec757600080fd5b820183602082011115610ed957600080fd5b80359060200191846020830284011164010000000083111715610efb57600080fd5b90919293919293905050506130be565b005b6060600d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fa55780601f10610f7a57610100808354040283529160200191610fa5565b820191906000526020600020905b815481529060010190602001808311610f8857829003601f168201915b5050505050905090565b6000610fc3610fbc613224565b848461322c565b6001905092915050565b6000600c54905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600a54905090565b61100d613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060158190555050565b60036020528060005260406000206000915054906101000a900460ff1681565b6110ff613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611210848484613423565b6112d18461121c613224565b6112cc8560405180606001604052806028815260200161536960289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611282613224565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139109092919063ffffffff16565b61322c565b600190509392505050565b6000600b54821115611339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806152ae602a913960400191505060405180910390fd5b60006113436139d0565b905061135881846139fb90919063ffffffff16565b915050919050565b6000600f60009054906101000a900460ff16905090565b6000611420611384613224565b8461141b8560066000611395613224565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b61322c565b6001905092915050565b6000611434613224565b9050600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156114d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615425602c913960400191505060405180910390fd5b60006114e483613acd565b5050505050905061153d81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3490919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061159581600b54613b3490919063ffffffff16565b600b819055506115b083600c54613a4590919063ffffffff16565b600c81905550505050565b6000600a54831115611635576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b8161165557600061164584613acd565b505050505090508091505061166c565b600061166084613acd565b50505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b61169e613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461175e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6117c1613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611881576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600061188c30611a59565b905061189781613b7e565b50565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6118f8613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600081101580156119ca5750600a8111155b611a3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f7461784665652073686f756c6420626520696e2030202d20313000000000000081525060200191505060405180910390fd5b8060108190555050565b601460159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611af457600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611b3f565b611b3c600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112dc565b90505b919050565b611b4c613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c0c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600e8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d8b5780601f10611d6057610100808354040283529160200191611d8b565b820191906000526020600020905b815481529060010190602001808311611d6e57829003601f168201915b5050505050905090565b6000611e58611da2613224565b84611e53856040518060600160405280602581526020016154746025913960066000611dcc613224565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139109092919063ffffffff16565b61322c565b6001905092915050565b611e6a613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f2a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015611f3c5750600a8111155b611fae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4d61726b6574696e674665652073686f756c6420626520696e2031202d20313081525060200191505060405180910390fd5b8060118190555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461205e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806154516023913960400191505060405180910390fd5b60025442116120d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006121e96121e2613224565b8484613423565b6001905092915050565b6121fb613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600254905090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61237e613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461243e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6125f6613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601460156101000a81548160ff02191690831515021790555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612701613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b734fff8ef86b068d6d44baad063375d608bb1a841b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561285a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806154036022913960400191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561291a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156129ee576129aa600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112dc565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612ab4613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b74576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612bfa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806152d86026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612d1157600080fd5b6000479050612d1f81613e60565b50565b6000601554905090565b600047905090565b612d3c613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612dfc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ebb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b6009805490508110156130ba578173ffffffffffffffffffffffffffffffffffffffff1660098281548110612eef57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156130ad57600960016009805490500381548110612f4b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660098281548110612f8357fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600980548061307357fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556130ba565b8080600101915050612ebe565b5050565b6130c6613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613186576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60005b8282905081101561321f576001600360008585858181106131a657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806001019050613189565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156132b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806153df6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613338576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806152fe6022913960400191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134c75750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613539576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686973206164647265737320697320626c61636b6c6973746564000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156135bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806153ba6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061528b6023913960400191505060405180910390fd5b6000811161369e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806153916029913960400191505060405180910390fd5b6136a6611cca565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561371457506136e4611cca565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561377557601554811115613774576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806153206028913960400191505060405180910390fd5b5b600061378030611a59565b905060155481106137915760155490505b6000601654821015905060148054906101000a900460ff161580156137c25750601460159054906101000a900460ff165b80156137cb5750805b801561382357507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561384b5761383182613b7e565b600047905060008111156138495761384847613e60565b5b505b600060019050600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138f25750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156138fc57600090505b61390886868684613ef2565b505050505050565b60008383111582906139bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613982578082015181840152602081019050613967565b50505050905090810190601f1680156139af5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008060006139dd614203565b915091506139f481836139fb90919063ffffffff16565b9250505090565b6000613a3d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614494565b905092915050565b600080828401905083811015613ac3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000806000613aea8a60105460115461455a565b9250925092506000613afa6139d0565b90506000806000613b0c8e87866145f0565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000613b7683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613910565b905092915050565b60016014806101000a81548160ff0219169083151502179055506060600267ffffffffffffffff81118015613bb257600080fd5b50604051908082528060200260200182016040528015613be15781602001602082028036833780820191505090505b5090503081600081518110613bf257fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613c9257600080fd5b505afa158015613ca6573d6000803e3d6000fd5b505050506040513d6020811015613cbc57600080fd5b810190808051906020019092919050505081600181518110613cda57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d3f307f00000000000000000000000000000000000000000000000000000000000000008461322c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015613e01578082015181840152602081019050613de6565b505050509050019650505050505050600060405180830381600087803b158015613e2a57600080fd5b505af1158015613e3e573d6000803e3d6000fd5b505050505060006014806101000a81548160ff02191690831515021790555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc613ec36008613eb560038661464e90919063ffffffff16565b6139fb90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015613eee573d6000803e3d6000fd5b5050565b80613f0057613eff6146d4565b5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613fa35750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613fb857613fb3848484614717565b6141ef565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561405b5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156140705761406b848484614977565b6141ee565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156141145750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561412957614124848484614bd7565b6141ed565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156141cb5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156141e0576141db848484614da2565b6141ec565b6141eb848484614bd7565b5b5b5b5b806141fd576141fc615097565b5b50505050565b6000806000600b5490506000600a54905060005b6009805490508110156144575782600460006009848154811061423657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061431d57508160056000600984815481106142b557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561433457600b54600a5494509450505050614490565b6143bd600460006009848154811061434857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613b3490919063ffffffff16565b925061444860056000600984815481106143d357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613b3490919063ffffffff16565b91508080600101915050614217565b5061446f600a54600b546139fb90919063ffffffff16565b82101561448757600b54600a54935093505050614490565b81819350935050505b9091565b60008083118290614540576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156145055780820151818401526020810190506144ea565b50505050905090810190601f1680156145325780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161454c57fe5b049050809150509392505050565b6000806000806145866064614578888a61464e90919063ffffffff16565b6139fb90919063ffffffff16565b905060006145b060646145a2888b61464e90919063ffffffff16565b6139fb90919063ffffffff16565b905060006145d9826145cb858c613b3490919063ffffffff16565b613b3490919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080614609858861464e90919063ffffffff16565b90506000614620868861464e90919063ffffffff16565b905060006146378284613b3490919063ffffffff16565b905082818395509550955050505093509350939050565b60008083141561466157600090506146ce565b600082840290508284828161467257fe5b04146146c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806153486021913960400191505060405180910390fd5b809150505b92915050565b60006010541480156146e857506000601154145b156146f257614715565b601054601281905550601154601381905550600060108190555060006011819055505b565b60008060008060008061472987613acd565b95509550955095509550955061478787600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3490919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061481c86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3490919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148b185600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148fd816150ab565b6149078483615250565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061498987613acd565b9550955095509550955095506149e786600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3490919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a7c83600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614b1185600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614b5d816150ab565b614b678483615250565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614be987613acd565b955095509550955095509550614c4786600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3490919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614cdc85600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614d28816150ab565b614d328483615250565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614db487613acd565b955095509550955095509550614e1287600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3490919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614ea786600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3490919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614f3c83600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614fd185600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061501d816150ab565b6150278483615250565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b601254601081905550601354601181905550565b60006150b56139d0565b905060006150cc828461464e90919063ffffffff16565b905061512081600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561524b5761520783600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61526582600b54613b3490919063ffffffff16565b600b8190555061528081600c54613a4590919063ffffffff16565b600c81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202b0dc170ba06d1990d238150204823b4d0e89e013c78e5de5588ee13b6e9fe1d64736f6c634300060c00330000000000000000000000004fff8ef86b068d6d44baad063375d608bb1a841b

Deployed Bytecode

0x6080604052600436106102555760003560e01c8063715018a611610139578063dd467064116100b6578063f2fde38b1161007a578063f2fde38b14610d78578063f429389014610dc9578063f7a9159114610de0578063f815a84214610e0b578063f84354f114610e36578063ff89757014610e875761025c565b8063dd46706414610be9578063dd62ed3e14610c24578063e01af92c14610ca9578063eedeacbe14610ce6578063f2cc0c1814610d275761025c565b8063a69df4b5116100fd578063a69df4b514610a72578063a9059cbb14610a89578063af9549e014610afa578063b6c5232414610b57578063cba0e99614610b825761025c565b8063715018a6146108de5780638da5cb5b146108f557806395d89b4114610936578063a457c2d7146109c6578063a52fe9bb14610a375761025c565b8063313ce567116101d25780634a49ac4c116101965780634a49ac4c1461074257806351bc3c85146107935780635342acb4146107aa5780635880b873146108115780636ddd17131461084c57806370a08231146108795761025c565b8063313ce567146105cc57806339509351146105fa5780633bd5d1731461066b5780634549b039146106a657806349bd5a5e146107015761025c565b80631bbae6e0116102195780631bbae6e0146103f95780631cdd3be3146104345780631ff53b601461049b57806323b872dd146104ec5780632d8381191461057d5761025c565b806306fdde0314610261578063095ea7b3146102f157806313114a9d146103625780631694505e1461038d57806318160ddd146103ce5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b50610276610f0d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102b657808201518184015260208101905061029b565b50505050905090810190601f1680156102e35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102fd57600080fd5b5061034a6004803603604081101561031457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610faf565b60405180821515815260200191505060405180910390f35b34801561036e57600080fd5b50610377610fcd565b6040518082815260200191505060405180910390f35b34801561039957600080fd5b506103a2610fd7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103da57600080fd5b506103e3610ffb565b6040518082815260200191505060405180910390f35b34801561040557600080fd5b506104326004803603602081101561041c57600080fd5b8101908080359060200190929190505050611005565b005b34801561044057600080fd5b506104836004803603602081101561045757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110d7565b60405180821515815260200191505060405180910390f35b3480156104a757600080fd5b506104ea600480360360208110156104be57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110f7565b005b3480156104f857600080fd5b506105656004803603606081101561050f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611203565b60405180821515815260200191505060405180910390f35b34801561058957600080fd5b506105b6600480360360208110156105a057600080fd5b81019080803590602001909291905050506112dc565b6040518082815260200191505060405180910390f35b3480156105d857600080fd5b506105e1611360565b604051808260ff16815260200191505060405180910390f35b34801561060657600080fd5b506106536004803603604081101561061d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611377565b60405180821515815260200191505060405180910390f35b34801561067757600080fd5b506106a46004803603602081101561068e57600080fd5b810190808035906020019092919050505061142a565b005b3480156106b257600080fd5b506106eb600480360360408110156106c957600080fd5b81019080803590602001909291908035151590602001909291905050506115bb565b6040518082815260200191505060405180910390f35b34801561070d57600080fd5b50610716611672565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561074e57600080fd5b506107916004803603602081101561076557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611696565b005b34801561079f57600080fd5b506107a86117b9565b005b3480156107b657600080fd5b506107f9600480360360208110156107cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061189a565b60405180821515815260200191505060405180910390f35b34801561081d57600080fd5b5061084a6004803603602081101561083457600080fd5b81019080803590602001909291905050506118f0565b005b34801561085857600080fd5b50610861611a46565b60405180821515815260200191505060405180910390f35b34801561088557600080fd5b506108c86004803603602081101561089c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a59565b6040518082815260200191505060405180910390f35b3480156108ea57600080fd5b506108f3611b44565b005b34801561090157600080fd5b5061090a611cca565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561094257600080fd5b5061094b611cf3565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561098b578082015181840152602081019050610970565b50505050905090810190601f1680156109b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156109d257600080fd5b50610a1f600480360360408110156109e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d95565b60405180821515815260200191505060405180910390f35b348015610a4357600080fd5b50610a7060048036036020811015610a5a57600080fd5b8101908080359060200190929190505050611e62565b005b348015610a7e57600080fd5b50610a87611fb8565b005b348015610a9557600080fd5b50610ae260048036036040811015610aac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506121d5565b60405180821515815260200191505060405180910390f35b348015610b0657600080fd5b50610b5560048036036040811015610b1d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506121f3565b005b348015610b6357600080fd5b50610b6c612316565b6040518082815260200191505060405180910390f35b348015610b8e57600080fd5b50610bd160048036036020811015610ba557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612320565b60405180821515815260200191505060405180910390f35b348015610bf557600080fd5b50610c2260048036036020811015610c0c57600080fd5b8101908080359060200190929190505050612376565b005b348015610c3057600080fd5b50610c9360048036036040811015610c4757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612567565b6040518082815260200191505060405180910390f35b348015610cb557600080fd5b50610ce460048036036020811015610ccc57600080fd5b810190808035151590602001909291905050506125ee565b005b348015610cf257600080fd5b50610cfb6126d3565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d3357600080fd5b50610d7660048036036020811015610d4a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126f9565b005b348015610d8457600080fd5b50610dc760048036036020811015610d9b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612aac565b005b348015610dd557600080fd5b50610dde612cb7565b005b348015610dec57600080fd5b50610df5612d22565b6040518082815260200191505060405180910390f35b348015610e1757600080fd5b50610e20612d2c565b6040518082815260200191505060405180910390f35b348015610e4257600080fd5b50610e8560048036036020811015610e5957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d34565b005b348015610e9357600080fd5b50610f0b60048036036020811015610eaa57600080fd5b8101908080359060200190640100000000811115610ec757600080fd5b820183602082011115610ed957600080fd5b80359060200191846020830284011164010000000083111715610efb57600080fd5b90919293919293905050506130be565b005b6060600d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fa55780601f10610f7a57610100808354040283529160200191610fa5565b820191906000526020600020905b815481529060010190602001808311610f8857829003601f168201915b5050505050905090565b6000610fc3610fbc613224565b848461322c565b6001905092915050565b6000600c54905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600a54905090565b61100d613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060158190555050565b60036020528060005260406000206000915054906101000a900460ff1681565b6110ff613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611210848484613423565b6112d18461121c613224565b6112cc8560405180606001604052806028815260200161536960289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611282613224565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139109092919063ffffffff16565b61322c565b600190509392505050565b6000600b54821115611339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806152ae602a913960400191505060405180910390fd5b60006113436139d0565b905061135881846139fb90919063ffffffff16565b915050919050565b6000600f60009054906101000a900460ff16905090565b6000611420611384613224565b8461141b8560066000611395613224565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b61322c565b6001905092915050565b6000611434613224565b9050600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156114d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615425602c913960400191505060405180910390fd5b60006114e483613acd565b5050505050905061153d81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3490919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061159581600b54613b3490919063ffffffff16565b600b819055506115b083600c54613a4590919063ffffffff16565b600c81905550505050565b6000600a54831115611635576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b8161165557600061164584613acd565b505050505090508091505061166c565b600061166084613acd565b50505050915050809150505b92915050565b7f000000000000000000000000b68da55cdf55380e11dec73626d3777e2ea7b2dd81565b61169e613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461175e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6117c1613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611881576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600061188c30611a59565b905061189781613b7e565b50565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6118f8613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600081101580156119ca5750600a8111155b611a3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f7461784665652073686f756c6420626520696e2030202d20313000000000000081525060200191505060405180910390fd5b8060108190555050565b601460159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611af457600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611b3f565b611b3c600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112dc565b90505b919050565b611b4c613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c0c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600e8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d8b5780601f10611d6057610100808354040283529160200191611d8b565b820191906000526020600020905b815481529060010190602001808311611d6e57829003601f168201915b5050505050905090565b6000611e58611da2613224565b84611e53856040518060600160405280602581526020016154746025913960066000611dcc613224565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139109092919063ffffffff16565b61322c565b6001905092915050565b611e6a613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f2a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015611f3c5750600a8111155b611fae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4d61726b6574696e674665652073686f756c6420626520696e2031202d20313081525060200191505060405180910390fd5b8060118190555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461205e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806154516023913960400191505060405180910390fd5b60025442116120d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006121e96121e2613224565b8484613423565b6001905092915050565b6121fb613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600254905090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61237e613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461243e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6125f6613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601460156101000a81548160ff02191690831515021790555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612701613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b734fff8ef86b068d6d44baad063375d608bb1a841b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561285a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806154036022913960400191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561291a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156129ee576129aa600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112dc565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612ab4613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b74576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612bfa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806152d86026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612d1157600080fd5b6000479050612d1f81613e60565b50565b6000601554905090565b600047905090565b612d3c613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612dfc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ebb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b6009805490508110156130ba578173ffffffffffffffffffffffffffffffffffffffff1660098281548110612eef57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156130ad57600960016009805490500381548110612f4b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660098281548110612f8357fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600980548061307357fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556130ba565b8080600101915050612ebe565b5050565b6130c6613224565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613186576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60005b8282905081101561321f576001600360008585858181106131a657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806001019050613189565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156132b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806153df6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613338576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806152fe6022913960400191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134c75750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613539576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686973206164647265737320697320626c61636b6c6973746564000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156135bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806153ba6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061528b6023913960400191505060405180910390fd5b6000811161369e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806153916029913960400191505060405180910390fd5b6136a6611cca565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561371457506136e4611cca565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561377557601554811115613774576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806153206028913960400191505060405180910390fd5b5b600061378030611a59565b905060155481106137915760155490505b6000601654821015905060148054906101000a900460ff161580156137c25750601460159054906101000a900460ff165b80156137cb5750805b801561382357507f000000000000000000000000b68da55cdf55380e11dec73626d3777e2ea7b2dd73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561384b5761383182613b7e565b600047905060008111156138495761384847613e60565b5b505b600060019050600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138f25750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156138fc57600090505b61390886868684613ef2565b505050505050565b60008383111582906139bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613982578082015181840152602081019050613967565b50505050905090810190601f1680156139af5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008060006139dd614203565b915091506139f481836139fb90919063ffffffff16565b9250505090565b6000613a3d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614494565b905092915050565b600080828401905083811015613ac3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000806000613aea8a60105460115461455a565b9250925092506000613afa6139d0565b90506000806000613b0c8e87866145f0565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000613b7683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613910565b905092915050565b60016014806101000a81548160ff0219169083151502179055506060600267ffffffffffffffff81118015613bb257600080fd5b50604051908082528060200260200182016040528015613be15781602001602082028036833780820191505090505b5090503081600081518110613bf257fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613c9257600080fd5b505afa158015613ca6573d6000803e3d6000fd5b505050506040513d6020811015613cbc57600080fd5b810190808051906020019092919050505081600181518110613cda57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d3f307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461322c565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015613e01578082015181840152602081019050613de6565b505050509050019650505050505050600060405180830381600087803b158015613e2a57600080fd5b505af1158015613e3e573d6000803e3d6000fd5b505050505060006014806101000a81548160ff02191690831515021790555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc613ec36008613eb560038661464e90919063ffffffff16565b6139fb90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015613eee573d6000803e3d6000fd5b5050565b80613f0057613eff6146d4565b5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613fa35750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613fb857613fb3848484614717565b6141ef565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561405b5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156140705761406b848484614977565b6141ee565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156141145750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561412957614124848484614bd7565b6141ed565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156141cb5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156141e0576141db848484614da2565b6141ec565b6141eb848484614bd7565b5b5b5b5b806141fd576141fc615097565b5b50505050565b6000806000600b5490506000600a54905060005b6009805490508110156144575782600460006009848154811061423657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061431d57508160056000600984815481106142b557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561433457600b54600a5494509450505050614490565b6143bd600460006009848154811061434857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613b3490919063ffffffff16565b925061444860056000600984815481106143d357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613b3490919063ffffffff16565b91508080600101915050614217565b5061446f600a54600b546139fb90919063ffffffff16565b82101561448757600b54600a54935093505050614490565b81819350935050505b9091565b60008083118290614540576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156145055780820151818401526020810190506144ea565b50505050905090810190601f1680156145325780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161454c57fe5b049050809150509392505050565b6000806000806145866064614578888a61464e90919063ffffffff16565b6139fb90919063ffffffff16565b905060006145b060646145a2888b61464e90919063ffffffff16565b6139fb90919063ffffffff16565b905060006145d9826145cb858c613b3490919063ffffffff16565b613b3490919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080614609858861464e90919063ffffffff16565b90506000614620868861464e90919063ffffffff16565b905060006146378284613b3490919063ffffffff16565b905082818395509550955050505093509350939050565b60008083141561466157600090506146ce565b600082840290508284828161467257fe5b04146146c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806153486021913960400191505060405180910390fd5b809150505b92915050565b60006010541480156146e857506000601154145b156146f257614715565b601054601281905550601154601381905550600060108190555060006011819055505b565b60008060008060008061472987613acd565b95509550955095509550955061478787600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3490919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061481c86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3490919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148b185600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148fd816150ab565b6149078483615250565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061498987613acd565b9550955095509550955095506149e786600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3490919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a7c83600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614b1185600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614b5d816150ab565b614b678483615250565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614be987613acd565b955095509550955095509550614c4786600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3490919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614cdc85600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614d28816150ab565b614d328483615250565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614db487613acd565b955095509550955095509550614e1287600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3490919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614ea786600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b3490919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614f3c83600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614fd185600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061501d816150ab565b6150278483615250565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b601254601081905550601354601181905550565b60006150b56139d0565b905060006150cc828461464e90919063ffffffff16565b905061512081600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561524b5761520783600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4590919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61526582600b54613b3490919063ffffffff16565b600b8190555061528081600c54613a4590919063ffffffff16565b600c81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202b0dc170ba06d1990d238150204823b4d0e89e013c78e5de5588ee13b6e9fe1d64736f6c634300060c0033

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

0000000000000000000000004fff8ef86b068d6d44baad063375d608bb1a841b

-----Decoded View---------------
Arg [0] : MarketingWalletAddress (address): 0x4FfF8Ef86B068d6D44BaAD063375D608bB1a841b

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000004fff8ef86b068d6d44baad063375d608bb1a841b


Deployed Bytecode Sourcemap

15615:19592:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18328:67;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19222:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20570:71;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16775:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18563:79;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;34673:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15752:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;34488:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19407:329;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21554:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18486:67;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19748:230;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20653:405;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21070:472;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16837:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;34779:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27093:168;;;;;;;;;;;;;:::i;:::-;;23307:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;34052:181;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16918:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18654:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5824:160;;;;;;;;;;;;;:::i;:::-;;5586:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18405:71;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19990:281;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;34245:223;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6615:313;;;;;;;;;;;;;:::i;:::-;;18876:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20413:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6264:97;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20283:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;6371:234;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19059:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27513:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16708:46;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21835:475;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5994:260;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27281:220;;;;;;;;;;;;;:::i;:::-;;33850:78;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;33938:94;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22322:522;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;34991:204;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18328:67;18365:13;18388:5;18381:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18328:67;:::o;19222:173::-;19297:4;19318:39;19327:12;:10;:12::i;:::-;19341:7;19350:6;19318:8;:39::i;:::-;19379:4;19372:11;;19222:173;;;;:::o;20570:71::-;20612:7;20629:10;;20622:17;;20570:71;:::o;16775:51::-;;;:::o;18563:79::-;18616:7;18633;;18626:14;;18563:79;:::o;34673:96::-;5737:12;:10;:12::i;:::-;5727:22;;:6;;;;;;;;;;:22;;;5719:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34756:11:::1;34741:12;:26;;;;34673:96:::0;:::o;15752:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;34488:165::-;5737:12;:10;:12::i;:::-;5727:22;;:6;;;;;;;;;;:22;;;5719:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34619:22:::1;34593:23;;:48;;;;;;;;;;;;;;;;;;34488:165:::0;:::o;19407:329::-;19505:4;19526:36;19536:6;19544:9;19555:6;19526:9;:36::i;:::-;19577:121;19586:6;19594:12;:10;:12::i;:::-;19608:89;19646:6;19608:89;;;;;;;;;;;;;;;;;:11;:19;19620:6;19608:19;;;;;;;;;;;;;;;:33;19628:12;:10;:12::i;:::-;19608:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;19577:8;:121::i;:::-;19720:4;19713:11;;19407:329;;;;;:::o;21554:269::-;21620:7;21663;;21652;:18;;21644:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21732:19;21755:10;:8;:10::i;:::-;21732:33;;21787:24;21799:11;21787:7;:11;;:24;;;;:::i;:::-;21780:31;;;21554:269;;;:::o;18486:67::-;18527:5;18542:9;;;;;;;;;;;18535:16;;18486:67;:::o;19748:230::-;19836:4;19857:83;19866:12;:10;:12::i;:::-;19880:7;19889:50;19928:10;19889:11;:25;19901:12;:10;:12::i;:::-;19889:25;;;;;;;;;;;;;;;:34;19915:7;19889:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;19857:8;:83::i;:::-;19962:4;19955:11;;19748:230;;;;:::o;20653:405::-;20709:14;20726:12;:10;:12::i;:::-;20709:29;;20762:11;:19;20774:6;20762:19;;;;;;;;;;;;;;;;;;;;;;;;;20761:20;20753:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20846:15;20870:19;20881:7;20870:10;:19::i;:::-;20845:44;;;;;;;20922:28;20942:7;20922;:15;20930:6;20922:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;20904:7;:15;20912:6;20904:15;;;;;;;;;;;;;;;:46;;;;20975:20;20987:7;20975;;:11;;:20;;;;:::i;:::-;20965:7;:30;;;;21023:23;21038:7;21023:10;;:14;;:23;;;;:::i;:::-;21010:10;:36;;;;20653:405;;;:::o;21070:472::-;21160:7;21203;;21192;:18;;21184:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21266:17;21261:270;;21305:15;21329:19;21340:7;21329:10;:19::i;:::-;21304:44;;;;;;;21374:7;21367:14;;;;;21261:270;21424:23;21455:19;21466:7;21455:10;:19::i;:::-;21422:52;;;;;;;21500:15;21493:22;;;21070:472;;;;;:::o;16837:38::-;;;:::o;34779:98::-;5737:12;:10;:12::i;:::-;5727:22;;:6;;;;;;;;;;:22;;;5719:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34870:5:::1;34844:14;:23;34859:7;34844:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;34779:98:::0;:::o;27093:168::-;5737:12;:10;:12::i;:::-;5727:22;;:6;;;;;;;;;;:22;;;5719:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27151:23:::1;27177:24;27195:4;27177:9;:24::i;:::-;27151:50;;27216:33;27233:15;27216:16;:33::i;:::-;5801:1;27093:168::o:0;23307:131::-;23371:4;23399:18;:27;23418:7;23399:27;;;;;;;;;;;;;;;;;;;;;;;;;23392:34;;23307:131;;;:::o;34052:181::-;5737:12;:10;:12::i;:::-;5727:22;;:6;;;;;;;;;;:22;;;5719:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34142:1:::1;34132:6;:11;;:27;;;;;34157:2;34147:6;:12;;34132:27;34124:66;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;34215:6;34205:7;:16;;;;34052:181:::0;:::o;16918:30::-;;;;;;;;;;;;;:::o;18654:210::-;18720:7;18748:11;:20;18760:7;18748:20;;;;;;;;;;;;;;;;;;;;;;;;;18744:49;;;18777:7;:16;18785:7;18777:16;;;;;;;;;;;;;;;;18770:23;;;;18744:49;18815:37;18835:7;:16;18843:7;18835:16;;;;;;;;;;;;;;;;18815:19;:37::i;:::-;18808:44;;18654:210;;;;:::o;5824:160::-;5737:12;:10;:12::i;:::-;5727:22;;:6;;;;;;;;;;:22;;;5719:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5935:1:::1;5898:40;;5919:6;::::0;::::1;;;;;;;;5898:40;;;;;;;;;;;;5970:1;5953:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;5824:160::o:0;5586:87::-;5624:7;5655:6;;;;;;;;;;;5648:13;;5586:87;:::o;18405:71::-;18444:13;18467:7;18460:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18405:71;:::o;19990:281::-;20083:4;20104:129;20113:12;:10;:12::i;:::-;20127:7;20136:96;20175:15;20136:96;;;;;;;;;;;;;;;;;:11;:25;20148:12;:10;:12::i;:::-;20136:25;;;;;;;;;;;;;;;:34;20162:7;20136:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;20104:8;:129::i;:::-;20255:4;20248:11;;19990:281;;;;:::o;34245:223::-;5737:12;:10;:12::i;:::-;5727:22;;:6;;;;;;;;;;:22;;;5719:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34353:1:::1;34337:12;:17;;:39;;;;;34374:2;34358:12;:18;;34337:39;34329:84;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;34444:12;34428:13;:28;;;;34245:223:::0;:::o;6615:313::-;6689:10;6671:28;;:14;;;;;;;;;;;:28;;;6663:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6768:9;;6762:3;:15;6754:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6863:14;;;;;;;;;;;6834:44;;6855:6;;;;;;;;;;6834:44;;;;;;;;;;;;6902:14;;;;;;;;;;;6893:6;;:23;;;;;;;;;;;;;;;;;;6615:313::o;18876:171::-;18954:4;18971:42;18981:12;:10;:12::i;:::-;18995:9;19006:6;18971:9;:42::i;:::-;19031:4;19024:11;;18876:171;;;;:::o;20413:145::-;5737:12;:10;:12::i;:::-;5727:22;;:6;;;;;;;;;;:22;;;5719:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20538:8:::1;20508:18;:27;20527:7;20508:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;20413:145:::0;;:::o;6264:97::-;6309:7;6340:9;;6333:16;;6264:97;:::o;20283:118::-;20341:4;20369:11;:20;20381:7;20369:20;;;;;;;;;;;;;;;;;;;;;;;;;20362:27;;20283:118;;;:::o;6371:234::-;5737:12;:10;:12::i;:::-;5727:22;;:6;;;;;;;;;;:22;;;5719:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6456:6:::1;::::0;::::1;;;;;;;;6439:14;;:23;;;;;;;;;;;;;;;;;;6494:1;6477:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6529:4;6523:3;:10;6511:9;:22;;;;6590:1;6553:40;;6574:6;::::0;::::1;;;;;;;;6553:40;;;;;;;;;;;;6371:234:::0;:::o;19059:151::-;19140:7;19171:11;:18;19183:5;19171:18;;;;;;;;;;;;;;;:27;19190:7;19171:27;;;;;;;;;;;;;;;;19164:34;;19059:151;;;;:::o;27513:106::-;5737:12;:10;:12::i;:::-;5727:22;;:6;;;;;;;;;;:22;;;5719:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27600:7:::1;27586:11;;:21;;;;;;;;;;;;;;;;;;27513:106:::0;:::o;16708:46::-;;;;;;;;;;;;;:::o;21835:475::-;5737:12;:10;:12::i;:::-;5727:22;;:6;;;;;;;;;;:22;;;5719:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21931:42:::1;21920:53;;:7;:53;;;;21912:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22036:11;:20;22048:7;22036:20;;;;;;;;;;;;;;;;;;;;;;;;;22035:21;22027:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;22125:1;22106:7;:16;22114:7;22106:16;;;;;;;;;;;;;;;;:20;22103:116;;;22166:37;22186:7;:16;22194:7;22186:16;;;;;;;;;;;;;;;;22166:19;:37::i;:::-;22147:7;:16;22155:7;22147:16;;;;;;;;;;;;;;;:56;;;;22103:116;22256:4;22233:11;:20;22245:7;22233:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;22275:9;22290:7;22275:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21835:475:::0;:::o;5994:260::-;5737:12;:10;:12::i;:::-;5727:22;;:6;;;;;;;;;;:22;;;5719:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6107:1:::1;6087:22;;:8;:22;;;;6079:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6201:8;6172:38;;6193:6;::::0;::::1;;;;;;;;6172:38;;;;;;;;;;;;6234:8;6225:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;5994:260:::0;:::o;27281:220::-;27347:23;;;;;;;;;;;27335:35;;:10;:35;;;27327:44;;;;;;27386:26;27415:21;27386:50;;27451:38;27470:18;27451;:38::i;:::-;27281:220;:::o;33850:78::-;33897:7;33914:12;;33907:19;;33850:78;:::o;33938:94::-;33984:15;34009:21;34002:28;;33938:94;:::o;22322:522::-;5737:12;:10;:12::i;:::-;5727:22;;:6;;;;;;;;;;:22;;;5719:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22407:11:::1;:20;22419:7;22407:20;;;;;;;;;;;;;;;;;;;;;;;;;22399:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;22479:9;22474:359;22498:9;:16;;;;22494:1;:20;22474:359;;;22560:7;22544:23;;:9;22554:1;22544:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;22540:278;;;22607:9;22636:1;22617:9;:16;;;;:20;22607:31;;;;;;;;;;;;;;;;;;;;;;;;;22592:9;22602:1;22592:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;22680:1;22661:7;:16;22669:7;22661:16;;;;;;;;;;;;;;;:20;;;;22727:5;22704:11;:20;22716:7;22704:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;22755:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22793:5;;22540:278;22516:3;;;;;;;22474:359;;;;22322:522:::0;:::o;34991:204::-;5737:12;:10;:12::i;:::-;5727:22;;:6;;;;;;;;;;:22;;;5719:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35080:9:::1;35076:108;35095:9;;:16;;35091:1;:20;35076:108;;;35164:4;35133:14;:28;35148:9;;35158:1;35148:12;;;;;;;;;;;;;;;35133:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;35113:3;;;;;35076:108;;;;34991:204:::0;;:::o;111:114::-;164:15;203:10;196:17;;111:114;:::o;23450:357::-;23564:1;23547:19;;:5;:19;;;;23539:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23649:1;23630:21;;:7;:21;;;;23622:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23737:6;23707:11;:18;23719:5;23707:18;;;;;;;;;;;;;;;:27;23726:7;23707:27;;;;;;;;;;;;;;;:36;;;;23779:7;23763:32;;23772:5;23763:32;;;23788:6;23763:32;;;;;;;;;;;;;;;;;;23450:357;;;:::o;23819:2271::-;24077:14;:22;24092:6;24077:22;;;;;;;;;;;;;;;;;;;;;;;;;24076:23;:53;;;;;24104:14;:25;24119:9;24104:25;;;;;;;;;;;;;;;;;;;;;;;;;24103:26;24076:53;24068:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24202:1;24184:20;;:6;:20;;;;24176:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24290:1;24269:23;;:9;:23;;;;24261:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24364:1;24355:6;:10;24347:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24453:7;:5;:7::i;:::-;24443:17;;:6;:17;;;;:41;;;;;24477:7;:5;:7::i;:::-;24464:20;;:9;:20;;;;24443:41;24440:138;;;24521:12;;24511:6;:22;;24503:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24440:138;24796:28;24827:24;24845:4;24827:9;:24::i;:::-;24796:55;;24907:12;;24883:20;:36;24880:124;;24976:12;;24953:35;;24880:124;25032:24;25083:34;;25059:20;:58;;25032:85;;25137:6;;;;;;;;;;25136:7;:22;;;;;25147:11;;;;;;;;;;;25136:22;:45;;;;;25162:19;25136:45;:72;;;;;25195:13;25185:23;;:6;:23;;;;25136:72;25132:462;;;25324:38;25341:20;25324:16;:38::i;:::-;25399:26;25428:21;25399:50;;25492:1;25471:18;:22;25468:111;;;25518:41;25537:21;25518:18;:41::i;:::-;25468:111;25132:462;;25687:12;25702:4;25687:19;;25826:18;:26;25845:6;25826:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;25856:18;:29;25875:9;25856:29;;;;;;;;;;;;;;;;;;;;;;;;;25826:59;25823:113;;;25915:5;25905:15;;25823:113;26031:47;26046:6;26053:9;26063:6;26070:7;26031:14;:47::i;:::-;23819:2271;;;;;;:::o;1481:206::-;1567:7;1604:1;1599;:6;;1607:12;1591:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1635:9;1651:1;1647;:5;1635:17;;1674:1;1667:8;;;1481:206;;;;;:::o;32963:175::-;33004:7;33029:15;33046;33065:19;:17;:19::i;:::-;33028:56;;;;33106:20;33118:7;33106;:11;;:20;;;;:::i;:::-;33099:27;;;;32963:175;:::o;1981:140::-;2039:7;2070:39;2074:1;2077;2070:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2063:46;;1981:140;;;;:::o;1122:195::-;1180:7;1204:9;1220:1;1216;:5;1204:17;;1249:1;1244;:6;;1236:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1304:1;1297:8;;;1122:195;;;;:::o;31681:496::-;31740:7;31749;31758;31767;31776;31785;31810:23;31835:12;31849:18;31871:44;31883:7;31892;;31901:13;;31871:11;:44::i;:::-;31809:106;;;;;;31930:19;31953:10;:8;:10::i;:::-;31930:33;;31979:15;31996:23;32021:12;32037:39;32049:7;32058:4;32064:11;32037;:39::i;:::-;31978:98;;;;;;32099:7;32108:15;32125:4;32131:15;32148:4;32154:10;32091:74;;;;;;;;;;;;;;;;;;;31681:496;;;;;;;:::o;1327:144::-;1385:7;1416:43;1420:1;1423;1416:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1409:50;;1327:144;;;;:::o;26102:656::-;17335:4;17326:6;;:13;;;;;;;;;;;;;;;;;;26247:21:::1;26285:1;26271:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26247:40;;26320:4;26302;26307:1;26302:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;26350:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;26340:4;26345:1;26340:7;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;26389:62;26406:4;26421:15;26439:11;26389:8;:62::i;:::-;26498:15;:66;;;26583:11;26613:1;26661:4;26692;26716:15;26498:248;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17354:1;17379:5:::0;17370:6;;:14;;;;;;;;;;;;;;;;;;26102:656;:::o;26778:145::-;26845:23;;;;;;;;;;;:32;;:54;26878:20;26896:1;26878:13;26889:1;26878:6;:10;;:13;;;;:::i;:::-;:17;;:20;;;;:::i;:::-;26845:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26778:145;:::o;27639:883::-;27755:7;27751:44;;27781:14;:12;:14::i;:::-;27751:44;27816:11;:19;27828:6;27816:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;27840:11;:22;27852:9;27840:22;;;;;;;;;;;;;;;;;;;;;;;;;27839:23;27816:46;27812:637;;;27883:48;27905:6;27913:9;27924:6;27883:21;:48::i;:::-;27812:637;;;27958:11;:19;27970:6;27958:19;;;;;;;;;;;;;;;;;;;;;;;;;27957:20;:46;;;;;27981:11;:22;27993:9;27981:22;;;;;;;;;;;;;;;;;;;;;;;;;27957:46;27953:496;;;28024:46;28044:6;28052:9;28063:6;28024:19;:46::i;:::-;27953:496;;;28097:11;:19;28109:6;28097:19;;;;;;;;;;;;;;;;;;;;;;;;;28096:20;:47;;;;;28121:11;:22;28133:9;28121:22;;;;;;;;;;;;;;;;;;;;;;;;;28120:23;28096:47;28092:357;;;28164:44;28182:6;28190:9;28201:6;28164:17;:44::i;:::-;28092:357;;;28234:11;:19;28246:6;28234:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;28257:11;:22;28269:9;28257:22;;;;;;;;;;;;;;;;;;;;;;;;;28234:45;28230:219;;;28300:48;28322:6;28330:9;28341:6;28300:21;:48::i;:::-;28230:219;;;28389:44;28407:6;28415:9;28426:6;28389:17;:44::i;:::-;28230:219;28092:357;27953:496;27812:637;28469:7;28465:45;;28495:15;:13;:15::i;:::-;28465:45;27639:883;;;;:::o;33150:601::-;33200:7;33209;33233:15;33251:7;;33233:25;;33273:15;33291:7;;33273:25;;33324:9;33319:305;33343:9;:16;;;;33339:1;:20;33319:305;;;33413:7;33389;:21;33397:9;33407:1;33397:12;;;;;;;;;;;;;;;;;;;;;;;;;33389:21;;;;;;;;;;;;;;;;:31;:66;;;;33448:7;33424;:21;33432:9;33442:1;33432:12;;;;;;;;;;;;;;;;;;;;;;;;;33424:21;;;;;;;;;;;;;;;;:31;33389:66;33385:97;;;33465:7;;33474;;33457:25;;;;;;;;;33385:97;33511:34;33523:7;:21;33531:9;33541:1;33531:12;;;;;;;;;;;;;;;;;;;;;;;;;33523:21;;;;;;;;;;;;;;;;33511:7;:11;;:34;;;;:::i;:::-;33501:44;;33574:34;33586:7;:21;33594:9;33604:1;33594:12;;;;;;;;;;;;;;;;;;;;;;;;;33586:21;;;;;;;;;;;;;;;;33574:7;:11;;:34;;;;:::i;:::-;33564:44;;33361:3;;;;;;;33319:305;;;;33652:20;33664:7;;33652;;:11;;:20;;;;:::i;:::-;33642:7;:30;33638:61;;;33682:7;;33691;;33674:25;;;;;;;;33638:61;33722:7;33731;33714:25;;;;;;33150:601;;;:::o;2131:205::-;2217:7;2253:1;2249;:5;2256:12;2241:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2284:9;2300:1;2296;:5;;;;;;2284:17;;2323:1;2316:8;;;2131:205;;;;;:::o;32189:396::-;32287:7;32296;32305;32329:12;32344:28;32368:3;32344:19;32356:6;32344:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;32329:43;;32387:18;32408:34;32438:3;32408:25;32420:12;32408:7;:11;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;32387:55;;32457:23;32483:33;32505:10;32483:17;32495:4;32483:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;32457:59;;32539:15;32556:4;32562:10;32531:42;;;;;;;;;32189:396;;;;;;;:::o;32597:354::-;32692:7;32701;32710;32734:15;32752:24;32764:11;32752:7;:11;;:24;;;;:::i;:::-;32734:42;;32791:12;32806:21;32815:11;32806:4;:8;;:21;;;;:::i;:::-;32791:36;;32842:23;32868:17;32880:4;32868:7;:11;;:17;;;;:::i;:::-;32842:43;;32908:7;32917:15;32934:4;32900:39;;;;;;;;;32597:354;;;;;;;:::o;1697:274::-;1755:7;1788:1;1783;:6;1779:55;;;1817:1;1810:8;;;;1779:55;1848:9;1864:1;1860;:5;1848:17;;1897:1;1892;1888;:5;;;;;;:10;1880:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1958:1;1951:8;;;1697:274;;;;;:::o;22856:282::-;22917:1;22906:7;;:12;:34;;;;;22939:1;22922:13;;:18;22906:34;22903:46;;;22942:7;;22903:46;22995:7;;22977:15;:25;;;;23041:13;;23017:21;:37;;;;23093:1;23083:7;:11;;;;23125:1;23109:13;:17;;;;22856:282;:::o;29712:599::-;29819:15;29836:23;29861:12;29875:23;29900:12;29914:18;29936:19;29947:7;29936:10;:19::i;:::-;29818:137;;;;;;;;;;;;29988:28;30008:7;29988;:15;29996:6;29988:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;29970:7;:15;29978:6;29970:15;;;;;;;;;;;;;;;:46;;;;30049:28;30069:7;30049;:15;30057:6;30049:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;30031:7;:15;30039:6;30031:15;;;;;;;;;;;;;;;:46;;;;30113:39;30136:15;30113:7;:18;30121:9;30113:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;30092:7;:18;30100:9;30092:18;;;;;;;;;;;;;;;:60;;;;30168:26;30183:10;30168:14;:26::i;:::-;30212:23;30224:4;30230;30212:11;:23::i;:::-;30272:9;30255:44;;30264:6;30255:44;;;30283:15;30255:44;;;;;;;;;;;;;;;;;;29712:599;;;;;;;;;:::o;29078:622::-;29183:15;29200:23;29225:12;29239:23;29264:12;29278:18;29300:19;29311:7;29300:10;:19::i;:::-;29182:137;;;;;;;;;;;;29352:28;29372:7;29352;:15;29360:6;29352:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;29334:7;:15;29342:6;29334:15;;;;;;;;;;;;;;;:46;;;;29416:39;29439:15;29416:7;:18;29424:9;29416:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;29395:7;:18;29403:9;29395:18;;;;;;;;;;;;;;;:60;;;;29491:39;29514:15;29491:7;:18;29499:9;29491:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;29470:7;:18;29478:9;29470:18;;;;;;;;;;;;;;;:60;;;;29549:26;29564:10;29549:14;:26::i;:::-;29601:23;29613:4;29619;29601:11;:23::i;:::-;29661:9;29644:44;;29653:6;29644:44;;;29672:15;29644:44;;;;;;;;;;;;;;;;;;29078:622;;;;;;;;;:::o;28534:532::-;28637:15;28654:23;28679:12;28693:23;28718:12;28732:18;28754:19;28765:7;28754:10;:19::i;:::-;28636:137;;;;;;;;;;;;28806:28;28826:7;28806;:15;28814:6;28806:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;28788:7;:15;28796:6;28788:15;;;;;;;;;;;;;;;:46;;;;28870:39;28893:15;28870:7;:18;28878:9;28870:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;28849:7;:18;28857:9;28849:18;;;;;;;;;;;;;;;:60;;;;28925:26;28940:10;28925:14;:26::i;:::-;28967:23;28979:4;28985;28967:11;:23::i;:::-;29027:9;29010:44;;29019:6;29010:44;;;29038:15;29010:44;;;;;;;;;;;;;;;;;;28534:532;;;;;;;;;:::o;30323:682::-;30430:15;30447:23;30472:12;30486:23;30511:12;30525:18;30547:19;30558:7;30547:10;:19::i;:::-;30429:137;;;;;;;;;;;;30599:28;30619:7;30599;:15;30607:6;30599:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;30581:7;:15;30589:6;30581:15;;;;;;;;;;;;;;;:46;;;;30660:28;30680:7;30660;:15;30668:6;30660:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;30642:7;:15;30650:6;30642:15;;;;;;;;;;;;;;;:46;;;;30724:39;30747:15;30724:7;:18;30732:9;30724:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;30703:7;:18;30711:9;30703:18;;;;;;;;;;;;;;;:60;;;;30799:39;30822:15;30799:7;:18;30807:9;30799:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;30778:7;:18;30786:9;30778:18;;;;;;;;;;;;;;;:60;;;;30856:26;30871:10;30856:14;:26::i;:::-;30906:23;30918:4;30924;30906:11;:23::i;:::-;30966:9;30949:44;;30958:6;30949:44;;;30977:15;30949:44;;;;;;;;;;;;;;;;;;30323:682;;;;;;;;;:::o;23154:137::-;23212:15;;23202:7;:25;;;;23258:21;;23242:13;:37;;;;23154:137::o;31017:379::-;31084:19;31107:10;:8;:10::i;:::-;31084:33;;31132:18;31153:27;31168:11;31153:10;:14;;:27;;;;:::i;:::-;31132:48;;31220:38;31247:10;31220:7;:22;31236:4;31220:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;31195:7;:22;31211:4;31195:22;;;;;;;;;;;;;;;:63;;;;31276:11;:26;31296:4;31276:26;;;;;;;;;;;;;;;;;;;;;;;;;31273:111;;;31346:38;31373:10;31346:7;:22;31362:4;31346:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;31321:7;:22;31337:4;31321:22;;;;;;;;;;;;;;;:63;;;;31273:111;31017:379;;;:::o;31408:159::-;31490:17;31502:4;31490:7;;:11;;:17;;;;:::i;:::-;31480:7;:27;;;;31535:20;31550:4;31535:10;;:14;;:20;;;;:::i;:::-;31522:10;:33;;;;31408:159;;:::o

Swarm Source

ipfs://2b0dc170ba06d1990d238150204823b4d0e89e013c78e5de5588ee13b6e9fe1d
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.