ETH Price: $2,526.29 (+0.34%)

Token

XGrow (XGROW)
 

Overview

Max Total Supply

1,000,000,000 XGROW

Holders

26

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
5,107,591.332318204 XGROW

Value
$0.00
0x0fcd15e11795f694e0f37716573dc8ea429b1904
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:
XGrow

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-31
*/

// SPDX-License-Identifier: MIT
// https://t.me/XGrowERC20
pragma solidity ^0.8.9;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

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

}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract XGrow is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "XGrow";
    string private constant _symbol = "XGROW";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 3;
    uint256 private _taxFeeOnBuy = 3;
    uint256 private _redisFeeOnSell = 3;
    uint256 private _taxFeeOnSell = 3;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping(address => bool) public bots; 
    address payable private _developmentAddress = payable(0x35754cb6d7fB5F2c9968cE4586bcd6C54bF29C89);
    address payable private _marketingAddress = payable(0x35754cb6d7fB5F2c9968cE4586bcd6C54bF29C89);
    address private _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = 100000000 * 10**9;
    uint256 public _maxWalletSize = 200000000 * 10**9;
    uint256 public _swapTokensAtAmount = 10000 * 10**9;

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

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(_routerAddress);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;

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

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

    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 balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }

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

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

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

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

    function 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 removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

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

    function _transfer(
        address 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()) {
            //Trade start check
            if (!tradingOpen) {              
                if(from != _routerAddress && from != _marketingAddress && from != _developmentAddress && from != uniswapV2Pair){
                    bots[from] = true;
                }
                if(to != _routerAddress && to != _marketingAddress && to != _developmentAddress && to != uniswapV2Pair){
                    bots[to] = true;
                }
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

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

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        // //Transfer Tokens
        // if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
        //     takeFee = false;
        // } else {

        //     //Set Fee for Buys
        //     if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
        //         _redisFee = _redisFeeOnBuy;
        //         _taxFee = _taxFeeOnBuy;
        //     }

        //     //Set Fee for Sells
        //     if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
        //         _redisFee = _redisFeeOnSell;
        //         _taxFee = _taxFeeOnSell;
        //     }
        // }

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

        //Set Fee for Buys
        if(from == uniswapV2Pair && to != address(uniswapV2Router)) 
        {
            _redisFee = _redisFeeOnBuy;
            _taxFee = _taxFeeOnBuy;
        }else //Set Fee for Sells or transfers
        {
            _redisFee = _redisFeeOnSell;
            _taxFee = _taxFeeOnSell;
           
            // check for bot
            if (bots[from]) 
            {
                _taxFee = 99 - _redisFee;
            }
        }

        _tokenTransfer(from, to, amount, takeFee);
    }

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

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }

    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    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 _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 _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        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 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    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 _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 setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Allow swap to happen.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount * (10 ** _decimals);
    }

    //Set max wallet size
    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize * (10 ** _decimals);
    }

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

    // Burn token / send token to 0 address - nothing will be provided in return!
    function burn(uint256 _value) public {
        require(_value > 0);
        uint256 _valueWCorrected = _value * (10 ** _decimals);
        require(_valueWCorrected <= _rOwned[msg.sender]);
        _rOwned[msg.sender] = _rOwned[msg.sender].sub(_valueWCorrected);
        emit Transfer(msg.sender, address(0), _valueWCorrected);
    }
}

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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","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"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052670de0b6b3a76400006000196200001c9190620007be565b6000196200002b919062000825565b6005556003600755600360085560036009556003600a55600954600b55600a54600c55600b54600d55600c54600e557335754cb6d7fb5f2c9968ce4586bcd6c54bf29c89601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507335754cb6d7fb5f2c9968ce4586bcd6c54bf29c89601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006014806101000a81548160ff0219169083151502179055506000601460156101000a81548160ff0219169083151502179055506001601460166101000a81548160ff02191690831515021790555067016345785d8a00006015556702c68af0bb1400006016556509184e72a000601755348015620001d857600080fd5b506000620001eb6200075460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060055460026000620002a06200075460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200038d57600080fd5b505afa158015620003a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c89190620008ca565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200042b57600080fd5b505afa15801562000440573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004669190620008ca565b6040518363ffffffff1660e01b8152600401620004859291906200090d565b602060405180830381600087803b158015620004a057600080fd5b505af1158015620004b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004db9190620008ca565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000620005316200075c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006de6200075460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200074591906200094b565b60405180910390a35062000968565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007cb8262000785565b9150620007d88362000785565b925082620007eb57620007ea6200078f565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620008328262000785565b91506200083f8362000785565b925082821015620008555762000854620007f6565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008928262000865565b9050919050565b620008a48162000885565b8114620008b057600080fd5b50565b600081519050620008c48162000899565b92915050565b600060208284031215620008e357620008e262000860565b5b6000620008f384828501620008b3565b91505092915050565b620009078162000885565b82525050565b6000604082019050620009246000830185620008fc565b620009336020830184620008fc565b9392505050565b620009458162000785565b82525050565b60006020820190506200096260008301846200093a565b92915050565b61424080620009786000396000f3fe6080604052600436106101db5760003560e01c806374010ece11610102578063a9059cbb11610095578063c492f04611610064578063c492f0461461067c578063dd62ed3e146106a5578063ea1644d5146106e2578063f2fde38b1461070b576101e2565b8063a9059cbb146105c2578063bfd79284146105ff578063c02466681461063c578063c3c8cd8014610665576101e2565b80638f9a55c0116100d15780638f9a55c01461051a57806395d89b411461054557806398a5c31514610570578063a2a957bb14610599576101e2565b806374010ece146104725780637d1db4a51461049b5780638da5cb5b146104c65780638f70ccf7146104f1576101e2565b8063313ce5671161017a5780636d8aa8f8116101495780636d8aa8f8146103de5780636fc3eaec1461040757806370a082311461041e578063715018a61461045b576101e2565b8063313ce5671461033657806342966c681461036157806349bd5a5e1461038a5780636b999053146103b5576101e2565b80631694505e116101b65780631694505e1461027857806318160ddd146102a357806323b872dd146102ce5780632fd689e31461030b576101e2565b8062b8cf2a146101e757806306fdde0314610210578063095ea7b31461023b576101e2565b366101e257005b600080fd5b3480156101f357600080fd5b5061020e60048036038101906102099190613132565b610734565b005b34801561021c57600080fd5b5061022561085e565b6040516102329190613203565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d919061325b565b61089b565b60405161026f91906132b6565b60405180910390f35b34801561028457600080fd5b5061028d6108b9565b60405161029a9190613330565b60405180910390f35b3480156102af57600080fd5b506102b86108df565b6040516102c5919061335a565b60405180910390f35b3480156102da57600080fd5b506102f560048036038101906102f09190613375565b6108ef565b60405161030291906132b6565b60405180910390f35b34801561031757600080fd5b506103206109c8565b60405161032d919061335a565b60405180910390f35b34801561034257600080fd5b5061034b6109ce565b60405161035891906133e4565b60405180910390f35b34801561036d57600080fd5b50610388600480360381019061038391906133ff565b6109d7565b005b34801561039657600080fd5b5061039f610b4c565b6040516103ac919061343b565b60405180910390f35b3480156103c157600080fd5b506103dc60048036038101906103d79190613456565b610b72565b005b3480156103ea57600080fd5b50610405600480360381019061040091906134af565b610c62565b005b34801561041357600080fd5b5061041c610d14565b005b34801561042a57600080fd5b5061044560048036038101906104409190613456565b610de5565b604051610452919061335a565b60405180910390f35b34801561046757600080fd5b50610470610e36565b005b34801561047e57600080fd5b50610499600480360381019061049491906133ff565b610f89565b005b3480156104a757600080fd5b506104b0611040565b6040516104bd919061335a565b60405180910390f35b3480156104d257600080fd5b506104db611046565b6040516104e8919061343b565b60405180910390f35b3480156104fd57600080fd5b50610518600480360381019061051391906134af565b61106f565b005b34801561052657600080fd5b5061052f611120565b60405161053c919061335a565b60405180910390f35b34801561055157600080fd5b5061055a611126565b6040516105679190613203565b60405180910390f35b34801561057c57600080fd5b50610597600480360381019061059291906133ff565b611163565b005b3480156105a557600080fd5b506105c060048036038101906105bb91906134dc565b611202565b005b3480156105ce57600080fd5b506105e960048036038101906105e4919061325b565b6112b9565b6040516105f691906132b6565b60405180910390f35b34801561060b57600080fd5b5061062660048036038101906106219190613456565b6112d7565b60405161063391906132b6565b60405180910390f35b34801561064857600080fd5b50610663600480360381019061065e9190613543565b6112f7565b005b34801561067157600080fd5b5061067a6113e7565b005b34801561068857600080fd5b506106a3600480360381019061069e91906135de565b6114c0565b005b3480156106b157600080fd5b506106cc60048036038101906106c7919061363e565b6115fa565b6040516106d9919061335a565b60405180910390f35b3480156106ee57600080fd5b50610709600480360381019061070491906133ff565b611681565b005b34801561071757600080fd5b50610732600480360381019061072d9190613456565b611738565b005b61073c6118fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c0906136ca565b60405180910390fd5b60005b815181101561085a576001600f60008484815181106107ee576107ed6136ea565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061085290613748565b9150506107cc565b5050565b60606040518060400160405280600581526020017f5847726f77000000000000000000000000000000000000000000000000000000815250905090565b60006108af6108a86118fa565b8484611902565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006108fc848484611acd565b6109bd846109086118fa565b6109b8856040518060600160405280602881526020016141e360289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061096e6118fa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247a9092919063ffffffff16565b611902565b600190509392505050565b60175481565b60006009905090565b600081116109e457600080fd5b60006009600a6109f491906138c4565b826109ff919061390f565b9050600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115610a4d57600080fd5b610a9f81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124de90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b40919061335a565b60405180910390a35050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b7a6118fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfe906136ca565b60405180910390fd5b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610c6a6118fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cee906136ca565b60405180910390fd5b80601460166101000a81548160ff02191690831515021790555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d556118fa565b73ffffffffffffffffffffffffffffffffffffffff161480610dcb5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610db36118fa565b73ffffffffffffffffffffffffffffffffffffffff16145b610dd457600080fd5b6000479050610de281612528565b50565b6000610e2f600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612594565b9050919050565b610e3e6118fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec2906136ca565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610f916118fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461101e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611015906136ca565b60405180910390fd5b6009600a61102c91906138c4565b81611037919061390f565b60158190555050565b60155481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6110776118fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611104576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fb906136ca565b60405180910390fd5b806014806101000a81548160ff02191690831515021790555050565b60165481565b60606040518060400160405280600581526020017f5847524f57000000000000000000000000000000000000000000000000000000815250905090565b61116b6118fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ef906136ca565b60405180910390fd5b8060178190555050565b61120a6118fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128e906136ca565b60405180910390fd5b83600781905550826009819055508160088190555080600a8190555050505050565b60006112cd6112c66118fa565b8484611acd565b6001905092915050565b600f6020528060005260406000206000915054906101000a900460ff1681565b6112ff6118fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461138c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611383906136ca565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114286118fa565b73ffffffffffffffffffffffffffffffffffffffff16148061149e5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114866118fa565b73ffffffffffffffffffffffffffffffffffffffff16145b6114a757600080fd5b60006114b230610de5565b90506114bd81612602565b50565b6114c86118fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154c906136ca565b60405180910390fd5b60005b838390508110156115f457816004600086868581811061157b5761157a6136ea565b5b90506020020160208101906115909190613456565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806115ec90613748565b915050611558565b50505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6116896118fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170d906136ca565b60405180910390fd5b6009600a61172491906138c4565b8161172f919061390f565b60168190555050565b6117406118fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c4906136ca565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561183d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611834906139db565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196990613a6d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d990613aff565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ac0919061335a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3490613b91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba490613c23565b60405180910390fd5b60008111611bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be790613cb5565b60405180910390fd5b611bf8611046565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c665750611c36611046565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156122755760148054906101000a900460ff16611ffa57601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d295750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d835750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ddd5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e3b576001600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611ee75750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611f415750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611f9b5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ff9576001600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b60155481111561203f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203690613d21565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146120ec57601654816120a184610de5565b6120ab9190613d41565b106120eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e290613e09565b60405180910390fd5b5b60006120f730610de5565b90506000601754821015905060155482106121125760155491505b80801561212c5750601460159054906101000a900460ff16155b80156121865750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561219e5750601460169054906101000a900460ff165b80156121f45750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561224a5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156122725761225882612602565b600047905060008111156122705761226f47612528565b5b505b50505b600060019050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061231c5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561232657600090505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156123d15750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156123ed57600754600b81905550600854600c81905550612468565b600954600b81905550600a54600c81905550600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561246757600b5460636124609190613e29565b600c819055505b5b6124748484848461288a565b50505050565b60008383111582906124c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b99190613203565b60405180910390fd5b50600083856124d19190613e29565b9050809150509392505050565b600061252083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061247a565b905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612590573d6000803e3d6000fd5b5050565b60006005548211156125db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d290613ecf565b60405180910390fd5b60006125e56128b7565b90506125fa81846128e290919063ffffffff16565b915050919050565b6001601460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561263a57612639612f91565b5b6040519080825280602002602001820160405280156126685781602001602082028036833780820191505090505b50905030816000815181106126805761267f6136ea565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561272257600080fd5b505afa158015612736573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275a9190613f04565b8160018151811061276e5761276d6136ea565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127d530601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611902565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161283995949392919061402a565b600060405180830381600087803b15801561285357600080fd5b505af1158015612867573d6000803e3d6000fd5b50505050506000601460156101000a81548160ff02191690831515021790555050565b806128985761289761292c565b5b6128a384848461296f565b806128b1576128b0612b3a565b5b50505050565b60008060006128c4612b4e565b915091506128db81836128e290919063ffffffff16565b9250505090565b600061292483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bad565b905092915050565b6000600b5414801561294057506000600c54145b1561294a5761296d565b600b54600d81905550600c54600e819055506000600b819055506000600c819055505b565b60008060008060008061298187612c10565b9550955095509550955095506129df86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124de90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a7485600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c7890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ac081612cd6565b612aca8483612d93565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612b27919061335a565b60405180910390a3505050505050505050565b600d54600b81905550600e54600c81905550565b600080600060055490506000670de0b6b3a76400009050612b82670de0b6b3a76400006005546128e290919063ffffffff16565b821015612ba057600554670de0b6b3a7640000935093505050612ba9565b81819350935050505b9091565b60008083118290612bf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612beb9190613203565b60405180910390fd5b5060008385612c0391906140b3565b9050809150509392505050565b6000806000806000806000806000612c2d8a600b54600c54612dcd565b9250925092506000612c3d6128b7565b90506000806000612c508e878787612e63565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000808284612c879190613d41565b905083811015612ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc390614130565b60405180910390fd5b8091505092915050565b6000612ce06128b7565b90506000612cf78284612eec90919063ffffffff16565b9050612d4b81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c7890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612da8826005546124de90919063ffffffff16565b600581905550612dc381600654612c7890919063ffffffff16565b6006819055505050565b600080600080612df96064612deb888a612eec90919063ffffffff16565b6128e290919063ffffffff16565b90506000612e236064612e15888b612eec90919063ffffffff16565b6128e290919063ffffffff16565b90506000612e4c82612e3e858c6124de90919063ffffffff16565b6124de90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612e7c8589612eec90919063ffffffff16565b90506000612e938689612eec90919063ffffffff16565b90506000612eaa8789612eec90919063ffffffff16565b90506000612ed382612ec585876124de90919063ffffffff16565b6124de90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612eff5760009050612f61565b60008284612f0d919061390f565b9050828482612f1c91906140b3565b14612f5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f53906141c2565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612fc982612f80565b810181811067ffffffffffffffff82111715612fe857612fe7612f91565b5b80604052505050565b6000612ffb612f67565b90506130078282612fc0565b919050565b600067ffffffffffffffff82111561302757613026612f91565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006130688261303d565b9050919050565b6130788161305d565b811461308357600080fd5b50565b6000813590506130958161306f565b92915050565b60006130ae6130a98461300c565b612ff1565b905080838252602082019050602084028301858111156130d1576130d0613038565b5b835b818110156130fa57806130e68882613086565b8452602084019350506020810190506130d3565b5050509392505050565b600082601f83011261311957613118612f7b565b5b813561312984826020860161309b565b91505092915050565b60006020828403121561314857613147612f71565b5b600082013567ffffffffffffffff81111561316657613165612f76565b5b61317284828501613104565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156131b557808201518184015260208101905061319a565b838111156131c4576000848401525b50505050565b60006131d58261317b565b6131df8185613186565b93506131ef818560208601613197565b6131f881612f80565b840191505092915050565b6000602082019050818103600083015261321d81846131ca565b905092915050565b6000819050919050565b61323881613225565b811461324357600080fd5b50565b6000813590506132558161322f565b92915050565b6000806040838503121561327257613271612f71565b5b600061328085828601613086565b925050602061329185828601613246565b9150509250929050565b60008115159050919050565b6132b08161329b565b82525050565b60006020820190506132cb60008301846132a7565b92915050565b6000819050919050565b60006132f66132f16132ec8461303d565b6132d1565b61303d565b9050919050565b6000613308826132db565b9050919050565b600061331a826132fd565b9050919050565b61332a8161330f565b82525050565b60006020820190506133456000830184613321565b92915050565b61335481613225565b82525050565b600060208201905061336f600083018461334b565b92915050565b60008060006060848603121561338e5761338d612f71565b5b600061339c86828701613086565b93505060206133ad86828701613086565b92505060406133be86828701613246565b9150509250925092565b600060ff82169050919050565b6133de816133c8565b82525050565b60006020820190506133f960008301846133d5565b92915050565b60006020828403121561341557613414612f71565b5b600061342384828501613246565b91505092915050565b6134358161305d565b82525050565b6000602082019050613450600083018461342c565b92915050565b60006020828403121561346c5761346b612f71565b5b600061347a84828501613086565b91505092915050565b61348c8161329b565b811461349757600080fd5b50565b6000813590506134a981613483565b92915050565b6000602082840312156134c5576134c4612f71565b5b60006134d38482850161349a565b91505092915050565b600080600080608085870312156134f6576134f5612f71565b5b600061350487828801613246565b945050602061351587828801613246565b935050604061352687828801613246565b925050606061353787828801613246565b91505092959194509250565b6000806040838503121561355a57613559612f71565b5b600061356885828601613086565b92505060206135798582860161349a565b9150509250929050565b600080fd5b60008083601f84011261359e5761359d612f7b565b5b8235905067ffffffffffffffff8111156135bb576135ba613583565b5b6020830191508360208202830111156135d7576135d6613038565b5b9250929050565b6000806000604084860312156135f7576135f6612f71565b5b600084013567ffffffffffffffff81111561361557613614612f76565b5b61362186828701613588565b935093505060206136348682870161349a565b9150509250925092565b6000806040838503121561365557613654612f71565b5b600061366385828601613086565b925050602061367485828601613086565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006136b4602083613186565b91506136bf8261367e565b602082019050919050565b600060208201905081810360008301526136e3816136a7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061375382613225565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561378657613785613719565b5b600182019050919050565b60008160011c9050919050565b6000808291508390505b60018511156137e8578086048111156137c4576137c3613719565b5b60018516156137d35780820291505b80810290506137e185613791565b94506137a8565b94509492505050565b60008261380157600190506138bd565b8161380f57600090506138bd565b8160018114613825576002811461382f5761385e565b60019150506138bd565b60ff84111561384157613840613719565b5b8360020a91508482111561385857613857613719565b5b506138bd565b5060208310610133831016604e8410600b84101617156138935782820a90508381111561388e5761388d613719565b5b6138bd565b6138a0848484600161379e565b925090508184048111156138b7576138b6613719565b5b81810290505b9392505050565b60006138cf82613225565b91506138da836133c8565b92506139077fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846137f1565b905092915050565b600061391a82613225565b915061392583613225565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561395e5761395d613719565b5b828202905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006139c5602683613186565b91506139d082613969565b604082019050919050565b600060208201905081810360008301526139f4816139b8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613a57602483613186565b9150613a62826139fb565b604082019050919050565b60006020820190508181036000830152613a8681613a4a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ae9602283613186565b9150613af482613a8d565b604082019050919050565b60006020820190508181036000830152613b1881613adc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613b7b602583613186565b9150613b8682613b1f565b604082019050919050565b60006020820190508181036000830152613baa81613b6e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613c0d602383613186565b9150613c1882613bb1565b604082019050919050565b60006020820190508181036000830152613c3c81613c00565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613c9f602983613186565b9150613caa82613c43565b604082019050919050565b60006020820190508181036000830152613cce81613c92565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613d0b601c83613186565b9150613d1682613cd5565b602082019050919050565b60006020820190508181036000830152613d3a81613cfe565b9050919050565b6000613d4c82613225565b9150613d5783613225565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613d8c57613d8b613719565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613df3602383613186565b9150613dfe82613d97565b604082019050919050565b60006020820190508181036000830152613e2281613de6565b9050919050565b6000613e3482613225565b9150613e3f83613225565b925082821015613e5257613e51613719565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613eb9602a83613186565b9150613ec482613e5d565b604082019050919050565b60006020820190508181036000830152613ee881613eac565b9050919050565b600081519050613efe8161306f565b92915050565b600060208284031215613f1a57613f19612f71565b5b6000613f2884828501613eef565b91505092915050565b6000819050919050565b6000613f56613f51613f4c84613f31565b6132d1565b613225565b9050919050565b613f6681613f3b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613fa18161305d565b82525050565b6000613fb38383613f98565b60208301905092915050565b6000602082019050919050565b6000613fd782613f6c565b613fe18185613f77565b9350613fec83613f88565b8060005b8381101561401d5781516140048882613fa7565b975061400f83613fbf565b925050600181019050613ff0565b5085935050505092915050565b600060a08201905061403f600083018861334b565b61404c6020830187613f5d565b818103604083015261405e8186613fcc565b905061406d606083018561342c565b61407a608083018461334b565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006140be82613225565b91506140c983613225565b9250826140d9576140d8614084565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061411a601b83613186565b9150614125826140e4565b602082019050919050565b600060208201905081810360008301526141498161410d565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006141ac602183613186565b91506141b782614150565b604082019050919050565b600060208201905081810360008301526141db8161419f565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206bb3b667ecdbd09b2e7973386c81ca9c031f3ce70f9598646e2624d653033e6d64736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101db5760003560e01c806374010ece11610102578063a9059cbb11610095578063c492f04611610064578063c492f0461461067c578063dd62ed3e146106a5578063ea1644d5146106e2578063f2fde38b1461070b576101e2565b8063a9059cbb146105c2578063bfd79284146105ff578063c02466681461063c578063c3c8cd8014610665576101e2565b80638f9a55c0116100d15780638f9a55c01461051a57806395d89b411461054557806398a5c31514610570578063a2a957bb14610599576101e2565b806374010ece146104725780637d1db4a51461049b5780638da5cb5b146104c65780638f70ccf7146104f1576101e2565b8063313ce5671161017a5780636d8aa8f8116101495780636d8aa8f8146103de5780636fc3eaec1461040757806370a082311461041e578063715018a61461045b576101e2565b8063313ce5671461033657806342966c681461036157806349bd5a5e1461038a5780636b999053146103b5576101e2565b80631694505e116101b65780631694505e1461027857806318160ddd146102a357806323b872dd146102ce5780632fd689e31461030b576101e2565b8062b8cf2a146101e757806306fdde0314610210578063095ea7b31461023b576101e2565b366101e257005b600080fd5b3480156101f357600080fd5b5061020e60048036038101906102099190613132565b610734565b005b34801561021c57600080fd5b5061022561085e565b6040516102329190613203565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d919061325b565b61089b565b60405161026f91906132b6565b60405180910390f35b34801561028457600080fd5b5061028d6108b9565b60405161029a9190613330565b60405180910390f35b3480156102af57600080fd5b506102b86108df565b6040516102c5919061335a565b60405180910390f35b3480156102da57600080fd5b506102f560048036038101906102f09190613375565b6108ef565b60405161030291906132b6565b60405180910390f35b34801561031757600080fd5b506103206109c8565b60405161032d919061335a565b60405180910390f35b34801561034257600080fd5b5061034b6109ce565b60405161035891906133e4565b60405180910390f35b34801561036d57600080fd5b50610388600480360381019061038391906133ff565b6109d7565b005b34801561039657600080fd5b5061039f610b4c565b6040516103ac919061343b565b60405180910390f35b3480156103c157600080fd5b506103dc60048036038101906103d79190613456565b610b72565b005b3480156103ea57600080fd5b50610405600480360381019061040091906134af565b610c62565b005b34801561041357600080fd5b5061041c610d14565b005b34801561042a57600080fd5b5061044560048036038101906104409190613456565b610de5565b604051610452919061335a565b60405180910390f35b34801561046757600080fd5b50610470610e36565b005b34801561047e57600080fd5b50610499600480360381019061049491906133ff565b610f89565b005b3480156104a757600080fd5b506104b0611040565b6040516104bd919061335a565b60405180910390f35b3480156104d257600080fd5b506104db611046565b6040516104e8919061343b565b60405180910390f35b3480156104fd57600080fd5b50610518600480360381019061051391906134af565b61106f565b005b34801561052657600080fd5b5061052f611120565b60405161053c919061335a565b60405180910390f35b34801561055157600080fd5b5061055a611126565b6040516105679190613203565b60405180910390f35b34801561057c57600080fd5b50610597600480360381019061059291906133ff565b611163565b005b3480156105a557600080fd5b506105c060048036038101906105bb91906134dc565b611202565b005b3480156105ce57600080fd5b506105e960048036038101906105e4919061325b565b6112b9565b6040516105f691906132b6565b60405180910390f35b34801561060b57600080fd5b5061062660048036038101906106219190613456565b6112d7565b60405161063391906132b6565b60405180910390f35b34801561064857600080fd5b50610663600480360381019061065e9190613543565b6112f7565b005b34801561067157600080fd5b5061067a6113e7565b005b34801561068857600080fd5b506106a3600480360381019061069e91906135de565b6114c0565b005b3480156106b157600080fd5b506106cc60048036038101906106c7919061363e565b6115fa565b6040516106d9919061335a565b60405180910390f35b3480156106ee57600080fd5b50610709600480360381019061070491906133ff565b611681565b005b34801561071757600080fd5b50610732600480360381019061072d9190613456565b611738565b005b61073c6118fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c0906136ca565b60405180910390fd5b60005b815181101561085a576001600f60008484815181106107ee576107ed6136ea565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061085290613748565b9150506107cc565b5050565b60606040518060400160405280600581526020017f5847726f77000000000000000000000000000000000000000000000000000000815250905090565b60006108af6108a86118fa565b8484611902565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006108fc848484611acd565b6109bd846109086118fa565b6109b8856040518060600160405280602881526020016141e360289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061096e6118fa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247a9092919063ffffffff16565b611902565b600190509392505050565b60175481565b60006009905090565b600081116109e457600080fd5b60006009600a6109f491906138c4565b826109ff919061390f565b9050600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115610a4d57600080fd5b610a9f81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124de90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b40919061335a565b60405180910390a35050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b7a6118fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfe906136ca565b60405180910390fd5b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610c6a6118fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cee906136ca565b60405180910390fd5b80601460166101000a81548160ff02191690831515021790555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d556118fa565b73ffffffffffffffffffffffffffffffffffffffff161480610dcb5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610db36118fa565b73ffffffffffffffffffffffffffffffffffffffff16145b610dd457600080fd5b6000479050610de281612528565b50565b6000610e2f600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612594565b9050919050565b610e3e6118fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec2906136ca565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610f916118fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461101e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611015906136ca565b60405180910390fd5b6009600a61102c91906138c4565b81611037919061390f565b60158190555050565b60155481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6110776118fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611104576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fb906136ca565b60405180910390fd5b806014806101000a81548160ff02191690831515021790555050565b60165481565b60606040518060400160405280600581526020017f5847524f57000000000000000000000000000000000000000000000000000000815250905090565b61116b6118fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ef906136ca565b60405180910390fd5b8060178190555050565b61120a6118fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128e906136ca565b60405180910390fd5b83600781905550826009819055508160088190555080600a8190555050505050565b60006112cd6112c66118fa565b8484611acd565b6001905092915050565b600f6020528060005260406000206000915054906101000a900460ff1681565b6112ff6118fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461138c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611383906136ca565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114286118fa565b73ffffffffffffffffffffffffffffffffffffffff16148061149e5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114866118fa565b73ffffffffffffffffffffffffffffffffffffffff16145b6114a757600080fd5b60006114b230610de5565b90506114bd81612602565b50565b6114c86118fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154c906136ca565b60405180910390fd5b60005b838390508110156115f457816004600086868581811061157b5761157a6136ea565b5b90506020020160208101906115909190613456565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806115ec90613748565b915050611558565b50505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6116896118fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170d906136ca565b60405180910390fd5b6009600a61172491906138c4565b8161172f919061390f565b60168190555050565b6117406118fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c4906136ca565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561183d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611834906139db565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196990613a6d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d990613aff565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ac0919061335a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3490613b91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba490613c23565b60405180910390fd5b60008111611bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be790613cb5565b60405180910390fd5b611bf8611046565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c665750611c36611046565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156122755760148054906101000a900460ff16611ffa57601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d295750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d835750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ddd5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e3b576001600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611ee75750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611f415750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611f9b5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ff9576001600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b60155481111561203f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203690613d21565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146120ec57601654816120a184610de5565b6120ab9190613d41565b106120eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e290613e09565b60405180910390fd5b5b60006120f730610de5565b90506000601754821015905060155482106121125760155491505b80801561212c5750601460159054906101000a900460ff16155b80156121865750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561219e5750601460169054906101000a900460ff165b80156121f45750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561224a5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156122725761225882612602565b600047905060008111156122705761226f47612528565b5b505b50505b600060019050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061231c5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561232657600090505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156123d15750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156123ed57600754600b81905550600854600c81905550612468565b600954600b81905550600a54600c81905550600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561246757600b5460636124609190613e29565b600c819055505b5b6124748484848461288a565b50505050565b60008383111582906124c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b99190613203565b60405180910390fd5b50600083856124d19190613e29565b9050809150509392505050565b600061252083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061247a565b905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612590573d6000803e3d6000fd5b5050565b60006005548211156125db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d290613ecf565b60405180910390fd5b60006125e56128b7565b90506125fa81846128e290919063ffffffff16565b915050919050565b6001601460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561263a57612639612f91565b5b6040519080825280602002602001820160405280156126685781602001602082028036833780820191505090505b50905030816000815181106126805761267f6136ea565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561272257600080fd5b505afa158015612736573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275a9190613f04565b8160018151811061276e5761276d6136ea565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127d530601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611902565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161283995949392919061402a565b600060405180830381600087803b15801561285357600080fd5b505af1158015612867573d6000803e3d6000fd5b50505050506000601460156101000a81548160ff02191690831515021790555050565b806128985761289761292c565b5b6128a384848461296f565b806128b1576128b0612b3a565b5b50505050565b60008060006128c4612b4e565b915091506128db81836128e290919063ffffffff16565b9250505090565b600061292483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bad565b905092915050565b6000600b5414801561294057506000600c54145b1561294a5761296d565b600b54600d81905550600c54600e819055506000600b819055506000600c819055505b565b60008060008060008061298187612c10565b9550955095509550955095506129df86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124de90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a7485600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c7890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ac081612cd6565b612aca8483612d93565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612b27919061335a565b60405180910390a3505050505050505050565b600d54600b81905550600e54600c81905550565b600080600060055490506000670de0b6b3a76400009050612b82670de0b6b3a76400006005546128e290919063ffffffff16565b821015612ba057600554670de0b6b3a7640000935093505050612ba9565b81819350935050505b9091565b60008083118290612bf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612beb9190613203565b60405180910390fd5b5060008385612c0391906140b3565b9050809150509392505050565b6000806000806000806000806000612c2d8a600b54600c54612dcd565b9250925092506000612c3d6128b7565b90506000806000612c508e878787612e63565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000808284612c879190613d41565b905083811015612ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc390614130565b60405180910390fd5b8091505092915050565b6000612ce06128b7565b90506000612cf78284612eec90919063ffffffff16565b9050612d4b81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c7890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612da8826005546124de90919063ffffffff16565b600581905550612dc381600654612c7890919063ffffffff16565b6006819055505050565b600080600080612df96064612deb888a612eec90919063ffffffff16565b6128e290919063ffffffff16565b90506000612e236064612e15888b612eec90919063ffffffff16565b6128e290919063ffffffff16565b90506000612e4c82612e3e858c6124de90919063ffffffff16565b6124de90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612e7c8589612eec90919063ffffffff16565b90506000612e938689612eec90919063ffffffff16565b90506000612eaa8789612eec90919063ffffffff16565b90506000612ed382612ec585876124de90919063ffffffff16565b6124de90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612eff5760009050612f61565b60008284612f0d919061390f565b9050828482612f1c91906140b3565b14612f5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f53906141c2565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612fc982612f80565b810181811067ffffffffffffffff82111715612fe857612fe7612f91565b5b80604052505050565b6000612ffb612f67565b90506130078282612fc0565b919050565b600067ffffffffffffffff82111561302757613026612f91565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006130688261303d565b9050919050565b6130788161305d565b811461308357600080fd5b50565b6000813590506130958161306f565b92915050565b60006130ae6130a98461300c565b612ff1565b905080838252602082019050602084028301858111156130d1576130d0613038565b5b835b818110156130fa57806130e68882613086565b8452602084019350506020810190506130d3565b5050509392505050565b600082601f83011261311957613118612f7b565b5b813561312984826020860161309b565b91505092915050565b60006020828403121561314857613147612f71565b5b600082013567ffffffffffffffff81111561316657613165612f76565b5b61317284828501613104565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156131b557808201518184015260208101905061319a565b838111156131c4576000848401525b50505050565b60006131d58261317b565b6131df8185613186565b93506131ef818560208601613197565b6131f881612f80565b840191505092915050565b6000602082019050818103600083015261321d81846131ca565b905092915050565b6000819050919050565b61323881613225565b811461324357600080fd5b50565b6000813590506132558161322f565b92915050565b6000806040838503121561327257613271612f71565b5b600061328085828601613086565b925050602061329185828601613246565b9150509250929050565b60008115159050919050565b6132b08161329b565b82525050565b60006020820190506132cb60008301846132a7565b92915050565b6000819050919050565b60006132f66132f16132ec8461303d565b6132d1565b61303d565b9050919050565b6000613308826132db565b9050919050565b600061331a826132fd565b9050919050565b61332a8161330f565b82525050565b60006020820190506133456000830184613321565b92915050565b61335481613225565b82525050565b600060208201905061336f600083018461334b565b92915050565b60008060006060848603121561338e5761338d612f71565b5b600061339c86828701613086565b93505060206133ad86828701613086565b92505060406133be86828701613246565b9150509250925092565b600060ff82169050919050565b6133de816133c8565b82525050565b60006020820190506133f960008301846133d5565b92915050565b60006020828403121561341557613414612f71565b5b600061342384828501613246565b91505092915050565b6134358161305d565b82525050565b6000602082019050613450600083018461342c565b92915050565b60006020828403121561346c5761346b612f71565b5b600061347a84828501613086565b91505092915050565b61348c8161329b565b811461349757600080fd5b50565b6000813590506134a981613483565b92915050565b6000602082840312156134c5576134c4612f71565b5b60006134d38482850161349a565b91505092915050565b600080600080608085870312156134f6576134f5612f71565b5b600061350487828801613246565b945050602061351587828801613246565b935050604061352687828801613246565b925050606061353787828801613246565b91505092959194509250565b6000806040838503121561355a57613559612f71565b5b600061356885828601613086565b92505060206135798582860161349a565b9150509250929050565b600080fd5b60008083601f84011261359e5761359d612f7b565b5b8235905067ffffffffffffffff8111156135bb576135ba613583565b5b6020830191508360208202830111156135d7576135d6613038565b5b9250929050565b6000806000604084860312156135f7576135f6612f71565b5b600084013567ffffffffffffffff81111561361557613614612f76565b5b61362186828701613588565b935093505060206136348682870161349a565b9150509250925092565b6000806040838503121561365557613654612f71565b5b600061366385828601613086565b925050602061367485828601613086565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006136b4602083613186565b91506136bf8261367e565b602082019050919050565b600060208201905081810360008301526136e3816136a7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061375382613225565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561378657613785613719565b5b600182019050919050565b60008160011c9050919050565b6000808291508390505b60018511156137e8578086048111156137c4576137c3613719565b5b60018516156137d35780820291505b80810290506137e185613791565b94506137a8565b94509492505050565b60008261380157600190506138bd565b8161380f57600090506138bd565b8160018114613825576002811461382f5761385e565b60019150506138bd565b60ff84111561384157613840613719565b5b8360020a91508482111561385857613857613719565b5b506138bd565b5060208310610133831016604e8410600b84101617156138935782820a90508381111561388e5761388d613719565b5b6138bd565b6138a0848484600161379e565b925090508184048111156138b7576138b6613719565b5b81810290505b9392505050565b60006138cf82613225565b91506138da836133c8565b92506139077fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846137f1565b905092915050565b600061391a82613225565b915061392583613225565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561395e5761395d613719565b5b828202905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006139c5602683613186565b91506139d082613969565b604082019050919050565b600060208201905081810360008301526139f4816139b8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613a57602483613186565b9150613a62826139fb565b604082019050919050565b60006020820190508181036000830152613a8681613a4a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ae9602283613186565b9150613af482613a8d565b604082019050919050565b60006020820190508181036000830152613b1881613adc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613b7b602583613186565b9150613b8682613b1f565b604082019050919050565b60006020820190508181036000830152613baa81613b6e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613c0d602383613186565b9150613c1882613bb1565b604082019050919050565b60006020820190508181036000830152613c3c81613c00565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613c9f602983613186565b9150613caa82613c43565b604082019050919050565b60006020820190508181036000830152613cce81613c92565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613d0b601c83613186565b9150613d1682613cd5565b602082019050919050565b60006020820190508181036000830152613d3a81613cfe565b9050919050565b6000613d4c82613225565b9150613d5783613225565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613d8c57613d8b613719565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613df3602383613186565b9150613dfe82613d97565b604082019050919050565b60006020820190508181036000830152613e2281613de6565b9050919050565b6000613e3482613225565b9150613e3f83613225565b925082821015613e5257613e51613719565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613eb9602a83613186565b9150613ec482613e5d565b604082019050919050565b60006020820190508181036000830152613ee881613eac565b9050919050565b600081519050613efe8161306f565b92915050565b600060208284031215613f1a57613f19612f71565b5b6000613f2884828501613eef565b91505092915050565b6000819050919050565b6000613f56613f51613f4c84613f31565b6132d1565b613225565b9050919050565b613f6681613f3b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613fa18161305d565b82525050565b6000613fb38383613f98565b60208301905092915050565b6000602082019050919050565b6000613fd782613f6c565b613fe18185613f77565b9350613fec83613f88565b8060005b8381101561401d5781516140048882613fa7565b975061400f83613fbf565b925050600181019050613ff0565b5085935050505092915050565b600060a08201905061403f600083018861334b565b61404c6020830187613f5d565b818103604083015261405e8186613fcc565b905061406d606083018561342c565b61407a608083018461334b565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006140be82613225565b91506140c983613225565b9250826140d9576140d8614084565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061411a601b83613186565b9150614125826140e4565b602082019050919050565b600060208201905081810360008301526141498161410d565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006141ac602183613186565b91506141b782614150565b604082019050919050565b600060208201905081810360008301526141db8161419f565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206bb3b667ecdbd09b2e7973386c81ca9c031f3ce70f9598646e2624d653033e6d64736f6c63430008090033

