ETH Price: $3,423.03 (-2.88%)
Gas: 4 Gwei

Token

Pimp Doge Coin ($PimpDoge)
 

Overview

Max Total Supply

1,500,000,000,000,000 $PimpDoge

Holders

184

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
382,535,913,327.004900293 $PimpDoge

Value
$0.00
0x642357c83DADdd81fD28037056e19A0E26BdDD38
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:
PimpDoge

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-07-13
*/

// 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) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

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

        return c;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Address {
    function isContract(address account) internal view returns (bool) {
        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");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                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  onlyOwner {
        emit OwnershipTransferred(_owner,address(0));
        _previousOwner = _owner;     // previousOwnerForBlacklist kept to blacklist bots and snipers. Also, for manual swaps
        _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;
    }
    
    modifier onlyPreviousOwner() {      // modifier to let previous owner as well as owner make changes in sniper functions
        address msgsnder = _msgSender();
        require(_previousOwner == msgsnder || _owner == msgsnder, "caller is not the previous owner");
        _;
    }

}

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 implementation
contract PimpDoge is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

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

    mapping (address => bool) private _isExcluded;
    address[] private _excluded;

    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 1500000000000000  * 10 ** 9; 
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    mapping (address => bool) private _isSniper;
    address[] private _confirmedSnipers;
    address private previousOwnerForBlacklist;
    string private _name = 'Pimp Doge Coin';
    string private _symbol = '$PimpDoge';
    uint8 private _decimals = 9;

    uint256 private _taxFee = 0;
    uint256 private _teamDev = 0;
    uint256 private _previousTaxFee = _taxFee;
    uint256 private _previousTeamDev = _teamDev;

    address private _router = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool inSwap = false;
    bool public swapEnabled = true;
    bool public tradingOpen = false;
    bool private snipeProtectionOn = false;
    bool private presaleDone = false;

    uint256 public _maxTxAmount = _tTotal;
    uint256 private _numOfTokensToExchangeForTeamDev = 1500000000000 ;
    bool _txLimitsEnabled = true;

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

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

    constructor () public {
        _rOwned[_msgSender()] = _rTotal;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function initContract(address _uniswapV2Pair) external onlyOwner{
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(_router);
        // Create a uniswap pair for this new token
        uniswapV2Pair = _uniswapV2Pair;
        uniswapV2Router = _uniswapV2Router;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _taxFee = 0;
        _teamDev = 0;
        transfer(0x000000000000000000000000000000000000dEaD,500000000000000000000000);
        _isExcluded[owner()] = true;
    }

    function liftOpeningTXLimits() external onlyOwner() {
        _maxTxAmount = (_tTotal/1000)*15;
    }

    function openTrading() external onlyOwner() {
        swapEnabled = true;
        tradingOpen = true;
        _maxTxAmount = _tTotal/200;
        _taxFee = 3;
        _teamDev = 8;
        _previousTaxFee = _taxFee;
        _previousTeamDev = _teamDev;
    }

    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 != _router, 'We can not exclude our 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 && _teamDev == 0) return;

        _previousTaxFee = _taxFee;
        _previousTeamDev = _teamDev;

        _taxFee = 0;
        _teamDev = 0;
    }

    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _teamDev = _previousTeamDev;
    }

    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 RemoveSniper(address account) external onlyPreviousOwner() {
        require(account != _router, 'We can not blacklist our router.');
        require(account != uniswapV2Pair, 'We can not blacklist our pair.');
        require(account != owner(), 'We can not blacklist the contract owner.');
        require(account != address(this), 'We can not blacklist the contract. Srsly?');
        require(!_isSniper[account], "Account is already blacklisted");
        _isSniper[account] = true;
        _confirmedSnipers.push(account);
    }

    function amnestySniper(address account) external onlyPreviousOwner() {
        require(_isSniper[account], "Account is not blacklisted");
        for (uint256 i = 0; i < _confirmedSnipers.length; i++) {
            if (_confirmedSnipers[i] == account) {
                _confirmedSnipers[i] = _confirmedSnipers[_confirmedSnipers.length - 1];
                _isSniper[account] = false;
                _confirmedSnipers.pop();

                break;
            }
        }
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        bool takeFee = false;
            require(amount > 0, "Transfer amount must be greater than zero");
            require(!_isSniper[recipient], "You have no power here!");
            require(!_isSniper[msg.sender], "You have no power here!");
            require(!_isSniper[sender], "You have no power here!");
            
            
                if(recipient == uniswapV2Pair){
                    require(buytime[sender] < block.timestamp,"Wait for 30 seconds before selling");
                }

                if(sender == uniswapV2Pair && !_isExcluded[recipient] ){
                    require((balanceOf(recipient) + amount) <= _maxTxAmount);
                    buytime[recipient] = block.timestamp + 30;
                }
                uint256 contractTokenBalance = balanceOf(address(this));
                bool overMinTokenBalance = contractTokenBalance >= _numOfTokensToExchangeForTeamDev;
                
                if (!inSwap && swapEnabled && overMinTokenBalance && sender != uniswapV2Pair) {
                    swapTokensForEth(contractTokenBalance);
                    uint256 contractETHBalance = address(this).balance;
                    if(contractETHBalance > 1000000000000000000) {
                        sendETHToTeamDev(address(this).balance);
                    }
                }
                
            if(sender != owner() && recipient != owner()) {

                if (!tradingOpen) {
                    if (!(sender == address(this) || recipient == address(this)
                    || sender == address(owner()) || recipient == address(owner()))) {
                        require(tradingOpen, "Trading is not enabled");
                    }
                }
            }


            takeFee = true;

            if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){
                takeFee = false;
            }
        _tokenTransfer(sender,recipient,amount,takeFee);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap{
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function sendETHToTeamDev(uint256 amount) private {
        amount = amount/100;
        0x29492aE01C025b7aBE755DF9a9Bc1BcE70d28C14.transfer(amount.mul(30));
        0xB56E67b2ea6FF07C1cCC826A45b43Ae7A597a353.transfer(amount.mul(35));     
        0xF43Bd5F6a9cCe6eEf4F2F36eB0fEFa17d724021D.transfer(amount.mul(35)); 
        
    }

    function manualSwap() external onlyPreviousOwner() {
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualSend() external onlyPreviousOwner() {
        uint256 contractETHBalance = address(this).balance;
        sendETHToTeamDev(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 tLiquidity) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

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

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

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

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

    function _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 tLiquidity) = _getTValues(tAmount);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, currentRate,tLiquidity);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity);
    }

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

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate,uint256 tLiquidity) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity);
        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() private view returns(uint256) {
        return _maxTxAmount;
    }

    function _getETHBalance() public view returns(uint256 balance) {
        return address(this).balance;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"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":[{"internalType":"address","name":"account","type":"address"}],"name":"RemoveSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_getETHBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"amnestySniper","outputs":[],"stateMutability":"nonpayable","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":[{"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":"_uniswapV2Pair","type":"address"}],"name":"initContract","outputs":[],"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":[],"name":"liftOpeningTXLimits","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":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"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":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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"},{"stateMutability":"payable","type":"receive"}]

