ETH Price: $3,359.95 (-2.69%)

Token

0x0smaty (smaty)
 

Overview

Max Total Supply

1,000,000,000 smaty

Holders

473

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.007482706 smaty

Value
$0.00
0xc0eb1a51c05dfb68a426ed5edc627fad9b0e471d
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:
smaty

Compiler Version
v0.8.17+commit.8df45f5f

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-24
*/

// SPDX-License-Identifier: MIT

/*
 https://t.me/smatyai
 https://twitter.com/0x0smaty?s=21&t=gK4fBEsk_4IcpSqFeBEEIQ
*/

pragma solidity ^0.8.17;
 
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 smaty is Context, IERC20, Ownable {
 
    using SafeMath for uint256;
 
    string private constant _name = "0x0smaty";
    string private constant _symbol = "smaty";
    uint8 private constant _decimals = 9;
 
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    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 = 0;  
    uint256 private _taxFeeOnBuy = 0;  
    uint256 private _redisFeeOnSell = 0;  
    uint256 private _taxFeeOnSell = 0;
 
    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
 
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    //Ratio 
    uint16 receiver0Ratio = 1;
    uint16 receiver1Ratio = 2;
    uint16 receiver2Ratio = 2;
    uint16 receiverTotalRatio = receiver0Ratio + receiver1Ratio + receiver2Ratio;
 
    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap; 
    address payable public _feeReceiver0 = payable(0x2b112388622A651E20aF3D1278cc9A4246412403);
    address payable private _feeReceiver1 = payable(0xa6692840A09C4b924cDAEB0c01a6EF9E2Dc4c124); 
    address payable private _feeReceiver2 = payable(0xa6692840A09C4b924cDAEB0c01a6EF9E2Dc4c124);
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
    uint256 public _maxTxAmount = 10000000 * 10**9; 
    uint256 public _maxWalletSize = 10000000 * 10**9; 
    uint256 public _swapTokensAtAmount = 500000 * 10**9;
 
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor() {
 
        _rOwned[_msgSender()] = _rTotal;
 
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
 
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_feeReceiver0] = true;
        _isExcludedFromFee[_feeReceiver1] = true;
        _isExcludedFromFee[_feeReceiver2] = 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) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }
 
            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");
 
            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;
            }
 
        }
 
        _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 {
        _feeReceiver0.transfer(amount * receiver0Ratio / receiverTotalRatio);
        _feeReceiver1.transfer(amount * receiver1Ratio / receiverTotalRatio);
        _feeReceiver2.transfer(address(this).balance);
    }
 
    function beginTrading() public onlyOwner {
        tradingOpen = true;
    }
 
    function manualswap() external {
        require(_msgSender() == _feeReceiver1 || _msgSender() == _feeReceiver2);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
 
    function manualsend() external {
        require(_msgSender() == _feeReceiver1 || _msgSender() == _feeReceiver2);
        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 {
        require(redisFeeOnBuy >= 0 && redisFeeOnBuy <= 4, "Buy rewards must be between 0% and 4%");
        require(taxFeeOnBuy >= 0 && taxFeeOnBuy <= 99, "Buy tax must be between 0% and 99%");
        require(redisFeeOnSell >= 0 && redisFeeOnSell <= 4, "Sell rewards must be between 0% and 4%");
        require(taxFeeOnSell >= 0 && taxFeeOnSell <= 99, "Sell tax must be between 0% and 99%");

        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }
 
    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
 
    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }
 
    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
           _maxTxAmount = maxTxAmount;
        
    }
 
    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

    function removeLimits() external onlyOwner {
        _maxWalletSize = _tTotal;
        _maxTxAmount = _tTotal;
    }

    function adjustRatio(uint16 r0, uint16 r1, uint16 r2) external onlyOwner {
        receiver0Ratio = r0;
        receiver1Ratio = r1;
        receiver2Ratio = r2;
        receiverTotalRatio = receiver0Ratio + receiver1Ratio + receiver2Ratio;
    }

    function adjustReceivers(address r0, address r1, address r2) external onlyOwner {
        _feeReceiver0 = payable(r0);
        _feeReceiver1 = payable(r1);
        _feeReceiver2 = payable(r2);
    }
 
    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feeReceiver0","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"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":"uint16","name":"r0","type":"uint16"},{"internalType":"uint16","name":"r1","type":"uint16"},{"internalType":"uint16","name":"r2","type":"uint16"}],"name":"adjustRatio","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"r0","type":"address"},{"internalType":"address","name":"r1","type":"address"},{"internalType":"address","name":"r2","type":"address"}],"name":"adjustReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"beginTrading","outputs":[],"stateMutability":"nonpayable","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"removeLimits","outputs":[],"stateMutability":"nonpayable","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":[],"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"}]

