ETH Price: $2,656.26 (+1.15%)

Token

Hero Pill (HERO)
 

Overview

Max Total Supply

1,000,000,000,000 HERO

Holders

83

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
Uniswap V2: HERO 40
Balance
0.000019223 HERO

Value
$0.00
0x1eae7e12a97f4cd9fccae1706f573c0c6abc11c0
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:
HERO

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-28
*/

/**
 * SPDX-License-Identifier: UNLICENSED 
 * https://www.heropill.com/
*/

pragma solidity ^0.8.18;

interface IERC20 {

    function totalSupply() external view returns (uint256);

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

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

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

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

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

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

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
 
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    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;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be 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;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

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

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

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

}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract HERO is Context, IERC20, Ownable {
    using SafeMath for uint256;

    string private constant _name = "Hero Pill";
    string private constant _symbol = "HERO";
    uint8 private constant _decimals = 9;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1e12 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private minContractTokensToSwap = 1e9 * 10**9;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcludedFromMaxWallet;
    mapping (address => bool) private _bots;
    uint256 private _taxFee = 0;
    uint256 private _teamFee = 0;
    uint256 private _maxWalletSize = 1e10 * 10**9;
    uint256 private _maxBuy = 0;
    uint256 private _buyFee = 12;
    uint256 private _sellFee = 12;
    uint256 private _previousTaxFee = _taxFee;
    uint256 private _previousteamFee = _teamFee;
    address payable private _developmentWallet;
    address payable private _marketingWallet;
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen = false;
    bool private _swapAll = true;
    bool private inSwap = false;
    mapping(address => bool) private automatedMarketMakerPairs;

    event Response(bool dev, bool marketing);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
        constructor () {

        _developmentWallet = payable(0x6a0e785189899CD1a9fc9a901159E7338b55BAAf);
        _marketingWallet = payable(0xf3EB1F92b124894438304BD21Ed72E9Df236bCBF);
        
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentWallet] = true;
        _isExcludedFromFee[_marketingWallet] = true;
        _isExcludedFromMaxWallet[owner()] = true;
        _isExcludedFromMaxWallet[address(this)] = true;
        _isExcludedFromMaxWallet[_developmentWallet] = true;
        _isExcludedFromMaxWallet[_marketingWallet] = true;

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

    function name() public pure returns (string memory) {
        return _name;
    }
    
    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if(from != owner() && to != owner()) {
            
            require(!_bots[from] && !_bots[to]);

            if(to != uniswapV2Pair && !_isExcludedFromMaxWallet[to] && _maxWalletSize != 0) {
                require(balanceOf(address(to)) + amount <= _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }
            
            if(from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
                require(tradingOpen, "Trading not yet enabled.");

                if(_maxBuy != 0) {
                    require(amount <= _maxBuy, "TOKEN: Max buy exceeded!");
                }

                _teamFee = _buyFee;
            }
            uint256 contractTokenBalance = balanceOf(address(this));

            if(!inSwap && from != uniswapV2Pair && tradingOpen) {

                _teamFee = _sellFee;

                if (automatedMarketMakerPairs[to]) {
                    if(contractTokenBalance > minContractTokensToSwap) {
                        if(!_swapAll) {
                            contractTokenBalance = minContractTokensToSwap;
                        }
                        swapBack(contractTokenBalance);
                    }
                }

            }
        }
        bool takeFee = true;

        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }

        if(!automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to]) {
            takeFee = false;
        }
        
        _tokenTransfer(from,to,amount,takeFee);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

    function swapBack(uint256 contractTokenBalance) private {
        
        swapTokensForEth(contractTokenBalance);

        uint256 contractETHBalance = address(this).balance;
        if(contractETHBalance > 0) {
            sendETHToFee(address(this).balance);
        }
    }

    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,
            path,
            address(this),
            block.timestamp
        );
    }
        
    function sendETHToFee(uint256 amount) private {
        (bool development, ) = _developmentWallet.call{value: amount.div(2)}("");
        (bool marketing, ) = _marketingWallet.call{value: amount.div(2)}("");

        emit Response(development, marketing);
    }
    
    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        if(!takeFee)
            removeAllFee();
        _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 tTeam) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 

        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

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

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

    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;
        if(rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate =  _getRate();
        uint256 rTeam = tTeam.mul(currentRate);

        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

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

    receive() external payable {}
    
    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        tradingOpen = true;
        automatedMarketMakerPairs[uniswapV2Pair] = true;
    }

    function setDevelopmentWallet (address payable development) external onlyOwner() {
        _isExcludedFromFee[_developmentWallet] = false;
        _developmentWallet = development;
        _isExcludedFromFee[development] = true;
    }
    
    function setMarketingWallet (address payable marketing) external onlyOwner {
        _isExcludedFromFee[_marketingWallet] = false;
        _marketingWallet = marketing;
        _isExcludedFromFee[marketing] = true;
    }

    function excludeFromFee(address[] calldata ads, bool onoff) public onlyOwner {
        for (uint i = 0; i < ads.length; i++) {
            _isExcludedFromFee[ads[i]] = onoff;
        }
    }

    function isExcludedFromFee(address ad) public view returns (bool) {
        return _isExcludedFromFee[ad];
    }

    function excludeFromMaxWallet(address[] calldata ads, bool onoff) public onlyOwner {
        for (uint i = 0; i < ads.length; i++) {
            _isExcludedFromMaxWallet[ads[i]] = onoff;
        }
    }
    
    function isExcludedMaxWallet(address ad) public view returns (bool) {
        return _isExcludedFromMaxWallet[ad];
    }

    function setFee(uint256 buy, uint256 sell) external onlyOwner {
        _buyFee = buy;
        _sellFee = sell;
    }

    function setTaxFee(uint256 tax) external onlyOwner {
        _taxFee = tax;
    }
    
    function getTaxFee() public view returns (uint) {
        return _taxFee;
    }
    
    function setMinContractTokensToSwap(uint256 numToken) external onlyOwner {
        minContractTokensToSwap = numToken * 10**9;
    }

    function setMaxWallet(uint256 amt) external onlyOwner {
        _maxWalletSize = amt * 10**9;
    }

    function setMaxBuy(uint256 amt) external onlyOwner {
        _maxBuy = amt * 10**9;
    }

    function setSwapAll(bool onoff) external onlyOwner {
        _swapAll = onoff;
    }

    function setBots(address[] calldata bots_, bool onoff) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            _bots[bots_[i]] = onoff;
        }
    }
    
    function isBot(address ad) public view returns (bool) {
        return _bots[ad];
    }
    
    function manualswap() external onlyOwner {
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function thisBalance() public view returns (uint) {
        return balanceOf(address(this));
    }

    function amountInPool() public view returns (uint) {
        return balanceOf(uniswapV2Pair);
    }

    function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
    }

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

    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 removeAllFee() private {
        if(_taxFee == 0 && _teamFee == 0) return;
        _previousTaxFee = _taxFee;
        _previousteamFee = _teamFee;
        _taxFee = 0;
        _teamFee = 0;
    }
    
    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _teamFee = _previousteamFee;
    }

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

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

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

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

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

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

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":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":"dev","type":"bool"},{"indexed":false,"internalType":"bool","name":"marketing","type":"bool"}],"name":"Response","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":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"amountInPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"ads","type":"address[]"},{"internalType":"bool","name":"onoff","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"ads","type":"address[]"},{"internalType":"bool","name":"onoff","type":"bool"}],"name":"excludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ad","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ad","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ad","type":"address"}],"name":"isExcludedMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"},{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"development","type":"address"}],"name":"setDevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"setMaxBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numToken","type":"uint256"}],"name":"setMinContractTokensToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setSwapAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tax","type":"uint256"}],"name":"setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"thisBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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"},{"stateMutability":"payable","type":"receive"}]