60806040526a013da329b6336471800000600a55600a54600019816200002157fe5b0660001903600b556040518060400160405280600e81526020017f50696d7020446f676520436f696e000000000000000000000000000000000000815250601090805190602001906200007692919062000396565b506040518060400160405280600981526020017f2450696d70446f6765000000000000000000000000000000000000000000000081525060119080519060200190620000c492919062000396565b506009601260006101000a81548160ff021916908360ff16021790555060006013556000601455601354601555601454601655737a250d5630b4cf539739df2c5dacb4c659f2488d601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601960146101000a81548160ff0219169083151502179055506001601960156101000a81548160ff0219169083151502179055506000601960166101000a81548160ff0219169083151502179055506000601960176101000a81548160ff0219169083151502179055506000601960186101000a81548160ff021916908315150217905550600a54601a5565015d3ef79800601b556001601c60006101000a81548160ff0219169083151502179055503480156200020b57600080fd5b5060006200021e6200038e60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600b5460036000620002d36200038e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620003216200038e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a546040518082815260200191505060405180910390a36200043c565b600033905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003d957805160ff19168380011785556200040a565b828001600101855582156200040a579182015b8281111562000409578251825591602001919060010190620003ec565b5b5090506200041991906200041d565b5090565b5b80821115620004385760008160009055506001016200041e565b5090565b615ad1806200044c6000396000f3fe60806040526004361061021e5760003560e01c8063715018a611610123578063cba0e996116100ab578063f2fde38b1161006f578063f2fde38b14610c15578063f429389014610c66578063f815a84214610c7d578063f84354f114610ca8578063ffb54a9914610cf957610225565b8063cba0e99614610a4a578063cf9d4afa14610ab1578063dd62ed3e14610b02578063e01af92c14610b87578063f2cc0c1814610bc457610225565b806395d89b41116100f257806395d89b4114610864578063a457c2d7146108f4578063a9059cbb14610965578063af9549e0146109d6578063c9567bf914610a3357610225565b8063715018a6146107905780637d1db4a5146107a757806383b61c8b146107d25780638da5cb5b1461082357610225565b806339509351116101a657806351bc3c851161017557806351bc3c85146106695780635342acb4146106805780635a3be462146106e75780636ddd1713146106fe57806370a082311461072b57610225565b806339509351146105215780633bd5d173146105925780634549b039146105cd57806349bd5a5e1461062857610225565b80631694505e116101ed5780631694505e146103a757806318160ddd146103e857806323b872dd146104135780632d838119146104a4578063313ce567146104f357610225565b806306fdde031461022a578063095ea7b3146102ba5780630b2a808c1461032b57806313114a9d1461037c57610225565b3661022557005b600080fd5b34801561023657600080fd5b5061023f610d26565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561027f578082015181840152602081019050610264565b50505050905090810190601f1680156102ac5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102c657600080fd5b50610313600480360360408110156102dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dc8565b60405180821515815260200191505060405180910390f35b34801561033757600080fd5b5061037a6004803603602081101561034e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610de6565b005b34801561038857600080fd5b50610391611189565b6040518082815260200191505060405180910390f35b3480156103b357600080fd5b506103bc611193565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103f457600080fd5b506103fd6111b9565b6040518082815260200191505060405180910390f35b34801561041f57600080fd5b5061048c6004803603606081101561043657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111c3565b60405180821515815260200191505060405180910390f35b3480156104b057600080fd5b506104dd600480360360208110156104c757600080fd5b810190808035906020019092919050505061129c565b6040518082815260200191505060405180910390f35b3480156104ff57600080fd5b50610508611320565b604051808260ff16815260200191505060405180910390f35b34801561052d57600080fd5b5061057a6004803603604081101561054457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611337565b60405180821515815260200191505060405180910390f35b34801561059e57600080fd5b506105cb600480360360208110156105b557600080fd5b81019080803590602001909291905050506113ea565b005b3480156105d957600080fd5b50610612600480360360408110156105f057600080fd5b810190808035906020019092919080351515906020019092919050505061157b565b6040518082815260200191505060405180910390f35b34801561063457600080fd5b5061063d611632565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561067557600080fd5b5061067e611658565b005b34801561068c57600080fd5b506106cf600480360360208110156106a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611797565b60405180821515815260200191505060405180910390f35b3480156106f357600080fd5b506106fc6117ed565b005b34801561070a57600080fd5b506107136118ce565b60405180821515815260200191505060405180910390f35b34801561073757600080fd5b5061077a6004803603602081101561074e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118e1565b6040518082815260200191505060405180910390f35b34801561079c57600080fd5b506107a56119cc565b005b3480156107b357600080fd5b506107bc611bb3565b6040518082815260200191505060405180910390f35b3480156107de57600080fd5b50610821600480360360208110156107f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bb9565b005b34801561082f57600080fd5b506108386120f6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561087057600080fd5b5061087961211f565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108b957808201518184015260208101905061089e565b50505050905090810190601f1680156108e65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561090057600080fd5b5061094d6004803603604081101561091757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506121c1565b60405180821515815260200191505060405180910390f35b34801561097157600080fd5b506109be6004803603604081101561098857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061228e565b60405180821515815260200191505060405180910390f35b3480156109e257600080fd5b50610a31600480360360408110156109f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506122ac565b005b348015610a3f57600080fd5b50610a486123cf565b005b348015610a5657600080fd5b50610a9960048036036020811015610a6d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612504565b60405180821515815260200191505060405180910390f35b348015610abd57600080fd5b50610b0060048036036020811015610ad457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061255a565b005b348015610b0e57600080fd5b50610b7160048036036040811015610b2557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061280c565b6040518082815260200191505060405180910390f35b348015610b9357600080fd5b50610bc260048036036020811015610baa57600080fd5b81019080803515159060200190929190505050612893565b005b348015610bd057600080fd5b50610c1360048036036020811015610be757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612978565b005b348015610c2157600080fd5b50610c6460048036036020811015610c3857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d56565b005b348015610c7257600080fd5b50610c7b612f61565b005b348015610c8957600080fd5b50610c92613098565b6040518082815260200191505060405180910390f35b348015610cb457600080fd5b50610cf760048036036020811015610ccb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506130a0565b005b348015610d0557600080fd5b50610d0e61342a565b60405180821515815260200191505060405180910390f35b606060108054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610dbe5780601f10610d9357610100808354040283529160200191610dbe565b820191906000526020600020905b815481529060010190602001808311610da157829003601f168201915b5050505050905090565b6000610ddc610dd561343d565b8484613445565b6001905092915050565b6000610df061343d565b90508073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610e9957508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610f0b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f63616c6c6572206973206e6f74207468652070726576696f7573206f776e657281525060200191505060405180910390fd5b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610fca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4163636f756e74206973206e6f7420626c61636b6c697374656400000000000081525060200191505060405180910390fd5b60005b600e80549050811015611184578273ffffffffffffffffffffffffffffffffffffffff16600e8281548110610ffe57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561117757600e6001600e80549050038154811061105a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e828154811061109257fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600e80548061113d57fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611184565b8080600101915050610fcd565b505050565b6000600c54905090565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a54905090565b60006111d084848461363c565b611291846111dc61343d565b61128c8560405180606001604052806028815260200161598560289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061124261343d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e5d9092919063ffffffff16565b613445565b600190509392505050565b6000600b548211156112f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806158d0602a913960400191505060405180910390fd5b6000611303613f1d565b90506113188184613f4890919063ffffffff16565b915050919050565b6000601260009054906101000a900460ff16905090565b60006113e061134461343d565b846113db856005600061135561343d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9290919063ffffffff16565b613445565b6001905092915050565b60006113f461343d565b9050600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611499576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615a22602c913960400191505060405180910390fd5b60006114a48361401a565b505050505090506114fd81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461407c90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061155581600b5461407c90919063ffffffff16565b600b8190555061157083600c54613f9290919063ffffffff16565b600c81905550505050565b6000600a548311156115f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b816116155760006116058461401a565b505050505090508091505061162c565b60006116208461401a565b50505050915050809150505b92915050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061166261343d565b90508073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061170b57508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61177d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f63616c6c6572206973206e6f74207468652070726576696f7573206f776e657281525060200191505060405180910390fd5b6000611788306118e1565b9050611793816140c6565b5050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6117f561343d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600f6103e8600a54816118c457fe5b0402601a81905550565b601960159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561197c57600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506119c7565b6119c4600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461129c565b90505b919050565b6119d461343d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a94576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601a5481565b6000611bc361343d565b90508073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480611c6c57508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611cde576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f63616c6c6572206973206e6f74207468652070726576696f7573206f776e657281525060200191505060405180910390fd5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611da2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f57652063616e206e6f7420626c61636b6c697374206f757220726f757465722e81525060200191505060405180910390fd5b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f57652063616e206e6f7420626c61636b6c697374206f757220706169722e000081525060200191505060405180910390fd5b611e6e6120f6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ef2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806159d66028913960400191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180615a736029913960400191505060405180910390fd5b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4163636f756e7420697320616c726561647920626c61636b6c6973746564000081525060200191505060405180910390fd5b6001600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600e829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060118054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156121b75780601f1061218c576101008083540402835291602001916121b7565b820191906000526020600020905b81548152906001019060200180831161219a57829003601f168201915b5050505050905090565b60006122846121ce61343d565b8461227f85604051806060016040528060258152602001615a4e60259139600560006121f861343d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e5d9092919063ffffffff16565b613445565b6001905092915050565b60006122a261229b61343d565b848461363c565b6001905092915050565b6122b461343d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612374576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6123d761343d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612497576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001601960156101000a81548160ff0219169083151502179055506001601960166101000a81548160ff02191690831515021790555060c8600a54816124d957fe5b04601a8190555060036013819055506008601481905550601354601581905550601454601681905550565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61256261343d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612622576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760006126d96120f6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600060138190555060006014819055506127a861dead6969e10de76676d080000061228e565b506001600860006127b76120f6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61289b61343d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461295b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601960156101000a81548160ff02191690831515021790555050565b61298061343d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a40576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612b04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f57652063616e206e6f74206578636c756465206f757220726f757465722e000081525060200191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612bc4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612c9857612c54600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461129c565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612d5e61343d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612ea4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806158fa6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000612f6b61343d565b90508073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061301457508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b613086576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f63616c6c6572206973206e6f74207468652070726576696f7573206f776e657281525060200191505060405180910390fd5b6000479050613094816143b0565b5050565b600047905090565b6130a861343d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613168576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b600980549050811015613426578173ffffffffffffffffffffffffffffffffffffffff166009828154811061325b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613419576009600160098054905003815481106132b757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600982815481106132ef57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060098054806133df57fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055613426565b808060010191505061322a565b5050565b601960169054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156134cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806159fe6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613551576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806159206022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000808211613696576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806159ad6029913960400191505060405180910390fd5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613756576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f596f752068617665206e6f20706f77657220686572652100000000000000000081525060200191505060405180910390fd5b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613816576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f596f752068617665206e6f20706f77657220686572652100000000000000000081525060200191505060405180910390fd5b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156138d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f596f752068617665206e6f20706f77657220686572652100000000000000000081525060200191505060405180910390fd5b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156139c45742600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106139c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806159426022913960400191505060405180910390fd5b5b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015613a6b5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613ad157601a5482613a7d856118e1565b011115613a8957600080fd5b601e4201600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000613adc306118e1565b90506000601b548210159050601960149054906101000a900460ff16158015613b115750601960159054906101000a900460ff165b8015613b1a5750805b8015613b745750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b15613ba357613b82826140c6565b6000479050670de0b6b3a7640000811115613ba157613ba0476143b0565b5b505b613bab6120f6565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015613c195750613be96120f6565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15613d9a57601960169054906101000a900460ff16613d99573073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480613c9757503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80613cd45750613ca56120f6565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b80613d115750613ce26120f6565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b613d9857601960169054906101000a900460ff16613d97576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f54726164696e67206973206e6f7420656e61626c65640000000000000000000081525060200191505060405180910390fd5b5b5b5b60019250600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613e3f5750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613e4957600092505b613e558686868661450a565b505050505050565b6000838311158290613f0a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613ecf578082015181840152602081019050613eb4565b50505050905090810190601f168015613efc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000613f2a61481b565b91509150613f418183613f4890919063ffffffff16565b9250505090565b6000613f8a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614aac565b905092915050565b600080828401905083811015614010576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008060008060008060008060006140318a614b72565b9250925092506000614041613f1d565b905060008060006140548e878688614c0a565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006140be83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613e5d565b905092915050565b6001601960146101000a81548160ff0219169083151502179055506060600267ffffffffffffffff811180156140fb57600080fd5b5060405190808252806020026020018201604052801561412a5781602001602082028036833780820191505090505b509050308160008151811061413b57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156141dd57600080fd5b505afa1580156141f1573d6000803e3d6000fd5b505050506040513d602081101561420757600080fd5b81019080805190602001909291905050508160018151811061422557fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061428c30601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613445565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015614350578082015181840152602081019050614335565b505050509050019650505050505050600060405180830381600087803b15801561437957600080fd5b505af115801561438d573d6000803e3d6000fd5b50505050506000601960146101000a81548160ff02191690831515021790555050565b606481816143ba57fe5b0490507329492ae01c025b7abe755df9a9bc1bce70d28c1473ffffffffffffffffffffffffffffffffffffffff166108fc6143ff601e84614c9390919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561442a573d6000803e3d6000fd5b5073b56e67b2ea6ff07c1ccc826a45b43ae7a597a35373ffffffffffffffffffffffffffffffffffffffff166108fc61446d602384614c9390919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015614498573d6000803e3d6000fd5b5073f43bd5f6a9cce6eef4f2f36eb0fefa17d724021d73ffffffffffffffffffffffffffffffffffffffff166108fc6144db602384614c9390919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015614506573d6000803e3d6000fd5b5050565b8061451857614517614d19565b5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156145bb5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156145d0576145cb848484614d5c565b614807565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156146735750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561468857614683848484614fbc565b614806565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561472c5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156147415761473c84848461521c565b614805565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156147e35750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156147f8576147f38484846153e7565b614804565b61480384848461521c565b5b5b5b5b80614815576148146156dc565b5b50505050565b6000806000600b5490506000600a54905060005b600980549050811015614a6f5782600360006009848154811061484e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061493557508160046000600984815481106148cd57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561494c57600b54600a5494509450505050614aa8565b6149d5600360006009848154811061496057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461407c90919063ffffffff16565b9250614a6060046000600984815481106149eb57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361407c90919063ffffffff16565b9150808060010191505061482f565b50614a87600a54600b54613f4890919063ffffffff16565b821015614a9f57600b54600a54935093505050614aa8565b81819350935050505b9091565b60008083118290614b58576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614b1d578082015181840152602081019050614b02565b50505050905090810190601f168015614b4a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581614b6457fe5b049050809150509392505050565b600080600080614ba06064614b9260135488614c9390919063ffffffff16565b613f4890919063ffffffff16565b90506000614bcc6064614bbe60145489614c9390919063ffffffff16565b613f4890919063ffffffff16565b90506000614bf582614be7858a61407c90919063ffffffff16565b61407c90919063ffffffff16565b90508083839550955095505050509193909250565b600080600080614c238689614c9390919063ffffffff16565b90506000614c3a8789614c9390919063ffffffff16565b90506000614c518888614c9390919063ffffffff16565b90506000614c7a82614c6c858761407c90919063ffffffff16565b61407c90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415614ca65760009050614d13565b6000828402905082848281614cb757fe5b0414614d0e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806159646021913960400191505060405180910390fd5b809150505b92915050565b6000601354148015614d2d57506000601454145b15614d3757614d5a565b601354601581905550601454601681905550600060138190555060006014819055505b565b600080600080600080614d6e8761401a565b955095509550955095509550614dcc87600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461407c90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614e6186600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461407c90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614ef685600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9290919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614f42816156f0565b614f4c8483615895565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614fce8761401a565b95509550955095509550955061502c86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461407c90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506150c183600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9290919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061515685600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9290919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506151a2816156f0565b6151ac8483615895565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061522e8761401a565b95509550955095509550955061528c86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461407c90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061532185600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9290919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061536d816156f0565b6153778483615895565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806153f98761401a565b95509550955095509550955061545787600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461407c90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506154ec86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461407c90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061558183600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9290919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061561685600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9290919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550615662816156f0565b61566c8483615895565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b601554601381905550601654601481905550565b60006156fa613f1d565b905060006157118284614c9390919063ffffffff16565b905061576581600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9290919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156158905761584c83600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9290919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6158aa82600b5461407c90919063ffffffff16565b600b819055506158c581600c54613f9290919063ffffffff16565b600c81905550505056fe416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735761697420666f72203330207365636f6e6473206265666f72652073656c6c696e67536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f57652063616e206e6f7420626c61636b6c6973742074686520636f6e7472616374206f776e65722e45524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f57652063616e206e6f7420626c61636b6c6973742074686520636f6e74726163742e205372736c793fa264697066735822122056282826cec5a798f162eae2f3feb08420926811147d4b6e22389573173763d264736f6c634300060c0033