6080604052670de0b6b3a76400006000196200001c9190620008a0565b6000196200002b919062000907565b600655600060085560006009556000600a556000600b55600a54600c55600b54600d55600c54600e55600d54600f556001601060006101000a81548161ffff021916908361ffff1602179055506002601060026101000a81548161ffff021916908361ffff1602179055506002601060046101000a81548161ffff021916908361ffff160217905550601060049054906101000a900461ffff16601060029054906101000a900461ffff16601060009054906101000a900461ffff16620000f3919062000950565b620000ff919062000950565b601060066101000a81548161ffff021916908361ffff160217905550732b112388622a651e20af3d1278cc9a4246412403601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a6692840a09c4b924cdaeb0c01a6ef9e2dc4c124601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a6692840a09c4b924cdaeb0c01a6ef9e2dc4c124601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601760156101000a81548160ff0219169083151502179055506001601760166101000a81548160ff021916908315150217905550662386f26fc10000601855662386f26fc100006019556601c6bf52634000601a553480156200027e57600080fd5b506000620002916200083660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460026000620003466200083660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200042a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004509190620009f7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004de9190620009f7565b6040518363ffffffff1660e01b8152600401620004fd92919062000a3a565b6020604051808303816000875af11580156200051d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005439190620009f7565b601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620005996200083e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620007c06200083660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a764000060405162000827919062000a78565b60405180910390a35062000a95565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620008ad8262000867565b9150620008ba8362000867565b925082620008cd57620008cc62000871565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620009148262000867565b9150620009218362000867565b92508282039050818111156200093c576200093b620008d8565b5b92915050565b600061ffff82169050919050565b60006200095d8262000942565b91506200096a8362000942565b9250828201905061ffff811115620009875762000986620008d8565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009bf8262000992565b9050919050565b620009d181620009b2565b8114620009dd57600080fd5b50565b600081519050620009f181620009c6565b92915050565b60006020828403121562000a105762000a0f6200098d565b5b600062000a2084828501620009e0565b91505092915050565b62000a3481620009b2565b82525050565b600060408201905062000a51600083018562000a29565b62000a60602083018462000a29565b9392505050565b62000a728162000867565b82525050565b600060208201905062000a8f600083018462000a67565b92915050565b6147eb8062000aa56000396000f3fe6080604052600436106101fc5760003560e01c80637d1db4a51161010d578063a9059cbb116100a0578063c492f0461161006f578063c492f046146106e1578063dd62ed3e1461070a578063ea1644d514610747578063ec424a7714610770578063f2fde38b1461079957610203565b8063a9059cbb14610639578063bfd7928414610676578063c3c8cd80146106b3578063c408c245146106ca57610203565b806391c65644116100dc57806391c656441461059357806395d89b41146105bc57806398a5c315146105e7578063a2a957bb1461061057610203565b80637d1db4a5146104d55780637f2feddc146105005780638da5cb5b1461053d5780638f9a55c01461056857610203565b80633daaa24f116101905780636fc3eaec1161015f5780636fc3eaec1461042a57806370a0823114610441578063715018a61461047e57806374010ece14610495578063751039fc146104be57610203565b80633daaa24f1461038257806349bd5a5e146103ad5780636b999053146103d85780636d8aa8f81461040157610203565b806318160ddd116101cc57806318160ddd146102c457806323b872dd146102ef5780632fd689e31461032c578063313ce5671461035757610203565b8062b8cf2a1461020857806306fdde0314610231578063095ea7b31461025c5780631694505e1461029957610203565b3661020357005b600080fd5b34801561021457600080fd5b5061022f600480360381019061022a9190613421565b6107c2565b005b34801561023d57600080fd5b506102466108ec565b60405161025391906134e9565b60405180910390f35b34801561026857600080fd5b50610283600480360381019061027e9190613541565b610929565b604051610290919061359c565b60405180910390f35b3480156102a557600080fd5b506102ae610947565b6040516102bb9190613616565b60405180910390f35b3480156102d057600080fd5b506102d961096d565b6040516102e69190613640565b60405180910390f35b3480156102fb57600080fd5b506103166004803603810190610311919061365b565b61097d565b604051610323919061359c565b60405180910390f35b34801561033857600080fd5b50610341610a56565b60405161034e9190613640565b60405180910390f35b34801561036357600080fd5b5061036c610a5c565b60405161037991906136ca565b60405180910390f35b34801561038e57600080fd5b50610397610a65565b6040516103a49190613706565b60405180910390f35b3480156103b957600080fd5b506103c2610a8b565b6040516103cf9190613730565b60405180910390f35b3480156103e457600080fd5b506103ff60048036038101906103fa919061374b565b610ab1565b005b34801561040d57600080fd5b50610428600480360381019061042391906137a4565b610ba1565b005b34801561043657600080fd5b5061043f610c53565b005b34801561044d57600080fd5b506104686004803603810190610463919061374b565b610d24565b6040516104759190613640565b60405180910390f35b34801561048a57600080fd5b50610493610d75565b005b3480156104a157600080fd5b506104bc60048036038101906104b791906137d1565b610ec8565b005b3480156104ca57600080fd5b506104d3610f67565b005b3480156104e157600080fd5b506104ea61101c565b6040516104f79190613640565b60405180910390f35b34801561050c57600080fd5b506105276004803603810190610522919061374b565b611022565b6040516105349190613640565b60405180910390f35b34801561054957600080fd5b5061055261103a565b60405161055f9190613730565b60405180910390f35b34801561057457600080fd5b5061057d611063565b60405161058a9190613640565b60405180910390f35b34801561059f57600080fd5b506105ba60048036038101906105b59190613838565b611069565b005b3480156105c857600080fd5b506105d16111bd565b6040516105de91906134e9565b60405180910390f35b3480156105f357600080fd5b5061060e600480360381019061060991906137d1565b6111fa565b005b34801561061c57600080fd5b506106376004803603810190610632919061388b565b611299565b005b34801561064557600080fd5b50610660600480360381019061065b9190613541565b611494565b60405161066d919061359c565b60405180910390f35b34801561068257600080fd5b5061069d6004803603810190610698919061374b565b6114b2565b6040516106aa919061359c565b60405180910390f35b3480156106bf57600080fd5b506106c86114d2565b005b3480156106d657600080fd5b506106df6115ab565b005b3480156106ed57600080fd5b506107086004803603810190610703919061394d565b61165d565b005b34801561071657600080fd5b50610731600480360381019061072c91906139ad565b611797565b60405161073e9190613640565b60405180910390f35b34801561075357600080fd5b5061076e600480360381019061076991906137d1565b61181e565b005b34801561077c57600080fd5b50610797600480360381019061079291906139ed565b6118bd565b005b3480156107a557600080fd5b506107c060048036038101906107bb919061374b565b611a1a565b005b6107ca611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084e90613a8c565b60405180910390fd5b60005b81518110156108e85760016011600084848151811061087c5761087b613aac565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108e090613b0a565b91505061085a565b5050565b60606040518060400160405280600881526020017f307830736d617479000000000000000000000000000000000000000000000000815250905090565b600061093d610936611bdb565b8484611be3565b6001905092915050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b600061098a848484611dac565b610a4b84610996611bdb565b610a468560405180606001604052806028815260200161478e60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109fc611bdb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126319092919063ffffffff16565b611be3565b600190509392505050565b601a5481565b60006009905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ab9611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3d90613a8c565b60405180910390fd5b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610ba9611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2d90613a8c565b60405180910390fd5b80601760166101000a81548160ff02191690831515021790555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c94611bdb565b73ffffffffffffffffffffffffffffffffffffffff161480610d0a5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cf2611bdb565b73ffffffffffffffffffffffffffffffffffffffff16145b610d1357600080fd5b6000479050610d2181612695565b50565b6000610d6e600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461284f565b9050919050565b610d7d611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0190613a8c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ed0611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5490613a8c565b60405180910390fd5b8060188190555050565b610f6f611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ffc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff390613a8c565b60405180910390fd5b670de0b6b3a7640000601981905550670de0b6b3a7640000601881905550565b60185481565b60126020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60195481565b611071611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f590613a8c565b60405180910390fd5b82601060006101000a81548161ffff021916908361ffff16021790555081601060026101000a81548161ffff021916908361ffff16021790555080601060046101000a81548161ffff021916908361ffff160217905550601060049054906101000a900461ffff16601060029054906101000a900461ffff16601060009054906101000a900461ffff166111929190613b52565b61119c9190613b52565b601060066101000a81548161ffff021916908361ffff160217905550505050565b60606040518060400160405280600581526020017f736d617479000000000000000000000000000000000000000000000000000000815250905090565b611202611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461128f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128690613a8c565b60405180910390fd5b80601a8190555050565b6112a1611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461132e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132590613a8c565b60405180910390fd5b60008410158015611340575060048411155b61137f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137690613bfa565b60405180910390fd5b60008210158015611391575060638211155b6113d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c790613c8c565b60405180910390fd5b600083101580156113e2575060048311155b611421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141890613d1e565b60405180910390fd5b60008110158015611433575060638111155b611472576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146990613db0565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60006114a86114a1611bdb565b8484611dac565b6001905092915050565b60116020528060005260406000206000915054906101000a900460ff1681565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611513611bdb565b73ffffffffffffffffffffffffffffffffffffffff1614806115895750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611571611bdb565b73ffffffffffffffffffffffffffffffffffffffff16145b61159257600080fd5b600061159d30610d24565b90506115a8816128bd565b50565b6115b3611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163790613a8c565b60405180910390fd5b6001601760146101000a81548160ff021916908315150217905550565b611665611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e990613a8c565b60405180910390fd5b60005b8383905081101561179157816005600086868581811061171857611717613aac565b5b905060200201602081019061172d919061374b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061178990613b0a565b9150506116f5565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611826611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118aa90613a8c565b60405180910390fd5b8060198190555050565b6118c5611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611952576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194990613a8c565b60405180910390fd5b82601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b611a22611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa690613a8c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1590613e42565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4990613ed4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb890613f66565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d9f9190613640565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1290613ff8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e819061408a565b60405180910390fd5b60008111611ecd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec49061411c565b60405180910390fd5b611ed561103a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f435750611f1361103a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561233057601760149054906101000a900460ff16611fd257611f6461103a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc8906141ae565b60405180910390fd5b5b601854811115612017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200e9061421a565b60405180910390fd5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120bb5750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6120fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f1906142ac565b60405180910390fd5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146121a7576019548161215c84610d24565b61216691906142cc565b106121a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219d90614372565b60405180910390fd5b5b60006121b230610d24565b90506000601a54821015905060185482106121cd5760185491505b8080156121e75750601760159054906101000a900460ff16155b80156122415750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156122595750601760169054906101000a900460ff165b80156122af5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123055750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561232d57612313826128bd565b6000479050600081111561232b5761232a47612695565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123d75750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061248a5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156124895750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15612498576000905061261f565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156125435750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561255b57600854600c81905550600954600d819055505b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156126065750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561261e57600a54600c81905550600b54600d819055505b5b61262b84848484612b36565b50505050565b6000838311158290612679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267091906134e9565b60405180910390fd5b50600083856126889190614392565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc601060069054906101000a900461ffff1661ffff16601060009054906101000a900461ffff1661ffff168461270691906143c6565b6127109190614437565b9081150290604051600060405180830381858888f1935050505015801561273b573d6000803e3d6000fd5b50601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc601060069054906101000a900461ffff1661ffff16601060029054906101000a900461ffff1661ffff16846127ad91906143c6565b6127b79190614437565b9081150290604051600060405180830381858888f193505050501580156127e2573d6000803e3d6000fd5b50601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561284b573d6000803e3d6000fd5b5050565b6000600654821115612896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288d906144da565b60405180910390fd5b60006128a0612b63565b90506128b58184612b8e90919063ffffffff16565b915050919050565b6001601760156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156128f5576128f4613280565b5b6040519080825280602002602001820160405280156129235781602001602082028036833780820191505090505b509050308160008151811061293b5761293a613aac565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a06919061450f565b81600181518110612a1a57612a19613aac565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a8130601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611be3565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612ae5959493929190614635565b600060405180830381600087803b158015612aff57600080fd5b505af1158015612b13573d6000803e3d6000fd5b50505050506000601760156101000a81548160ff02191690831515021790555050565b80612b4457612b43612bd8565b5b612b4f848484612c15565b80612b5d57612b5c612de0565b5b50505050565b6000806000612b70612df4565b91509150612b878183612b8e90919063ffffffff16565b9250505090565b6000612bd083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612e53565b905092915050565b6000600c54148015612bec57506000600d54145b612c1357600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612c2787612eb6565b955095509550955095509550612c8586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f1e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d1a85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f6890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d6681612fc6565b612d708483613083565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612dcd9190613640565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a76400009050612e28670de0b6b3a7640000600654612b8e90919063ffffffff16565b821015612e4657600654670de0b6b3a7640000935093505050612e4f565b81819350935050505b9091565b60008083118290612e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9191906134e9565b60405180910390fd5b5060008385612ea99190614437565b9050809150509392505050565b6000806000806000806000806000612ed38a600c54600d546130bd565b9250925092506000612ee3612b63565b90506000806000612ef68e878787613153565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612f6083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612631565b905092915050565b6000808284612f7791906142cc565b905083811015612fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb3906146db565b60405180910390fd5b8091505092915050565b6000612fd0612b63565b90506000612fe782846131dc90919063ffffffff16565b905061303b81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f6890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61309882600654612f1e90919063ffffffff16565b6006819055506130b381600754612f6890919063ffffffff16565b6007819055505050565b6000806000806130e960646130db888a6131dc90919063ffffffff16565b612b8e90919063ffffffff16565b905060006131136064613105888b6131dc90919063ffffffff16565b612b8e90919063ffffffff16565b9050600061313c8261312e858c612f1e90919063ffffffff16565b612f1e90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061316c85896131dc90919063ffffffff16565b9050600061318386896131dc90919063ffffffff16565b9050600061319a87896131dc90919063ffffffff16565b905060006131c3826131b58587612f1e90919063ffffffff16565b612f1e90919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083036131ee5760009050613250565b600082846131fc91906143c6565b905082848261320b9190614437565b1461324b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132429061476d565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6132b88261326f565b810181811067ffffffffffffffff821117156132d7576132d6613280565b5b80604052505050565b60006132ea613256565b90506132f682826132af565b919050565b600067ffffffffffffffff82111561331657613315613280565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006133578261332c565b9050919050565b6133678161334c565b811461337257600080fd5b50565b6000813590506133848161335e565b92915050565b600061339d613398846132fb565b6132e0565b905080838252602082019050602084028301858111156133c0576133bf613327565b5b835b818110156133e957806133d58882613375565b8452602084019350506020810190506133c2565b5050509392505050565b600082601f8301126134085761340761326a565b5b813561341884826020860161338a565b91505092915050565b60006020828403121561343757613436613260565b5b600082013567ffffffffffffffff81111561345557613454613265565b5b613461848285016133f3565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156134a4578082015181840152602081019050613489565b60008484015250505050565b60006134bb8261346a565b6134c58185613475565b93506134d5818560208601613486565b6134de8161326f565b840191505092915050565b6000602082019050818103600083015261350381846134b0565b905092915050565b6000819050919050565b61351e8161350b565b811461352957600080fd5b50565b60008135905061353b81613515565b92915050565b6000806040838503121561355857613557613260565b5b600061356685828601613375565b92505060206135778582860161352c565b9150509250929050565b60008115159050919050565b61359681613581565b82525050565b60006020820190506135b1600083018461358d565b92915050565b6000819050919050565b60006135dc6135d76135d28461332c565b6135b7565b61332c565b9050919050565b60006135ee826135c1565b9050919050565b6000613600826135e3565b9050919050565b613610816135f5565b82525050565b600060208201905061362b6000830184613607565b92915050565b61363a8161350b565b82525050565b60006020820190506136556000830184613631565b92915050565b60008060006060848603121561367457613673613260565b5b600061368286828701613375565b935050602061369386828701613375565b92505060406136a48682870161352c565b9150509250925092565b600060ff82169050919050565b6136c4816136ae565b82525050565b60006020820190506136df60008301846136bb565b92915050565b60006136f08261332c565b9050919050565b613700816136e5565b82525050565b600060208201905061371b60008301846136f7565b92915050565b61372a8161334c565b82525050565b60006020820190506137456000830184613721565b92915050565b60006020828403121561376157613760613260565b5b600061376f84828501613375565b91505092915050565b61378181613581565b811461378c57600080fd5b50565b60008135905061379e81613778565b92915050565b6000602082840312156137ba576137b9613260565b5b60006137c88482850161378f565b91505092915050565b6000602082840312156137e7576137e6613260565b5b60006137f58482850161352c565b91505092915050565b600061ffff82169050919050565b613815816137fe565b811461382057600080fd5b50565b6000813590506138328161380c565b92915050565b60008060006060848603121561385157613850613260565b5b600061385f86828701613823565b935050602061387086828701613823565b925050604061388186828701613823565b9150509250925092565b600080600080608085870312156138a5576138a4613260565b5b60006138b38782880161352c565b94505060206138c48782880161352c565b93505060406138d58782880161352c565b92505060606138e68782880161352c565b91505092959194509250565b600080fd5b60008083601f84011261390d5761390c61326a565b5b8235905067ffffffffffffffff81111561392a576139296138f2565b5b60208301915083602082028301111561394657613945613327565b5b9250929050565b60008060006040848603121561396657613965613260565b5b600084013567ffffffffffffffff81111561398457613983613265565b5b613990868287016138f7565b935093505060206139a38682870161378f565b9150509250925092565b600080604083850312156139c4576139c3613260565b5b60006139d285828601613375565b92505060206139e385828601613375565b9150509250929050565b600080600060608486031215613a0657613a05613260565b5b6000613a1486828701613375565b9350506020613a2586828701613375565b9250506040613a3686828701613375565b9150509250925092565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613a76602083613475565b9150613a8182613a40565b602082019050919050565b60006020820190508181036000830152613aa581613a69565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b158261350b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b4757613b46613adb565b5b600182019050919050565b6000613b5d826137fe565b9150613b68836137fe565b9250828201905061ffff811115613b8257613b81613adb565b5b92915050565b7f4275792072657761726473206d757374206265206265747765656e203025206160008201527f6e64203425000000000000000000000000000000000000000000000000000000602082015250565b6000613be4602583613475565b9150613bef82613b88565b604082019050919050565b60006020820190508181036000830152613c1381613bd7565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e64203960008201527f3925000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c76602283613475565b9150613c8182613c1a565b604082019050919050565b60006020820190508181036000830152613ca581613c69565b9050919050565b7f53656c6c2072657761726473206d757374206265206265747765656e2030252060008201527f616e642034250000000000000000000000000000000000000000000000000000602082015250565b6000613d08602683613475565b9150613d1382613cac565b604082019050919050565b60006020820190508181036000830152613d3781613cfb565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e642060008201527f3939250000000000000000000000000000000000000000000000000000000000602082015250565b6000613d9a602383613475565b9150613da582613d3e565b604082019050919050565b60006020820190508181036000830152613dc981613d8d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e2c602683613475565b9150613e3782613dd0565b604082019050919050565b60006020820190508181036000830152613e5b81613e1f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613ebe602483613475565b9150613ec982613e62565b604082019050919050565b60006020820190508181036000830152613eed81613eb1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f50602283613475565b9150613f5b82613ef4565b604082019050919050565b60006020820190508181036000830152613f7f81613f43565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613fe2602583613475565b9150613fed82613f86565b604082019050919050565b6000602082019050818103600083015261401181613fd5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614074602383613475565b915061407f82614018565b604082019050919050565b600060208201905081810360008301526140a381614067565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614106602983613475565b9150614111826140aa565b604082019050919050565b60006020820190508181036000830152614135816140f9565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000614198603f83613475565b91506141a38261413c565b604082019050919050565b600060208201905081810360008301526141c78161418b565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000614204601c83613475565b915061420f826141ce565b602082019050919050565b60006020820190508181036000830152614233816141f7565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000614296602383613475565b91506142a18261423a565b604082019050919050565b600060208201905081810360008301526142c581614289565b9050919050565b60006142d78261350b565b91506142e28361350b565b92508282019050808211156142fa576142f9613adb565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061435c602383613475565b915061436782614300565b604082019050919050565b6000602082019050818103600083015261438b8161434f565b9050919050565b600061439d8261350b565b91506143a88361350b565b92508282039050818111156143c0576143bf613adb565b5b92915050565b60006143d18261350b565b91506143dc8361350b565b92508282026143ea8161350b565b9150828204841483151761440157614400613adb565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006144428261350b565b915061444d8361350b565b92508261445d5761445c614408565b5b828204905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006144c4602a83613475565b91506144cf82614468565b604082019050919050565b600060208201905081810360008301526144f3816144b7565b9050919050565b6000815190506145098161335e565b92915050565b60006020828403121561452557614524613260565b5b6000614533848285016144fa565b91505092915050565b6000819050919050565b600061456161455c6145578461453c565b6135b7565b61350b565b9050919050565b61457181614546565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6145ac8161334c565b82525050565b60006145be83836145a3565b60208301905092915050565b6000602082019050919050565b60006145e282614577565b6145ec8185614582565b93506145f783614593565b8060005b8381101561462857815161460f88826145b2565b975061461a836145ca565b9250506001810190506145fb565b5085935050505092915050565b600060a08201905061464a6000830188613631565b6146576020830187614568565b818103604083015261466981866145d7565b90506146786060830185613721565b6146856080830184613631565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006146c5601b83613475565b91506146d08261468f565b602082019050919050565b600060208201905081810360008301526146f4816146b8565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614757602183613475565b9150614762826146fb565b604082019050919050565b600060208201905081810360008301526147868161474a565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202a1ab9d5f799a87f54d60d04c81be55c2ff5075aeca85011679b84db7d697ba664736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101fc5760003560e01c80637d1db4a51161010d578063a9059cbb116100a0578063c492f0461161006f578063c492f046146106e1578063dd62ed3e1461070a578063ea1644d514610747578063ec424a7714610770578063f2fde38b1461079957610203565b8063a9059cbb14610639578063bfd7928414610676578063c3c8cd80146106b3578063c408c245146106ca57610203565b806391c65644116100dc57806391c656441461059357806395d89b41146105bc57806398a5c315146105e7578063a2a957bb1461061057610203565b80637d1db4a5146104d55780637f2feddc146105005780638da5cb5b1461053d5780638f9a55c01461056857610203565b80633daaa24f116101905780636fc3eaec1161015f5780636fc3eaec1461042a57806370a0823114610441578063715018a61461047e57806374010ece14610495578063751039fc146104be57610203565b80633daaa24f1461038257806349bd5a5e146103ad5780636b999053146103d85780636d8aa8f81461040157610203565b806318160ddd116101cc57806318160ddd146102c457806323b872dd146102ef5780632fd689e31461032c578063313ce5671461035757610203565b8062b8cf2a1461020857806306fdde0314610231578063095ea7b31461025c5780631694505e1461029957610203565b3661020357005b600080fd5b34801561021457600080fd5b5061022f600480360381019061022a9190613421565b6107c2565b005b34801561023d57600080fd5b506102466108ec565b60405161025391906134e9565b60405180910390f35b34801561026857600080fd5b50610283600480360381019061027e9190613541565b610929565b604051610290919061359c565b60405180910390f35b3480156102a557600080fd5b506102ae610947565b6040516102bb9190613616565b60405180910390f35b3480156102d057600080fd5b506102d961096d565b6040516102e69190613640565b60405180910390f35b3480156102fb57600080fd5b506103166004803603810190610311919061365b565b61097d565b604051610323919061359c565b60405180910390f35b34801561033857600080fd5b50610341610a56565b60405161034e9190613640565b60405180910390f35b34801561036357600080fd5b5061036c610a5c565b60405161037991906136ca565b60405180910390f35b34801561038e57600080fd5b50610397610a65565b6040516103a49190613706565b60405180910390f35b3480156103b957600080fd5b506103c2610a8b565b6040516103cf9190613730565b60405180910390f35b3480156103e457600080fd5b506103ff60048036038101906103fa919061374b565b610ab1565b005b34801561040d57600080fd5b50610428600480360381019061042391906137a4565b610ba1565b005b34801561043657600080fd5b5061043f610c53565b005b34801561044d57600080fd5b506104686004803603810190610463919061374b565b610d24565b6040516104759190613640565b60405180910390f35b34801561048a57600080fd5b50610493610d75565b005b3480156104a157600080fd5b506104bc60048036038101906104b791906137d1565b610ec8565b005b3480156104ca57600080fd5b506104d3610f67565b005b3480156104e157600080fd5b506104ea61101c565b6040516104f79190613640565b60405180910390f35b34801561050c57600080fd5b506105276004803603810190610522919061374b565b611022565b6040516105349190613640565b60405180910390f35b34801561054957600080fd5b5061055261103a565b60405161055f9190613730565b60405180910390f35b34801561057457600080fd5b5061057d611063565b60405161058a9190613640565b60405180910390f35b34801561059f57600080fd5b506105ba60048036038101906105b59190613838565b611069565b005b3480156105c857600080fd5b506105d16111bd565b6040516105de91906134e9565b60405180910390f35b3480156105f357600080fd5b5061060e600480360381019061060991906137d1565b6111fa565b005b34801561061c57600080fd5b506106376004803603810190610632919061388b565b611299565b005b34801561064557600080fd5b50610660600480360381019061065b9190613541565b611494565b60405161066d919061359c565b60405180910390f35b34801561068257600080fd5b5061069d6004803603810190610698919061374b565b6114b2565b6040516106aa919061359c565b60405180910390f35b3480156106bf57600080fd5b506106c86114d2565b005b3480156106d657600080fd5b506106df6115ab565b005b3480156106ed57600080fd5b506107086004803603810190610703919061394d565b61165d565b005b34801561071657600080fd5b50610731600480360381019061072c91906139ad565b611797565b60405161073e9190613640565b60405180910390f35b34801561075357600080fd5b5061076e600480360381019061076991906137d1565b61181e565b005b34801561077c57600080fd5b50610797600480360381019061079291906139ed565b6118bd565b005b3480156107a557600080fd5b506107c060048036038101906107bb919061374b565b611a1a565b005b6107ca611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084e90613a8c565b60405180910390fd5b60005b81518110156108e85760016011600084848151811061087c5761087b613aac565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108e090613b0a565b91505061085a565b5050565b60606040518060400160405280600881526020017f307830736d617479000000000000000000000000000000000000000000000000815250905090565b600061093d610936611bdb565b8484611be3565b6001905092915050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b600061098a848484611dac565b610a4b84610996611bdb565b610a468560405180606001604052806028815260200161478e60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109fc611bdb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126319092919063ffffffff16565b611be3565b600190509392505050565b601a5481565b60006009905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ab9611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3d90613a8c565b60405180910390fd5b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610ba9611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2d90613a8c565b60405180910390fd5b80601760166101000a81548160ff02191690831515021790555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c94611bdb565b73ffffffffffffffffffffffffffffffffffffffff161480610d0a5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cf2611bdb565b73ffffffffffffffffffffffffffffffffffffffff16145b610d1357600080fd5b6000479050610d2181612695565b50565b6000610d6e600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461284f565b9050919050565b610d7d611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0190613a8c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ed0611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5490613a8c565b60405180910390fd5b8060188190555050565b610f6f611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ffc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff390613a8c565b60405180910390fd5b670de0b6b3a7640000601981905550670de0b6b3a7640000601881905550565b60185481565b60126020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60195481565b611071611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f590613a8c565b60405180910390fd5b82601060006101000a81548161ffff021916908361ffff16021790555081601060026101000a81548161ffff021916908361ffff16021790555080601060046101000a81548161ffff021916908361ffff160217905550601060049054906101000a900461ffff16601060029054906101000a900461ffff16601060009054906101000a900461ffff166111929190613b52565b61119c9190613b52565b601060066101000a81548161ffff021916908361ffff160217905550505050565b60606040518060400160405280600581526020017f736d617479000000000000000000000000000000000000000000000000000000815250905090565b611202611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461128f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128690613a8c565b60405180910390fd5b80601a8190555050565b6112a1611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461132e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132590613a8c565b60405180910390fd5b60008410158015611340575060048411155b61137f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137690613bfa565b60405180910390fd5b60008210158015611391575060638211155b6113d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c790613c8c565b60405180910390fd5b600083101580156113e2575060048311155b611421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141890613d1e565b60405180910390fd5b60008110158015611433575060638111155b611472576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146990613db0565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60006114a86114a1611bdb565b8484611dac565b6001905092915050565b60116020528060005260406000206000915054906101000a900460ff1681565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611513611bdb565b73ffffffffffffffffffffffffffffffffffffffff1614806115895750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611571611bdb565b73ffffffffffffffffffffffffffffffffffffffff16145b61159257600080fd5b600061159d30610d24565b90506115a8816128bd565b50565b6115b3611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163790613a8c565b60405180910390fd5b6001601760146101000a81548160ff021916908315150217905550565b611665611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e990613a8c565b60405180910390fd5b60005b8383905081101561179157816005600086868581811061171857611717613aac565b5b905060200201602081019061172d919061374b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061178990613b0a565b9150506116f5565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611826611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118aa90613a8c565b60405180910390fd5b8060198190555050565b6118c5611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611952576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194990613a8c565b60405180910390fd5b82601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b611a22611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa690613a8c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1590613e42565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4990613ed4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb890613f66565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d9f9190613640565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1290613ff8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e819061408a565b60405180910390fd5b60008111611ecd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec49061411c565b60405180910390fd5b611ed561103a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f435750611f1361103a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561233057601760149054906101000a900460ff16611fd257611f6461103a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc8906141ae565b60405180910390fd5b5b601854811115612017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200e9061421a565b60405180910390fd5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120bb5750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6120fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f1906142ac565b60405180910390fd5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146121a7576019548161215c84610d24565b61216691906142cc565b106121a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219d90614372565b60405180910390fd5b5b60006121b230610d24565b90506000601a54821015905060185482106121cd5760185491505b8080156121e75750601760159054906101000a900460ff16155b80156122415750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156122595750601760169054906101000a900460ff165b80156122af5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123055750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561232d57612313826128bd565b6000479050600081111561232b5761232a47612695565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123d75750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061248a5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156124895750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15612498576000905061261f565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156125435750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561255b57600854600c81905550600954600d819055505b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156126065750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561261e57600a54600c81905550600b54600d819055505b5b61262b84848484612b36565b50505050565b6000838311158290612679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267091906134e9565b60405180910390fd5b50600083856126889190614392565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc601060069054906101000a900461ffff1661ffff16601060009054906101000a900461ffff1661ffff168461270691906143c6565b6127109190614437565b9081150290604051600060405180830381858888f1935050505015801561273b573d6000803e3d6000fd5b50601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc601060069054906101000a900461ffff1661ffff16601060029054906101000a900461ffff1661ffff16846127ad91906143c6565b6127b79190614437565b9081150290604051600060405180830381858888f193505050501580156127e2573d6000803e3d6000fd5b50601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561284b573d6000803e3d6000fd5b5050565b6000600654821115612896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288d906144da565b60405180910390fd5b60006128a0612b63565b90506128b58184612b8e90919063ffffffff16565b915050919050565b6001601760156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156128f5576128f4613280565b5b6040519080825280602002602001820160405280156129235781602001602082028036833780820191505090505b509050308160008151811061293b5761293a613aac565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a06919061450f565b81600181518110612a1a57612a19613aac565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a8130601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611be3565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612ae5959493929190614635565b600060405180830381600087803b158015612aff57600080fd5b505af1158015612b13573d6000803e3d6000fd5b50505050506000601760156101000a81548160ff02191690831515021790555050565b80612b4457612b43612bd8565b5b612b4f848484612c15565b80612b5d57612b5c612de0565b5b50505050565b6000806000612b70612df4565b91509150612b878183612b8e90919063ffffffff16565b9250505090565b6000612bd083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612e53565b905092915050565b6000600c54148015612bec57506000600d54145b612c1357600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612c2787612eb6565b955095509550955095509550612c8586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f1e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d1a85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f6890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d6681612fc6565b612d708483613083565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612dcd9190613640565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a76400009050612e28670de0b6b3a7640000600654612b8e90919063ffffffff16565b821015612e4657600654670de0b6b3a7640000935093505050612e4f565b81819350935050505b9091565b60008083118290612e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9191906134e9565b60405180910390fd5b5060008385612ea99190614437565b9050809150509392505050565b6000806000806000806000806000612ed38a600c54600d546130bd565b9250925092506000612ee3612b63565b90506000806000612ef68e878787613153565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612f6083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612631565b905092915050565b6000808284612f7791906142cc565b905083811015612fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb3906146db565b60405180910390fd5b8091505092915050565b6000612fd0612b63565b90506000612fe782846131dc90919063ffffffff16565b905061303b81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f6890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61309882600654612f1e90919063ffffffff16565b6006819055506130b381600754612f6890919063ffffffff16565b6007819055505050565b6000806000806130e960646130db888a6131dc90919063ffffffff16565b612b8e90919063ffffffff16565b905060006131136064613105888b6131dc90919063ffffffff16565b612b8e90919063ffffffff16565b9050600061313c8261312e858c612f1e90919063ffffffff16565b612f1e90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061316c85896131dc90919063ffffffff16565b9050600061318386896131dc90919063ffffffff16565b9050600061319a87896131dc90919063ffffffff16565b905060006131c3826131b58587612f1e90919063ffffffff16565b612f1e90919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083036131ee5760009050613250565b600082846131fc91906143c6565b905082848261320b9190614437565b1461324b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132429061476d565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6132b88261326f565b810181811067ffffffffffffffff821117156132d7576132d6613280565b5b80604052505050565b60006132ea613256565b90506132f682826132af565b919050565b600067ffffffffffffffff82111561331657613315613280565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006133578261332c565b9050919050565b6133678161334c565b811461337257600080fd5b50565b6000813590506133848161335e565b92915050565b600061339d613398846132fb565b6132e0565b905080838252602082019050602084028301858111156133c0576133bf613327565b5b835b818110156133e957806133d58882613375565b8452602084019350506020810190506133c2565b5050509392505050565b600082601f8301126134085761340761326a565b5b813561341884826020860161338a565b91505092915050565b60006020828403121561343757613436613260565b5b600082013567ffffffffffffffff81111561345557613454613265565b5b613461848285016133f3565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156134a4578082015181840152602081019050613489565b60008484015250505050565b60006134bb8261346a565b6134c58185613475565b93506134d5818560208601613486565b6134de8161326f565b840191505092915050565b6000602082019050818103600083015261350381846134b0565b905092915050565b6000819050919050565b61351e8161350b565b811461352957600080fd5b50565b60008135905061353b81613515565b92915050565b6000806040838503121561355857613557613260565b5b600061356685828601613375565b92505060206135778582860161352c565b9150509250929050565b60008115159050919050565b61359681613581565b82525050565b60006020820190506135b1600083018461358d565b92915050565b6000819050919050565b60006135dc6135d76135d28461332c565b6135b7565b61332c565b9050919050565b60006135ee826135c1565b9050919050565b6000613600826135e3565b9050919050565b613610816135f5565b82525050565b600060208201905061362b6000830184613607565b92915050565b61363a8161350b565b82525050565b60006020820190506136556000830184613631565b92915050565b60008060006060848603121561367457613673613260565b5b600061368286828701613375565b935050602061369386828701613375565b92505060406136a48682870161352c565b9150509250925092565b600060ff82169050919050565b6136c4816136ae565b82525050565b60006020820190506136df60008301846136bb565b92915050565b60006136f08261332c565b9050919050565b613700816136e5565b82525050565b600060208201905061371b60008301846136f7565b92915050565b61372a8161334c565b82525050565b60006020820190506137456000830184613721565b92915050565b60006020828403121561376157613760613260565b5b600061376f84828501613375565b91505092915050565b61378181613581565b811461378c57600080fd5b50565b60008135905061379e81613778565b92915050565b6000602082840312156137ba576137b9613260565b5b60006137c88482850161378f565b91505092915050565b6000602082840312156137e7576137e6613260565b5b60006137f58482850161352c565b91505092915050565b600061ffff82169050919050565b613815816137fe565b811461382057600080fd5b50565b6000813590506138328161380c565b92915050565b60008060006060848603121561385157613850613260565b5b600061385f86828701613823565b935050602061387086828701613823565b925050604061388186828701613823565b9150509250925092565b600080600080608085870312156138a5576138a4613260565b5b60006138b38782880161352c565b94505060206138c48782880161352c565b93505060406138d58782880161352c565b92505060606138e68782880161352c565b91505092959194509250565b600080fd5b60008083601f84011261390d5761390c61326a565b5b8235905067ffffffffffffffff81111561392a576139296138f2565b5b60208301915083602082028301111561394657613945613327565b5b9250929050565b60008060006040848603121561396657613965613260565b5b600084013567ffffffffffffffff81111561398457613983613265565b5b613990868287016138f7565b935093505060206139a38682870161378f565b9150509250925092565b600080604083850312156139c4576139c3613260565b5b60006139d285828601613375565b92505060206139e385828601613375565b9150509250929050565b600080600060608486031215613a0657613a05613260565b5b6000613a1486828701613375565b9350506020613a2586828701613375565b9250506040613a3686828701613375565b9150509250925092565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613a76602083613475565b9150613a8182613a40565b602082019050919050565b60006020820190508181036000830152613aa581613a69565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b158261350b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b4757613b46613adb565b5b600182019050919050565b6000613b5d826137fe565b9150613b68836137fe565b9250828201905061ffff811115613b8257613b81613adb565b5b92915050565b7f4275792072657761726473206d757374206265206265747765656e203025206160008201527f6e64203425000000000000000000000000000000000000000000000000000000602082015250565b6000613be4602583613475565b9150613bef82613b88565b604082019050919050565b60006020820190508181036000830152613c1381613bd7565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e64203960008201527f3925000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c76602283613475565b9150613c8182613c1a565b604082019050919050565b60006020820190508181036000830152613ca581613c69565b9050919050565b7f53656c6c2072657761726473206d757374206265206265747765656e2030252060008201527f616e642034250000000000000000000000000000000000000000000000000000602082015250565b6000613d08602683613475565b9150613d1382613cac565b604082019050919050565b60006020820190508181036000830152613d3781613cfb565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e642060008201527f3939250000000000000000000000000000000000000000000000000000000000602082015250565b6000613d9a602383613475565b9150613da582613d3e565b604082019050919050565b60006020820190508181036000830152613dc981613d8d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e2c602683613475565b9150613e3782613dd0565b604082019050919050565b60006020820190508181036000830152613e5b81613e1f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613ebe602483613475565b9150613ec982613e62565b604082019050919050565b60006020820190508181036000830152613eed81613eb1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f50602283613475565b9150613f5b82613ef4565b604082019050919050565b60006020820190508181036000830152613f7f81613f43565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613fe2602583613475565b9150613fed82613f86565b604082019050919050565b6000602082019050818103600083015261401181613fd5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614074602383613475565b915061407f82614018565b604082019050919050565b600060208201905081810360008301526140a381614067565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614106602983613475565b9150614111826140aa565b604082019050919050565b60006020820190508181036000830152614135816140f9565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000614198603f83613475565b91506141a38261413c565b604082019050919050565b600060208201905081810360008301526141c78161418b565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000614204601c83613475565b915061420f826141ce565b602082019050919050565b60006020820190508181036000830152614233816141f7565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000614296602383613475565b91506142a18261423a565b604082019050919050565b600060208201905081810360008301526142c581614289565b9050919050565b60006142d78261350b565b91506142e28361350b565b92508282019050808211156142fa576142f9613adb565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061435c602383613475565b915061436782614300565b604082019050919050565b6000602082019050818103600083015261438b8161434f565b9050919050565b600061439d8261350b565b91506143a88361350b565b92508282039050818111156143c0576143bf613adb565b5b92915050565b60006143d18261350b565b91506143dc8361350b565b92508282026143ea8161350b565b9150828204841483151761440157614400613adb565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006144428261350b565b915061444d8361350b565b92508261445d5761445c614408565b5b828204905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006144c4602a83613475565b91506144cf82614468565b604082019050919050565b600060208201905081810360008301526144f3816144b7565b9050919050565b6000815190506145098161335e565b92915050565b60006020828403121561452557614524613260565b5b6000614533848285016144fa565b91505092915050565b6000819050919050565b600061456161455c6145578461453c565b6135b7565b61350b565b9050919050565b61457181614546565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6145ac8161334c565b82525050565b60006145be83836145a3565b60208301905092915050565b6000602082019050919050565b60006145e282614577565b6145ec8185614582565b93506145f783614593565b8060005b8381101561462857815161460f88826145b2565b975061461a836145ca565b9250506001810190506145fb565b5085935050505092915050565b600060a08201905061464a6000830188613631565b6146576020830187614568565b818103604083015261466981866145d7565b90506146786060830185613721565b6146856080830184613631565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006146c5601b83613475565b91506146d08261468f565b602082019050919050565b600060208201905081810360008301526146f4816146b8565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614757602183613475565b9150614762826146fb565b604082019050919050565b600060208201905081810360008301526147868161474a565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202a1ab9d5f799a87f54d60d04c81be55c2ff5075aeca85011679b84db7d697ba664736f6c63430008110033