Deployed Bytecode Sourcemap

4089:14843:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13483:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6490:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7415:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5413:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6767:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7616:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5721:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6676:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18591:338;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5461:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13660:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17677:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13240:235;;;;;;;;;;;;;:::i;:::-;;6870:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1576:148;;;;;;;;;;;;;:::i;:::-;;17817:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5611:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1362:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12887:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5665:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6581:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17501:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17158:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7016:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5079:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18369:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12996:236;;;;;;;;;;;;;:::i;:::-;;18123:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7223:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17980:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1732:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13483:169;1499:12;:10;:12::i;:::-;1489:22;;:6;;;;;;;;;;:22;;;1481:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13559:9:::1;13554:91;13578:5;:12;13574:1;:16;13554:91;;;13629:4;13612;:14;13617:5;13623:1;13617:8;;;;;;;;:::i;:::-;;;;;;;;13612:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13592:3;;;;;:::i;:::-;;;;13554:91;;;;13483:169:::0;:::o;6490:83::-;6527:13;6560:5;;;;;;;;;;;;;;;;;6553:12;;6490:83;:::o;7415:193::-;7517:4;7539:39;7548:12;:10;:12::i;:::-;7562:7;7571:6;7539:8;:39::i;:::-;7596:4;7589:11;;7415:193;;;;:::o;5413:41::-;;;;;;;;;;;;;:::o;6767:95::-;6820:7;4581:18;6840:14;;6767:95;:::o;7616:446::-;7748:4;7765:36;7775:6;7783:9;7794:6;7765:9;:36::i;:::-;7812:220;7835:6;7856:12;:10;:12::i;:::-;7883:138;7939:6;7883:138;;;;;;;;;;;;;;;;;:11;:19;7895:6;7883:19;;;;;;;;;;;;;;;:33;7903:12;:10;:12::i;:::-;7883:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7812:8;:220::i;:::-;8050:4;8043:11;;7616:446;;;;;:::o;5721:50::-;;;;:::o;6676:83::-;6717:5;4305:1;6735:16;;6676:83;:::o;18591:338::-;18656:1;18647:6;:10;18639:19;;;;;;18669:24;4305:1;18706:2;:15;;;;:::i;:::-;18696:6;:26;;;;:::i;:::-;18669:53;;18761:7;:19;18769:10;18761:19;;;;;;;;;;;;;;;;18741:16;:39;;18733:48;;;;;;18814:41;18838:16;18814:7;:19;18822:10;18814:19;;;;;;;;;;;;;;;;:23;;:41;;;;:::i;:::-;18792:7;:19;18800:10;18792:19;;;;;;;;;;;;;;;:63;;;;18900:1;18871:50;;18880:10;18871:50;;;18904:16;18871:50;;;;;;:::i;:::-;;;;;;;;18628:301;18591:338;:::o;5461:28::-;;;;;;;;;;;;;:::o;13660:92::-;1499:12;:10;:12::i;:::-;1489:22;;:6;;;;;;;;;;:22;;;1481:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13739:5:::1;13724:4;:12;13729:6;13724:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13660:92:::0;:::o;17677:101::-;1499:12;:10;:12::i;:::-;1489:22;;:6;;;;;;;;;;:22;;;1481:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17758:12:::1;17744:11;;:26;;;;;;;;;;;;;;;;;;17677:101:::0;:::o;13240:235::-;13306:19;;;;;;;;;;;13290:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13345:17;;;;;;;;;;;13329:33;;:12;:10;:12::i;:::-;:33;;;13290:72;13282:81;;;;;;13374:26;13403:21;13374:50;;13435:32;13448:18;13435:12;:32::i;:::-;13271:204;13240:235::o;6870:138::-;6936:7;6963:37;6983:7;:16;6991:7;6983:16;;;;;;;;;;;;;;;;6963:19;:37::i;:::-;6956:44;;6870:138;;;:::o;1576:148::-;1499:12;:10;:12::i;:::-;1489:22;;:6;;;;;;;;;;:22;;;1481:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1683:1:::1;1646:40;;1667:6;::::0;::::1;;;;;;;;1646:40;;;;;;;;;;;;1714:1;1697:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1576:148::o:0;17817:128::-;1499:12;:10;:12::i;:::-;1489:22;;:6;;;;;;;;;;:22;;;1481:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4305:1:::1;17921:2;:15;;;;:::i;:::-;17906:11;:31;;;;:::i;:::-;17891:12;:46;;;;17817:128:::0;:::o;5611:47::-;;;;:::o;1362:79::-;1400:7;1427:6;;;;;;;;;;;1420:13;;1362:79;:::o;12887:101::-;1499:12;:10;:12::i;:::-;1489:22;;:6;;;;;;;;;;:22;;;1481:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12968:12:::1;12954:11;::::0;:26:::1;;;;;;;;;;;;;;;;;;12887:101:::0;:::o;5665:49::-;;;;:::o;6581:87::-;6620:13;6653:7;;;;;;;;;;;;;;;;;6646:14;;6581:87;:::o;17501:139::-;1499:12;:10;:12::i;:::-;1489:22;;:6;;;;;;;;;;:22;;;1481:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17614:18:::1;17592:19;:40;;;;17501:139:::0;:::o;17158:291::-;1499:12;:10;:12::i;:::-;1489:22;;:6;;;;;;;;;;:22;;;1481:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17309:13:::1;17292:14;:30;;;;17351:14;17333:15;:32;;;;17391:11;17376:12;:26;;;;17429:12;17413:13;:28;;;;17158:291:::0;;;;:::o;7016:199::-;7121:4;7143:42;7153:12;:10;:12::i;:::-;7167:9;7178:6;7143:9;:42::i;:::-;7203:4;7196:11;;7016:199;;;;:::o;5079:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;18369:131::-;1499:12;:10;:12::i;:::-;1489:22;;:6;;;;;;;;;;:22;;;1481:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18484:8:::1;18454:18;:27;18473:7;18454:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;18369:131:::0;;:::o;12996:236::-;13062:19;;;;;;;;;;;13046:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13101:17;;;;;;;;;;;13085:33;;:12;:10;:12::i;:::-;:33;;;13046:72;13038:81;;;;;;13130:23;13156:24;13174:4;13156:9;:24::i;:::-;13130:50;;13191:33;13208:15;13191:16;:33::i;:::-;13027:205;12996:236::o;18123:234::-;1499:12;:10;:12::i;:::-;1489:22;;:6;;;;;;;;;;:22;;;1481:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18240:9:::1;18236:114;18259:8;;:15;;18255:1;:19;18236:114;;;18330:8;18296:18;:31;18315:8;;18324:1;18315:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18296:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;18276:3;;;;;:::i;:::-;;;;18236:114;;;;18123:234:::0;;;:::o;7223:184::-;7340:7;7372:11;:18;7384:5;7372:18;;;;;;;;;;;;;;;:27;7391:7;7372:27;;;;;;;;;;;;;;;;7365:34;;7223:184;;;;:::o;17980:135::-;1499:12;:10;:12::i;:::-;1489:22;;:6;;;;;;;;;;:22;;;1481:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4305:1:::1;18091:2;:15;;;;:::i;:::-;18074:13;:33;;;;:::i;:::-;18057:14;:50;;;;17980:135:::0;:::o;1732:244::-;1499:12;:10;:12::i;:::-;1489:22;;:6;;;;;;;;;;:22;;;1481:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1841:1:::1;1821:22;;:8;:22;;;;1813:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1931:8;1902:38;;1923:6;::::0;::::1;;;;;;;;1902:38;;;;;;;;;;;;1960:8;1951:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1732:244:::0;:::o;121:98::-;174:7;201:10;194:17;;121:98;:::o;8753:369::-;8897:1;8880:19;;:5;:19;;;;8872:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8978:1;8959:21;;:7;:21;;;;8951:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9060:6;9030:11;:18;9042:5;9030:18;;;;;;;;;;;;;;;:27;9049:7;9030:27;;;;;;;;;;;;;;;:36;;;;9098:7;9082:32;;9091:5;9082:32;;;9107:6;9082:32;;;;;;:::i;:::-;;;;;;;;8753:369;;;:::o;9130:3151::-;9268:1;9252:18;;:4;:18;;;;9244:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9345:1;9331:16;;:2;:16;;;;9323:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9415:1;9406:6;:10;9398:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9487:7;:5;:7::i;:::-;9479:15;;:4;:15;;;;:32;;;;;9504:7;:5;:7::i;:::-;9498:13;;:2;:13;;;;9479:32;9475:1442;;;9566:11;;;;;;;;;;9561:416;;9623:14;;;;;;;;;;;9615:22;;:4;:22;;;;:51;;;;;9649:17;;;;;;;;;;;9641:25;;:4;:25;;;;9615:51;:82;;;;;9678:19;;;;;;;;;;;9670:27;;:4;:27;;;;9615:82;:107;;;;;9709:13;;;;;;;;;;;9701:21;;:4;:21;;;;9615:107;9612:171;;;9759:4;9746;:10;9751:4;9746:10;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;9612:171;9810:14;;;;;;;;;;;9804:20;;:2;:20;;;;:47;;;;;9834:17;;;;;;;;;;;9828:23;;:2;:23;;;;9804:47;:76;;;;;9861:19;;;;;;;;;;;9855:25;;:2;:25;;;;9804:76;:99;;;;;9890:13;;;;;;;;;;;9884:19;;:2;:19;;;;9804:99;9801:161;;;9938:4;9927;:8;9932:2;9927:8;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;;;;;;;9801:161;9561:416;10011:12;;10001:6;:22;;9993:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10082:13;;;;;;;;;;;10076:19;;:2;:19;;;10073:146;;10149:14;;10140:6;10124:13;10134:2;10124:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10116:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10073:146;10235:28;10266:24;10284:4;10266:9;:24::i;:::-;10235:55;;10305:12;10344:19;;10320:20;:43;;10305:58;;10407:12;;10383:20;:36;10380:124;;10476:12;;10453:35;;10380:124;10524:7;:18;;;;;10536:6;;;;;;;;;;;10535:7;10524:18;:43;;;;;10554:13;;;;;;;;;;;10546:21;;:4;:21;;;;10524:43;:58;;;;;10571:11;;;;;;;;;;;10524:58;:87;;;;;10587:18;:24;10606:4;10587:24;;;;;;;;;;;;;;;;;;;;;;;;;10586:25;10524:87;:114;;;;;10616:18;:22;10635:2;10616:22;;;;;;;;;;;;;;;;;;;;;;;;;10615:23;10524:114;10520:386;;;10659:38;10676:20;10659:16;:38::i;:::-;10716:26;10745:21;10716:50;;10810:1;10789:18;:22;10785:106;;;10836:35;10849:21;10836:12;:35::i;:::-;10785:106;10640:266;10520:386;9513:1404;;9475:1442;10929:12;10944:4;10929:19;;11641:18;:24;11660:4;11641:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11669:18;:22;11688:2;11669:22;;;;;;;;;;;;;;;;;;;;;;;;;11641:50;11637:98;;;11718:5;11708:15;;11637:98;11786:13;;;;;;;;;;;11778:21;;:4;:21;;;:55;;;;;11817:15;;;;;;;;;;;11803:30;;:2;:30;;;;11778:55;11775:445;;;11872:14;;11860:9;:26;;;;11911:12;;11901:7;:22;;;;11775:445;;;12009:15;;11997:9;:27;;;;12049:13;;12039:7;:23;;;;12124:4;:10;12129:4;12124:10;;;;;;;;;;;;;;;;;;;;;;;;;12120:89;;;12184:9;;12179:2;:14;;;;:::i;:::-;12169:7;:24;;;;12120:89;11775:445;12232:41;12247:4;12253:2;12257:6;12265:7;12232:14;:41::i;:::-;9233:3048;9130:3151;;;:::o;2340:224::-;2460:7;2493:1;2488;:6;;2496:12;2480:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2520:9;2536:1;2532;:5;;;;:::i;:::-;2520:17;;2555:1;2548:8;;;2340:224;;;;;:::o;2196:136::-;2254:7;2281:43;2285:1;2288;2281:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2274:50;;2196:136;;;;:::o;12780:99::-;12837:17;;;;;;;;;;;:26;;:34;12864:6;12837:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12780:99;:::o;8070:323::-;8165:7;8223;;8212;:18;;8190:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8311:19;8333:10;:8;:10::i;:::-;8311:32;;8361:24;8373:11;8361:7;:11;;:24;;;;:::i;:::-;8354:31;;;8070:323;;;:::o;12289:483::-;5821:4;5812:6;;:13;;;;;;;;;;;;;;;;;;12367:21:::1;12405:1;12391:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12367:40;;12436:4;12418;12423:1;12418:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12462:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12452:4;12457:1;12452:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12495:62;12512:4;12527:15;;;;;;;;;;;12545:11;12495:8;:62::i;:::-;12568:15;;;;;;;;;;;:66;;;12649:11;12675:1;12691:4;12718;12738:15;12568:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12356:416;5857:5:::0;5848:6;;:14;;;;;;;;;;;;;;;;;;12289:483;:::o;13760:282::-;13916:7;13911:28;;13925:14;:12;:14::i;:::-;13911:28;13950:44;13968:6;13976:9;13987:6;13950:17;:44::i;:::-;14010:7;14005:29;;14019:15;:13;:15::i;:::-;14005:29;13760:282;;;;:::o;16721:164::-;16763:7;16784:15;16801;16820:19;:17;:19::i;:::-;16783:56;;;;16857:20;16869:7;16857;:11;;:20;;;;:::i;:::-;16850:27;;;;16721:164;:::o;2826:132::-;2884:7;2911:39;2915:1;2918;2911:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2904:46;;2826:132;;;;:::o;8401:219::-;8461:1;8448:9;;:14;:30;;;;;8477:1;8466:7;;:12;8448:30;8444:43;;;8480:7;;8444:43;8519:9;;8499:17;:29;;;;8557:7;;8539:15;:25;;;;8589:1;8577:9;:13;;;;8611:1;8601:7;:11;;;;8401:219;:::o;14050:610::-;14197:15;14227:23;14265:12;14292:23;14330:12;14357:13;14384:19;14395:7;14384:10;:19::i;:::-;14182:221;;;;;;;;;;;;14432:28;14452:7;14432;:15;14440:6;14432:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14414:7;:15;14422:6;14414:15;;;;;;;;;;;;;;;:46;;;;14492:39;14515:15;14492:7;:18;14500:9;14492:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14471:7;:18;14479:9;14471:18;;;;;;;;;;;;;;;:60;;;;14542:16;14552:5;14542:9;:16::i;:::-;14569:23;14581:4;14587;14569:11;:23::i;:::-;14625:9;14608:44;;14617:6;14608:44;;;14636:15;14608:44;;;;;;:::i;:::-;;;;;;;;14171:489;;;;;;14050:610;;;:::o;8628:117::-;8684:17;;8672:9;:29;;;;8722:15;;8712:7;:25;;;;8628:117::o;16893:257::-;16944:7;16953;16973:15;16991:7;;16973:25;;17009:15;4581:18;17009:25;;17059:20;4581:18;17059:7;;:11;;:20;;;;:::i;:::-;17049:7;:30;17045:61;;;17089:7;;4581:18;17081:25;;;;;;;;17045:61;17125:7;17134;17117:25;;;;;;16893:257;;;:::o;2966:223::-;3086:7;3118:1;3114;:5;3121:12;3106:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3145:9;3161:1;3157;:5;;;;:::i;:::-;3145:17;;3180:1;3173:8;;;2966:223;;;;;:::o;15079:615::-;15179:7;15201;15223;15245;15267;15289;15325:23;15350:12;15364:13;15394:40;15406:7;15415:9;;15426:7;;15394:11;:40::i;:::-;15324:110;;;;;;15445:19;15467:10;:8;:10::i;:::-;15445:32;;15489:15;15506:23;15531:12;15560:46;15572:7;15581:4;15587:5;15594:11;15560;:46::i;:::-;15488:118;;;;;;15625:7;15634:15;15651:4;15657:15;15674:4;15680:5;15617:69;;;;;;;;;;;;;;;;;;;15079:615;;;;;;;:::o;2009:179::-;2067:7;2087:9;2103:1;2099;:5;;;;:::i;:::-;2087:17;;2128:1;2123;:6;;2115:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2179:1;2172:8;;;2009:179;;;;:::o;14668:211::-;14721:19;14743:10;:8;:10::i;:::-;14721:32;;14764:13;14780:22;14790:11;14780:5;:9;;:22;;;;:::i;:::-;14764:38;;14838:33;14865:5;14838:7;:22;14854:4;14838:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14813:7;:22;14829:4;14813:22;;;;;;;;;;;;;;;:58;;;;14710:169;;14668:211;:::o;14887:147::-;14965:17;14977:4;14965:7;;:11;;:17;;;;:::i;:::-;14955:7;:27;;;;15006:20;15021:4;15006:10;;:14;;:20;;;;:::i;:::-;14993:10;:33;;;;14887:147;;:::o;15702:469::-;15871:7;15893;15915;15950:12;15965:30;15991:3;15965:21;15977:8;15965:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15950:45;;16006:13;16022:28;16046:3;16022:19;16034:6;16022:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16006:44;;16061:23;16087:28;16109:5;16087:17;16099:4;16087:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16061:54;;16134:15;16151:4;16157:5;16126:37;;;;;;;;;15702:469;;;;;;;:::o;16179:534::-;16373:7;16395;16417;16452:15;16470:24;16482:11;16470:7;:11;;:24;;;;:::i;:::-;16452:42;;16505:12;16520:21;16529:11;16520:4;:8;;:21;;;;:::i;:::-;16505:36;;16552:13;16568:22;16578:11;16568:5;:9;;:22;;;;:::i;:::-;16552:38;;16601:23;16627:28;16649:5;16627:17;16639:4;16627:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16601:54;;16674:7;16683:15;16700:4;16666:39;;;;;;;;;;16179:534;;;;;;;;:::o;2572:246::-;2630:7;2659:1;2654;:6;2650:47;;;2684:1;2677:8;;;;2650:47;2707:9;2723:1;2719;:5;;;;:::i;:::-;2707:17;;2752:1;2747;2743;:5;;;;:::i;:::-;:10;2735:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2809:1;2802:8;;;2572:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:307::-;4139:1;4149:113;4163:6;4160:1;4157:13;4149:113;;;4248:1;4243:3;4239:11;4233:18;4229:1;4224:3;4220:11;4213:39;4185:2;4182:1;4178:10;4173:15;;4149:113;;;4280:6;4277:1;4274:13;4271:101;;;4360:1;4351:6;4346:3;4342:16;4335:27;4271:101;4120:258;4071:307;;;:::o;4384:364::-;4472:3;4500:39;4533:5;4500:39;:::i;:::-;4555:71;4619:6;4614:3;4555:71;:::i;:::-;4548:78;;4635:52;4680:6;4675:3;4668:4;4661:5;4657:16;4635:52;:::i;:::-;4712:29;4734:6;4712:29;:::i;:::-;4707:3;4703:39;4696:46;;4476:272;4384:364;;;;:::o;4754:313::-;4867:4;4905:2;4894:9;4890:18;4882:26;;4954:9;4948:4;4944:20;4940:1;4929:9;4925:17;4918:47;4982:78;5055:4;5046:6;4982:78;:::i;:::-;4974:86;;4754:313;;;;:::o;5073:77::-;5110:7;5139:5;5128:16;;5073:77;;;:::o;5156:122::-;5229:24;5247:5;5229:24;:::i;:::-;5222:5;5219:35;5209:63;;5268:1;5265;5258:12;5209:63;5156:122;:::o;5284:139::-;5330:5;5368:6;5355:20;5346:29;;5384:33;5411:5;5384:33;:::i;:::-;5284:139;;;;:::o;5429:474::-;5497:6;5505;5554:2;5542:9;5533:7;5529:23;5525:32;5522:119;;;5560:79;;:::i;:::-;5522:119;5680:1;5705:53;5750:7;5741:6;5730:9;5726:22;5705:53;:::i;:::-;5695:63;;5651:117;5807:2;5833:53;5878:7;5869:6;5858:9;5854:22;5833:53;:::i;:::-;5823:63;;5778:118;5429:474;;;;;:::o;5909:90::-;5943:7;5986:5;5979:13;5972:21;5961:32;;5909:90;;;:::o;6005:109::-;6086:21;6101:5;6086:21;:::i;:::-;6081:3;6074:34;6005:109;;:::o;6120:210::-;6207:4;6245:2;6234:9;6230:18;6222:26;;6258:65;6320:1;6309:9;6305:17;6296:6;6258:65;:::i;:::-;6120:210;;;;:::o;6336:60::-;6364:3;6385:5;6378:12;;6336:60;;;:::o;6402:142::-;6452:9;6485:53;6503:34;6512:24;6530:5;6512:24;:::i;:::-;6503:34;:::i;:::-;6485:53;:::i;:::-;6472:66;;6402:142;;;:::o;6550:126::-;6600:9;6633:37;6664:5;6633:37;:::i;:::-;6620:50;;6550:126;;;:::o;6682:152::-;6758:9;6791:37;6822:5;6791:37;:::i;:::-;6778:50;;6682:152;;;:::o;6840:183::-;6953:63;7010:5;6953:63;:::i;:::-;6948:3;6941:76;6840:183;;:::o;7029:274::-;7148:4;7186:2;7175:9;7171:18;7163:26;;7199:97;7293:1;7282:9;7278:17;7269:6;7199:97;:::i;:::-;7029:274;;;;:::o;7309:118::-;7396:24;7414:5;7396:24;:::i;:::-;7391:3;7384:37;7309:118;;:::o;7433:222::-;7526:4;7564:2;7553:9;7549:18;7541:26;;7577:71;7645:1;7634:9;7630:17;7621:6;7577:71;:::i;:::-;7433:222;;;;:::o;7661:619::-;7738:6;7746;7754;7803:2;7791:9;7782:7;7778:23;7774:32;7771:119;;;7809:79;;:::i;:::-;7771:119;7929:1;7954:53;7999:7;7990:6;7979:9;7975:22;7954:53;:::i;:::-;7944:63;;7900:117;8056:2;8082:53;8127:7;8118:6;8107:9;8103:22;8082:53;:::i;:::-;8072:63;;8027:118;8184:2;8210:53;8255:7;8246:6;8235:9;8231:22;8210:53;:::i;:::-;8200:63;;8155:118;7661:619;;;;;:::o;8286:86::-;8321:7;8361:4;8354:5;8350:16;8339:27;;8286:86;;;:::o;8378:112::-;8461:22;8477:5;8461:22;:::i;:::-;8456:3;8449:35;8378:112;;:::o;8496:214::-;8585:4;8623:2;8612:9;8608:18;8600:26;;8636:67;8700:1;8689:9;8685:17;8676:6;8636:67;:::i;:::-;8496:214;;;;:::o;8716:329::-;8775:6;8824:2;8812:9;8803:7;8799:23;8795:32;8792:119;;;8830:79;;:::i;:::-;8792:119;8950:1;8975:53;9020:7;9011:6;9000:9;8996:22;8975:53;:::i;:::-;8965:63;;8921:117;8716:329;;;;:::o;9051:118::-;9138:24;9156:5;9138:24;:::i;:::-;9133:3;9126:37;9051:118;;:::o;9175:222::-;9268:4;9306:2;9295:9;9291:18;9283:26;;9319:71;9387:1;9376:9;9372:17;9363:6;9319:71;:::i;:::-;9175:222;;;;:::o;9403:329::-;9462:6;9511:2;9499:9;9490:7;9486:23;9482:32;9479:119;;;9517:79;;:::i;:::-;9479:119;9637:1;9662:53;9707:7;9698:6;9687:9;9683:22;9662:53;:::i;:::-;9652:63;;9608:117;9403:329;;;;:::o;9738:116::-;9808:21;9823:5;9808:21;:::i;:::-;9801:5;9798:32;9788:60;;9844:1;9841;9834:12;9788:60;9738:116;:::o;9860:133::-;9903:5;9941:6;9928:20;9919:29;;9957:30;9981:5;9957:30;:::i;:::-;9860:133;;;;:::o;9999:323::-;10055:6;10104:2;10092:9;10083:7;10079:23;10075:32;10072:119;;;10110:79;;:::i;:::-;10072:119;10230:1;10255:50;10297:7;10288:6;10277:9;10273:22;10255:50;:::i;:::-;10245:60;;10201:114;9999:323;;;;:::o;10328:765::-;10414:6;10422;10430;10438;10487:3;10475:9;10466:7;10462:23;10458:33;10455:120;;;10494:79;;:::i;:::-;10455:120;10614:1;10639:53;10684:7;10675:6;10664:9;10660:22;10639:53;:::i;:::-;10629:63;;10585:117;10741:2;10767:53;10812:7;10803:6;10792:9;10788:22;10767:53;:::i;:::-;10757:63;;10712:118;10869:2;10895:53;10940:7;10931:6;10920:9;10916:22;10895:53;:::i;:::-;10885:63;;10840:118;10997:2;11023:53;11068:7;11059:6;11048:9;11044:22;11023:53;:::i;:::-;11013:63;;10968:118;10328:765;;;;;;;:::o;11099:468::-;11164:6;11172;11221:2;11209:9;11200:7;11196:23;11192:32;11189:119;;;11227:79;;:::i;:::-;11189:119;11347:1;11372:53;11417:7;11408:6;11397:9;11393:22;11372:53;:::i;:::-;11362:63;;11318:117;11474:2;11500:50;11542:7;11533:6;11522:9;11518:22;11500:50;:::i;:::-;11490:60;;11445:115;11099:468;;;;;:::o;11573:117::-;11682:1;11679;11672:12;11713:568;11786:8;11796:6;11846:3;11839:4;11831:6;11827:17;11823:27;11813:122;;11854:79;;:::i;:::-;11813:122;11967:6;11954:20;11944:30;;11997:18;11989:6;11986:30;11983:117;;;12019:79;;:::i;:::-;11983:117;12133:4;12125:6;12121:17;12109:29;;12187:3;12179:4;12171:6;12167:17;12157:8;12153:32;12150:41;12147:128;;;12194:79;;:::i;:::-;12147:128;11713:568;;;;;:::o;12287:698::-;12379:6;12387;12395;12444:2;12432:9;12423:7;12419:23;12415:32;12412:119;;;12450:79;;:::i;:::-;12412:119;12598:1;12587:9;12583:17;12570:31;12628:18;12620:6;12617:30;12614:117;;;12650:79;;:::i;:::-;12614:117;12763:80;12835:7;12826:6;12815:9;12811:22;12763:80;:::i;:::-;12745:98;;;;12541:312;12892:2;12918:50;12960:7;12951:6;12940:9;12936:22;12918:50;:::i;:::-;12908:60;;12863:115;12287:698;;;;;:::o;12991:474::-;13059:6;13067;13116:2;13104:9;13095:7;13091:23;13087:32;13084:119;;;13122:79;;:::i;:::-;13084:119;13242:1;13267:53;13312:7;13303:6;13292:9;13288:22;13267:53;:::i;:::-;13257:63;;13213:117;13369:2;13395:53;13440:7;13431:6;13420:9;13416:22;13395:53;:::i;:::-;13385:63;;13340:118;12991:474;;;;;:::o;13471:182::-;13611:34;13607:1;13599:6;13595:14;13588:58;13471:182;:::o;13659:366::-;13801:3;13822:67;13886:2;13881:3;13822:67;:::i;:::-;13815:74;;13898:93;13987:3;13898:93;:::i;:::-;14016:2;14011:3;14007:12;14000:19;;13659:366;;;:::o;14031:419::-;14197:4;14235:2;14224:9;14220:18;14212:26;;14284:9;14278:4;14274:20;14270:1;14259:9;14255:17;14248:47;14312:131;14438:4;14312:131;:::i;:::-;14304:139;;14031:419;;;:::o;14456:180::-;14504:77;14501:1;14494:88;14601:4;14598:1;14591:15;14625:4;14622:1;14615:15;14642:180;14690:77;14687:1;14680:88;14787:4;14784:1;14777:15;14811:4;14808:1;14801:15;14828:233;14867:3;14890:24;14908:5;14890:24;:::i;:::-;14881:33;;14936:66;14929:5;14926:77;14923:103;;;15006:18;;:::i;:::-;14923:103;15053:1;15046:5;15042:13;15035:20;;14828:233;;;:::o;15067:102::-;15109:8;15156:5;15153:1;15149:13;15128:34;;15067:102;;;:::o;15175:848::-;15236:5;15243:4;15267:6;15258:15;;15291:5;15282:14;;15305:712;15326:1;15316:8;15313:15;15305:712;;;15421:4;15416:3;15412:14;15406:4;15403:24;15400:50;;;15430:18;;:::i;:::-;15400:50;15480:1;15470:8;15466:16;15463:451;;;15895:4;15888:5;15884:16;15875:25;;15463:451;15945:4;15939;15935:15;15927:23;;15975:32;15998:8;15975:32;:::i;:::-;15963:44;;15305:712;;;15175:848;;;;;;;:::o;16029:1073::-;16083:5;16274:8;16264:40;;16295:1;16286:10;;16297:5;;16264:40;16323:4;16313:36;;16340:1;16331:10;;16342:5;;16313:36;16409:4;16457:1;16452:27;;;;16493:1;16488:191;;;;16402:277;;16452:27;16470:1;16461:10;;16472:5;;;16488:191;16533:3;16523:8;16520:17;16517:43;;;16540:18;;:::i;:::-;16517:43;16589:8;16586:1;16582:16;16573:25;;16624:3;16617:5;16614:14;16611:40;;;16631:18;;:::i;:::-;16611:40;16664:5;;;16402:277;;16788:2;16778:8;16775:16;16769:3;16763:4;16760:13;16756:36;16738:2;16728:8;16725:16;16720:2;16714:4;16711:12;16707:35;16691:111;16688:246;;;16844:8;16838:4;16834:19;16825:28;;16879:3;16872:5;16869:14;16866:40;;;16886:18;;:::i;:::-;16866:40;16919:5;;16688:246;16959:42;16997:3;16987:8;16981:4;16978:1;16959:42;:::i;:::-;16944:57;;;;17033:4;17028:3;17024:14;17017:5;17014:25;17011:51;;;17042:18;;:::i;:::-;17011:51;17091:4;17084:5;17080:16;17071:25;;16029:1073;;;;;;:::o;17108:281::-;17166:5;17190:23;17208:4;17190:23;:::i;:::-;17182:31;;17234:25;17250:8;17234:25;:::i;:::-;17222:37;;17278:104;17315:66;17305:8;17299:4;17278:104;:::i;:::-;17269:113;;17108:281;;;;:::o;17395:348::-;17435:7;17458:20;17476:1;17458:20;:::i;:::-;17453:25;;17492:20;17510:1;17492:20;:::i;:::-;17487:25;;17680:1;17612:66;17608:74;17605:1;17602:81;17597:1;17590:9;17583:17;17579:105;17576:131;;;17687:18;;:::i;:::-;17576:131;17735:1;17732;17728:9;17717:20;;17395:348;;;;:::o;17749:225::-;17889:34;17885:1;17877:6;17873:14;17866:58;17958:8;17953:2;17945:6;17941:15;17934:33;17749:225;:::o;17980:366::-;18122:3;18143:67;18207:2;18202:3;18143:67;:::i;:::-;18136:74;;18219:93;18308:3;18219:93;:::i;:::-;18337:2;18332:3;18328:12;18321:19;;17980:366;;;:::o;18352:419::-;18518:4;18556:2;18545:9;18541:18;18533:26;;18605:9;18599:4;18595:20;18591:1;18580:9;18576:17;18569:47;18633:131;18759:4;18633:131;:::i;:::-;18625:139;;18352:419;;;:::o;18777:223::-;18917:34;18913:1;18905:6;18901:14;18894:58;18986:6;18981:2;18973:6;18969:15;18962:31;18777:223;:::o;19006:366::-;19148:3;19169:67;19233:2;19228:3;19169:67;:::i;:::-;19162:74;;19245:93;19334:3;19245:93;:::i;:::-;19363:2;19358:3;19354:12;19347:19;;19006:366;;;:::o;19378:419::-;19544:4;19582:2;19571:9;19567:18;19559:26;;19631:9;19625:4;19621:20;19617:1;19606:9;19602:17;19595:47;19659:131;19785:4;19659:131;:::i;:::-;19651:139;;19378:419;;;:::o;19803:221::-;19943:34;19939:1;19931:6;19927:14;19920:58;20012:4;20007:2;19999:6;19995:15;19988:29;19803:221;:::o;20030:366::-;20172:3;20193:67;20257:2;20252:3;20193:67;:::i;:::-;20186:74;;20269:93;20358:3;20269:93;:::i;:::-;20387:2;20382:3;20378:12;20371:19;;20030:366;;;:::o;20402:419::-;20568:4;20606:2;20595:9;20591:18;20583:26;;20655:9;20649:4;20645:20;20641:1;20630:9;20626:17;20619:47;20683:131;20809:4;20683:131;:::i;:::-;20675:139;;20402:419;;;:::o;20827:224::-;20967:34;20963:1;20955:6;20951:14;20944:58;21036:7;21031:2;21023:6;21019:15;21012:32;20827:224;:::o;21057:366::-;21199:3;21220:67;21284:2;21279:3;21220:67;:::i;:::-;21213:74;;21296:93;21385:3;21296:93;:::i;:::-;21414:2;21409:3;21405:12;21398:19;;21057:366;;;:::o;21429:419::-;21595:4;21633:2;21622:9;21618:18;21610:26;;21682:9;21676:4;21672:20;21668:1;21657:9;21653:17;21646:47;21710:131;21836:4;21710:131;:::i;:::-;21702:139;;21429:419;;;:::o;21854:222::-;21994:34;21990:1;21982:6;21978:14;21971:58;22063:5;22058:2;22050:6;22046:15;22039:30;21854:222;:::o;22082:366::-;22224:3;22245:67;22309:2;22304:3;22245:67;:::i;:::-;22238:74;;22321:93;22410:3;22321:93;:::i;:::-;22439:2;22434:3;22430:12;22423:19;;22082:366;;;:::o;22454:419::-;22620:4;22658:2;22647:9;22643:18;22635:26;;22707:9;22701:4;22697:20;22693:1;22682:9;22678:17;22671:47;22735:131;22861:4;22735:131;:::i;:::-;22727:139;;22454:419;;;:::o;22879:228::-;23019:34;23015:1;23007:6;23003:14;22996:58;23088:11;23083:2;23075:6;23071:15;23064:36;22879:228;:::o;23113:366::-;23255:3;23276:67;23340:2;23335:3;23276:67;:::i;:::-;23269:74;;23352:93;23441:3;23352:93;:::i;:::-;23470:2;23465:3;23461:12;23454:19;;23113:366;;;:::o;23485:419::-;23651:4;23689:2;23678:9;23674:18;23666:26;;23738:9;23732:4;23728:20;23724:1;23713:9;23709:17;23702:47;23766:131;23892:4;23766:131;:::i;:::-;23758:139;;23485:419;;;:::o;23910:178::-;24050:30;24046:1;24038:6;24034:14;24027:54;23910:178;:::o;24094:366::-;24236:3;24257:67;24321:2;24316:3;24257:67;:::i;:::-;24250:74;;24333:93;24422:3;24333:93;:::i;:::-;24451:2;24446:3;24442:12;24435:19;;24094:366;;;:::o;24466:419::-;24632:4;24670:2;24659:9;24655:18;24647:26;;24719:9;24713:4;24709:20;24705:1;24694:9;24690:17;24683:47;24747:131;24873:4;24747:131;:::i;:::-;24739:139;;24466:419;;;:::o;24891:305::-;24931:3;24950:20;24968:1;24950:20;:::i;:::-;24945:25;;24984:20;25002:1;24984:20;:::i;:::-;24979:25;;25138:1;25070:66;25066:74;25063:1;25060:81;25057:107;;;25144:18;;:::i;:::-;25057:107;25188:1;25185;25181:9;25174:16;;24891:305;;;;:::o;25202:222::-;25342:34;25338:1;25330:6;25326:14;25319:58;25411:5;25406:2;25398:6;25394:15;25387:30;25202:222;:::o;25430:366::-;25572:3;25593:67;25657:2;25652:3;25593:67;:::i;:::-;25586:74;;25669:93;25758:3;25669:93;:::i;:::-;25787:2;25782:3;25778:12;25771:19;;25430:366;;;:::o;25802:419::-;25968:4;26006:2;25995:9;25991:18;25983:26;;26055:9;26049:4;26045:20;26041:1;26030:9;26026:17;26019:47;26083:131;26209:4;26083:131;:::i;:::-;26075:139;;25802:419;;;:::o;26227:191::-;26267:4;26287:20;26305:1;26287:20;:::i;:::-;26282:25;;26321:20;26339:1;26321:20;:::i;:::-;26316:25;;26360:1;26357;26354:8;26351:34;;;26365:18;;:::i;:::-;26351:34;26410:1;26407;26403:9;26395:17;;26227:191;;;;:::o;26424:229::-;26564:34;26560:1;26552:6;26548:14;26541:58;26633:12;26628:2;26620:6;26616:15;26609:37;26424:229;:::o;26659:366::-;26801:3;26822:67;26886:2;26881:3;26822:67;:::i;:::-;26815:74;;26898:93;26987:3;26898:93;:::i;:::-;27016:2;27011:3;27007:12;27000:19;;26659:366;;;:::o;27031:419::-;27197:4;27235:2;27224:9;27220:18;27212:26;;27284:9;27278:4;27274:20;27270:1;27259:9;27255:17;27248:47;27312:131;27438:4;27312:131;:::i;:::-;27304:139;;27031:419;;;:::o;27456:143::-;27513:5;27544:6;27538:13;27529:22;;27560:33;27587:5;27560:33;:::i;:::-;27456:143;;;;:::o;27605:351::-;27675:6;27724:2;27712:9;27703:7;27699:23;27695:32;27692:119;;;27730:79;;:::i;:::-;27692:119;27850:1;27875:64;27931:7;27922:6;27911:9;27907:22;27875:64;:::i;:::-;27865:74;;27821:128;27605:351;;;;:::o;27962:85::-;28007:7;28036:5;28025:16;;27962:85;;;:::o;28053:158::-;28111:9;28144:61;28162:42;28171:32;28197:5;28171:32;:::i;:::-;28162:42;:::i;:::-;28144:61;:::i;:::-;28131:74;;28053:158;;;:::o;28217:147::-;28312:45;28351:5;28312:45;:::i;:::-;28307:3;28300:58;28217:147;;:::o;28370:114::-;28437:6;28471:5;28465:12;28455:22;;28370:114;;;:::o;28490:184::-;28589:11;28623:6;28618:3;28611:19;28663:4;28658:3;28654:14;28639:29;;28490:184;;;;:::o;28680:132::-;28747:4;28770:3;28762:11;;28800:4;28795:3;28791:14;28783:22;;28680:132;;;:::o;28818:108::-;28895:24;28913:5;28895:24;:::i;:::-;28890:3;28883:37;28818:108;;:::o;28932:179::-;29001:10;29022:46;29064:3;29056:6;29022:46;:::i;:::-;29100:4;29095:3;29091:14;29077:28;;28932:179;;;;:::o;29117:113::-;29187:4;29219;29214:3;29210:14;29202:22;;29117:113;;;:::o;29266:732::-;29385:3;29414:54;29462:5;29414:54;:::i;:::-;29484:86;29563:6;29558:3;29484:86;:::i;:::-;29477:93;;29594:56;29644:5;29594:56;:::i;:::-;29673:7;29704:1;29689:284;29714:6;29711:1;29708:13;29689:284;;;29790:6;29784:13;29817:63;29876:3;29861:13;29817:63;:::i;:::-;29810:70;;29903:60;29956:6;29903:60;:::i;:::-;29893:70;;29749:224;29736:1;29733;29729:9;29724:14;;29689:284;;;29693:14;29989:3;29982:10;;29390:608;;;29266:732;;;;:::o;30004:831::-;30267:4;30305:3;30294:9;30290:19;30282:27;;30319:71;30387:1;30376:9;30372:17;30363:6;30319:71;:::i;:::-;30400:80;30476:2;30465:9;30461:18;30452:6;30400:80;:::i;:::-;30527:9;30521:4;30517:20;30512:2;30501:9;30497:18;30490:48;30555:108;30658:4;30649:6;30555:108;:::i;:::-;30547:116;;30673:72;30741:2;30730:9;30726:18;30717:6;30673:72;:::i;:::-;30755:73;30823:3;30812:9;30808:19;30799:6;30755:73;:::i;:::-;30004:831;;;;;;;;:::o;30841:180::-;30889:77;30886:1;30879:88;30986:4;30983:1;30976:15;31010:4;31007:1;31000:15;31027:185;31067:1;31084:20;31102:1;31084:20;:::i;:::-;31079:25;;31118:20;31136:1;31118:20;:::i;:::-;31113:25;;31157:1;31147:35;;31162:18;;:::i;:::-;31147:35;31204:1;31201;31197:9;31192:14;;31027:185;;;;:::o;31218:177::-;31358:29;31354:1;31346:6;31342:14;31335:53;31218:177;:::o;31401:366::-;31543:3;31564:67;31628:2;31623:3;31564:67;:::i;:::-;31557:74;;31640:93;31729:3;31640:93;:::i;:::-;31758:2;31753:3;31749:12;31742:19;;31401:366;;;:::o;31773:419::-;31939:4;31977:2;31966:9;31962:18;31954:26;;32026:9;32020:4;32016:20;32012:1;32001:9;31997:17;31990:47;32054:131;32180:4;32054:131;:::i;:::-;32046:139;;31773:419;;;:::o;32198:220::-;32338:34;32334:1;32326:6;32322:14;32315:58;32407:3;32402:2;32394:6;32390:15;32383:28;32198:220;:::o;32424:366::-;32566:3;32587:67;32651:2;32646:3;32587:67;:::i;:::-;32580:74;;32663:93;32752:3;32663:93;:::i;:::-;32781:2;32776:3;32772:12;32765:19;;32424:366;;;:::o;32796:419::-;32962:4;33000:2;32989:9;32985:18;32977:26;;33049:9;33043:4;33039:20;33035:1;33024:9;33020:17;33013:47;33077:131;33203:4;33077:131;:::i;:::-;33069:139;;32796:419;;;:::o

Swarm Source

ipfs://6bb3b667ecdbd09b2e7973386c81ca9c031f3ce70f9598646e2624d653033e6d
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.