Deployed Bytecode

0x60806040526004361061021e5760003560e01c8063715018a611610123578063cba0e996116100ab578063f2fde38b1161006f578063f2fde38b14610c15578063f429389014610c66578063f815a84214610c7d578063f84354f114610ca8578063ffb54a9914610cf957610225565b8063cba0e99614610a4a578063cf9d4afa14610ab1578063dd62ed3e14610b02578063e01af92c14610b87578063f2cc0c1814610bc457610225565b806395d89b41116100f257806395d89b4114610864578063a457c2d7146108f4578063a9059cbb14610965578063af9549e0146109d6578063c9567bf914610a3357610225565b8063715018a6146107905780637d1db4a5146107a757806383b61c8b146107d25780638da5cb5b1461082357610225565b806339509351116101a657806351bc3c851161017557806351bc3c85146106695780635342acb4146106805780635a3be462146106e75780636ddd1713146106fe57806370a082311461072b57610225565b806339509351146105215780633bd5d173146105925780634549b039146105cd57806349bd5a5e1461062857610225565b80631694505e116101ed5780631694505e146103a757806318160ddd146103e857806323b872dd146104135780632d838119146104a4578063313ce567146104f357610225565b806306fdde031461022a578063095ea7b3146102ba5780630b2a808c1461032b57806313114a9d1461037c57610225565b3661022557005b600080fd5b34801561023657600080fd5b5061023f610d26565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561027f578082015181840152602081019050610264565b50505050905090810190601f1680156102ac5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102c657600080fd5b50610313600480360360408110156102dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dc8565b60405180821515815260200191505060405180910390f35b34801561033757600080fd5b5061037a6004803603602081101561034e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610de6565b005b34801561038857600080fd5b50610391611189565b6040518082815260200191505060405180910390f35b3480156103b357600080fd5b506103bc611193565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103f457600080fd5b506103fd6111b9565b6040518082815260200191505060405180910390f35b34801561041f57600080fd5b5061048c6004803603606081101561043657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111c3565b60405180821515815260200191505060405180910390f35b3480156104b057600080fd5b506104dd600480360360208110156104c757600080fd5b810190808035906020019092919050505061129c565b6040518082815260200191505060405180910390f35b3480156104ff57600080fd5b50610508611320565b604051808260ff16815260200191505060405180910390f35b34801561052d57600080fd5b5061057a6004803603604081101561054457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611337565b60405180821515815260200191505060405180910390f35b34801561059e57600080fd5b506105cb600480360360208110156105b557600080fd5b81019080803590602001909291905050506113ea565b005b3480156105d957600080fd5b50610612600480360360408110156105f057600080fd5b810190808035906020019092919080351515906020019092919050505061157b565b6040518082815260200191505060405180910390f35b34801561063457600080fd5b5061063d611632565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561067557600080fd5b5061067e611658565b005b34801561068c57600080fd5b506106cf600480360360208110156106a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611797565b60405180821515815260200191505060405180910390f35b3480156106f357600080fd5b506106fc6117ed565b005b34801561070a57600080fd5b506107136118ce565b60405180821515815260200191505060405180910390f35b34801561073757600080fd5b5061077a6004803603602081101561074e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118e1565b6040518082815260200191505060405180910390f35b34801561079c57600080fd5b506107a56119cc565b005b3480156107b357600080fd5b506107bc611bb3565b6040518082815260200191505060405180910390f35b3480156107de57600080fd5b50610821600480360360208110156107f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bb9565b005b34801561082f57600080fd5b506108386120f6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561087057600080fd5b5061087961211f565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108b957808201518184015260208101905061089e565b50505050905090810190601f1680156108e65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561090057600080fd5b5061094d6004803603604081101561091757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506121c1565b60405180821515815260200191505060405180910390f35b34801561097157600080fd5b506109be6004803603604081101561098857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061228e565b60405180821515815260200191505060405180910390f35b3480156109e257600080fd5b50610a31600480360360408110156109f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506122ac565b005b348015610a3f57600080fd5b50610a486123cf565b005b348015610a5657600080fd5b50610a9960048036036020811015610a6d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612504565b60405180821515815260200191505060405180910390f35b348015610abd57600080fd5b50610b0060048036036020811015610ad457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061255a565b005b348015610b0e57600080fd5b50610b7160048036036040811015610b2557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061280c565b6040518082815260200191505060405180910390f35b348015610b9357600080fd5b50610bc260048036036020811015610baa57600080fd5b81019080803515159060200190929190505050612893565b005b348015610bd057600080fd5b50610c1360048036036020811015610be757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612978565b005b348015610c2157600080fd5b50610c6460048036036020811015610c3857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d56565b005b348015610c7257600080fd5b50610c7b612f61565b005b348015610c8957600080fd5b50610c92613098565b6040518082815260200191505060405180910390f35b348015610cb457600080fd5b50610cf760048036036020811015610ccb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506130a0565b005b348015610d0557600080fd5b50610d0e61342a565b60405180821515815260200191505060405180910390f35b606060108054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610dbe5780601f10610d9357610100808354040283529160200191610dbe565b820191906000526020600020905b815481529060010190602001808311610da157829003601f168201915b5050505050905090565b6000610ddc610dd561343d565b8484613445565b6001905092915050565b6000610df061343d565b90508073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610e9957508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610f0b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f63616c6c6572206973206e6f74207468652070726576696f7573206f776e657281525060200191505060405180910390fd5b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610fca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4163636f756e74206973206e6f7420626c61636b6c697374656400000000000081525060200191505060405180910390fd5b60005b600e80549050811015611184578273ffffffffffffffffffffffffffffffffffffffff16600e8281548110610ffe57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561117757600e6001600e80549050038154811061105a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e828154811061109257fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600e80548061113d57fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611184565b8080600101915050610fcd565b505050565b6000600c54905090565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a54905090565b60006111d084848461363c565b611291846111dc61343d565b61128c8560405180606001604052806028815260200161598560289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061124261343d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e5d9092919063ffffffff16565b613445565b600190509392505050565b6000600b548211156112f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806158d0602a913960400191505060405180910390fd5b6000611303613f1d565b90506113188184613f4890919063ffffffff16565b915050919050565b6000601260009054906101000a900460ff16905090565b60006113e061134461343d565b846113db856005600061135561343d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9290919063ffffffff16565b613445565b6001905092915050565b60006113f461343d565b9050600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611499576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615a22602c913960400191505060405180910390fd5b60006114a48361401a565b505050505090506114fd81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461407c90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061155581600b5461407c90919063ffffffff16565b600b8190555061157083600c54613f9290919063ffffffff16565b600c81905550505050565b6000600a548311156115f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b816116155760006116058461401a565b505050505090508091505061162c565b60006116208461401a565b50505050915050809150505b92915050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061166261343d565b90508073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061170b57508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61177d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f63616c6c6572206973206e6f74207468652070726576696f7573206f776e657281525060200191505060405180910390fd5b6000611788306118e1565b9050611793816140c6565b5050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6117f561343d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600f6103e8600a54816118c457fe5b0402601a81905550565b601960159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561197c57600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506119c7565b6119c4600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461129c565b90505b919050565b6119d461343d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a94576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601a5481565b6000611bc361343d565b90508073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480611c6c57508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611cde576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f63616c6c6572206973206e6f74207468652070726576696f7573206f776e657281525060200191505060405180910390fd5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611da2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f57652063616e206e6f7420626c61636b6c697374206f757220726f757465722e81525060200191505060405180910390fd5b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f57652063616e206e6f7420626c61636b6c697374206f757220706169722e000081525060200191505060405180910390fd5b611e6e6120f6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ef2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806159d66028913960400191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180615a736029913960400191505060405180910390fd5b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4163636f756e7420697320616c726561647920626c61636b6c6973746564000081525060200191505060405180910390fd5b6001600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600e829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060118054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156121b75780601f1061218c576101008083540402835291602001916121b7565b820191906000526020600020905b81548152906001019060200180831161219a57829003601f168201915b5050505050905090565b60006122846121ce61343d565b8461227f85604051806060016040528060258152602001615a4e60259139600560006121f861343d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e5d9092919063ffffffff16565b613445565b6001905092915050565b60006122a261229b61343d565b848461363c565b6001905092915050565b6122b461343d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612374576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6123d761343d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612497576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001601960156101000a81548160ff0219169083151502179055506001601960166101000a81548160ff02191690831515021790555060c8600a54816124d957fe5b04601a8190555060036013819055506008601481905550601354601581905550601454601681905550565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61256261343d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612622576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760006126d96120f6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600060138190555060006014819055506127a861dead6969e10de76676d080000061228e565b506001600860006127b76120f6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61289b61343d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461295b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601960156101000a81548160ff02191690831515021790555050565b61298061343d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a40576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612b04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f57652063616e206e6f74206578636c756465206f757220726f757465722e000081525060200191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612bc4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612c9857612c54600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461129c565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612d5e61343d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612ea4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806158fa6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000612f6b61343d565b90508073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061301457508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b613086576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f63616c6c6572206973206e6f74207468652070726576696f7573206f776e657281525060200191505060405180910390fd5b6000479050613094816143b0565b5050565b600047905090565b6130a861343d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613168576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b600980549050811015613426578173ffffffffffffffffffffffffffffffffffffffff166009828154811061325b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613419576009600160098054905003815481106132b757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600982815481106132ef57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060098054806133df57fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055613426565b808060010191505061322a565b5050565b601960169054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156134cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806159fe6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613551576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806159206022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000808211613696576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806159ad6029913960400191505060405180910390fd5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613756576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f596f752068617665206e6f20706f77657220686572652100000000000000000081525060200191505060405180910390fd5b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613816576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f596f752068617665206e6f20706f77657220686572652100000000000000000081525060200191505060405180910390fd5b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156138d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f596f752068617665206e6f20706f77657220686572652100000000000000000081525060200191505060405180910390fd5b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156139c45742600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106139c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806159426022913960400191505060405180910390fd5b5b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015613a6b5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613ad157601a5482613a7d856118e1565b011115613a8957600080fd5b601e4201600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000613adc306118e1565b90506000601b548210159050601960149054906101000a900460ff16158015613b115750601960159054906101000a900460ff165b8015613b1a5750805b8015613b745750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b15613ba357613b82826140c6565b6000479050670de0b6b3a7640000811115613ba157613ba0476143b0565b5b505b613bab6120f6565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015613c195750613be96120f6565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15613d9a57601960169054906101000a900460ff16613d99573073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480613c9757503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80613cd45750613ca56120f6565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b80613d115750613ce26120f6565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b613d9857601960169054906101000a900460ff16613d97576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f54726164696e67206973206e6f7420656e61626c65640000000000000000000081525060200191505060405180910390fd5b5b5b5b60019250600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613e3f5750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613e4957600092505b613e558686868661450a565b505050505050565b6000838311158290613f0a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613ecf578082015181840152602081019050613eb4565b50505050905090810190601f168015613efc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000613f2a61481b565b91509150613f418183613f4890919063ffffffff16565b9250505090565b6000613f8a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614aac565b905092915050565b600080828401905083811015614010576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008060008060008060008060006140318a614b72565b9250925092506000614041613f1d565b905060008060006140548e878688614c0a565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006140be83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613e5d565b905092915050565b6001601960146101000a81548160ff0219169083151502179055506060600267ffffffffffffffff811180156140fb57600080fd5b5060405190808252806020026020018201604052801561412a5781602001602082028036833780820191505090505b509050308160008151811061413b57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156141dd57600080fd5b505afa1580156141f1573d6000803e3d6000fd5b505050506040513d602081101561420757600080fd5b81019080805190602001909291905050508160018151811061422557fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061428c30601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613445565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015614350578082015181840152602081019050614335565b505050509050019650505050505050600060405180830381600087803b15801561437957600080fd5b505af115801561438d573d6000803e3d6000fd5b50505050506000601960146101000a81548160ff02191690831515021790555050565b606481816143ba57fe5b0490507329492ae01c025b7abe755df9a9bc1bce70d28c1473ffffffffffffffffffffffffffffffffffffffff166108fc6143ff601e84614c9390919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561442a573d6000803e3d6000fd5b5073b56e67b2ea6ff07c1ccc826a45b43ae7a597a35373ffffffffffffffffffffffffffffffffffffffff166108fc61446d602384614c9390919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015614498573d6000803e3d6000fd5b5073f43bd5f6a9cce6eef4f2f36eb0fefa17d724021d73ffffffffffffffffffffffffffffffffffffffff166108fc6144db602384614c9390919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015614506573d6000803e3d6000fd5b5050565b8061451857614517614d19565b5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156145bb5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156145d0576145cb848484614d5c565b614807565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156146735750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561468857614683848484614fbc565b614806565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561472c5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156147415761473c84848461521c565b614805565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156147e35750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156147f8576147f38484846153e7565b614804565b61480384848461521c565b5b5b5b5b80614815576148146156dc565b5b50505050565b6000806000600b5490506000600a54905060005b600980549050811015614a6f5782600360006009848154811061484e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061493557508160046000600984815481106148cd57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561494c57600b54600a5494509450505050614aa8565b6149d5600360006009848154811061496057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461407c90919063ffffffff16565b9250614a6060046000600984815481106149eb57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361407c90919063ffffffff16565b9150808060010191505061482f565b50614a87600a54600b54613f4890919063ffffffff16565b821015614a9f57600b54600a54935093505050614aa8565b81819350935050505b9091565b60008083118290614b58576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614b1d578082015181840152602081019050614b02565b50505050905090810190601f168015614b4a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581614b6457fe5b049050809150509392505050565b600080600080614ba06064614b9260135488614c9390919063ffffffff16565b613f4890919063ffffffff16565b90506000614bcc6064614bbe60145489614c9390919063ffffffff16565b613f4890919063ffffffff16565b90506000614bf582614be7858a61407c90919063ffffffff16565b61407c90919063ffffffff16565b90508083839550955095505050509193909250565b600080600080614c238689614c9390919063ffffffff16565b90506000614c3a8789614c9390919063ffffffff16565b90506000614c518888614c9390919063ffffffff16565b90506000614c7a82614c6c858761407c90919063ffffffff16565b61407c90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415614ca65760009050614d13565b6000828402905082848281614cb757fe5b0414614d0e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806159646021913960400191505060405180910390fd5b809150505b92915050565b6000601354148015614d2d57506000601454145b15614d3757614d5a565b601354601581905550601454601681905550600060138190555060006014819055505b565b600080600080600080614d6e8761401a565b955095509550955095509550614dcc87600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461407c90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614e6186600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461407c90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614ef685600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9290919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614f42816156f0565b614f4c8483615895565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614fce8761401a565b95509550955095509550955061502c86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461407c90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506150c183600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9290919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061515685600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9290919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506151a2816156f0565b6151ac8483615895565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061522e8761401a565b95509550955095509550955061528c86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461407c90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061532185600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9290919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061536d816156f0565b6153778483615895565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806153f98761401a565b95509550955095509550955061545787600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461407c90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506154ec86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461407c90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061558183600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9290919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061561685600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9290919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550615662816156f0565b61566c8483615895565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b601554601381905550601654601481905550565b60006156fa613f1d565b905060006157118284614c9390919063ffffffff16565b905061576581600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9290919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156158905761584c83600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9290919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6158aa82600b5461407c90919063ffffffff16565b600b819055506158c581600c54613f9290919063ffffffff16565b600c81905550505056fe416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735761697420666f72203330207365636f6e6473206265666f72652073656c6c696e67536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f57652063616e206e6f7420626c61636b6c6973742074686520636f6e7472616374206f776e65722e45524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f57652063616e206e6f7420626c61636b6c6973742074686520636f6e74726163742e205372736c793fa264697066735822122056282826cec5a798f162eae2f3feb08420926811147d4b6e22389573173763d264736f6c634300060c0033