6080604052683635c9adc5dea000006000196200001d9190620006cf565b6000196200002c919062000736565b600255670de0b6b3a76400006004556000600b556000600c55678ac7230489e80000600d556000600e55600c600f55600c601055600b54601155600c546012556000601660146101000a81548160ff0219169083151502179055506001601660156101000a81548160ff02191690831515021790555060006016806101000a81548160ff021916908315150217905550348015620000c957600080fd5b506000620000dc6200066560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350736a0e785189899cd1a9fc9a901159e7338b55baaf601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f3eb1f92b124894438304bd21ed72e9df236bcbf601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600254600560006200023b6200066560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600860006200028f6200066d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000620004426200066d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005ef6200066560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef683635c9adc5dea0000060405162000657919062000782565b60405180910390a36200079f565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620006dc8262000696565b9150620006e98362000696565b925082620006fc57620006fb620006a0565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007438262000696565b9150620007508362000696565b92508282039050818111156200076b576200076a62000707565b5b92915050565b6200077c8162000696565b82525050565b600060208201905062000799600083018462000771565b92915050565b6147a180620007af6000396000f3fe6080604052600436106101e75760003560e01c806372ac248611610102578063c9567bf911610095578063de30aad111610064578063de30aad1146106c1578063e1ab04c9146106ea578063f53bc83514610727578063f66608fe14610750576101ee565b8063c9567bf914610619578063db8aeab114610630578063db92dbb614610659578063dd62ed3e14610684576101ee565b80639c0db5f3116100d15780639c0db5f314610573578063a9059cbb1461059c578063c3c8cd80146105d9578063c4081a4c146105f0576101ee565b806372ac2486146104cb5780638da5cb5b146104f457806395d89b411461051f5780639a7a23d61461054a576101ee565b80633bbac5791161017a5780635d098b38116101495780635d098b38146104375780636fc3eaec1461046057806370a0823114610477578063715018a6146104b4576101ee565b80633bbac5791461036b57806352f7c988146103a85780635342acb4146103d15780635d0044ca1461040e576101ee565b806323b872dd116101b657806323b872dd146102af57806327f3a72a146102ec57806328875c1614610317578063313ce56714610340576101ee565b806306fdde03146101f3578063095ea7b31461021e57806312dfbd331461025b57806318160ddd14610284576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b5061020861077b565b6040516102159190613604565b60405180910390f35b34801561022a57600080fd5b50610245600480360381019061024091906136c4565b6107b8565b604051610252919061371f565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d919061373a565b6107d6565b005b34801561029057600080fd5b50610299610884565b6040516102a69190613776565b60405180910390f35b3480156102bb57600080fd5b506102d660048036038101906102d19190613791565b610895565b6040516102e3919061371f565b60405180910390f35b3480156102f857600080fd5b5061030161096e565b60405161030e9190613776565b60405180910390f35b34801561032357600080fd5b5061033e60048036038101906103399190613875565b61097e565b005b34801561034c57600080fd5b50610355610ab8565b60405161036291906138f1565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d919061390c565b610ac1565b60405161039f919061371f565b60405180910390f35b3480156103b457600080fd5b506103cf60048036038101906103ca9190613939565b610b17565b005b3480156103dd57600080fd5b506103f860048036038101906103f3919061390c565b610bbe565b604051610405919061371f565b60405180910390f35b34801561041a57600080fd5b506104356004803603810190610430919061373a565b610c14565b005b34801561044357600080fd5b5061045e600480360381019061045991906139b7565b610cc2565b005b34801561046c57600080fd5b50610475610e6d565b005b34801561048357600080fd5b5061049e6004803603810190610499919061390c565b610f13565b6040516104ab9190613776565b60405180910390f35b3480156104c057600080fd5b506104c9610f64565b005b3480156104d757600080fd5b506104f260048036038101906104ed91906139b7565b6110b7565b005b34801561050057600080fd5b50610509611262565b60405161051691906139f3565b60405180910390f35b34801561052b57600080fd5b5061053461128b565b6040516105419190613604565b60405180910390f35b34801561055657600080fd5b50610571600480360381019061056c9190613a0e565b6112c8565b005b34801561057f57600080fd5b5061059a60048036038101906105959190613875565b6113fb565b005b3480156105a857600080fd5b506105c360048036038101906105be91906136c4565b611535565b6040516105d0919061371f565b60405180910390f35b3480156105e557600080fd5b506105ee611553565b005b3480156105fc57600080fd5b506106176004803603810190610612919061373a565b611601565b005b34801561062557600080fd5b5061062e6116a0565b005b34801561063c57600080fd5b5061065760048036038101906106529190613875565b611be6565b005b34801561066557600080fd5b5061066e611d20565b60405161067b9190613776565b60405180910390f35b34801561069057600080fd5b506106ab60048036038101906106a69190613a4e565b611d52565b6040516106b89190613776565b60405180910390f35b3480156106cd57600080fd5b506106e860048036038101906106e39190613a8e565b611dd9565b005b3480156106f657600080fd5b50610711600480360381019061070c919061390c565b611e8b565b60405161071e919061371f565b60405180910390f35b34801561073357600080fd5b5061074e6004803603810190610749919061373a565b611ee1565b005b34801561075c57600080fd5b50610765611f8f565b6040516107729190613776565b60405180910390f35b60606040518060400160405280600981526020017f4865726f2050696c6c0000000000000000000000000000000000000000000000815250905090565b60006107cc6107c5611f99565b8484611fa1565b6001905092915050565b6107de611f99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461086b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086290613b07565b60405180910390fd5b633b9aca008161087b9190613b56565b60048190555050565b6000683635c9adc5dea00000905090565b60006108a284848461216a565b610963846108ae611f99565b61095e8560405180606001604052806028815260200161474460289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610914611f99565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129089092919063ffffffff16565b611fa1565b600190509392505050565b600061097930610f13565b905090565b610986611f99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0a90613b07565b60405180910390fd5b60005b83839050811015610ab2578160086000868685818110610a3957610a38613b98565b5b9050602002016020810190610a4e919061390c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610aaa90613bc7565b915050610a16565b50505050565b60006009905090565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610b1f611f99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba390613b07565b60405180910390fd5b81600f81905550806010819055505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610c1c611f99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca090613b07565b60405180910390fd5b633b9aca0081610cb99190613b56565b600d8190555050565b610cca611f99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4e90613b07565b60405180910390fd5b600060086000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610e75611f99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef990613b07565b60405180910390fd5b6000479050610f108161296c565b50565b6000610f5d600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aec565b9050919050565b610f6c611f99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff090613b07565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6110bf611f99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461114c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114390613b07565b60405180910390fd5b600060086000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4845524f00000000000000000000000000000000000000000000000000000000815250905090565b6112d0611f99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461135d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135490613b07565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e490613c81565b60405180910390fd5b6113f78282612b5a565b5050565b611403611f99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148790613b07565b60405180910390fd5b60005b8383905081101561152f5781600a60008686858181106114b6576114b5613b98565b5b90506020020160208101906114cb919061390c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061152790613bc7565b915050611493565b50505050565b6000611549611542611f99565b848461216a565b6001905092915050565b61155b611f99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115df90613b07565b60405180910390fd5b60006115f330610f13565b90506115fe81612bb5565b50565b611609611f99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168d90613b07565b60405180910390fd5b80600b8190555050565b6116a8611f99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172c90613b07565b60405180910390fd5b601660149054906101000a900460ff1615611785576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177c90613ced565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061181530601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea00000611fa1565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611860573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118849190613d22565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190f9190613d22565b6040518363ffffffff1660e01b815260040161192c929190613d4f565b6020604051808303816000875af115801561194b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196f9190613d22565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306119f830610f13565b600080611a03611262565b426040518863ffffffff1660e01b8152600401611a2596959493929190613dbd565b60606040518083038185885af1158015611a43573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a689190613e33565b505050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611b0a929190613e86565b6020604051808303816000875af1158015611b29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4d9190613ec4565b506001601660146101000a81548160ff021916908315150217905550600160176000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611bee611f99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7290613b07565b60405180910390fd5b60005b83839050811015611d1a578160096000868685818110611ca157611ca0613b98565b5b9050602002016020810190611cb6919061390c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611d1290613bc7565b915050611c7e565b50505050565b6000611d4d601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f13565b905090565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611de1611f99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6590613b07565b60405180910390fd5b80601660156101000a81548160ff02191690831515021790555050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611ee9611f99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6d90613b07565b60405180910390fd5b633b9aca0081611f869190613b56565b600e8190555050565b6000600b54905090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612010576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200790613f63565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361207f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207690613ff5565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161215d9190613776565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d090614087565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223f90614119565b60405180910390fd5b6000811161228b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612282906141ab565b60405180910390fd5b612293611262565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561230157506122d1611262565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561279757600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156123aa5750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6123b357600080fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561245b5750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561246a57506000600d5414155b156124c857600d548161247c84610f13565b61248691906141cb565b11156124c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124be90614271565b60405180910390fd5b5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156125735750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125c95750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561267757601660149054906101000a900460ff1661261d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612614906142dd565b60405180910390fd5b6000600e541461266d57600e5481111561266c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266390614349565b60405180910390fd5b5b600f54600c819055505b600061268230610f13565b905060168054906101000a900460ff161580156126ed5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156127055750601660149054906101000a900460ff165b1561279557601054600c81905550601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156127945760045481111561279357601660159054906101000a900460ff166127895760045490505b61279281612e2c565b5b5b5b505b600060019050600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061283e5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561284857600090505b601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128ec5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128f657600090505b61290284848484612e51565b50505050565b6000838311158290612950576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129479190613604565b60405180910390fd5b506000838561295f9190614369565b9050809150509392505050565b6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166129bb600284612e7e90919063ffffffff16565b6040516129c7906143ce565b60006040518083038185875af1925050503d8060008114612a04576040519150601f19603f3d011682016040523d82523d6000602084013e612a09565b606091505b505090506000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a5c600285612e7e90919063ffffffff16565b604051612a68906143ce565b60006040518083038185875af1925050503d8060008114612aa5576040519150601f19603f3d011682016040523d82523d6000602084013e612aaa565b606091505b505090507fc45e9b3ac19bf635feaed560109cb8931031fbbc86809d50d65d41a2cf2fe8b98282604051612adf9291906143e3565b60405180910390a1505050565b6000600254821115612b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2a9061447e565b60405180910390fd5b6000612b3d612ec8565b9050612b528184612e7e90919063ffffffff16565b915050919050565b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60016016806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612bec57612beb61449e565b5b604051908082528060200260200182016040528015612c1a5781602001602082028036833780820191505090505b5090503081600081518110612c3257612c31613b98565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cfd9190613d22565b81600181518110612d1157612d10613b98565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612d7830601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611fa1565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612ddc95949392919061458b565b600060405180830381600087803b158015612df657600080fd5b505af1158015612e0a573d6000803e3d6000fd5b505050505060006016806101000a81548160ff02191690831515021790555050565b612e3581612bb5565b60004790506000811115612e4d57612e4c4761296c565b5b5050565b80612e5f57612e5e612ef3565b5b612e6a848484612f30565b80612e7857612e776130fb565b5b50505050565b6000612ec083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061310f565b905092915050565b6000806000612ed5613172565b91509150612eec8183612e7e90919063ffffffff16565b9250505090565b6000600b54148015612f0757506000600c54145b612f2e57600b54601181905550600c546012819055506000600b819055506000600c819055505b565b600080600080600080612f42876131d4565b955095509550955095509550612fa086600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461323c90919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061303585600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461328690919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613081816132e4565b61308b84836133a1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516130e89190613776565b60405180910390a3505050505050505050565b601154600b81905550601254600c81905550565b60008083118290613156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161314d9190613604565b60405180910390fd5b50600083856131659190614614565b9050809150509392505050565b600080600060025490506000683635c9adc5dea0000090506131a8683635c9adc5dea00000600254612e7e90919063ffffffff16565b8210156131c757600254683635c9adc5dea000009350935050506131d0565b81819350935050505b9091565b60008060008060008060008060006131f18a600b54600c546133db565b9250925092506000613201612ec8565b905060008060006132148e878787613471565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061327e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612908565b905092915050565b600080828461329591906141cb565b9050838110156132da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132d190614691565b60405180910390fd5b8091505092915050565b60006132ee612ec8565b9050600061330582846134fa90919063ffffffff16565b905061335981600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461328690919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6133b68260025461323c90919063ffffffff16565b6002819055506133d18160035461328690919063ffffffff16565b6003819055505050565b60008060008061340760646133f9888a6134fa90919063ffffffff16565b612e7e90919063ffffffff16565b905060006134316064613423888b6134fa90919063ffffffff16565b612e7e90919063ffffffff16565b9050600061345a8261344c858c61323c90919063ffffffff16565b61323c90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061348a85896134fa90919063ffffffff16565b905060006134a186896134fa90919063ffffffff16565b905060006134b887896134fa90919063ffffffff16565b905060006134e1826134d3858761323c90919063ffffffff16565b61323c90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080830361350c576000905061356e565b6000828461351a9190613b56565b90508284826135299190614614565b14613569576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161356090614723565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156135ae578082015181840152602081019050613593565b60008484015250505050565b6000601f19601f8301169050919050565b60006135d682613574565b6135e0818561357f565b93506135f0818560208601613590565b6135f9816135ba565b840191505092915050565b6000602082019050818103600083015261361e81846135cb565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061365b82613630565b9050919050565b61366b81613650565b811461367657600080fd5b50565b60008135905061368881613662565b92915050565b6000819050919050565b6136a18161368e565b81146136ac57600080fd5b50565b6000813590506136be81613698565b92915050565b600080604083850312156136db576136da613626565b5b60006136e985828601613679565b92505060206136fa858286016136af565b9150509250929050565b60008115159050919050565b61371981613704565b82525050565b60006020820190506137346000830184613710565b92915050565b6000602082840312156137505761374f613626565b5b600061375e848285016136af565b91505092915050565b6137708161368e565b82525050565b600060208201905061378b6000830184613767565b92915050565b6000806000606084860312156137aa576137a9613626565b5b60006137b886828701613679565b93505060206137c986828701613679565b92505060406137da868287016136af565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f840112613809576138086137e4565b5b8235905067ffffffffffffffff811115613826576138256137e9565b5b602083019150836020820283011115613842576138416137ee565b5b9250929050565b61385281613704565b811461385d57600080fd5b50565b60008135905061386f81613849565b92915050565b60008060006040848603121561388e5761388d613626565b5b600084013567ffffffffffffffff8111156138ac576138ab61362b565b5b6138b8868287016137f3565b935093505060206138cb86828701613860565b9150509250925092565b600060ff82169050919050565b6138eb816138d5565b82525050565b600060208201905061390660008301846138e2565b92915050565b60006020828403121561392257613921613626565b5b600061393084828501613679565b91505092915050565b600080604083850312156139505761394f613626565b5b600061395e858286016136af565b925050602061396f858286016136af565b9150509250929050565b600061398482613630565b9050919050565b61399481613979565b811461399f57600080fd5b50565b6000813590506139b18161398b565b92915050565b6000602082840312156139cd576139cc613626565b5b60006139db848285016139a2565b91505092915050565b6139ed81613650565b82525050565b6000602082019050613a0860008301846139e4565b92915050565b60008060408385031215613a2557613a24613626565b5b6000613a3385828601613679565b9250506020613a4485828601613860565b9150509250929050565b60008060408385031215613a6557613a64613626565b5b6000613a7385828601613679565b9250506020613a8485828601613679565b9150509250929050565b600060208284031215613aa457613aa3613626565b5b6000613ab284828501613860565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613af160208361357f565b9150613afc82613abb565b602082019050919050565b60006020820190508181036000830152613b2081613ae4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b618261368e565b9150613b6c8361368e565b9250828202613b7a8161368e565b91508282048414831517613b9157613b90613b27565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613bd28261368e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613c0457613c03613b27565b5b600182019050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613c6b60398361357f565b9150613c7682613c0f565b604082019050919050565b60006020820190508181036000830152613c9a81613c5e565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000613cd760178361357f565b9150613ce282613ca1565b602082019050919050565b60006020820190508181036000830152613d0681613cca565b9050919050565b600081519050613d1c81613662565b92915050565b600060208284031215613d3857613d37613626565b5b6000613d4684828501613d0d565b91505092915050565b6000604082019050613d6460008301856139e4565b613d7160208301846139e4565b9392505050565b6000819050919050565b6000819050919050565b6000613da7613da2613d9d84613d78565b613d82565b61368e565b9050919050565b613db781613d8c565b82525050565b600060c082019050613dd260008301896139e4565b613ddf6020830188613767565b613dec6040830187613dae565b613df96060830186613dae565b613e0660808301856139e4565b613e1360a0830184613767565b979650505050505050565b600081519050613e2d81613698565b92915050565b600080600060608486031215613e4c57613e4b613626565b5b6000613e5a86828701613e1e565b9350506020613e6b86828701613e1e565b9250506040613e7c86828701613e1e565b9150509250925092565b6000604082019050613e9b60008301856139e4565b613ea86020830184613767565b9392505050565b600081519050613ebe81613849565b92915050565b600060208284031215613eda57613ed9613626565b5b6000613ee884828501613eaf565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f4d60248361357f565b9150613f5882613ef1565b604082019050919050565b60006020820190508181036000830152613f7c81613f40565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613fdf60228361357f565b9150613fea82613f83565b604082019050919050565b6000602082019050818103600083015261400e81613fd2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061407160258361357f565b915061407c82614015565b604082019050919050565b600060208201905081810360008301526140a081614064565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061410360238361357f565b915061410e826140a7565b604082019050919050565b60006020820190508181036000830152614132816140f6565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061419560298361357f565b91506141a082614139565b604082019050919050565b600060208201905081810360008301526141c481614188565b9050919050565b60006141d68261368e565b91506141e18361368e565b92508282019050808211156141f9576141f8613b27565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061425b60238361357f565b9150614266826141ff565b604082019050919050565b6000602082019050818103600083015261428a8161424e565b9050919050565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b60006142c760188361357f565b91506142d282614291565b602082019050919050565b600060208201905081810360008301526142f6816142ba565b9050919050565b7f544f4b454e3a204d617820627579206578636565646564210000000000000000600082015250565b600061433360188361357f565b915061433e826142fd565b602082019050919050565b6000602082019050818103600083015261436281614326565b9050919050565b60006143748261368e565b915061437f8361368e565b925082820390508181111561439757614396613b27565b5b92915050565b600081905092915050565b50565b60006143b860008361439d565b91506143c3826143a8565b600082019050919050565b60006143d9826143ab565b9150819050919050565b60006040820190506143f86000830185613710565b6144056020830184613710565b9392505050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000614468602a8361357f565b91506144738261440c565b604082019050919050565b600060208201905081810360008301526144978161445b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61450281613650565b82525050565b600061451483836144f9565b60208301905092915050565b6000602082019050919050565b6000614538826144cd565b61454281856144d8565b935061454d836144e9565b8060005b8381101561457e5781516145658882614508565b975061457083614520565b925050600181019050614551565b5085935050505092915050565b600060a0820190506145a06000830188613767565b6145ad6020830187613dae565b81810360408301526145bf818661452d565b90506145ce60608301856139e4565b6145db6080830184613767565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061461f8261368e565b915061462a8361368e565b92508261463a576146396145e5565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061467b601b8361357f565b915061468682614645565b602082019050919050565b600060208201905081810360008301526146aa8161466e565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061470d60218361357f565b9150614718826146b1565b604082019050919050565b6000602082019050818103600083015261473c81614700565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201fb065708ec00dcea1868157f47567c167860e08f533ea575fd68c67e17b7a3564736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101e75760003560e01c806372ac248611610102578063c9567bf911610095578063de30aad111610064578063de30aad1146106c1578063e1ab04c9146106ea578063f53bc83514610727578063f66608fe14610750576101ee565b8063c9567bf914610619578063db8aeab114610630578063db92dbb614610659578063dd62ed3e14610684576101ee565b80639c0db5f3116100d15780639c0db5f314610573578063a9059cbb1461059c578063c3c8cd80146105d9578063c4081a4c146105f0576101ee565b806372ac2486146104cb5780638da5cb5b146104f457806395d89b411461051f5780639a7a23d61461054a576101ee565b80633bbac5791161017a5780635d098b38116101495780635d098b38146104375780636fc3eaec1461046057806370a0823114610477578063715018a6146104b4576101ee565b80633bbac5791461036b57806352f7c988146103a85780635342acb4146103d15780635d0044ca1461040e576101ee565b806323b872dd116101b657806323b872dd146102af57806327f3a72a146102ec57806328875c1614610317578063313ce56714610340576101ee565b806306fdde03146101f3578063095ea7b31461021e57806312dfbd331461025b57806318160ddd14610284576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b5061020861077b565b6040516102159190613604565b60405180910390f35b34801561022a57600080fd5b50610245600480360381019061024091906136c4565b6107b8565b604051610252919061371f565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d919061373a565b6107d6565b005b34801561029057600080fd5b50610299610884565b6040516102a69190613776565b60405180910390f35b3480156102bb57600080fd5b506102d660048036038101906102d19190613791565b610895565b6040516102e3919061371f565b60405180910390f35b3480156102f857600080fd5b5061030161096e565b60405161030e9190613776565b60405180910390f35b34801561032357600080fd5b5061033e60048036038101906103399190613875565b61097e565b005b34801561034c57600080fd5b50610355610ab8565b60405161036291906138f1565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d919061390c565b610ac1565b60405161039f919061371f565b60405180910390f35b3480156103b457600080fd5b506103cf60048036038101906103ca9190613939565b610b17565b005b3480156103dd57600080fd5b506103f860048036038101906103f3919061390c565b610bbe565b604051610405919061371f565b60405180910390f35b34801561041a57600080fd5b506104356004803603810190610430919061373a565b610c14565b005b34801561044357600080fd5b5061045e600480360381019061045991906139b7565b610cc2565b005b34801561046c57600080fd5b50610475610e6d565b005b34801561048357600080fd5b5061049e6004803603810190610499919061390c565b610f13565b6040516104ab9190613776565b60405180910390f35b3480156104c057600080fd5b506104c9610f64565b005b3480156104d757600080fd5b506104f260048036038101906104ed91906139b7565b6110b7565b005b34801561050057600080fd5b50610509611262565b60405161051691906139f3565b60405180910390f35b34801561052b57600080fd5b5061053461128b565b6040516105419190613604565b60405180910390f35b34801561055657600080fd5b50610571600480360381019061056c9190613a0e565b6112c8565b005b34801561057f57600080fd5b5061059a60048036038101906105959190613875565b6113fb565b005b3480156105a857600080fd5b506105c360048036038101906105be91906136c4565b611535565b6040516105d0919061371f565b60405180910390f35b3480156105e557600080fd5b506105ee611553565b005b3480156105fc57600080fd5b506106176004803603810190610612919061373a565b611601565b005b34801561062557600080fd5b5061062e6116a0565b005b34801561063c57600080fd5b5061065760048036038101906106529190613875565b611be6565b005b34801561066557600080fd5b5061066e611d20565b60405161067b9190613776565b60405180910390f35b34801561069057600080fd5b506106ab60048036038101906106a69190613a4e565b611d52565b6040516106b89190613776565b60405180910390f35b3480156106cd57600080fd5b506106e860048036038101906106e39190613a8e565b611dd9565b005b3480156106f657600080fd5b50610711600480360381019061070c919061390c565b611e8b565b60405161071e919061371f565b60405180910390f35b34801561073357600080fd5b5061074e6004803603810190610749919061373a565b611ee1565b005b34801561075c57600080fd5b50610765611f8f565b6040516107729190613776565b60405180910390f35b60606040518060400160405280600981526020017f4865726f2050696c6c0000000000000000000000000000000000000000000000815250905090565b60006107cc6107c5611f99565b8484611fa1565b6001905092915050565b6107de611f99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461086b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086290613b07565b60405180910390fd5b633b9aca008161087b9190613b56565b60048190555050565b6000683635c9adc5dea00000905090565b60006108a284848461216a565b610963846108ae611f99565b61095e8560405180606001604052806028815260200161474460289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610914611f99565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129089092919063ffffffff16565b611fa1565b600190509392505050565b600061097930610f13565b905090565b610986611f99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0a90613b07565b60405180910390fd5b60005b83839050811015610ab2578160086000868685818110610a3957610a38613b98565b5b9050602002016020810190610a4e919061390c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610aaa90613bc7565b915050610a16565b50505050565b60006009905090565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610b1f611f99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba390613b07565b60405180910390fd5b81600f81905550806010819055505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610c1c611f99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca090613b07565b60405180910390fd5b633b9aca0081610cb99190613b56565b600d8190555050565b610cca611f99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4e90613b07565b60405180910390fd5b600060086000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610e75611f99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef990613b07565b60405180910390fd5b6000479050610f108161296c565b50565b6000610f5d600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aec565b9050919050565b610f6c611f99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff090613b07565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6110bf611f99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461114c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114390613b07565b60405180910390fd5b600060086000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4845524f00000000000000000000000000000000000000000000000000000000815250905090565b6112d0611f99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461135d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135490613b07565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e490613c81565b60405180910390fd5b6113f78282612b5a565b5050565b611403611f99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148790613b07565b60405180910390fd5b60005b8383905081101561152f5781600a60008686858181106114b6576114b5613b98565b5b90506020020160208101906114cb919061390c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061152790613bc7565b915050611493565b50505050565b6000611549611542611f99565b848461216a565b6001905092915050565b61155b611f99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115df90613b07565b60405180910390fd5b60006115f330610f13565b90506115fe81612bb5565b50565b611609611f99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168d90613b07565b60405180910390fd5b80600b8190555050565b6116a8611f99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172c90613b07565b60405180910390fd5b601660149054906101000a900460ff1615611785576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177c90613ced565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061181530601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea00000611fa1565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611860573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118849190613d22565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190f9190613d22565b6040518363ffffffff1660e01b815260040161192c929190613d4f565b6020604051808303816000875af115801561194b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196f9190613d22565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306119f830610f13565b600080611a03611262565b426040518863ffffffff1660e01b8152600401611a2596959493929190613dbd565b60606040518083038185885af1158015611a43573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a689190613e33565b505050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611b0a929190613e86565b6020604051808303816000875af1158015611b29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4d9190613ec4565b506001601660146101000a81548160ff021916908315150217905550600160176000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611bee611f99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7290613b07565b60405180910390fd5b60005b83839050811015611d1a578160096000868685818110611ca157611ca0613b98565b5b9050602002016020810190611cb6919061390c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611d1290613bc7565b915050611c7e565b50505050565b6000611d4d601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f13565b905090565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611de1611f99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6590613b07565b60405180910390fd5b80601660156101000a81548160ff02191690831515021790555050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611ee9611f99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6d90613b07565b60405180910390fd5b633b9aca0081611f869190613b56565b600e8190555050565b6000600b54905090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612010576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200790613f63565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361207f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207690613ff5565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161215d9190613776565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d090614087565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223f90614119565b60405180910390fd5b6000811161228b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612282906141ab565b60405180910390fd5b612293611262565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561230157506122d1611262565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561279757600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156123aa5750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6123b357600080fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561245b5750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561246a57506000600d5414155b156124c857600d548161247c84610f13565b61248691906141cb565b11156124c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124be90614271565b60405180910390fd5b5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156125735750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125c95750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561267757601660149054906101000a900460ff1661261d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612614906142dd565b60405180910390fd5b6000600e541461266d57600e5481111561266c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266390614349565b60405180910390fd5b5b600f54600c819055505b600061268230610f13565b905060168054906101000a900460ff161580156126ed5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156127055750601660149054906101000a900460ff165b1561279557601054600c81905550601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156127945760045481111561279357601660159054906101000a900460ff166127895760045490505b61279281612e2c565b5b5b5b505b600060019050600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061283e5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561284857600090505b601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128ec5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128f657600090505b61290284848484612e51565b50505050565b6000838311158290612950576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129479190613604565b60405180910390fd5b506000838561295f9190614369565b9050809150509392505050565b6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166129bb600284612e7e90919063ffffffff16565b6040516129c7906143ce565b60006040518083038185875af1925050503d8060008114612a04576040519150601f19603f3d011682016040523d82523d6000602084013e612a09565b606091505b505090506000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a5c600285612e7e90919063ffffffff16565b604051612a68906143ce565b60006040518083038185875af1925050503d8060008114612aa5576040519150601f19603f3d011682016040523d82523d6000602084013e612aaa565b606091505b505090507fc45e9b3ac19bf635feaed560109cb8931031fbbc86809d50d65d41a2cf2fe8b98282604051612adf9291906143e3565b60405180910390a1505050565b6000600254821115612b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2a9061447e565b60405180910390fd5b6000612b3d612ec8565b9050612b528184612e7e90919063ffffffff16565b915050919050565b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60016016806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612bec57612beb61449e565b5b604051908082528060200260200182016040528015612c1a5781602001602082028036833780820191505090505b5090503081600081518110612c3257612c31613b98565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cfd9190613d22565b81600181518110612d1157612d10613b98565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612d7830601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611fa1565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612ddc95949392919061458b565b600060405180830381600087803b158015612df657600080fd5b505af1158015612e0a573d6000803e3d6000fd5b505050505060006016806101000a81548160ff02191690831515021790555050565b612e3581612bb5565b60004790506000811115612e4d57612e4c4761296c565b5b5050565b80612e5f57612e5e612ef3565b5b612e6a848484612f30565b80612e7857612e776130fb565b5b50505050565b6000612ec083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061310f565b905092915050565b6000806000612ed5613172565b91509150612eec8183612e7e90919063ffffffff16565b9250505090565b6000600b54148015612f0757506000600c54145b612f2e57600b54601181905550600c546012819055506000600b819055506000600c819055505b565b600080600080600080612f42876131d4565b955095509550955095509550612fa086600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461323c90919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061303585600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461328690919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613081816132e4565b61308b84836133a1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516130e89190613776565b60405180910390a3505050505050505050565b601154600b81905550601254600c81905550565b60008083118290613156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161314d9190613604565b60405180910390fd5b50600083856131659190614614565b9050809150509392505050565b600080600060025490506000683635c9adc5dea0000090506131a8683635c9adc5dea00000600254612e7e90919063ffffffff16565b8210156131c757600254683635c9adc5dea000009350935050506131d0565b81819350935050505b9091565b60008060008060008060008060006131f18a600b54600c546133db565b9250925092506000613201612ec8565b905060008060006132148e878787613471565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061327e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612908565b905092915050565b600080828461329591906141cb565b9050838110156132da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132d190614691565b60405180910390fd5b8091505092915050565b60006132ee612ec8565b9050600061330582846134fa90919063ffffffff16565b905061335981600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461328690919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6133b68260025461323c90919063ffffffff16565b6002819055506133d18160035461328690919063ffffffff16565b6003819055505050565b60008060008061340760646133f9888a6134fa90919063ffffffff16565b612e7e90919063ffffffff16565b905060006134316064613423888b6134fa90919063ffffffff16565b612e7e90919063ffffffff16565b9050600061345a8261344c858c61323c90919063ffffffff16565b61323c90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061348a85896134fa90919063ffffffff16565b905060006134a186896134fa90919063ffffffff16565b905060006134b887896134fa90919063ffffffff16565b905060006134e1826134d3858761323c90919063ffffffff16565b61323c90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080830361350c576000905061356e565b6000828461351a9190613b56565b90508284826135299190614614565b14613569576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161356090614723565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156135ae578082015181840152602081019050613593565b60008484015250505050565b6000601f19601f8301169050919050565b60006135d682613574565b6135e0818561357f565b93506135f0818560208601613590565b6135f9816135ba565b840191505092915050565b6000602082019050818103600083015261361e81846135cb565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061365b82613630565b9050919050565b61366b81613650565b811461367657600080fd5b50565b60008135905061368881613662565b92915050565b6000819050919050565b6136a18161368e565b81146136ac57600080fd5b50565b6000813590506136be81613698565b92915050565b600080604083850312156136db576136da613626565b5b60006136e985828601613679565b92505060206136fa858286016136af565b9150509250929050565b60008115159050919050565b61371981613704565b82525050565b60006020820190506137346000830184613710565b92915050565b6000602082840312156137505761374f613626565b5b600061375e848285016136af565b91505092915050565b6137708161368e565b82525050565b600060208201905061378b6000830184613767565b92915050565b6000806000606084860312156137aa576137a9613626565b5b60006137b886828701613679565b93505060206137c986828701613679565b92505060406137da868287016136af565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f840112613809576138086137e4565b5b8235905067ffffffffffffffff811115613826576138256137e9565b5b602083019150836020820283011115613842576138416137ee565b5b9250929050565b61385281613704565b811461385d57600080fd5b50565b60008135905061386f81613849565b92915050565b60008060006040848603121561388e5761388d613626565b5b600084013567ffffffffffffffff8111156138ac576138ab61362b565b5b6138b8868287016137f3565b935093505060206138cb86828701613860565b9150509250925092565b600060ff82169050919050565b6138eb816138d5565b82525050565b600060208201905061390660008301846138e2565b92915050565b60006020828403121561392257613921613626565b5b600061393084828501613679565b91505092915050565b600080604083850312156139505761394f613626565b5b600061395e858286016136af565b925050602061396f858286016136af565b9150509250929050565b600061398482613630565b9050919050565b61399481613979565b811461399f57600080fd5b50565b6000813590506139b18161398b565b92915050565b6000602082840312156139cd576139cc613626565b5b60006139db848285016139a2565b91505092915050565b6139ed81613650565b82525050565b6000602082019050613a0860008301846139e4565b92915050565b60008060408385031215613a2557613a24613626565b5b6000613a3385828601613679565b9250506020613a4485828601613860565b9150509250929050565b60008060408385031215613a6557613a64613626565b5b6000613a7385828601613679565b9250506020613a8485828601613679565b9150509250929050565b600060208284031215613aa457613aa3613626565b5b6000613ab284828501613860565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613af160208361357f565b9150613afc82613abb565b602082019050919050565b60006020820190508181036000830152613b2081613ae4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b618261368e565b9150613b6c8361368e565b9250828202613b7a8161368e565b91508282048414831517613b9157613b90613b27565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613bd28261368e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613c0457613c03613b27565b5b600182019050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613c6b60398361357f565b9150613c7682613c0f565b604082019050919050565b60006020820190508181036000830152613c9a81613c5e565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000613cd760178361357f565b9150613ce282613ca1565b602082019050919050565b60006020820190508181036000830152613d0681613cca565b9050919050565b600081519050613d1c81613662565b92915050565b600060208284031215613d3857613d37613626565b5b6000613d4684828501613d0d565b91505092915050565b6000604082019050613d6460008301856139e4565b613d7160208301846139e4565b9392505050565b6000819050919050565b6000819050919050565b6000613da7613da2613d9d84613d78565b613d82565b61368e565b9050919050565b613db781613d8c565b82525050565b600060c082019050613dd260008301896139e4565b613ddf6020830188613767565b613dec6040830187613dae565b613df96060830186613dae565b613e0660808301856139e4565b613e1360a0830184613767565b979650505050505050565b600081519050613e2d81613698565b92915050565b600080600060608486031215613e4c57613e4b613626565b5b6000613e5a86828701613e1e565b9350506020613e6b86828701613e1e565b9250506040613e7c86828701613e1e565b9150509250925092565b6000604082019050613e9b60008301856139e4565b613ea86020830184613767565b9392505050565b600081519050613ebe81613849565b92915050565b600060208284031215613eda57613ed9613626565b5b6000613ee884828501613eaf565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f4d60248361357f565b9150613f5882613ef1565b604082019050919050565b60006020820190508181036000830152613f7c81613f40565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613fdf60228361357f565b9150613fea82613f83565b604082019050919050565b6000602082019050818103600083015261400e81613fd2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061407160258361357f565b915061407c82614015565b604082019050919050565b600060208201905081810360008301526140a081614064565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061410360238361357f565b915061410e826140a7565b604082019050919050565b60006020820190508181036000830152614132816140f6565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061419560298361357f565b91506141a082614139565b604082019050919050565b600060208201905081810360008301526141c481614188565b9050919050565b60006141d68261368e565b91506141e18361368e565b92508282019050808211156141f9576141f8613b27565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061425b60238361357f565b9150614266826141ff565b604082019050919050565b6000602082019050818103600083015261428a8161424e565b9050919050565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b60006142c760188361357f565b91506142d282614291565b602082019050919050565b600060208201905081810360008301526142f6816142ba565b9050919050565b7f544f4b454e3a204d617820627579206578636565646564210000000000000000600082015250565b600061433360188361357f565b915061433e826142fd565b602082019050919050565b6000602082019050818103600083015261436281614326565b9050919050565b60006143748261368e565b915061437f8361368e565b925082820390508181111561439757614396613b27565b5b92915050565b600081905092915050565b50565b60006143b860008361439d565b91506143c3826143a8565b600082019050919050565b60006143d9826143ab565b9150819050919050565b60006040820190506143f86000830185613710565b6144056020830184613710565b9392505050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000614468602a8361357f565b91506144738261440c565b604082019050919050565b600060208201905081810360008301526144978161445b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61450281613650565b82525050565b600061451483836144f9565b60208301905092915050565b6000602082019050919050565b6000614538826144cd565b61454281856144d8565b935061454d836144e9565b8060005b8381101561457e5781516145658882614508565b975061457083614520565b925050600181019050614551565b5085935050505092915050565b600060a0820190506145a06000830188613767565b6145ad6020830187613dae565b81810360408301526145bf818661452d565b90506145ce60608301856139e4565b6145db6080830184613767565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061461f8261368e565b915061462a8361368e565b92508261463a576146396145e5565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061467b601b8361357f565b915061468682614645565b602082019050919050565b600060208201905081810360008301526146aa8161466e565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061470d60218361357f565b9150614718826146b1565b604082019050919050565b6000602082019050818103600083015261473c81614700565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201fb065708ec00dcea1868157f47567c167860e08f533ea575fd68c67e17b7a3564736f6c63430008120033