Deployed Bytecode Sourcemap

4185:15024:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13356:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7024:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7956:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5823:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7304:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8158:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6125:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7212:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5526:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5871:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13534:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17979:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13122:225;;;;;;;;;;;;;:::i;:::-;;7408:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1658:148;;;;;;;;;;;;;:::i;:::-;;18120:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18373:119;;;;;;;;;;;;;:::i;:::-;;6015:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5475:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1442:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6069:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18500:251;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7116:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17787:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17043:691;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7555:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5437:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12887:226;;;;;;;;;;;;;:::i;:::-;;12800:78;;;;;;;;;;;;;:::i;:::-;;18970:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7763:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18250:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18759:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1815:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13356:169;1580:12;:10;:12::i;:::-;1570:22;;:6;;;;;;;;;;:22;;;1562:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13432:9:::1;13427:91;13451:5;:12;13447:1;:16;13427:91;;;13502:4;13485;:14;13490:5;13496:1;13490:8;;;;;;;;:::i;:::-;;;;;;;;13485:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13465:3;;;;;:::i;:::-;;;;13427:91;;;;13356:169:::0;:::o;7024:83::-;7061:13;7094:5;;;;;;;;;;;;;;;;;7087:12;;7024:83;:::o;7956:193::-;8058:4;8080:39;8089:12;:10;:12::i;:::-;8103:7;8112:6;8080:8;:39::i;:::-;8137:4;8130:11;;7956:193;;;;:::o;5823:41::-;;;;;;;;;;;;;:::o;7304:95::-;7357:7;4733:18;7377:14;;7304:95;:::o;8158:446::-;8290:4;8307:36;8317:6;8325:9;8336:6;8307:9;:36::i;:::-;8354:220;8377:6;8398:12;:10;:12::i;:::-;8425:138;8481:6;8425:138;;;;;;;;;;;;;;;;;:11;:19;8437:6;8425:19;;;;;;;;;;;;;;;:33;8445:12;:10;:12::i;:::-;8425:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8354:8;:220::i;:::-;8592:4;8585:11;;8158:446;;;;;:::o;6125:51::-;;;;:::o;7212:83::-;7253:5;4406:1;7271:16;;7212:83;:::o;5526:90::-;;;;;;;;;;;;;:::o;5871:28::-;;;;;;;;;;;;;:::o;13534:92::-;1580:12;:10;:12::i;:::-;1570:22;;:6;;;;;;;;;;:22;;;1562:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13613:5:::1;13598:4;:12;13603:6;13598:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13534:92:::0;:::o;17979:101::-;1580:12;:10;:12::i;:::-;1570:22;;:6;;;;;;;;;;:22;;;1562:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18060:12:::1;18046:11;;:26;;;;;;;;;;;;;;;;;;17979:101:::0;:::o;13122:225::-;13188:13;;;;;;;;;;;13172:29;;:12;:10;:12::i;:::-;:29;;;:62;;;;13221:13;;;;;;;;;;;13205:29;;:12;:10;:12::i;:::-;:29;;;13172:62;13164:71;;;;;;13246:26;13275:21;13246:50;;13307:32;13320:18;13307:12;:32::i;:::-;13153:194;13122:225::o;7408:138::-;7474:7;7501:37;7521:7;:16;7529:7;7521:16;;;;;;;;;;;;;;;;7501:19;:37::i;:::-;7494:44;;7408:138;;;:::o;1658:148::-;1580:12;:10;:12::i;:::-;1570:22;;:6;;;;;;;;;;:22;;;1562:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1765:1:::1;1728:40;;1749:6;::::0;::::1;;;;;;;;1728:40;;;;;;;;;;;;1796:1;1779:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1658:148::o:0;18120:121::-;1580:12;:10;:12::i;:::-;1570:22;;:6;;;;;;;;;;:22;;;1562:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18212:11:::1;18197:12;:26;;;;18120:121:::0;:::o;18373:119::-;1580:12;:10;:12::i;:::-;1570:22;;:6;;;;;;;;;;:22;;;1562:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4733:18:::1;18427:14;:24;;;;4733:18;18462:12;:22;;;;18373:119::o:0;6015:46::-;;;;:::o;5475:43::-;;;;;;;;;;;;;;;;;:::o;1442:79::-;1480:7;1507:6;;;;;;;;;;;1500:13;;1442:79;:::o;6069:48::-;;;;:::o;18500:251::-;1580:12;:10;:12::i;:::-;1570:22;;:6;;;;;;;;;;:22;;;1562:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18601:2:::1;18584:14;;:19;;;;;;;;;;;;;;;;;;18631:2;18614:14;;:19;;;;;;;;;;;;;;;;;;18661:2;18644:14;;:19;;;;;;;;;;;;;;;;;;18729:14;;;;;;;;;;;18712;;;;;;;;;;;18695;;;;;;;;;;;:31;;;;:::i;:::-;:48;;;;:::i;:::-;18674:18;;:69;;;;;;;;;;;;;;;;;;18500:251:::0;;;:::o;7116:87::-;7155:13;7188:7;;;;;;;;;;;;;;;;;7181:14;;7116:87;:::o;17787:139::-;1580:12;:10;:12::i;:::-;1570:22;;:6;;;;;;;;;;:22;;;1562:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17900:18:::1;17878:19;:40;;;;17787:139:::0;:::o;17043:691::-;1580:12;:10;:12::i;:::-;1570:22;;:6;;;;;;;;;;:22;;;1562:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17202:1:::1;17185:13;:18;;:40;;;;;17224:1;17207:13;:18;;17185:40;17177:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;17301:1;17286:11;:16;;:37;;;;;17321:2;17306:11;:17;;17286:37;17278:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;17399:1;17381:14;:19;;:42;;;;;17422:1;17404:14;:19;;17381:42;17373:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;17501:1;17485:12;:17;;:39;;;;;17522:2;17506:12;:18;;17485:39;17477:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;17594:13;17577:14;:30;;;;17636:14;17618:15;:32;;;;17676:11;17661:12;:26;;;;17714:12;17698:13;:28;;;;17043:691:::0;;;;:::o;7555:199::-;7660:4;7682:42;7692:12;:10;:12::i;:::-;7706:9;7717:6;7682:9;:42::i;:::-;7742:4;7735:11;;7555:199;;;;:::o;5437:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12887:226::-;12953:13;;;;;;;;;;;12937:29;;:12;:10;:12::i;:::-;:29;;;:62;;;;12986:13;;;;;;;;;;;12970:29;;:12;:10;:12::i;:::-;:29;;;12937:62;12929:71;;;;;;13011:23;13037:24;13055:4;13037:9;:24::i;:::-;13011:50;;13072:33;13089:15;13072:16;:33::i;:::-;12918:195;12887:226::o;12800:78::-;1580:12;:10;:12::i;:::-;1570:22;;:6;;;;;;;;;;:22;;;1562:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12866:4:::1;12852:11;;:18;;;;;;;;;;;;;;;;;;12800:78::o:0;18970:234::-;1580:12;:10;:12::i;:::-;1570:22;;:6;;;;;;;;;;:22;;;1562:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19087:9:::1;19083:114;19106:8;;:15;;19102:1;:19;19083:114;;;19177:8;19143:18;:31;19162:8;;19171:1;19162:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;19143:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;19123:3;;;;;:::i;:::-;;;;19083:114;;;;18970:234:::0;;;:::o;7763:184::-;7880:7;7912:11;:18;7924:5;7912:18;;;;;;;;;;;;;;;:27;7931:7;7912:27;;;;;;;;;;;;;;;;7905:34;;7763:184;;;;:::o;18250:115::-;1580:12;:10;:12::i;:::-;1570:22;;:6;;;;;;;;;;:22;;;1562:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18344:13:::1;18327:14;:30;;;;18250:115:::0;:::o;18759:202::-;1580:12;:10;:12::i;:::-;1570:22;;:6;;;;;;;;;;:22;;;1562:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18874:2:::1;18850:13;;:27;;;;;;;;;;;;;;;;;;18912:2;18888:13;;:27;;;;;;;;;;;;;;;;;;18950:2;18926:13;;:27;;;;;;;;;;;;;;;;;;18759:202:::0;;;:::o;1815:244::-;1580:12;:10;:12::i;:::-;1570:22;;:6;;;;;;;;;;:22;;;1562:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1924:1:::1;1904:22;;:8;:22;;::::0;1896:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2014:8;1985:38;;2006:6;::::0;::::1;;;;;;;;1985:38;;;;;;;;;;;;2043:8;2034:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1815:244:::0;:::o;191:98::-;244:7;271:10;264:17;;191:98;:::o;9301:369::-;9445:1;9428:19;;:5;:19;;;9420:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9526:1;9507:21;;:7;:21;;;9499:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9608:6;9578:11;:18;9590:5;9578:18;;;;;;;;;;;;;;;:27;9597:7;9578:27;;;;;;;;;;;;;;;:36;;;;9646:7;9630:32;;9639:5;9630:32;;;9655:6;9630:32;;;;;;:::i;:::-;;;;;;;;9301:369;;;:::o;9679:2343::-;9817:1;9801:18;;:4;:18;;;9793:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9894:1;9880:16;;:2;:16;;;9872:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9964:1;9955:6;:10;9947:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10037:7;:5;:7::i;:::-;10029:15;;:4;:15;;;;:32;;;;;10054:7;:5;:7::i;:::-;10048:13;;:2;:13;;;;10029:32;10025:1265;;;10119:11;;;;;;;;;;;10114:144;;10167:7;:5;:7::i;:::-;10159:15;;:4;:15;;;10151:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;10114:144;10293:12;;10283:6;:22;;10275:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10362:4;:10;10367:4;10362:10;;;;;;;;;;;;;;;;;;;;;;;;;10361:11;:24;;;;;10377:4;:8;10382:2;10377:8;;;;;;;;;;;;;;;;;;;;;;;;;10376:9;10361:24;10353:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10452:13;;;;;;;;;;;10446:19;;:2;:19;;;10443:146;;10519:14;;10510:6;10494:13;10504:2;10494:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10486:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10443:146;10606:28;10637:24;10655:4;10637:9;:24::i;:::-;10606:55;;10676:12;10715:19;;10691:20;:43;;10676:58;;10779:12;;10755:20;:36;10752:124;;10848:12;;10825:35;;10752:124;10897:7;:18;;;;;10909:6;;;;;;;;;;;10908:7;10897:18;:43;;;;;10927:13;;;;;;;;;;;10919:21;;:4;:21;;;;10897:43;:58;;;;;10944:11;;;;;;;;;;;10897:58;:87;;;;;10960:18;:24;10979:4;10960:24;;;;;;;;;;;;;;;;;;;;;;;;;10959:25;10897:87;:114;;;;;10989:18;:22;11008:2;10989:22;;;;;;;;;;;;;;;;;;;;;;;;;10988:23;10897:114;10893:386;;;11032:38;11049:20;11032:16;:38::i;:::-;11089:26;11118:21;11089:50;;11183:1;11162:18;:22;11158:106;;;11209:35;11222:21;11209:12;:35::i;:::-;11158:106;11013:266;10893:386;10063:1227;;10025:1265;11303:12;11318:4;11303:19;;11368:18;:24;11387:4;11368:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11396:18;:22;11415:2;11396:22;;;;;;;;;;;;;;;;;;;;;;;;;11368:50;11367:102;;;;11432:13;;;;;;;;;;;11424:21;;:4;:21;;;;:44;;;;;11455:13;;;;;;;;;;;11449:19;;:2;:19;;;;11424:44;11367:102;11363:597;;;11496:5;11486:15;;11363:597;;;11580:13;;;;;;;;;;;11572:21;;:4;:21;;;:55;;;;;11611:15;;;;;;;;;;;11597:30;;:2;:30;;;;11572:55;11569:162;;;11660:14;;11648:9;:26;;;;11703:12;;11693:7;:22;;;;11569:162;11791:13;;;;;;;;;;;11785:19;;:2;:19;;;:55;;;;;11824:15;;;;;;;;;;;11808:32;;:4;:32;;;;11785:55;11781:165;;;11873:15;;11861:9;:27;;;;11917:13;;11907:7;:23;;;;11781:165;11363:597;11973:41;11988:4;11994:2;11998:6;12006:7;11973:14;:41::i;:::-;9782:2240;9679:2343;;;:::o;2427:224::-;2547:7;2580:1;2575;:6;;2583:12;2567:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2607:9;2623:1;2619;:5;;;;:::i;:::-;2607:17;;2642:1;2635:8;;;2427:224;;;;;:::o;12523:268::-;12580:13;;;;;;;;;;;:22;;:68;12629:18;;;;;;;;;;;12603:44;;12612:14;;;;;;;;;;;12603:23;;:6;:23;;;;:::i;:::-;:44;;;;:::i;:::-;12580:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12659:13;;;;;;;;;;;:22;;:68;12708:18;;;;;;;;;;;12682:44;;12691:14;;;;;;;;;;;12682:23;;:6;:23;;;;:::i;:::-;:44;;;;:::i;:::-;12659:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12738:13;;;;;;;;;;;:22;;:45;12761:21;12738:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12523:268;:::o;8613:323::-;8708:7;8766;;8755;:18;;8733:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8854:19;8876:10;:8;:10::i;:::-;8854:32;;8904:24;8916:11;8904:7;:11;;:24;;;;:::i;:::-;8897:31;;;8613:323;;;:::o;12031:483::-;6280:4;6271:6;;:13;;;;;;;;;;;;;;;;;;12109:21:::1;12147:1;12133:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12109:40;;12178:4;12160;12165:1;12160:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12204:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12194:4;12199:1;12194:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12237:62;12254:4;12269:15;;;;;;;;;;;12287:11;12237:8;:62::i;:::-;12310:15;;;;;;;;;;;:66;;;12391:11;12417:1;12433:4;12460;12480:15;12310:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12098:416;6316:5:::0;6307:6;;:14;;;;;;;;;;;;;;;;;;12031:483;:::o;13635:282::-;13791:7;13786:28;;13800:14;:12;:14::i;:::-;13786:28;13825:44;13843:6;13851:9;13862:6;13825:17;:44::i;:::-;13885:7;13880:29;;13894:15;:13;:15::i;:::-;13880:29;13635:282;;;;:::o;16604:164::-;16646:7;16667:15;16684;16703:19;:17;:19::i;:::-;16666:56;;;;16740:20;16752:7;16740;:11;;:20;;;;:::i;:::-;16733:27;;;;16604:164;:::o;2915:132::-;2973:7;3000:39;3004:1;3007;3000:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2993:46;;2915:132;;;;:::o;8945:221::-;9005:1;8992:9;;:14;:30;;;;;9021:1;9010:7;;:12;8992:30;9024:7;8988:43;9064:9;;9044:17;:29;;;;9102:7;;9084:15;:25;;;;9135:1;9123:9;:13;;;;9157:1;9147:7;:11;;;;8945:221;:::o;13926:610::-;14073:15;14103:23;14141:12;14168:23;14206:12;14233:13;14260:19;14271:7;14260:10;:19::i;:::-;14058:221;;;;;;;;;;;;14308:28;14328:7;14308;:15;14316:6;14308:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14290:7;:15;14298:6;14290:15;;;;;;;;;;;;;;;:46;;;;14368:39;14391:15;14368:7;:18;14376:9;14368:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14347:7;:18;14355:9;14347:18;;;;;;;;;;;;;;;:60;;;;14418:16;14428:5;14418:9;:16::i;:::-;14445:23;14457:4;14463;14445:11;:23::i;:::-;14501:9;14484:44;;14493:6;14484:44;;;14512:15;14484:44;;;;;;:::i;:::-;;;;;;;;14047:489;;;;;;13926:610;;;:::o;9175:117::-;9231:17;;9219:9;:29;;;;9269:15;;9259:7;:25;;;;9175:117::o;16777:257::-;16828:7;16837;16857:15;16875:7;;16857:25;;16893:15;4733:18;16893:25;;16943:20;4733:18;16943:7;;:11;;:20;;;;:::i;:::-;16933:7;:30;16929:61;;;16973:7;;4733:18;16965:25;;;;;;;;16929:61;17009:7;17018;17001:25;;;;;;16777:257;;;:::o;3056:223::-;3176:7;3208:1;3204;:5;3211:12;3196:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3235:9;3251:1;3247;:5;;;;:::i;:::-;3235:17;;3270:1;3263:8;;;3056:223;;;;;:::o;14959:615::-;15059:7;15081;15103;15125;15147;15169;15205:23;15230:12;15244:13;15274:40;15286:7;15295:9;;15306:7;;15274:11;:40::i;:::-;15204:110;;;;;;15325:19;15347:10;:8;:10::i;:::-;15325:32;;15369:15;15386:23;15411:12;15440:46;15452:7;15461:4;15467:5;15474:11;15440;:46::i;:::-;15368:118;;;;;;15505:7;15514:15;15531:4;15537:15;15554:4;15560:5;15497:69;;;;;;;;;;;;;;;;;;;14959:615;;;;;;;:::o;2282:136::-;2340:7;2367:43;2371:1;2374;2367:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2360:50;;2282:136;;;;:::o;2094:179::-;2152:7;2172:9;2188:1;2184;:5;;;;:::i;:::-;2172:17;;2213:1;2208;:6;;2200:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2264:1;2257:8;;;2094:179;;;;:::o;14545:211::-;14598:19;14620:10;:8;:10::i;:::-;14598:32;;14641:13;14657:22;14667:11;14657:5;:9;;:22;;;;:::i;:::-;14641:38;;14715:33;14742:5;14715:7;:22;14731:4;14715:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14690:7;:22;14706:4;14690:22;;;;;;;;;;;;;;;:58;;;;14587:169;;14545:211;:::o;14765:147::-;14843:17;14855:4;14843:7;;:11;;:17;;;;:::i;:::-;14833:7;:27;;;;14884:20;14899:4;14884:10;;:14;;:20;;;;:::i;:::-;14871:10;:33;;;;14765:147;;:::o;15583:469::-;15752:7;15774;15796;15831:12;15846:30;15872:3;15846:21;15858:8;15846:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15831:45;;15887:13;15903:28;15927:3;15903:19;15915:6;15903:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15887:44;;15942:23;15968:28;15990:5;15968:17;15980:4;15968:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15942:54;;16015:15;16032:4;16038:5;16007:37;;;;;;;;;15583:469;;;;;;;:::o;16061:534::-;16255:7;16277;16299;16334:15;16352:24;16364:11;16352:7;:11;;:24;;;;:::i;:::-;16334:42;;16387:12;16402:21;16411:11;16402:4;:8;;:21;;;;:::i;:::-;16387:36;;16434:13;16450:22;16460:11;16450:5;:9;;:22;;;;:::i;:::-;16434:38;;16483:23;16509:28;16531:5;16509:17;16521:4;16509:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16483:54;;16556:7;16565:15;16582:4;16548:39;;;;;;;;;;16061:534;;;;;;;;:::o;2660:246::-;2718:7;2747:1;2742;:6;2738:47;;2772:1;2765:8;;;;2738:47;2795:9;2811:1;2807;:5;;;;:::i;:::-;2795:17;;2840:1;2835;2831;:5;;;;:::i;:::-;:10;2823:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2897:1;2890:8;;;2660: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:246::-;4152:1;4162:113;4176:6;4173:1;4170:13;4162:113;;;4261:1;4256:3;4252:11;4246:18;4242:1;4237:3;4233:11;4226:39;4198:2;4195:1;4191:10;4186:15;;4162:113;;;4309:1;4300:6;4295:3;4291:16;4284:27;4133:184;4071:246;;;:::o;4323:377::-;4411:3;4439:39;4472:5;4439:39;:::i;:::-;4494:71;4558:6;4553:3;4494:71;:::i;:::-;4487:78;;4574:65;4632:6;4627:3;4620:4;4613:5;4609:16;4574:65;:::i;:::-;4664:29;4686:6;4664:29;:::i;:::-;4659:3;4655:39;4648:46;;4415:285;4323:377;;;;:::o;4706:313::-;4819:4;4857:2;4846:9;4842:18;4834:26;;4906:9;4900:4;4896:20;4892:1;4881:9;4877:17;4870:47;4934:78;5007:4;4998:6;4934:78;:::i;:::-;4926:86;;4706:313;;;;:::o;5025:77::-;5062:7;5091:5;5080:16;;5025:77;;;:::o;5108:122::-;5181:24;5199:5;5181:24;:::i;:::-;5174:5;5171:35;5161:63;;5220:1;5217;5210:12;5161:63;5108:122;:::o;5236:139::-;5282:5;5320:6;5307:20;5298:29;;5336:33;5363:5;5336:33;:::i;:::-;5236:139;;;;:::o;5381:474::-;5449:6;5457;5506:2;5494:9;5485:7;5481:23;5477:32;5474:119;;;5512:79;;:::i;:::-;5474:119;5632:1;5657:53;5702:7;5693:6;5682:9;5678:22;5657:53;:::i;:::-;5647:63;;5603:117;5759:2;5785:53;5830:7;5821:6;5810:9;5806:22;5785:53;:::i;:::-;5775:63;;5730:118;5381:474;;;;;:::o;5861:90::-;5895:7;5938:5;5931:13;5924:21;5913:32;;5861:90;;;:::o;5957:109::-;6038:21;6053:5;6038:21;:::i;:::-;6033:3;6026:34;5957:109;;:::o;6072:210::-;6159:4;6197:2;6186:9;6182:18;6174:26;;6210:65;6272:1;6261:9;6257:17;6248:6;6210:65;:::i;:::-;6072:210;;;;:::o;6288:60::-;6316:3;6337:5;6330:12;;6288:60;;;:::o;6354:142::-;6404:9;6437:53;6455:34;6464:24;6482:5;6464:24;:::i;:::-;6455:34;:::i;:::-;6437:53;:::i;:::-;6424:66;;6354:142;;;:::o;6502:126::-;6552:9;6585:37;6616:5;6585:37;:::i;:::-;6572:50;;6502:126;;;:::o;6634:152::-;6710:9;6743:37;6774:5;6743:37;:::i;:::-;6730:50;;6634:152;;;:::o;6792:183::-;6905:63;6962:5;6905:63;:::i;:::-;6900:3;6893:76;6792:183;;:::o;6981:274::-;7100:4;7138:2;7127:9;7123:18;7115:26;;7151:97;7245:1;7234:9;7230:17;7221:6;7151:97;:::i;:::-;6981:274;;;;:::o;7261:118::-;7348:24;7366:5;7348:24;:::i;:::-;7343:3;7336:37;7261:118;;:::o;7385:222::-;7478:4;7516:2;7505:9;7501:18;7493:26;;7529:71;7597:1;7586:9;7582:17;7573:6;7529:71;:::i;:::-;7385:222;;;;:::o;7613:619::-;7690:6;7698;7706;7755:2;7743:9;7734:7;7730:23;7726:32;7723:119;;;7761:79;;:::i;:::-;7723:119;7881:1;7906:53;7951:7;7942:6;7931:9;7927:22;7906:53;:::i;:::-;7896:63;;7852:117;8008:2;8034:53;8079:7;8070:6;8059:9;8055:22;8034:53;:::i;:::-;8024:63;;7979:118;8136:2;8162:53;8207:7;8198:6;8187:9;8183:22;8162:53;:::i;:::-;8152:63;;8107:118;7613:619;;;;;:::o;8238:86::-;8273:7;8313:4;8306:5;8302:16;8291:27;;8238:86;;;:::o;8330:112::-;8413:22;8429:5;8413:22;:::i;:::-;8408:3;8401:35;8330:112;;:::o;8448:214::-;8537:4;8575:2;8564:9;8560:18;8552:26;;8588:67;8652:1;8641:9;8637:17;8628:6;8588:67;:::i;:::-;8448:214;;;;:::o;8668:104::-;8713:7;8742:24;8760:5;8742:24;:::i;:::-;8731:35;;8668:104;;;:::o;8778:142::-;8881:32;8907:5;8881:32;:::i;:::-;8876:3;8869:45;8778:142;;:::o;8926:254::-;9035:4;9073:2;9062:9;9058:18;9050:26;;9086:87;9170:1;9159:9;9155:17;9146:6;9086:87;:::i;:::-;8926:254;;;;:::o;9186:118::-;9273:24;9291:5;9273:24;:::i;:::-;9268:3;9261:37;9186:118;;:::o;9310:222::-;9403:4;9441:2;9430:9;9426:18;9418:26;;9454:71;9522:1;9511:9;9507:17;9498:6;9454:71;:::i;:::-;9310:222;;;;:::o;9538:329::-;9597:6;9646:2;9634:9;9625:7;9621:23;9617:32;9614:119;;;9652:79;;:::i;:::-;9614:119;9772:1;9797:53;9842:7;9833:6;9822:9;9818:22;9797:53;:::i;:::-;9787:63;;9743:117;9538:329;;;;:::o;9873:116::-;9943:21;9958:5;9943:21;:::i;:::-;9936:5;9933:32;9923:60;;9979:1;9976;9969:12;9923:60;9873:116;:::o;9995:133::-;10038:5;10076:6;10063:20;10054:29;;10092:30;10116:5;10092:30;:::i;:::-;9995:133;;;;:::o;10134:323::-;10190:6;10239:2;10227:9;10218:7;10214:23;10210:32;10207:119;;;10245:79;;:::i;:::-;10207:119;10365:1;10390:50;10432:7;10423:6;10412:9;10408:22;10390:50;:::i;:::-;10380:60;;10336:114;10134:323;;;;:::o;10463:329::-;10522:6;10571:2;10559:9;10550:7;10546:23;10542:32;10539:119;;;10577:79;;:::i;:::-;10539:119;10697:1;10722:53;10767:7;10758:6;10747:9;10743:22;10722:53;:::i;:::-;10712:63;;10668:117;10463:329;;;;:::o;10798:89::-;10834:7;10874:6;10867:5;10863:18;10852:29;;10798:89;;;:::o;10893:120::-;10965:23;10982:5;10965:23;:::i;:::-;10958:5;10955:34;10945:62;;11003:1;11000;10993:12;10945:62;10893:120;:::o;11019:137::-;11064:5;11102:6;11089:20;11080:29;;11118:32;11144:5;11118:32;:::i;:::-;11019:137;;;;:::o;11162:613::-;11236:6;11244;11252;11301:2;11289:9;11280:7;11276:23;11272:32;11269:119;;;11307:79;;:::i;:::-;11269:119;11427:1;11452:52;11496:7;11487:6;11476:9;11472:22;11452:52;:::i;:::-;11442:62;;11398:116;11553:2;11579:52;11623:7;11614:6;11603:9;11599:22;11579:52;:::i;:::-;11569:62;;11524:117;11680:2;11706:52;11750:7;11741:6;11730:9;11726:22;11706:52;:::i;:::-;11696:62;;11651:117;11162:613;;;;;:::o;11781:765::-;11867:6;11875;11883;11891;11940:3;11928:9;11919:7;11915:23;11911:33;11908:120;;;11947:79;;:::i;:::-;11908:120;12067:1;12092:53;12137:7;12128:6;12117:9;12113:22;12092:53;:::i;:::-;12082:63;;12038:117;12194:2;12220:53;12265:7;12256:6;12245:9;12241:22;12220:53;:::i;:::-;12210:63;;12165:118;12322:2;12348:53;12393:7;12384:6;12373:9;12369:22;12348:53;:::i;:::-;12338:63;;12293:118;12450:2;12476:53;12521:7;12512:6;12501:9;12497:22;12476:53;:::i;:::-;12466:63;;12421:118;11781:765;;;;;;;:::o;12552:117::-;12661:1;12658;12651:12;12692:568;12765:8;12775:6;12825:3;12818:4;12810:6;12806:17;12802:27;12792:122;;12833:79;;:::i;:::-;12792:122;12946:6;12933:20;12923:30;;12976:18;12968:6;12965:30;12962:117;;;12998:79;;:::i;:::-;12962:117;13112:4;13104:6;13100:17;13088:29;;13166:3;13158:4;13150:6;13146:17;13136:8;13132:32;13129:41;13126:128;;;13173:79;;:::i;:::-;13126:128;12692:568;;;;;:::o;13266:698::-;13358:6;13366;13374;13423:2;13411:9;13402:7;13398:23;13394:32;13391:119;;;13429:79;;:::i;:::-;13391:119;13577:1;13566:9;13562:17;13549:31;13607:18;13599:6;13596:30;13593:117;;;13629:79;;:::i;:::-;13593:117;13742:80;13814:7;13805:6;13794:9;13790:22;13742:80;:::i;:::-;13724:98;;;;13520:312;13871:2;13897:50;13939:7;13930:6;13919:9;13915:22;13897:50;:::i;:::-;13887:60;;13842:115;13266:698;;;;;:::o;13970:474::-;14038:6;14046;14095:2;14083:9;14074:7;14070:23;14066:32;14063:119;;;14101:79;;:::i;:::-;14063:119;14221:1;14246:53;14291:7;14282:6;14271:9;14267:22;14246:53;:::i;:::-;14236:63;;14192:117;14348:2;14374:53;14419:7;14410:6;14399:9;14395:22;14374:53;:::i;:::-;14364:63;;14319:118;13970:474;;;;;:::o;14450:619::-;14527:6;14535;14543;14592:2;14580:9;14571:7;14567:23;14563:32;14560:119;;;14598:79;;:::i;:::-;14560:119;14718:1;14743:53;14788:7;14779:6;14768:9;14764:22;14743:53;:::i;:::-;14733:63;;14689:117;14845:2;14871:53;14916:7;14907:6;14896:9;14892:22;14871:53;:::i;:::-;14861:63;;14816:118;14973:2;14999:53;15044:7;15035:6;15024:9;15020:22;14999:53;:::i;:::-;14989:63;;14944:118;14450:619;;;;;:::o;15075:182::-;15215:34;15211:1;15203:6;15199:14;15192:58;15075:182;:::o;15263:366::-;15405:3;15426:67;15490:2;15485:3;15426:67;:::i;:::-;15419:74;;15502:93;15591:3;15502:93;:::i;:::-;15620:2;15615:3;15611:12;15604:19;;15263:366;;;:::o;15635:419::-;15801:4;15839:2;15828:9;15824:18;15816:26;;15888:9;15882:4;15878:20;15874:1;15863:9;15859:17;15852:47;15916:131;16042:4;15916:131;:::i;:::-;15908:139;;15635:419;;;:::o;16060:180::-;16108:77;16105:1;16098:88;16205:4;16202:1;16195:15;16229:4;16226:1;16219:15;16246:180;16294:77;16291:1;16284:88;16391:4;16388:1;16381:15;16415:4;16412:1;16405:15;16432:233;16471:3;16494:24;16512:5;16494:24;:::i;:::-;16485:33;;16540:66;16533:5;16530:77;16527:103;;16610:18;;:::i;:::-;16527:103;16657:1;16650:5;16646:13;16639:20;;16432:233;;;:::o;16671:193::-;16710:3;16729:19;16746:1;16729:19;:::i;:::-;16724:24;;16762:19;16779:1;16762:19;:::i;:::-;16757:24;;16804:1;16801;16797:9;16790:16;;16827:6;16822:3;16819:15;16816:41;;;16837:18;;:::i;:::-;16816:41;16671:193;;;;:::o;16870:224::-;17010:34;17006:1;16998:6;16994:14;16987:58;17079:7;17074:2;17066:6;17062:15;17055:32;16870:224;:::o;17100:366::-;17242:3;17263:67;17327:2;17322:3;17263:67;:::i;:::-;17256:74;;17339:93;17428:3;17339:93;:::i;:::-;17457:2;17452:3;17448:12;17441:19;;17100:366;;;:::o;17472:419::-;17638:4;17676:2;17665:9;17661:18;17653:26;;17725:9;17719:4;17715:20;17711:1;17700:9;17696:17;17689:47;17753:131;17879:4;17753:131;:::i;:::-;17745:139;;17472:419;;;:::o;17897:221::-;18037:34;18033:1;18025:6;18021:14;18014:58;18106:4;18101:2;18093:6;18089:15;18082:29;17897:221;:::o;18124:366::-;18266:3;18287:67;18351:2;18346:3;18287:67;:::i;:::-;18280:74;;18363:93;18452:3;18363:93;:::i;:::-;18481:2;18476:3;18472:12;18465:19;;18124:366;;;:::o;18496:419::-;18662:4;18700:2;18689:9;18685:18;18677:26;;18749:9;18743:4;18739:20;18735:1;18724:9;18720:17;18713:47;18777:131;18903:4;18777:131;:::i;:::-;18769:139;;18496:419;;;:::o;18921:225::-;19061:34;19057:1;19049:6;19045:14;19038:58;19130:8;19125:2;19117:6;19113:15;19106:33;18921:225;:::o;19152:366::-;19294:3;19315:67;19379:2;19374:3;19315:67;:::i;:::-;19308:74;;19391:93;19480:3;19391:93;:::i;:::-;19509:2;19504:3;19500:12;19493:19;;19152:366;;;:::o;19524:419::-;19690:4;19728:2;19717:9;19713:18;19705:26;;19777:9;19771:4;19767:20;19763:1;19752:9;19748:17;19741:47;19805:131;19931:4;19805:131;:::i;:::-;19797:139;;19524:419;;;:::o;19949:222::-;20089:34;20085:1;20077:6;20073:14;20066:58;20158:5;20153:2;20145:6;20141:15;20134:30;19949:222;:::o;20177:366::-;20319:3;20340:67;20404:2;20399:3;20340:67;:::i;:::-;20333:74;;20416:93;20505:3;20416:93;:::i;:::-;20534:2;20529:3;20525:12;20518:19;;20177:366;;;:::o;20549:419::-;20715:4;20753:2;20742:9;20738:18;20730:26;;20802:9;20796:4;20792:20;20788:1;20777:9;20773:17;20766:47;20830:131;20956:4;20830:131;:::i;:::-;20822:139;;20549:419;;;:::o;20974:225::-;21114:34;21110:1;21102:6;21098:14;21091:58;21183:8;21178:2;21170:6;21166:15;21159:33;20974:225;:::o;21205:366::-;21347:3;21368:67;21432:2;21427:3;21368:67;:::i;:::-;21361:74;;21444:93;21533:3;21444:93;:::i;:::-;21562:2;21557:3;21553:12;21546:19;;21205:366;;;:::o;21577:419::-;21743:4;21781:2;21770:9;21766:18;21758:26;;21830:9;21824:4;21820:20;21816:1;21805:9;21801:17;21794:47;21858:131;21984:4;21858:131;:::i;:::-;21850:139;;21577:419;;;:::o;22002:223::-;22142:34;22138:1;22130:6;22126:14;22119:58;22211:6;22206:2;22198:6;22194:15;22187:31;22002:223;:::o;22231:366::-;22373:3;22394:67;22458:2;22453:3;22394:67;:::i;:::-;22387:74;;22470:93;22559:3;22470:93;:::i;:::-;22588:2;22583:3;22579:12;22572:19;;22231:366;;;:::o;22603:419::-;22769:4;22807:2;22796:9;22792:18;22784:26;;22856:9;22850:4;22846:20;22842:1;22831:9;22827:17;22820:47;22884:131;23010:4;22884:131;:::i;:::-;22876:139;;22603:419;;;:::o;23028:221::-;23168:34;23164:1;23156:6;23152:14;23145:58;23237:4;23232:2;23224:6;23220:15;23213:29;23028:221;:::o;23255:366::-;23397:3;23418:67;23482:2;23477:3;23418:67;:::i;:::-;23411:74;;23494:93;23583:3;23494:93;:::i;:::-;23612:2;23607:3;23603:12;23596:19;;23255:366;;;:::o;23627:419::-;23793:4;23831:2;23820:9;23816:18;23808:26;;23880:9;23874:4;23870:20;23866:1;23855:9;23851:17;23844:47;23908:131;24034:4;23908:131;:::i;:::-;23900:139;;23627:419;;;:::o;24052:224::-;24192:34;24188:1;24180:6;24176:14;24169:58;24261:7;24256:2;24248:6;24244:15;24237:32;24052:224;:::o;24282:366::-;24424:3;24445:67;24509:2;24504:3;24445:67;:::i;:::-;24438:74;;24521:93;24610:3;24521:93;:::i;:::-;24639:2;24634:3;24630:12;24623:19;;24282:366;;;:::o;24654:419::-;24820:4;24858:2;24847:9;24843:18;24835:26;;24907:9;24901:4;24897:20;24893:1;24882:9;24878:17;24871:47;24935:131;25061:4;24935:131;:::i;:::-;24927:139;;24654:419;;;:::o;25079:222::-;25219:34;25215:1;25207:6;25203:14;25196:58;25288:5;25283:2;25275:6;25271:15;25264:30;25079:222;:::o;25307:366::-;25449:3;25470:67;25534:2;25529:3;25470:67;:::i;:::-;25463:74;;25546:93;25635:3;25546:93;:::i;:::-;25664:2;25659:3;25655:12;25648:19;;25307:366;;;:::o;25679:419::-;25845:4;25883:2;25872:9;25868:18;25860:26;;25932:9;25926:4;25922:20;25918:1;25907:9;25903:17;25896:47;25960:131;26086:4;25960:131;:::i;:::-;25952:139;;25679:419;;;:::o;26104:228::-;26244:34;26240:1;26232:6;26228:14;26221:58;26313:11;26308:2;26300:6;26296:15;26289:36;26104:228;:::o;26338:366::-;26480:3;26501:67;26565:2;26560:3;26501:67;:::i;:::-;26494:74;;26577:93;26666:3;26577:93;:::i;:::-;26695:2;26690:3;26686:12;26679:19;;26338:366;;;:::o;26710:419::-;26876:4;26914:2;26903:9;26899:18;26891:26;;26963:9;26957:4;26953:20;26949:1;26938:9;26934:17;26927:47;26991:131;27117:4;26991:131;:::i;:::-;26983:139;;26710:419;;;:::o;27135:250::-;27275:34;27271:1;27263:6;27259:14;27252:58;27344:33;27339:2;27331:6;27327:15;27320:58;27135:250;:::o;27391:366::-;27533:3;27554:67;27618:2;27613:3;27554:67;:::i;:::-;27547:74;;27630:93;27719:3;27630:93;:::i;:::-;27748:2;27743:3;27739:12;27732:19;;27391:366;;;:::o;27763:419::-;27929:4;27967:2;27956:9;27952:18;27944:26;;28016:9;28010:4;28006:20;28002:1;27991:9;27987:17;27980:47;28044:131;28170:4;28044:131;:::i;:::-;28036:139;;27763:419;;;:::o;28188:178::-;28328:30;28324:1;28316:6;28312:14;28305:54;28188:178;:::o;28372:366::-;28514:3;28535:67;28599:2;28594:3;28535:67;:::i;:::-;28528:74;;28611:93;28700:3;28611:93;:::i;:::-;28729:2;28724:3;28720:12;28713:19;;28372:366;;;:::o;28744:419::-;28910:4;28948:2;28937:9;28933:18;28925:26;;28997:9;28991:4;28987:20;28983:1;28972:9;28968:17;28961:47;29025:131;29151:4;29025:131;:::i;:::-;29017:139;;28744:419;;;:::o;29169:222::-;29309:34;29305:1;29297:6;29293:14;29286:58;29378:5;29373:2;29365:6;29361:15;29354:30;29169:222;:::o;29397:366::-;29539:3;29560:67;29624:2;29619:3;29560:67;:::i;:::-;29553:74;;29636:93;29725:3;29636:93;:::i;:::-;29754:2;29749:3;29745:12;29738:19;;29397:366;;;:::o;29769:419::-;29935:4;29973:2;29962:9;29958:18;29950:26;;30022:9;30016:4;30012:20;30008:1;29997:9;29993:17;29986:47;30050:131;30176:4;30050:131;:::i;:::-;30042:139;;29769:419;;;:::o;30194:191::-;30234:3;30253:20;30271:1;30253:20;:::i;:::-;30248:25;;30287:20;30305:1;30287:20;:::i;:::-;30282:25;;30330:1;30327;30323:9;30316:16;;30351:3;30348:1;30345:10;30342:36;;;30358:18;;:::i;:::-;30342:36;30194:191;;;;:::o;30391:222::-;30531:34;30527:1;30519:6;30515:14;30508:58;30600:5;30595:2;30587:6;30583:15;30576:30;30391:222;:::o;30619:366::-;30761:3;30782:67;30846:2;30841:3;30782:67;:::i;:::-;30775:74;;30858:93;30947:3;30858:93;:::i;:::-;30976:2;30971:3;30967:12;30960:19;;30619:366;;;:::o;30991:419::-;31157:4;31195:2;31184:9;31180:18;31172:26;;31244:9;31238:4;31234:20;31230:1;31219:9;31215:17;31208:47;31272:131;31398:4;31272:131;:::i;:::-;31264:139;;30991:419;;;:::o;31416:194::-;31456:4;31476:20;31494:1;31476:20;:::i;:::-;31471:25;;31510:20;31528:1;31510:20;:::i;:::-;31505:25;;31554:1;31551;31547:9;31539:17;;31578:1;31572:4;31569:11;31566:37;;;31583:18;;:::i;:::-;31566:37;31416:194;;;;:::o;31616:410::-;31656:7;31679:20;31697:1;31679:20;:::i;:::-;31674:25;;31713:20;31731:1;31713:20;:::i;:::-;31708:25;;31768:1;31765;31761:9;31790:30;31808:11;31790:30;:::i;:::-;31779:41;;31969:1;31960:7;31956:15;31953:1;31950:22;31930:1;31923:9;31903:83;31880:139;;31999:18;;:::i;:::-;31880:139;31664:362;31616:410;;;;:::o;32032:180::-;32080:77;32077:1;32070:88;32177:4;32174:1;32167:15;32201:4;32198:1;32191:15;32218:185;32258:1;32275:20;32293:1;32275:20;:::i;:::-;32270:25;;32309:20;32327:1;32309:20;:::i;:::-;32304:25;;32348:1;32338:35;;32353:18;;:::i;:::-;32338:35;32395:1;32392;32388:9;32383:14;;32218:185;;;;:::o;32409:229::-;32549:34;32545:1;32537:6;32533:14;32526:58;32618:12;32613:2;32605:6;32601:15;32594:37;32409:229;:::o;32644:366::-;32786:3;32807:67;32871:2;32866:3;32807:67;:::i;:::-;32800:74;;32883:93;32972:3;32883:93;:::i;:::-;33001:2;32996:3;32992:12;32985:19;;32644:366;;;:::o;33016:419::-;33182:4;33220:2;33209:9;33205:18;33197:26;;33269:9;33263:4;33259:20;33255:1;33244:9;33240:17;33233:47;33297:131;33423:4;33297:131;:::i;:::-;33289:139;;33016:419;;;:::o;33441:143::-;33498:5;33529:6;33523:13;33514:22;;33545:33;33572:5;33545:33;:::i;:::-;33441:143;;;;:::o;33590:351::-;33660:6;33709:2;33697:9;33688:7;33684:23;33680:32;33677:119;;;33715:79;;:::i;:::-;33677:119;33835:1;33860:64;33916:7;33907:6;33896:9;33892:22;33860:64;:::i;:::-;33850:74;;33806:128;33590:351;;;;:::o;33947:85::-;33992:7;34021:5;34010:16;;33947:85;;;:::o;34038:158::-;34096:9;34129:61;34147:42;34156:32;34182:5;34156:32;:::i;:::-;34147:42;:::i;:::-;34129:61;:::i;:::-;34116:74;;34038:158;;;:::o;34202:147::-;34297:45;34336:5;34297:45;:::i;:::-;34292:3;34285:58;34202:147;;:::o;34355:114::-;34422:6;34456:5;34450:12;34440:22;;34355:114;;;:::o;34475:184::-;34574:11;34608:6;34603:3;34596:19;34648:4;34643:3;34639:14;34624:29;;34475:184;;;;:::o;34665:132::-;34732:4;34755:3;34747:11;;34785:4;34780:3;34776:14;34768:22;;34665:132;;;:::o;34803:108::-;34880:24;34898:5;34880:24;:::i;:::-;34875:3;34868:37;34803:108;;:::o;34917:179::-;34986:10;35007:46;35049:3;35041:6;35007:46;:::i;:::-;35085:4;35080:3;35076:14;35062:28;;34917:179;;;;:::o;35102:113::-;35172:4;35204;35199:3;35195:14;35187:22;;35102:113;;;:::o;35251:732::-;35370:3;35399:54;35447:5;35399:54;:::i;:::-;35469:86;35548:6;35543:3;35469:86;:::i;:::-;35462:93;;35579:56;35629:5;35579:56;:::i;:::-;35658:7;35689:1;35674:284;35699:6;35696:1;35693:13;35674:284;;;35775:6;35769:13;35802:63;35861:3;35846:13;35802:63;:::i;:::-;35795:70;;35888:60;35941:6;35888:60;:::i;:::-;35878:70;;35734:224;35721:1;35718;35714:9;35709:14;;35674:284;;;35678:14;35974:3;35967:10;;35375:608;;;35251:732;;;;:::o;35989:831::-;36252:4;36290:3;36279:9;36275:19;36267:27;;36304:71;36372:1;36361:9;36357:17;36348:6;36304:71;:::i;:::-;36385:80;36461:2;36450:9;36446:18;36437:6;36385:80;:::i;:::-;36512:9;36506:4;36502:20;36497:2;36486:9;36482:18;36475:48;36540:108;36643:4;36634:6;36540:108;:::i;:::-;36532:116;;36658:72;36726:2;36715:9;36711:18;36702:6;36658:72;:::i;:::-;36740:73;36808:3;36797:9;36793:19;36784:6;36740:73;:::i;:::-;35989:831;;;;;;;;:::o;36826:177::-;36966:29;36962:1;36954:6;36950:14;36943:53;36826:177;:::o;37009:366::-;37151:3;37172:67;37236:2;37231:3;37172:67;:::i;:::-;37165:74;;37248:93;37337:3;37248:93;:::i;:::-;37366:2;37361:3;37357:12;37350:19;;37009:366;;;:::o;37381:419::-;37547:4;37585:2;37574:9;37570:18;37562:26;;37634:9;37628:4;37624:20;37620:1;37609:9;37605:17;37598:47;37662:131;37788:4;37662:131;:::i;:::-;37654:139;;37381:419;;;:::o;37806:220::-;37946:34;37942:1;37934:6;37930:14;37923:58;38015:3;38010:2;38002:6;37998:15;37991:28;37806:220;:::o;38032:366::-;38174:3;38195:67;38259:2;38254:3;38195:67;:::i;:::-;38188:74;;38271:93;38360:3;38271:93;:::i;:::-;38389:2;38384:3;38380:12;38373:19;;38032:366;;;:::o;38404:419::-;38570:4;38608:2;38597:9;38593:18;38585:26;;38657:9;38651:4;38647:20;38643:1;38632:9;38628:17;38621:47;38685:131;38811:4;38685:131;:::i;:::-;38677:139;;38404:419;;;:::o

Swarm Source

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