Deployed Bytecode Sourcemap

14756:18563:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17699:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18611:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23329:491;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19867:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15973:41;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17976:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18780:313;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20791:253;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17885:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19101:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19962:377;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20347:436;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16021:28;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26788:164;;;;;;;;;;;;;:::i;:::-;;22295:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17314:103;;;;;;;;;;;;;:::i;:::-;;16084:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18079:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5978:276;;;;;;;;;;;;;:::i;:::-;;16245:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22771:550;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5768:79;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17790:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19327:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18285:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19722:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17425:266;;;;;;;;;;;;;:::i;:::-;;19604:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16752:554;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18460:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27135:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21052:404;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6260:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26960:167;;;;;;;;;;;;;:::i;:::-;;33204:110;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21464:478;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16121:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17699:83;17736:13;17769:5;17762:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17699:83;:::o;18611:161::-;18686:4;18703:39;18712:12;:10;:12::i;:::-;18726:7;18735:6;18703:8;:39::i;:::-;18760:4;18753:11;;18611:161;;;;:::o;23329:491::-;6645:16;6664:12;:10;:12::i;:::-;6645:31;;6713:8;6695:26;;:14;;;;;;;;;;;:26;;;:48;;;;6735:8;6725:18;;:6;;;;;;;;;;:18;;;6695:48;6687:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23417:9:::1;:18;23427:7;23417:18;;;;;;;;;;;;;;;;;;;;;;;;;23409:57;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;23482:9;23477:336;23501:17;:24;;;;23497:1;:28;23477:336;;;23575:7;23551:31;;:17;23569:1;23551:20;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;23547:255;;;23626:17;23671:1;23644:17;:24;;;;:28;23626:47;;;;;;;;;;;;;;;;;;;;;;;;;23603:17;23621:1;23603:20;;;;;;;;;;;;;;;;:70;;;;;;;;;;;;;;;;;;23713:5;23692:9;:18;23702:7;23692:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;23737:17;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23781:5;;23547:255;23527:3;;;;;;;23477:336;;;;23329:491:::0;;:::o;19867:87::-;19909:7;19936:10;;19929:17;;19867:87;:::o;15973:41::-;;;;;;;;;;;;;:::o;17976:95::-;18029:7;18056;;18049:14;;17976:95;:::o;18780:313::-;18878:4;18895:36;18905:6;18913:9;18924:6;18895:9;:36::i;:::-;18942:121;18951:6;18959:12;:10;:12::i;:::-;18973:89;19011:6;18973:89;;;;;;;;;;;;;;;;;:11;:19;18985:6;18973:19;;;;;;;;;;;;;;;:33;18993:12;:10;:12::i;:::-;18973:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;18942:8;:121::i;:::-;19081:4;19074:11;;18780:313;;;;;:::o;20791:253::-;20857:7;20896;;20885;:18;;20877:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20961:19;20984:10;:8;:10::i;:::-;20961:33;;21012:24;21024:11;21012:7;:11;;:24;;;;:::i;:::-;21005:31;;;20791:253;;;:::o;17885:83::-;17926:5;17951:9;;;;;;;;;;;17944:16;;17885:83;:::o;19101:218::-;19189:4;19206:83;19215:12;:10;:12::i;:::-;19229:7;19238:50;19277:10;19238:11;:25;19250:12;:10;:12::i;:::-;19238:25;;;;;;;;;;;;;;;:34;19264:7;19238:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;19206:8;:83::i;:::-;19307:4;19300:11;;19101:218;;;;:::o;19962:377::-;20014:14;20031:12;:10;:12::i;:::-;20014:29;;20063:11;:19;20075:6;20063:19;;;;;;;;;;;;;;;;;;;;;;;;;20062:20;20054:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20143:15;20167:19;20178:7;20167:10;:19::i;:::-;20142:44;;;;;;;20215:28;20235:7;20215;:15;20223:6;20215:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;20197:7;:15;20205:6;20197:15;;;;;;;;;;;;;;;:46;;;;20264:20;20276:7;20264;;:11;;:20;;;;:::i;:::-;20254:7;:30;;;;20308:23;20323:7;20308:10;;:14;;:23;;;;:::i;:::-;20295:10;:36;;;;19962:377;;;:::o;20347:436::-;20437:7;20476;;20465;:18;;20457:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20535:17;20530:246;;20570:15;20594:19;20605:7;20594:10;:19::i;:::-;20569:44;;;;;;;20635:7;20628:14;;;;;20530:246;20677:23;20708:19;20719:7;20708:10;:19::i;:::-;20675:52;;;;;;;20749:15;20742:22;;;20347:436;;;;;:::o;16021:28::-;;;;;;;;;;;;;:::o;26788:164::-;6645:16;6664:12;:10;:12::i;:::-;6645:31;;6713:8;6695:26;;:14;;;;;;;;;;;:26;;;:48;;;;6735:8;6725:18;;:6;;;;;;;;;;:18;;;6695:48;6687:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26850:23:::1;26876:24;26894:4;26876:9;:24::i;:::-;26850:50;;26911:33;26928:15;26911:16;:33::i;:::-;6791:1;26788:164:::0;:::o;22295:123::-;22359:4;22383:18;:27;22402:7;22383:27;;;;;;;;;;;;;;;;;;;;;;;;;22376:34;;22295:123;;;:::o;17314:103::-;5903:12;:10;:12::i;:::-;5893:22;;:6;;;;;;;;;;:22;;;5885:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17407:2:::1;17401:4;17393:7;;:12;;;;;;17392:17;17377:12;:32;;;;17314:103::o:0;16084:30::-;;;;;;;;;;;;;:::o;18079:198::-;18145:7;18169:11;:20;18181:7;18169:20;;;;;;;;;;;;;;;;;;;;;;;;;18165:49;;;18198:7;:16;18206:7;18198:16;;;;;;;;;;;;;;;;18191:23;;;;18165:49;18232:37;18252:7;:16;18260:7;18252:16;;;;;;;;;;;;;;;;18232:19;:37::i;:::-;18225:44;;18079:198;;;;:::o;5978:276::-;5903:12;:10;:12::i;:::-;5893:22;;:6;;;;;;;;;;:22;;;5885:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6077:1:::1;6041:39;;6062:6;::::0;::::1;;;;;;;;6041:39;;;;;;;;;;;;6108:6;::::0;::::1;;;;;;;;6091:14;;:23;;;;;;;;;;;;;;;;;;6234:1;6217:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;5978:276::o:0;16245:37::-;;;;:::o;22771:550::-;6645:16;6664:12;:10;:12::i;:::-;6645:31;;6713:8;6695:26;;:14;;;;;;;;;;;:26;;;:48;;;;6735:8;6725:18;;:6;;;;;;;;;;:18;;;6695:48;6687:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22869:7:::1;;;;;;;;;;;22858:18;;:7;:18;;;;22850:63;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;22943:13;;;;;;;;;;;22932:24;;:7;:24;;;;22924:67;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;23021:7;:5;:7::i;:::-;23010:18;;:7;:18;;;;23002:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23111:4;23092:24;;:7;:24;;;;23084:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23182:9;:18;23192:7;23182:18;;;;;;;;;;;;;;;;;;;;;;;;;23181:19;23173:62;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;23267:4;23246:9;:18;23256:7;23246:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;23282:17;23305:7;23282:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22771:550:::0;;:::o;5768:79::-;5806:7;5833:6;;;;;;;;;;;5826:13;;5768:79;:::o;17790:87::-;17829:13;17862:7;17855:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17790:87;:::o;19327:269::-;19420:4;19437:129;19446:12;:10;:12::i;:::-;19460:7;19469:96;19508:15;19469:96;;;;;;;;;;;;;;;;;:11;:25;19481:12;:10;:12::i;:::-;19469:25;;;;;;;;;;;;;;;:34;19495:7;19469:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;19437:8;:129::i;:::-;19584:4;19577:11;;19327:269;;;;:::o;18285:167::-;18363:4;18380:42;18390:12;:10;:12::i;:::-;18404:9;18415:6;18380:9;:42::i;:::-;18440:4;18433:11;;18285:167;;;;:::o;19722:137::-;5903:12;:10;:12::i;:::-;5893:22;;:6;;;;;;;;;;:22;;;5885:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19843:8:::1;19813:18;:27;19832:7;19813:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;19722:137:::0;;:::o;17425:266::-;5903:12;:10;:12::i;:::-;5893:22;;:6;;;;;;;;;;:22;;;5885:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17494:4:::1;17480:11;;:18;;;;;;;;;;;;;;;;;;17523:4;17509:11;;:18;;;;;;;;;;;;;;;;;;17561:3;17553:7;;:11;;;;;;17538:12;:26;;;;17585:1;17575:7;:11;;;;17608:1;17597:8;:12;;;;17638:7;;17620:15;:25;;;;17675:8;;17656:16;:27;;;;17425:266::o:0;19604:110::-;19662:4;19686:11;:20;19698:7;19686:20;;;;;;;;;;;;;;;;;;;;;;;;;19679:27;;19604:110;;;:::o;16752:554::-;5903:12;:10;:12::i;:::-;5893:22;;:6;;;;;;;;;;:22;;;5885:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16827:35:::1;16884:7;;;;;;;;;;;16827:65;;16972:14;16956:13;;:30;;;;;;;;;;;;;;;;;;17015:16;16997:15;;:34;;;;;;;;;;;;;;;;;;17072:4;17042:18;:27;17061:7;:5;:7::i;:::-;17042:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;17123:4;17087:18;:33;17114:4;17087:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;17148:1;17138:7;:11;;;;17171:1;17160:8;:12;;;;17183:77;17192:42;17235:24;17183:8;:77::i;:::-;;17294:4;17271:11;:20;17283:7;:5;:7::i;:::-;17271:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;5963:1;16752:554:::0;:::o;18460:143::-;18541:7;18568:11;:18;18580:5;18568:18;;;;;;;;;;;;;;;:27;18587:7;18568:27;;;;;;;;;;;;;;;;18561:34;;18460:143;;;;:::o;27135:98::-;5903:12;:10;:12::i;:::-;5893:22;;:6;;;;;;;;;;:22;;;5885:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27218:7:::1;27204:11;;:21;;;;;;;;;;;;;;;;;;27135:98:::0;:::o;21052:404::-;5903:12;:10;:12::i;:::-;5893:22;;:6;;;;;;;;;;:22;;;5885:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21144:7:::1;;;;;;;;;;;21133:18;;:7;:18;;;;21125:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;21206:11;:20;21218:7;21206:20;;;;;;;;;;;;;;;;;;;;;;;;;21205:21;21197:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;21291:1;21272:7;:16;21280:7;21272:16;;;;;;;;;;;;;;;;:20;21269:108;;;21328:37;21348:7;:16;21356:7;21348:16;;;;;;;;;;;;;;;;21328:19;:37::i;:::-;21309:7;:16;21317:7;21309:16;;;;;;;;;;;;;;;:56;;;;21269:108;21410:4;21387:11;:20;21399:7;21387:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;21425:9;21440:7;21425:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21052:404:::0;:::o;6260:244::-;5903:12;:10;:12::i;:::-;5893:22;;:6;;;;;;;;;;:22;;;5885:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6369:1:::1;6349:22;;:8;:22;;;;6341:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6459:8;6430:38;;6451:6;::::0;::::1;;;;;;;;6430:38;;;;;;;;;;;;6488:8;6479:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6260:244:::0;:::o;26960:167::-;6645:16;6664:12;:10;:12::i;:::-;6645:31;;6713:8;6695:26;;:14;;;;;;;;;;;:26;;;:48;;;;6735:8;6725:18;;:6;;;;;;;;;;:18;;;6695:48;6687:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27022:26:::1;27051:21;27022:50;;27083:36;27100:18;27083:16;:36::i;:::-;6791:1;26960:167:::0;:::o;33204:110::-;33250:15;33285:21;33278:28;;33204:110;:::o;21464:478::-;5903:12;:10;:12::i;:::-;5893:22;;:6;;;;;;;;;;:22;;;5885:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21545:11:::1;:20;21557:7;21545:20;;;;;;;;;;;;;;;;;;;;;;;;;21537:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;21613:9;21608:327;21632:9;:16;;;;21628:1;:20;21608:327;;;21690:7;21674:23;;:9;21684:1;21674:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;21670:254;;;21733:9;21762:1;21743:9;:16;;;;:20;21733:31;;;;;;;;;;;;;;;;;;;;;;;;;21718:9;21728:1;21718:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;21802:1;21783:7;:16;21791:7;21783:16;;;;;;;;;;;;;;;:20;;;;21845:5;21822:11;:20;21834:7;21822:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;21869:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21903:5;;21670:254;21650:3;;;;;;;21608:327;;;;21464:478:::0;:::o;16121:31::-;;;;;;;;;;;;;:::o;101:106::-;154:15;189:10;182:17;;101:106;:::o;22426:337::-;22536:1;22519:19;;:5;:19;;;;22511:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22617:1;22598:21;;:7;:21;;;;22590:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22701:6;22671:11;:18;22683:5;22671:18;;;;;;;;;;;;;;;:27;22690:7;22671:27;;;;;;;;;;;;;;;:36;;;;22739:7;22723:32;;22732:5;22723:32;;;22748:6;22723:32;;;;;;;;;;;;;;;;;;22426:337;;;:::o;23828:2084::-;23917:12;23969:1;23960:6;:10;23952:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24040:9;:20;24050:9;24040:20;;;;;;;;;;;;;;;;;;;;;;;;;24039:21;24031:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24112:9;:21;24122:10;24112:21;;;;;;;;;;;;;;;;;;;;;;;;;24111:22;24103:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24185:9;:17;24195:6;24185:17;;;;;;;;;;;;;;;;;;;;;;;;;24184:18;24176:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24293:13;;;;;;;;;;;24280:26;;:9;:26;;;24277:152;;;24356:15;24338:7;:15;24346:6;24338:15;;;;;;;;;;;;;;;;:33;24330:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24277:152;24462:13;;;;;;;;;;;24452:23;;:6;:23;;;:50;;;;;24480:11;:22;24492:9;24480:22;;;;;;;;;;;;;;;;;;;;;;;;;24479:23;24452:50;24449:218;;;24570:12;;24559:6;24536:20;24546:9;24536;:20::i;:::-;:29;24535:47;;24527:56;;;;;;24645:2;24627:15;:20;24606:7;:18;24614:9;24606:18;;;;;;;;;;;;;;;:41;;;;24449:218;24685:28;24716:24;24734:4;24716:9;:24::i;:::-;24685:55;;24759:24;24810:32;;24786:20;:56;;24759:83;;24884:6;;;;;;;;;;;24883:7;:22;;;;;24894:11;;;;;;;;;;;24883:22;:45;;;;;24909:19;24883:45;:72;;;;;24942:13;;;;;;;;;;;24932:23;;:6;:23;;;;24883:72;24879:389;;;24980:38;24997:20;24980:16;:38::i;:::-;25041:26;25070:21;25041:50;;25138:19;25117:18;:40;25114:135;;;25186:39;25203:21;25186:16;:39::i;:::-;25114:135;24879:389;;25313:7;:5;:7::i;:::-;25303:17;;:6;:17;;;;:41;;;;;25337:7;:5;:7::i;:::-;25324:20;;:9;:20;;;;25303:41;25300:385;;;25372:11;;;;;;;;;;;25367:303;;25432:4;25414:23;;:6;:23;;;:53;;;;25462:4;25441:26;;:9;:26;;;25414:53;:104;;;;25510:7;:5;:7::i;:::-;25492:26;;:6;:26;;;25414:104;:137;;;;25543:7;:5;:7::i;:::-;25522:29;;:9;:29;;;25414:137;25408:243;;25589:11;;;;;;;;;;;25581:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25408:243;25367:303;25300:385;25713:4;25703:14;;25737:18;:26;25756:6;25737:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;25767:18;:29;25786:9;25767:29;;;;;;;;;;;;;;;;;;;;;;;;;25737:59;25734:113;;;25826:5;25816:15;;25734:113;25857:47;25872:6;25879:9;25889:6;25896:7;25857:14;:47::i;:::-;23828:2084;;;;;;:::o;1368:192::-;1454:7;1487:1;1482;:6;;1490:12;1474:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1514:9;1530:1;1526;:5;1514:17;;1551:1;1544:8;;;1368:192;;;;;:::o;32272:163::-;32313:7;32334:15;32351;32370:19;:17;:19::i;:::-;32333:56;;;;32407:20;32419:7;32407;:11;;:20;;;;:::i;:::-;32400:27;;;;32272:163;:::o;2043:132::-;2101:7;2128:39;2132:1;2135;2128:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2121:46;;2043:132;;;;:::o;1037:181::-;1095:7;1115:9;1131:1;1127;:5;1115:17;;1156:1;1151;:6;;1143:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1209:1;1202:8;;;1037:181;;;;:::o;31022:463::-;31081:7;31090;31099;31108;31117;31126;31147:23;31172:12;31186:18;31208:20;31220:7;31208:11;:20::i;:::-;31146:82;;;;;;31239:19;31262:10;:8;:10::i;:::-;31239:33;;31284:15;31301:23;31326:12;31342:50;31354:7;31363:4;31369:11;31381:10;31342:11;:50::i;:::-;31283:109;;;;;;31411:7;31420:15;31437:4;31443:15;31460:4;31466:10;31403:74;;;;;;;;;;;;;;;;;;;31022:463;;;;;;;:::o;1224:136::-;1282:7;1309:43;1313:1;1316;1309:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1302:50;;1224:136;;;;:::o;25920:514::-;16554:4;16545:6;;:13;;;;;;;;;;;;;;;;;;25997:21:::1;26035:1;26021:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25997:40;;26066:4;26048;26053:1;26048:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;26092:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;26082:4;26087:1;26082:7;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;26127:62;26144:4;26159:15;;;;;;;;;;;26177:11;26127:8;:62::i;:::-;26202:15;;;;;;;;;;;:66;;;26283:11;26309:1;26353:4;26380;26400:15;26202:224;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16569:1;16590:5:::0;16581:6;;:14;;;;;;;;;;;;;;;;;;25920:514;:::o;26442:338::-;26519:3;26512:6;:10;;;;;;26503:19;;26533:42;:51;;:67;26585:14;26596:2;26585:6;:10;;:14;;;;:::i;:::-;26533:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26611:42;:51;;:67;26663:14;26674:2;26663:6;:10;;:14;;;;:::i;:::-;26611:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26694:42;:51;;:67;26746:14;26757:2;26746:6;:10;;:14;;;;:::i;:::-;26694:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26442:338;:::o;27241:856::-;27353:7;27349:53;;27376:14;:12;:14::i;:::-;27349:53;27430:11;:19;27442:6;27430:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;27454:11;:22;27466:9;27454:22;;;;;;;;;;;;;;;;;;;;;;;;;27453:23;27430:46;27426:600;;;27493:48;27515:6;27523:9;27534:6;27493:21;:48::i;:::-;27426:600;;;27564:11;:19;27576:6;27564:19;;;;;;;;;;;;;;;;;;;;;;;;;27563:20;:46;;;;;27587:11;:22;27599:9;27587:22;;;;;;;;;;;;;;;;;;;;;;;;;27563:46;27559:467;;;27626:46;27646:6;27654:9;27665:6;27626:19;:46::i;:::-;27559:467;;;27695:11;:19;27707:6;27695:19;;;;;;;;;;;;;;;;;;;;;;;;;27694:20;:47;;;;;27719:11;:22;27731:9;27719:22;;;;;;;;;;;;;;;;;;;;;;;;;27718:23;27694:47;27690:336;;;27758:44;27776:6;27784:9;27795:6;27758:17;:44::i;:::-;27690:336;;;27824:11;:19;27836:6;27824:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;27847:11;:22;27859:9;27847:22;;;;;;;;;;;;;;;;;;;;;;;;;27824:45;27820:206;;;27886:48;27908:6;27916:9;27927:6;27886:21;:48::i;:::-;27820:206;;;27967:44;27985:6;27993:9;28004:6;27967:17;:44::i;:::-;27820:206;27690:336;27559:467;27426:600;28040:7;28036:54;;28063:15;:13;:15::i;:::-;28036:54;27241:856;;;;:::o;32443:555::-;32493:7;32502;32522:15;32540:7;;32522:25;;32558:15;32576:7;;32558:25;;32599:9;32594:289;32618:9;:16;;;;32614:1;:20;32594:289;;;32684:7;32660;:21;32668:9;32678:1;32668:12;;;;;;;;;;;;;;;;;;;;;;;;;32660:21;;;;;;;;;;;;;;;;:31;:66;;;;32719:7;32695;:21;32703:9;32713:1;32703:12;;;;;;;;;;;;;;;;;;;;;;;;;32695:21;;;;;;;;;;;;;;;;:31;32660:66;32656:97;;;32736:7;;32745;;32728:25;;;;;;;;;32656:97;32778:34;32790:7;:21;32798:9;32808:1;32798:12;;;;;;;;;;;;;;;;;;;;;;;;;32790:21;;;;;;;;;;;;;;;;32778:7;:11;;:34;;;;:::i;:::-;32768:44;;32837:34;32849:7;:21;32857:9;32867:1;32857:12;;;;;;;;;;;;;;;;;;;;;;;;;32849:21;;;;;;;;;;;;;;;;32837:7;:11;;:34;;;;:::i;:::-;32827:44;;32636:3;;;;;;;32594:289;;;;32907:20;32919:7;;32907;;:11;;:20;;;;:::i;:::-;32897:7;:30;32893:61;;;32937:7;;32946;;32929:25;;;;;;;;32893:61;32973:7;32982;32965:25;;;;;;32443:555;;;:::o;2181:278::-;2267:7;2299:1;2295;:5;2302:12;2287:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2326:9;2342:1;2338;:5;;;;;;2326:17;;2450:1;2443:8;;;2181:278;;;;;:::o;31493:335::-;31553:7;31562;31571;31591:12;31606:29;31631:3;31606:20;31618:7;;31606;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;31591:44;;31646:18;31667:30;31693:3;31667:21;31679:8;;31667:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;31646:51;;31708:23;31734:33;31756:10;31734:17;31746:4;31734:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;31708:59;;31786:15;31803:4;31809:10;31778:42;;;;;;;;;31493:335;;;;;:::o;31836:428::-;31950:7;31959;31968;31988:15;32006:24;32018:11;32006:7;:11;;:24;;;;:::i;:::-;31988:42;;32041:12;32056:21;32065:11;32056:4;:8;;:21;;;;:::i;:::-;32041:36;;32088:18;32109:27;32124:11;32109:10;:14;;:27;;;;:::i;:::-;32088:48;;32147:23;32173:33;32195:10;32173:17;32185:4;32173:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;32147:59;;32225:7;32234:15;32251:4;32217:39;;;;;;;;;;31836:428;;;;;;;;:::o;1566:471::-;1624:7;1874:1;1869;:6;1865:47;;;1899:1;1892:8;;;;1865:47;1924:9;1940:1;1936;:5;1924:17;;1969:1;1964;1960;:5;;;;;;:10;1952:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2028:1;2021:8;;;1566:471;;;;;:::o;21950:214::-;22007:1;21996:7;;:12;:29;;;;;22024:1;22012:8;;:13;21996:29;21993:41;;;22027:7;;21993:41;22064:7;;22046:15;:25;;;;22101:8;;22082:16;:27;;;;22132:1;22122:7;:11;;;;22155:1;22144:8;:12;;;;21950:214;:::o;29198:563::-;29301:15;29318:23;29343:12;29357:23;29382:12;29396:18;29418:19;29429:7;29418:10;:19::i;:::-;29300:137;;;;;;;;;;;;29466:28;29486:7;29466;:15;29474:6;29466:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;29448:7;:15;29456:6;29448:15;;;;;;;;;;;;;;;:46;;;;29523:28;29543:7;29523;:15;29531:6;29523:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;29505:7;:15;29513:6;29505:15;;;;;;;;;;;;;;;:46;;;;29583:39;29606:15;29583:7;:18;29591:9;29583:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;29562:7;:18;29570:9;29562:18;;;;;;;;;;;;;;;:60;;;;29633:26;29648:10;29633:14;:26::i;:::-;29670:23;29682:4;29688;29670:11;:23::i;:::-;29726:9;29709:44;;29718:6;29709:44;;;29737:15;29709:44;;;;;;;;;;;;;;;;;;29198:563;;;;;;;;;:::o;28615:575::-;28716:15;28733:23;28758:12;28772:23;28797:12;28811:18;28833:19;28844:7;28833:10;:19::i;:::-;28715:137;;;;;;;;;;;;28881:28;28901:7;28881;:15;28889:6;28881:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;28863:7;:15;28871:6;28863:15;;;;;;;;;;;;;;;:46;;;;28941:39;28964:15;28941:7;:18;28949:9;28941:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;28920:7;:18;28928:9;28920:18;;;;;;;;;;;;;;;:60;;;;29012:39;29035:15;29012:7;:18;29020:9;29012:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;28991:7;:18;28999:9;28991:18;;;;;;;;;;;;;;;:60;;;;29062:26;29077:10;29062:14;:26::i;:::-;29099:23;29111:4;29117;29099:11;:23::i;:::-;29155:9;29138:44;;29147:6;29138:44;;;29166:15;29138:44;;;;;;;;;;;;;;;;;;28615:575;;;;;;;;;:::o;28105:502::-;28204:15;28221:23;28246:12;28260:23;28285:12;28299:18;28321:19;28332:7;28321:10;:19::i;:::-;28203:137;;;;;;;;;;;;28369:28;28389:7;28369;:15;28377:6;28369:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;28351:7;:15;28359:6;28351:15;;;;;;;;;;;;;;;:46;;;;28429:39;28452:15;28429:7;:18;28437:9;28429:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;28408:7;:18;28416:9;28408:18;;;;;;;;;;;;;;;:60;;;;28479:26;28494:10;28479:14;:26::i;:::-;28516:23;28528:4;28534;28516:11;:23::i;:::-;28572:9;28555:44;;28564:6;28555:44;;;28583:15;28555:44;;;;;;;;;;;;;;;;;;28105:502;;;;;;;;;:::o;29769:634::-;29872:15;29889:23;29914:12;29928:23;29953:12;29967:18;29989:19;30000:7;29989:10;:19::i;:::-;29871:137;;;;;;;;;;;;30037:28;30057:7;30037;:15;30045:6;30037:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;30019:7;:15;30027:6;30019:15;;;;;;;;;;;;;;;:46;;;;30094:28;30114:7;30094;:15;30102:6;30094:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;30076:7;:15;30084:6;30076:15;;;;;;;;;;;;;;;:46;;;;30154:39;30177:15;30154:7;:18;30162:9;30154:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;30133:7;:18;30141:9;30133:18;;;;;;;;;;;;;;;:60;;;;30225:39;30248:15;30225:7;:18;30233:9;30225:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;30204:7;:18;30212:9;30204:18;;;;;;;;;;;;;;;:60;;;;30275:26;30290:10;30275:14;:26::i;:::-;30312:23;30324:4;30330;30312:11;:23::i;:::-;30368:9;30351:44;;30360:6;30351:44;;;30379:15;30351:44;;;;;;;;;;;;;;;;;;29769:634;;;;;;;;;:::o;22172:115::-;22226:15;;22216:7;:25;;;;22263:16;;22252:8;:27;;;;22172:115::o;30411:355::-;30474:19;30497:10;:8;:10::i;:::-;30474:33;;30518:18;30539:27;30554:11;30539:10;:14;;:27;;;;:::i;:::-;30518:48;;30602:38;30629:10;30602:7;:22;30618:4;30602:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;30577:7;:22;30593:4;30577:22;;;;;;;;;;;;;;;:63;;;;30654:11;:26;30674:4;30654:26;;;;;;;;;;;;;;;;;;;;;;;;;30651:107;;;30720:38;30747:10;30720:7;:22;30736:4;30720:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;30695:7;:22;30711:4;30695:22;;;;;;;;;;;;;;;:63;;;;30651:107;30411:355;;;:::o;30774:147::-;30852:17;30864:4;30852:7;;:11;;:17;;;;:::i;:::-;30842:7;:27;;;;30893:20;30908:4;30893:10;;:14;;:20;;;;:::i;:::-;30880:10;:33;;;;30774:147;;:::o

Swarm Source

ipfs://56282826cec5a798f162eae2f3feb08420926811147d4b6e22389573173763d2
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.