Deployed Bytecode Sourcemap

9027:14934:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11426:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22062:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20094:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23520:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22751:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21158:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19106:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23429:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20730:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19778:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19308:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20236:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18874:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20997:153;;;;;;;;;;;;;:::i;:::-;;21765:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8108:148;;;;;;;;;;;;;:::i;:::-;;18624:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7894:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23334:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21375:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20538:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22576:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20831:154;;;;;;;;;;;;;:::i;:::-;;19906:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17849:767;;;;;;;;;;;;;:::i;:::-;;19430:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21266:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21911:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20444:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19648:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20345:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20001:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11426:83;11463:13;11496:5;;;;;;;;;;;;;;;;;11489:12;;11426:83;:::o;22062:161::-;22137:4;22154:39;22163:12;:10;:12::i;:::-;22177:7;22186:6;22154:8;:39::i;:::-;22211:4;22204:11;;22062:161;;;;:::o;20094:134::-;8031:12;:10;:12::i;:::-;8021:22;;:6;;;;;;;;;;:22;;;8013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20215:5:::1;20204:8;:16;;;;:::i;:::-;20178:23;:42;;;;20094:134:::0;:::o;23520:95::-;23573:7;9335:12;23593:14;;23520:95;:::o;22751:313::-;22849:4;22866:36;22876:6;22884:9;22895:6;22866:9;:36::i;:::-;22913:121;22922:6;22930:12;:10;:12::i;:::-;22944:89;22982:6;22944:89;;;;;;;;;;;;;;;;;:11;:19;22956:6;22944:19;;;;;;;;;;;;;;;:33;22964:12;:10;:12::i;:::-;22944:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;22913:8;:121::i;:::-;23052:4;23045:11;;22751:313;;;;;:::o;21158:100::-;21202:4;21226:24;21244:4;21226:9;:24::i;:::-;21219:31;;21158:100;:::o;19106:194::-;8031:12;:10;:12::i;:::-;8021:22;;:6;;;;;;;;;;:22;;;8013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19199:6:::1;19194:99;19215:3;;:10;;19211:1;:14;19194:99;;;19276:5;19247:18;:26;19266:3;;19270:1;19266:6;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;19247:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;19227:3;;;;;:::i;:::-;;;;19194:99;;;;19106:194:::0;;;:::o;23429:83::-;23470:5;9243:1;23488:16;;23429:83;:::o;20730:89::-;20778:4;20802:5;:9;20808:2;20802:9;;;;;;;;;;;;;;;;;;;;;;;;;20795:16;;20730:89;;;:::o;19778:120::-;8031:12;:10;:12::i;:::-;8021:22;;:6;;;;;;;;;;:22;;;8013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19861:3:::1;19851:7;:13;;;;19886:4;19875:8;:15;;;;19778:120:::0;;:::o;19308:114::-;19368:4;19392:18;:22;19411:2;19392:22;;;;;;;;;;;;;;;;;;;;;;;;;19385:29;;19308:114;;;:::o;20236:101::-;8031:12;:10;:12::i;:::-;8021:22;;:6;;;;;;;;;;:22;;;8013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20324:5:::1;20318:3;:11;;;;:::i;:::-;20301:14;:28;;;;20236:101:::0;:::o;18874:224::-;8031:12;:10;:12::i;:::-;8021:22;;:6;;;;;;;;;;:22;;;8013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18999:5:::1;18960:18;:36;18979:16;;;;;;;;;;;18960:36;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;19034:9;19015:16;;:28;;;;;;;;;;;;;;;;;;19086:4;19054:18;:29;19073:9;19054:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;18874:224:::0;:::o;20997:153::-;8031:12;:10;:12::i;:::-;8021:22;;:6;;;;;;;;;;:22;;;8013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21049:26:::1;21078:21;21049:50;;21110:32;21123:18;21110:12;:32::i;:::-;21038:112;20997:153::o:0;21765:138::-;21831:7;21858:37;21878:7;:16;21886:7;21878:16;;;;;;;;;;;;;;;;21858:19;:37::i;:::-;21851:44;;21765:138;;;:::o;8108:148::-;8031:12;:10;:12::i;:::-;8021:22;;:6;;;;;;;;;;:22;;;8013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8215:1:::1;8178:40;;8199:6;::::0;::::1;;;;;;;;8178:40;;;;;;;;;;;;8246:1;8229:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;8108:148::o:0;18624:238::-;8031:12;:10;:12::i;:::-;8021:22;;:6;;;;;;;;;;:22;;;8013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18757:5:::1;18716:18;:38;18735:18;;;;;;;;;;;18716:38;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;18794:11;18773:18;;:32;;;;;;;;;;;;;;;;;;18850:4;18816:18;:31;18835:11;18816:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;18624:238:::0;:::o;7894:79::-;7932:7;7959:6;;;;;;;;;;;7952:13;;7894:79;:::o;23334:87::-;23373:13;23406:7;;;;;;;;;;;;;;;;;23399:14;;23334:87;:::o;21375:244::-;8031:12;:10;:12::i;:::-;8021:22;;:6;;;;;;;;;;:22;;;8013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21484:13:::1;;;;;;;;;;;21476:21;;:4;:21;;::::0;21468:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21570:41;21599:4;21605:5;21570:28;:41::i;:::-;21375:244:::0;;:::o;20538:180::-;8031:12;:10;:12::i;:::-;8021:22;;:6;;;;;;;;;;:22;;;8013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20626:6:::1;20621:90;20642:5;;:12;;20638:1;:16;20621:90;;;20694:5;20676;:15;20682:5;;20688:1;20682:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;20676:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;20656:3;;;;;:::i;:::-;;;;20621:90;;;;20538:180:::0;;;:::o;22576:167::-;22654:4;22671:42;22681:12;:10;:12::i;:::-;22695:9;22706:6;22671:9;:42::i;:::-;22731:4;22724:11;;22576:167;;;;:::o;20831:154::-;8031:12;:10;:12::i;:::-;8021:22;;:6;;;;;;;;;;:22;;;8013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20883:23:::1;20909:24;20927:4;20909:9;:24::i;:::-;20883:50;;20944:33;20961:15;20944:16;:33::i;:::-;20872:113;20831:154::o:0;19906:83::-;8031:12;:10;:12::i;:::-;8021:22;;:6;;;;;;;;;;:22;;;8013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19978:3:::1;19968:7;:13;;;;19906:83:::0;:::o;17849:767::-;8031:12;:10;:12::i;:::-;8021:22;;:6;;;;;;;;;;:22;;;8013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17913:11:::1;;;;;;;;;;;17912:12;17904:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;17962:35;18019:42;17962:100;;18091:16;18073:15;;:34;;;;;;;;;;;;;;;;;;18118:58;18135:4;18150:15;;;;;;;;;;;9335:12;18118:8;:58::i;:::-;18221:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18203:56;;;18268:4;18275:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18203:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18187:13;;:112;;;;;;;;;;;;;;;;;;18310:15;;;;;;;;;;;:31;;;18349:21;18380:4;18386:24;18404:4;18386:9;:24::i;:::-;18411:1;18413::::0;18415:7:::1;:5;:7::i;:::-;18423:15;18310:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18457:13;;;;;;;;;;;18450:29;;;18488:15;;;;;;;;;;;18506:14;18450:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18546:4;18532:11;;:18;;;;;;;;;;;;;;;;;;18604:4;18561:25;:40;18587:13;;;;;;;;;;;18561:40;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;17893:723;17849:767::o:0;19430:206::-;8031:12;:10;:12::i;:::-;8021:22;;:6;;;;;;;;;;:22;;;8013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19529:6:::1;19524:105;19545:3;;:10;;19541:1;:14;19524:105;;;19612:5;19577:24;:32;19602:3;;19606:1;19602:6;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;19577:32;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;19557:3;;;;;:::i;:::-;;;;19524:105;;;;19430:206:::0;;;:::o;21266:101::-;21311:4;21335:24;21345:13;;;;;;;;;;;21335:9;:24::i;:::-;21328:31;;21266:101;:::o;21911:143::-;21992:7;22019:11;:18;22031:5;22019:18;;;;;;;;;;;;;;;:27;22038:7;22019:27;;;;;;;;;;;;;;;;22012:34;;21911:143;;;;:::o;20444:86::-;8031:12;:10;:12::i;:::-;8021:22;;:6;;;;;;;;;;:22;;;8013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20517:5:::1;20506:8;;:16;;;;;;;;;;;;;;;;;;20444:86:::0;:::o;19648:122::-;19710:4;19734:24;:28;19759:2;19734:28;;;;;;;;;;;;;;;;;;;;;;;;;19727:35;;19648:122;;;:::o;20345:91::-;8031:12;:10;:12::i;:::-;8021:22;;:6;;;;;;;;;;:22;;;8013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20423:5:::1;20417:3;:11;;;;:::i;:::-;20407:7;:21;;;;20345:91:::0;:::o;20001:81::-;20043:4;20067:7;;20060:14;;20001:81;:::o;7434:98::-;7487:7;7514:10;7507:17;;7434:98;:::o;23623:335::-;23733:1;23716:19;;:5;:19;;;23708:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23814:1;23795:21;;:7;:21;;;23787:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23896:6;23866:11;:18;23878:5;23866:18;;;;;;;;;;;;;;;:27;23885:7;23866:27;;;;;;;;;;;;;;;:36;;;;23934:7;23918:32;;23927:5;23918:32;;;23943:6;23918:32;;;;;;:::i;:::-;;;;;;;;23623:335;;;:::o;11521:1923::-;11625:1;11609:18;;:4;:18;;;11601:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11702:1;11688:16;;:2;:16;;;11680:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11772:1;11763:6;:10;11755:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11843:7;:5;:7::i;:::-;11835:15;;:4;:15;;;;:32;;;;;11860:7;:5;:7::i;:::-;11854:13;;:2;:13;;;;11835:32;11832:1282;;;11907:5;:11;11913:4;11907:11;;;;;;;;;;;;;;;;;;;;;;;;;11906:12;:26;;;;;11923:5;:9;11929:2;11923:9;;;;;;;;;;;;;;;;;;;;;;;;;11922:10;11906:26;11898:35;;;;;;11959:13;;;;;;;;;;;11953:19;;:2;:19;;;;:52;;;;;11977:24;:28;12002:2;11977:28;;;;;;;;;;;;;;;;;;;;;;;;;11976:29;11953:52;:75;;;;;12027:1;12009:14;;:19;;11953:75;11950:212;;;12092:14;;12082:6;12057:22;12075:2;12057:9;:22::i;:::-;:31;;;;:::i;:::-;:49;;12049:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;11950:212;12201:13;;;;;;;;;;;12193:21;;:4;:21;;;:55;;;;;12232:15;;;;;;;;;;;12218:30;;:2;:30;;;;12193:55;:82;;;;;12253:18;:22;12272:2;12253:22;;;;;;;;;;;;;;;;;;;;;;;;;12252:23;12193:82;12190:343;;;12304:11;;;;;;;;;;;12296:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12379:1;12368:7;;:12;12365:114;;12423:7;;12413:6;:17;;12405:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;12365:114;12510:7;;12499:8;:18;;;;12190:343;12547:28;12578:24;12596:4;12578:9;:24::i;:::-;12547:55;;12623:6;;;;;;;;;;12622:7;:32;;;;;12641:13;;;;;;;;;;;12633:21;;:4;:21;;;;12622:32;:47;;;;;12658:11;;;;;;;;;;;12622:47;12619:484;;;12703:8;;12692;:19;;;;12736:25;:29;12762:2;12736:29;;;;;;;;;;;;;;;;;;;;;;;;;12732:354;;;12816:23;;12793:20;:46;12790:277;;;12872:8;;;;;;;;;;;12868:119;;12936:23;;12913:46;;12868:119;13013:30;13022:20;13013:8;:30::i;:::-;12790:277;12732:354;12619:484;11869:1245;11832:1282;13124:12;13139:4;13124:19;;13159:18;:24;13178:4;13159:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;13187:18;:22;13206:2;13187:22;;;;;;;;;;;;;;;;;;;;;;;;;13159:50;13156:97;;;13236:5;13226:15;;13156:97;13269:25;:31;13295:4;13269:31;;;;;;;;;;;;;;;;;;;;;;;;;13268:32;:66;;;;;13305:25;:29;13331:2;13305:29;;;;;;;;;;;;;;;;;;;;;;;;;13304:30;13268:66;13265:113;;;13361:5;13351:15;;13265:113;13398:38;13413:4;13418:2;13421:6;13428:7;13398:14;:38::i;:::-;11590:1854;11521:1923;;;:::o;3844:192::-;3930:7;3963:1;3958;:6;;3966:12;3950:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3990:9;4006:1;4002;:5;;;;:::i;:::-;3990:17;;4027:1;4020:8;;;3844:192;;;;;:::o;14698:266::-;14756:16;14778:18;;;;;;;;;;;:23;;14809:13;14820:1;14809:6;:10;;:13;;;;:::i;:::-;14778:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14755:72;;;14839:14;14859:16;;;;;;;;;;;:21;;14888:13;14899:1;14888:6;:10;;:13;;;;:::i;:::-;14859:47;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14838:68;;;14924:32;14933:11;14946:9;14924:32;;;;;;;:::i;:::-;;;;;;;;14744:220;;14698:266;:::o;23072:254::-;23139:7;23178;;23167;:18;;23159:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;23243:19;23266:10;:8;:10::i;:::-;23243:33;;23294:24;23306:11;23294:7;:11;;:24;;;;:::i;:::-;23287:31;;;23072:254;;;:::o;21627:130::-;21744:5;21710:25;:31;21736:4;21710:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21627:130;;:::o;14199:483::-;10621:4;10612:6;;:13;;;;;;;;;;;;;;;;;;14277:21:::1;14315:1;14301:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14277:40;;14346:4;14328;14333:1;14328:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;14372:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14362:4;14367:1;14362:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;14405:62;14422:4;14437:15;;;;;;;;;;;14455:11;14405:8;:62::i;:::-;14478:15;;;;;;;;;;;:66;;;14559:11;14585:1;14601:4;14628;14648:15;14478:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14266:416;10657:5:::0;10648:6;;:14;;;;;;;;;;;;;;;;;;14199:483;:::o;13906:285::-;13983:38;14000:20;13983:16;:38::i;:::-;14034:26;14063:21;14034:50;;14119:1;14098:18;:22;14095:89;;;14137:35;14150:21;14137:12;:35::i;:::-;14095:89;13962:229;13906:285;:::o;14976:263::-;15088:7;15084:40;;15110:14;:12;:14::i;:::-;15084:40;15135:44;15153:6;15161:9;15172:6;15135:17;:44::i;:::-;15194:7;15190:41;;15216:15;:13;:15::i;:::-;15190:41;14976:263;;;;:::o;5242:132::-;5300:7;5327:39;5331:1;5334;5327:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5320:46;;5242:132;;;;:::o;16580:163::-;16621:7;16642:15;16659;16678:19;:17;:19::i;:::-;16641:56;;;;16715:20;16727:7;16715;:11;;:20;;;;:::i;:::-;16708:27;;;;16580:163;:::o;22231:210::-;22288:1;22277:7;;:12;:29;;;;;22305:1;22293:8;;:13;22277:29;22308:7;22274:41;22343:7;;22325:15;:25;;;;22380:8;;22361:16;:27;;;;22409:1;22399:7;:11;;;;22432:1;22421:8;:12;;;;22231:210;:::o;15247:490::-;15346:15;15363:23;15388:12;15402:23;15427:12;15441:13;15458:19;15469:7;15458:10;:19::i;:::-;15345:132;;;;;;;;;;;;15506:28;15526:7;15506;:15;15514:6;15506:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;15488:7;:15;15496:6;15488:15;;;;;;;;;;;;;;;:46;;;;15566:39;15589:15;15566:7;:18;15574:9;15566:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;15545:7;:18;15553:9;15545:18;;;;;;;;;;;;;;;:60;;;;15619:16;15629:5;15619:9;:16::i;:::-;15646:23;15658:4;15664;15646:11;:23::i;:::-;15702:9;15685:44;;15694:6;15685:44;;;15713:15;15685:44;;;;;;:::i;:::-;;;;;;;;15334:403;;;;;;15247:490;;;:::o;22453:115::-;22507:15;;22497:7;:25;;;;22544:16;;22533:8;:27;;;;22453:115::o;5870:278::-;5956:7;5988:1;5984;:5;5991:12;5976:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;6015:9;6031:1;6027;:5;;;;:::i;:::-;6015:17;;6139:1;6132:8;;;5870:278;;;;;:::o;16751:255::-;16801:7;16810;16830:15;16848:7;;16830:25;;16866:15;9335:12;16866:25;;16915:20;9335:12;16915:7;;:11;;:20;;;;:::i;:::-;16905:7;:30;16902:60;;;16945:7;;9335:12;16937:25;;;;;;;;16902:60;16981:7;16990;16973:25;;;;;;16751:255;;;:::o;15745:468::-;15804:7;15813;15822;15831;15840;15849;15870:23;15895:12;15909:13;15926:39;15938:7;15947;;15956:8;;15926:11;:39::i;:::-;15869:96;;;;;;15976:19;15999:10;:8;:10::i;:::-;15976:33;;16021:15;16038:23;16063:12;16079:46;16091:7;16100:4;16106:5;16113:11;16079;:46::i;:::-;16020:105;;;;;;16144:7;16153:15;16170:4;16176:15;16193:4;16199:5;16136:69;;;;;;;;;;;;;;;;;;;15745:468;;;;;;;:::o;3405:136::-;3463:7;3490:43;3494:1;3497;3490:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3483:50;;3405:136;;;;:::o;2941:181::-;2999:7;3019:9;3035:1;3031;:5;;;;:::i;:::-;3019:17;;3060:1;3055;:6;;3047:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3113:1;3106:8;;;2941:181;;;;:::o;17431:214::-;17484:19;17507:10;:8;:10::i;:::-;17484:33;;17528:13;17544:22;17554:11;17544:5;:9;;:22;;;;:::i;:::-;17528:38;;17604:33;17631:5;17604:7;:22;17620:4;17604:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;17579:7;:22;17595:4;17579:22;;;;;;;;;;;;;;;:58;;;;17473:172;;17431:214;:::o;17653:147::-;17731:17;17743:4;17731:7;;:11;;:17;;;;:::i;:::-;17721:7;:27;;;;17772:20;17787:4;17772:10;;:14;;:20;;;;:::i;:::-;17759:10;:33;;;;17653:147;;:::o;16221:351::-;16314:7;16323;16332;16352:12;16367:28;16391:3;16367:19;16379:6;16367:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16352:43;;16406:13;16422:29;16447:3;16422:20;16434:7;16422;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;16406:45;;16462:23;16488:28;16510:5;16488:17;16500:4;16488:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16462:54;;16535:15;16552:4;16558:5;16527:37;;;;;;;;;16221:351;;;;;;;:::o;17014:409::-;17124:7;17133;17142;17162:15;17180:24;17192:11;17180:7;:11;;:24;;;;:::i;:::-;17162:42;;17215:12;17230:21;17239:11;17230:4;:8;;:21;;;;:::i;:::-;17215:36;;17262:13;17278:22;17288:11;17278:5;:9;;:22;;;;:::i;:::-;17262:38;;17311:23;17337:28;17359:5;17337:17;17349:4;17337:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;17311:54;;17384:7;17393:15;17410:4;17376:39;;;;;;;;;;17014:409;;;;;;;;:::o;4295:471::-;4353:7;4603:1;4598;:6;4594:47;;4628:1;4621:8;;;;4594:47;4653:9;4669:1;4665;:5;;;;:::i;:::-;4653:17;;4698:1;4693;4689;:5;;;;:::i;:::-;:10;4681:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;4757:1;4750:8;;;4295:471;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:117::-;4867:1;4864;4857:12;4881:117;4990:1;4987;4980:12;5004:117;5113:1;5110;5103:12;5144:568;5217:8;5227:6;5277:3;5270:4;5262:6;5258:17;5254:27;5244:122;;5285:79;;:::i;:::-;5244:122;5398:6;5385:20;5375:30;;5428:18;5420:6;5417:30;5414:117;;;5450:79;;:::i;:::-;5414:117;5564:4;5556:6;5552:17;5540:29;;5618:3;5610:4;5602:6;5598:17;5588:8;5584:32;5581:41;5578:128;;;5625:79;;:::i;:::-;5578:128;5144:568;;;;;:::o;5718:116::-;5788:21;5803:5;5788:21;:::i;:::-;5781:5;5778:32;5768:60;;5824:1;5821;5814:12;5768:60;5718:116;:::o;5840:133::-;5883:5;5921:6;5908:20;5899:29;;5937:30;5961:5;5937:30;:::i;:::-;5840:133;;;;:::o;5979:698::-;6071:6;6079;6087;6136:2;6124:9;6115:7;6111:23;6107:32;6104:119;;;6142:79;;:::i;:::-;6104:119;6290:1;6279:9;6275:17;6262:31;6320:18;6312:6;6309:30;6306:117;;;6342:79;;:::i;:::-;6306:117;6455:80;6527:7;6518:6;6507:9;6503:22;6455:80;:::i;:::-;6437:98;;;;6233:312;6584:2;6610:50;6652:7;6643:6;6632:9;6628:22;6610:50;:::i;:::-;6600:60;;6555:115;5979:698;;;;;:::o;6683:86::-;6718:7;6758:4;6751:5;6747:16;6736:27;;6683:86;;;:::o;6775:112::-;6858:22;6874:5;6858:22;:::i;:::-;6853:3;6846:35;6775:112;;:::o;6893:214::-;6982:4;7020:2;7009:9;7005:18;6997:26;;7033:67;7097:1;7086:9;7082:17;7073:6;7033:67;:::i;:::-;6893:214;;;;:::o;7113:329::-;7172:6;7221:2;7209:9;7200:7;7196:23;7192:32;7189:119;;;7227:79;;:::i;:::-;7189:119;7347:1;7372:53;7417:7;7408:6;7397:9;7393:22;7372:53;:::i;:::-;7362:63;;7318:117;7113:329;;;;:::o;7448:474::-;7516:6;7524;7573:2;7561:9;7552:7;7548:23;7544:32;7541:119;;;7579:79;;:::i;:::-;7541:119;7699:1;7724:53;7769:7;7760:6;7749:9;7745:22;7724:53;:::i;:::-;7714:63;;7670:117;7826:2;7852:53;7897:7;7888:6;7877:9;7873:22;7852:53;:::i;:::-;7842:63;;7797:118;7448:474;;;;;:::o;7928:104::-;7973:7;8002:24;8020:5;8002:24;:::i;:::-;7991:35;;7928:104;;;:::o;8038:138::-;8119:32;8145:5;8119:32;:::i;:::-;8112:5;8109:43;8099:71;;8166:1;8163;8156:12;8099:71;8038:138;:::o;8182:155::-;8236:5;8274:6;8261:20;8252:29;;8290:41;8325:5;8290:41;:::i;:::-;8182:155;;;;:::o;8343:345::-;8410:6;8459:2;8447:9;8438:7;8434:23;8430:32;8427:119;;;8465:79;;:::i;:::-;8427:119;8585:1;8610:61;8663:7;8654:6;8643:9;8639:22;8610:61;:::i;:::-;8600:71;;8556:125;8343:345;;;;:::o;8694:118::-;8781:24;8799:5;8781:24;:::i;:::-;8776:3;8769:37;8694:118;;:::o;8818:222::-;8911:4;8949:2;8938:9;8934:18;8926:26;;8962:71;9030:1;9019:9;9015:17;9006:6;8962:71;:::i;:::-;8818:222;;;;:::o;9046:468::-;9111:6;9119;9168:2;9156:9;9147:7;9143:23;9139:32;9136:119;;;9174:79;;:::i;:::-;9136:119;9294:1;9319:53;9364:7;9355:6;9344:9;9340:22;9319:53;:::i;:::-;9309:63;;9265:117;9421:2;9447:50;9489:7;9480:6;9469:9;9465:22;9447:50;:::i;:::-;9437:60;;9392:115;9046:468;;;;;:::o;9520:474::-;9588:6;9596;9645:2;9633:9;9624:7;9620:23;9616:32;9613:119;;;9651:79;;:::i;:::-;9613:119;9771:1;9796:53;9841:7;9832:6;9821:9;9817:22;9796:53;:::i;:::-;9786:63;;9742:117;9898:2;9924:53;9969:7;9960:6;9949:9;9945:22;9924:53;:::i;:::-;9914:63;;9869:118;9520:474;;;;;:::o;10000:323::-;10056:6;10105:2;10093:9;10084:7;10080:23;10076:32;10073:119;;;10111:79;;:::i;:::-;10073:119;10231:1;10256:50;10298:7;10289:6;10278:9;10274:22;10256:50;:::i;:::-;10246:60;;10202:114;10000:323;;;;:::o;10329:182::-;10469:34;10465:1;10457:6;10453:14;10446:58;10329:182;:::o;10517:366::-;10659:3;10680:67;10744:2;10739:3;10680:67;:::i;:::-;10673:74;;10756:93;10845:3;10756:93;:::i;:::-;10874:2;10869:3;10865:12;10858:19;;10517:366;;;:::o;10889:419::-;11055:4;11093:2;11082:9;11078:18;11070:26;;11142:9;11136:4;11132:20;11128:1;11117:9;11113:17;11106:47;11170:131;11296:4;11170:131;:::i;:::-;11162:139;;10889:419;;;:::o;11314:180::-;11362:77;11359:1;11352:88;11459:4;11456:1;11449:15;11483:4;11480:1;11473:15;11500:410;11540:7;11563:20;11581:1;11563:20;:::i;:::-;11558:25;;11597:20;11615:1;11597:20;:::i;:::-;11592:25;;11652:1;11649;11645:9;11674:30;11692:11;11674:30;:::i;:::-;11663:41;;11853:1;11844:7;11840:15;11837:1;11834:22;11814:1;11807:9;11787:83;11764:139;;11883:18;;:::i;:::-;11764:139;11548:362;11500:410;;;;:::o;11916:180::-;11964:77;11961:1;11954:88;12061:4;12058:1;12051:15;12085:4;12082:1;12075:15;12102:233;12141:3;12164:24;12182:5;12164:24;:::i;:::-;12155:33;;12210:66;12203:5;12200:77;12197:103;;12280:18;;:::i;:::-;12197:103;12327:1;12320:5;12316:13;12309:20;;12102:233;;;:::o;12341:244::-;12481:34;12477:1;12469:6;12465:14;12458:58;12550:27;12545:2;12537:6;12533:15;12526:52;12341:244;:::o;12591:366::-;12733:3;12754:67;12818:2;12813:3;12754:67;:::i;:::-;12747:74;;12830:93;12919:3;12830:93;:::i;:::-;12948:2;12943:3;12939:12;12932:19;;12591:366;;;:::o;12963:419::-;13129:4;13167:2;13156:9;13152:18;13144:26;;13216:9;13210:4;13206:20;13202:1;13191:9;13187:17;13180:47;13244:131;13370:4;13244:131;:::i;:::-;13236:139;;12963:419;;;:::o;13388:173::-;13528:25;13524:1;13516:6;13512:14;13505:49;13388:173;:::o;13567:366::-;13709:3;13730:67;13794:2;13789:3;13730:67;:::i;:::-;13723:74;;13806:93;13895:3;13806:93;:::i;:::-;13924:2;13919:3;13915:12;13908:19;;13567:366;;;:::o;13939:419::-;14105:4;14143:2;14132:9;14128:18;14120:26;;14192:9;14186:4;14182:20;14178:1;14167:9;14163:17;14156:47;14220:131;14346:4;14220:131;:::i;:::-;14212:139;;13939:419;;;:::o;14364:143::-;14421:5;14452:6;14446:13;14437:22;;14468:33;14495:5;14468:33;:::i;:::-;14364:143;;;;:::o;14513:351::-;14583:6;14632:2;14620:9;14611:7;14607:23;14603:32;14600:119;;;14638:79;;:::i;:::-;14600:119;14758:1;14783:64;14839:7;14830:6;14819:9;14815:22;14783:64;:::i;:::-;14773:74;;14729:128;14513:351;;;;:::o;14870:332::-;14991:4;15029:2;15018:9;15014:18;15006:26;;15042:71;15110:1;15099:9;15095:17;15086:6;15042:71;:::i;:::-;15123:72;15191:2;15180:9;15176:18;15167:6;15123:72;:::i;:::-;14870:332;;;;;:::o;15208:85::-;15253:7;15282:5;15271:16;;15208:85;;;:::o;15299:60::-;15327:3;15348:5;15341:12;;15299:60;;;:::o;15365:158::-;15423:9;15456:61;15474:42;15483:32;15509:5;15483:32;:::i;:::-;15474:42;:::i;:::-;15456:61;:::i;:::-;15443:74;;15365:158;;;:::o;15529:147::-;15624:45;15663:5;15624:45;:::i;:::-;15619:3;15612:58;15529:147;;:::o;15682:807::-;15931:4;15969:3;15958:9;15954:19;15946:27;;15983:71;16051:1;16040:9;16036:17;16027:6;15983:71;:::i;:::-;16064:72;16132:2;16121:9;16117:18;16108:6;16064:72;:::i;:::-;16146:80;16222:2;16211:9;16207:18;16198:6;16146:80;:::i;:::-;16236;16312:2;16301:9;16297:18;16288:6;16236:80;:::i;:::-;16326:73;16394:3;16383:9;16379:19;16370:6;16326:73;:::i;:::-;16409;16477:3;16466:9;16462:19;16453:6;16409:73;:::i;:::-;15682:807;;;;;;;;;:::o;16495:143::-;16552:5;16583:6;16577:13;16568:22;;16599:33;16626:5;16599:33;:::i;:::-;16495:143;;;;:::o;16644:663::-;16732:6;16740;16748;16797:2;16785:9;16776:7;16772:23;16768:32;16765:119;;;16803:79;;:::i;:::-;16765:119;16923:1;16948:64;17004:7;16995:6;16984:9;16980:22;16948:64;:::i;:::-;16938:74;;16894:128;17061:2;17087:64;17143:7;17134:6;17123:9;17119:22;17087:64;:::i;:::-;17077:74;;17032:129;17200:2;17226:64;17282:7;17273:6;17262:9;17258:22;17226:64;:::i;:::-;17216:74;;17171:129;16644:663;;;;;:::o;17313:332::-;17434:4;17472:2;17461:9;17457:18;17449:26;;17485:71;17553:1;17542:9;17538:17;17529:6;17485:71;:::i;:::-;17566:72;17634:2;17623:9;17619:18;17610:6;17566:72;:::i;:::-;17313:332;;;;;:::o;17651:137::-;17705:5;17736:6;17730:13;17721:22;;17752:30;17776:5;17752:30;:::i;:::-;17651:137;;;;:::o;17794:345::-;17861:6;17910:2;17898:9;17889:7;17885:23;17881:32;17878:119;;;17916:79;;:::i;:::-;17878:119;18036:1;18061:61;18114:7;18105:6;18094:9;18090:22;18061:61;:::i;:::-;18051:71;;18007:125;17794:345;;;;:::o;18145:223::-;18285:34;18281:1;18273:6;18269:14;18262:58;18354:6;18349:2;18341:6;18337:15;18330:31;18145:223;:::o;18374:366::-;18516:3;18537:67;18601:2;18596:3;18537:67;:::i;:::-;18530:74;;18613:93;18702:3;18613:93;:::i;:::-;18731:2;18726:3;18722:12;18715:19;;18374:366;;;:::o;18746:419::-;18912:4;18950:2;18939:9;18935:18;18927:26;;18999:9;18993:4;18989:20;18985:1;18974:9;18970:17;18963:47;19027:131;19153:4;19027:131;:::i;:::-;19019:139;;18746:419;;;:::o;19171:221::-;19311:34;19307:1;19299:6;19295:14;19288:58;19380:4;19375:2;19367:6;19363:15;19356:29;19171:221;:::o;19398:366::-;19540:3;19561:67;19625:2;19620:3;19561:67;:::i;:::-;19554:74;;19637:93;19726:3;19637:93;:::i;:::-;19755:2;19750:3;19746:12;19739:19;;19398:366;;;:::o;19770:419::-;19936:4;19974:2;19963:9;19959:18;19951:26;;20023:9;20017:4;20013:20;20009:1;19998:9;19994:17;19987:47;20051:131;20177:4;20051:131;:::i;:::-;20043:139;;19770:419;;;:::o;20195:224::-;20335:34;20331:1;20323:6;20319:14;20312:58;20404:7;20399:2;20391:6;20387:15;20380:32;20195:224;:::o;20425:366::-;20567:3;20588:67;20652:2;20647:3;20588:67;:::i;:::-;20581:74;;20664:93;20753:3;20664:93;:::i;:::-;20782:2;20777:3;20773:12;20766:19;;20425:366;;;:::o;20797:419::-;20963:4;21001:2;20990:9;20986:18;20978:26;;21050:9;21044:4;21040:20;21036:1;21025:9;21021:17;21014:47;21078:131;21204:4;21078:131;:::i;:::-;21070:139;;20797:419;;;:::o;21222:222::-;21362:34;21358:1;21350:6;21346:14;21339:58;21431:5;21426:2;21418:6;21414:15;21407:30;21222:222;:::o;21450:366::-;21592:3;21613:67;21677:2;21672:3;21613:67;:::i;:::-;21606:74;;21689:93;21778:3;21689:93;:::i;:::-;21807:2;21802:3;21798:12;21791:19;;21450:366;;;:::o;21822:419::-;21988:4;22026:2;22015:9;22011:18;22003:26;;22075:9;22069:4;22065:20;22061:1;22050:9;22046:17;22039:47;22103:131;22229:4;22103:131;:::i;:::-;22095:139;;21822:419;;;:::o;22247:228::-;22387:34;22383:1;22375:6;22371:14;22364:58;22456:11;22451:2;22443:6;22439:15;22432:36;22247:228;:::o;22481:366::-;22623:3;22644:67;22708:2;22703:3;22644:67;:::i;:::-;22637:74;;22720:93;22809:3;22720:93;:::i;:::-;22838:2;22833:3;22829:12;22822:19;;22481:366;;;:::o;22853:419::-;23019:4;23057:2;23046:9;23042:18;23034:26;;23106:9;23100:4;23096:20;23092:1;23081:9;23077:17;23070:47;23134:131;23260:4;23134:131;:::i;:::-;23126:139;;22853:419;;;:::o;23278:191::-;23318:3;23337:20;23355:1;23337:20;:::i;:::-;23332:25;;23371:20;23389:1;23371:20;:::i;:::-;23366:25;;23414:1;23411;23407:9;23400:16;;23435:3;23432:1;23429:10;23426:36;;;23442:18;;:::i;:::-;23426:36;23278:191;;;;:::o;23475:222::-;23615:34;23611:1;23603:6;23599:14;23592:58;23684:5;23679:2;23671:6;23667:15;23660:30;23475:222;:::o;23703:366::-;23845:3;23866:67;23930:2;23925:3;23866:67;:::i;:::-;23859:74;;23942:93;24031:3;23942:93;:::i;:::-;24060:2;24055:3;24051:12;24044:19;;23703:366;;;:::o;24075:419::-;24241:4;24279:2;24268:9;24264:18;24256:26;;24328:9;24322:4;24318:20;24314:1;24303:9;24299:17;24292:47;24356:131;24482:4;24356:131;:::i;:::-;24348:139;;24075:419;;;:::o;24500:174::-;24640:26;24636:1;24628:6;24624:14;24617:50;24500:174;:::o;24680:366::-;24822:3;24843:67;24907:2;24902:3;24843:67;:::i;:::-;24836:74;;24919:93;25008:3;24919:93;:::i;:::-;25037:2;25032:3;25028:12;25021:19;;24680:366;;;:::o;25052:419::-;25218:4;25256:2;25245:9;25241:18;25233:26;;25305:9;25299:4;25295:20;25291:1;25280:9;25276:17;25269:47;25333:131;25459:4;25333:131;:::i;:::-;25325:139;;25052:419;;;:::o;25477:174::-;25617:26;25613:1;25605:6;25601:14;25594:50;25477:174;:::o;25657:366::-;25799:3;25820:67;25884:2;25879:3;25820:67;:::i;:::-;25813:74;;25896:93;25985:3;25896:93;:::i;:::-;26014:2;26009:3;26005:12;25998:19;;25657:366;;;:::o;26029:419::-;26195:4;26233:2;26222:9;26218:18;26210:26;;26282:9;26276:4;26272:20;26268:1;26257:9;26253:17;26246:47;26310:131;26436:4;26310:131;:::i;:::-;26302:139;;26029:419;;;:::o;26454:194::-;26494:4;26514:20;26532:1;26514:20;:::i;:::-;26509:25;;26548:20;26566:1;26548:20;:::i;:::-;26543:25;;26592:1;26589;26585:9;26577:17;;26616:1;26610:4;26607:11;26604:37;;;26621:18;;:::i;:::-;26604:37;26454:194;;;;:::o;26654:147::-;26755:11;26792:3;26777:18;;26654:147;;;;:::o;26807:114::-;;:::o;26927:398::-;27086:3;27107:83;27188:1;27183:3;27107:83;:::i;:::-;27100:90;;27199:93;27288:3;27199:93;:::i;:::-;27317:1;27312:3;27308:11;27301:18;;26927:398;;;:::o;27331:379::-;27515:3;27537:147;27680:3;27537:147;:::i;:::-;27530:154;;27701:3;27694:10;;27331:379;;;:::o;27716:308::-;27825:4;27863:2;27852:9;27848:18;27840:26;;27876:65;27938:1;27927:9;27923:17;27914:6;27876:65;:::i;:::-;27951:66;28013:2;28002:9;27998:18;27989:6;27951:66;:::i;:::-;27716:308;;;;;:::o;28030:229::-;28170:34;28166:1;28158:6;28154:14;28147:58;28239:12;28234:2;28226:6;28222:15;28215:37;28030:229;:::o;28265:366::-;28407:3;28428:67;28492:2;28487:3;28428:67;:::i;:::-;28421:74;;28504:93;28593:3;28504:93;:::i;:::-;28622:2;28617:3;28613:12;28606:19;;28265:366;;;:::o;28637:419::-;28803:4;28841:2;28830:9;28826:18;28818:26;;28890:9;28884:4;28880:20;28876:1;28865:9;28861:17;28854:47;28918:131;29044:4;28918:131;:::i;:::-;28910:139;;28637:419;;;:::o;29062:180::-;29110:77;29107:1;29100:88;29207:4;29204:1;29197:15;29231:4;29228:1;29221:15;29248:114;29315:6;29349:5;29343:12;29333:22;;29248:114;;;:::o;29368:184::-;29467:11;29501:6;29496:3;29489:19;29541:4;29536:3;29532:14;29517:29;;29368:184;;;;:::o;29558:132::-;29625:4;29648:3;29640:11;;29678:4;29673:3;29669:14;29661:22;;29558:132;;;:::o;29696:108::-;29773:24;29791:5;29773:24;:::i;:::-;29768:3;29761:37;29696:108;;:::o;29810:179::-;29879:10;29900:46;29942:3;29934:6;29900:46;:::i;:::-;29978:4;29973:3;29969:14;29955:28;;29810:179;;;;:::o;29995:113::-;30065:4;30097;30092:3;30088:14;30080:22;;29995:113;;;:::o;30144:732::-;30263:3;30292:54;30340:5;30292:54;:::i;:::-;30362:86;30441:6;30436:3;30362:86;:::i;:::-;30355:93;;30472:56;30522:5;30472:56;:::i;:::-;30551:7;30582:1;30567:284;30592:6;30589:1;30586:13;30567:284;;;30668:6;30662:13;30695:63;30754:3;30739:13;30695:63;:::i;:::-;30688:70;;30781:60;30834:6;30781:60;:::i;:::-;30771:70;;30627:224;30614:1;30611;30607:9;30602:14;;30567:284;;;30571:14;30867:3;30860:10;;30268:608;;;30144:732;;;;:::o;30882:831::-;31145:4;31183:3;31172:9;31168:19;31160:27;;31197:71;31265:1;31254:9;31250:17;31241:6;31197:71;:::i;:::-;31278:80;31354:2;31343:9;31339:18;31330:6;31278:80;:::i;:::-;31405:9;31399:4;31395:20;31390:2;31379:9;31375:18;31368:48;31433:108;31536:4;31527:6;31433:108;:::i;:::-;31425:116;;31551:72;31619:2;31608:9;31604:18;31595:6;31551:72;:::i;:::-;31633:73;31701:3;31690:9;31686:19;31677:6;31633:73;:::i;:::-;30882:831;;;;;;;;:::o;31719:180::-;31767:77;31764:1;31757:88;31864:4;31861:1;31854:15;31888:4;31885:1;31878:15;31905:185;31945:1;31962:20;31980:1;31962:20;:::i;:::-;31957:25;;31996:20;32014:1;31996:20;:::i;:::-;31991:25;;32035:1;32025:35;;32040:18;;:::i;:::-;32025:35;32082:1;32079;32075:9;32070:14;;31905:185;;;;:::o;32096:177::-;32236:29;32232:1;32224:6;32220:14;32213:53;32096:177;:::o;32279:366::-;32421:3;32442:67;32506:2;32501:3;32442:67;:::i;:::-;32435:74;;32518:93;32607:3;32518:93;:::i;:::-;32636:2;32631:3;32627:12;32620:19;;32279:366;;;:::o;32651:419::-;32817:4;32855:2;32844:9;32840:18;32832:26;;32904:9;32898:4;32894:20;32890:1;32879:9;32875:17;32868:47;32932:131;33058:4;32932:131;:::i;:::-;32924:139;;32651:419;;;:::o;33076:220::-;33216:34;33212:1;33204:6;33200:14;33193:58;33285:3;33280:2;33272:6;33268:15;33261:28;33076:220;:::o;33302:366::-;33444:3;33465:67;33529:2;33524:3;33465:67;:::i;:::-;33458:74;;33541:93;33630:3;33541:93;:::i;:::-;33659:2;33654:3;33650:12;33643:19;;33302:366;;;:::o;33674:419::-;33840:4;33878:2;33867:9;33863:18;33855:26;;33927:9;33921:4;33917:20;33913:1;33902:9;33898:17;33891:47;33955:131;34081:4;33955:131;:::i;:::-;33947:139;;33674:419;;;:::o

Swarm Source

ipfs://1fb065708ec00dcea1868157f47567c167860e08f533ea575fd68c67e17b7a35
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.