ETH Price: $2,292.49 (+1.25%)

Token

BoycottFTX (BFTX)
 

Overview

Max Total Supply

10,000,000 BFTX

Holders

9

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
192,000 BFTX

Value
$0.00
0x177160ed5c7eccc298000ea17e34ccd57b9fac46
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:
BoycottFTX

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicensed

// SBF has made his intentions clear. Retail and normies getting into crypto will see FTX as the most 'trusted'
// exchange because that's the narrative that's being pushed with billions of dollars in lobbying by SBF. 
// It's time to start a movement that SBF nor the media can't ignore. It's time to #BoycottFTX
// By using FTX we continue to give one man so much power over the future of crypto,
// which couldn't be further from the core ethos of blockchain and decentralization. 
// Spread this like wildfire. 100% of taxes will be used to push the message across socials, news outlets, and whatever else it takes.
// FTX is the DeFi killer. #BOYCOTTFTX $BFTX


pragma solidity ^0.8.9;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

}

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

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

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

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

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

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract BoycottFTX is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "BoycottFTX";
    string private constant _symbol = "BFTX";
    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 = 10000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 4;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 4;

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

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

    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap;
    address payable private _developmentAddress = payable(0xA5Be16f28a487FA5F18a51eCf8c239FD05129DD7);
    address payable private _marketingAddress = payable(0xA5Be16f28a487FA5F18a51eCf8c239FD05129DD7);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = _tTotal * 2 / 100;
    uint256 public _maxWalletSize = _maxTxAmount * 2;
    uint256 public _swapTokensAtAmount = 10000 * 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[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;

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

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

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

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

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

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

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

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

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

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

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

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

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

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (from != owner() && to != owner()) {

            //Trade start check
            if (!tradingOpen) {
                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 {
        _marketingAddress.transfer(amount);
    }

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

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

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

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

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

    function blockSingleBot(address bot) public onlyOwner {
        bots[bot] = true;
    }

    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 + taxFeeOnBuy <= 7, "buy fees below 5");
        require(redisFeeOnSell + taxFeeOnSell <= 7, "sell fees below 5");
        _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 * 10**_decimals;
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize * 10**_decimals;
    }

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

}

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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"bot","type":"address"}],"name":"blockSingleBot","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052662386f26fc100006000196200001b919062000761565b6000196200002a9190620007c8565b600655600060085560046009556000600a556004600b55600a54600c55600b54600d55600c54600e55600d54600f5573a5be16f28a487fa5f18a51ecf8c239fd05129dd7601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a5be16f28a487fa5f18a51ecf8c239fd05129dd7601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555060646002662386f26fc1000062000150919062000803565b6200015c919062000864565b601655600260165462000170919062000803565b6017556509184e72a0006018553480156200018a57600080fd5b5060006200019d620006f760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506006546002600062000252620006f760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200033157600080fd5b505afa15801562000346573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036c919062000906565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003cf57600080fd5b505afa158015620003e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200040a919062000906565b6040518363ffffffff1660e01b81526004016200042992919062000949565b602060405180830381600087803b1580156200044457600080fd5b505af115801562000459573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047f919062000906565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004d5620006ff60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000682620006f760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef662386f26fc10000604051620006e8919062000987565b60405180910390a350620009a4565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200076e8262000728565b91506200077b8362000728565b9250826200078e576200078d62000732565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007d58262000728565b9150620007e28362000728565b925082821015620007f857620007f762000799565b5b828203905092915050565b6000620008108262000728565b91506200081d8362000728565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000859576200085862000799565b5b828202905092915050565b6000620008718262000728565b91506200087e8362000728565b92508262000891576200089062000732565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008ce82620008a1565b9050919050565b620008e081620008c1565b8114620008ec57600080fd5b50565b6000815190506200090081620008d5565b92915050565b6000602082840312156200091f576200091e6200089c565b5b60006200092f84828501620008ef565b91505092915050565b6200094381620008c1565b82525050565b600060408201905062000960600083018562000938565b6200096f602083018462000938565b9392505050565b620009818162000728565b82525050565b60006020820190506200099e600083018462000976565b92915050565b61422480620009b46000396000f3fe6080604052600436106101db5760003560e01c80637d1db4a511610102578063a9059cbb11610095578063c492f04611610064578063c492f04614610690578063dd62ed3e146106b9578063ea1644d5146106f6578063f2fde38b1461071f576101e2565b8063a9059cbb146105d6578063be1aa3cd14610613578063bfd792841461063c578063c3c8cd8014610679576101e2565b80638f9a55c0116100d15780638f9a55c01461052e57806395d89b411461055957806398a5c31514610584578063a2a957bb146105ad576101e2565b80637d1db4a5146104725780637f2feddc1461049d5780638da5cb5b146104da5780638f70ccf714610505576101e2565b8063313ce5671161017a5780636fc3eaec116101495780636fc3eaec146103de57806370a08231146103f5578063715018a61461043257806374010ece14610449576101e2565b8063313ce5671461033657806349bd5a5e146103615780636b9990531461038c5780636d8aa8f8146103b5576101e2565b80631694505e116101b65780631694505e1461027857806318160ddd146102a357806323b872dd146102ce5780632fd689e31461030b576101e2565b8062b8cf2a146101e757806306fdde0314610210578063095ea7b31461023b576101e2565b366101e257005b600080fd5b3480156101f357600080fd5b5061020e60048036038101906102099190612f5a565b610748565b005b34801561021c57600080fd5b50610225610872565b604051610232919061302b565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190613083565b6108af565b60405161026f91906130de565b60405180910390f35b34801561028457600080fd5b5061028d6108cd565b60405161029a9190613158565b60405180910390f35b3480156102af57600080fd5b506102b86108f3565b6040516102c59190613182565b60405180910390f35b3480156102da57600080fd5b506102f560048036038101906102f0919061319d565b610902565b60405161030291906130de565b60405180910390f35b34801561031757600080fd5b506103206109db565b60405161032d9190613182565b60405180910390f35b34801561034257600080fd5b5061034b6109e1565b604051610358919061320c565b60405180910390f35b34801561036d57600080fd5b506103766109ea565b6040516103839190613236565b60405180910390f35b34801561039857600080fd5b506103b360048036038101906103ae9190613251565b610a10565b005b3480156103c157600080fd5b506103dc60048036038101906103d791906132aa565b610b00565b005b3480156103ea57600080fd5b506103f3610bb2565b005b34801561040157600080fd5b5061041c60048036038101906104179190613251565b610c83565b6040516104299190613182565b60405180910390f35b34801561043e57600080fd5b50610447610cd4565b005b34801561045557600080fd5b50610470600480360381019061046b91906132d7565b610e27565b005b34801561047e57600080fd5b50610487610ede565b6040516104949190613182565b60405180910390f35b3480156104a957600080fd5b506104c460048036038101906104bf9190613251565b610ee4565b6040516104d19190613182565b60405180910390f35b3480156104e657600080fd5b506104ef610efc565b6040516104fc9190613236565b60405180910390f35b34801561051157600080fd5b5061052c600480360381019061052791906132aa565b610f25565b005b34801561053a57600080fd5b50610543610fd7565b6040516105509190613182565b60405180910390f35b34801561056557600080fd5b5061056e610fdd565b60405161057b919061302b565b60405180910390f35b34801561059057600080fd5b506105ab60048036038101906105a691906132d7565b61101a565b005b3480156105b957600080fd5b506105d460048036038101906105cf9190613304565b6110b9565b005b3480156105e257600080fd5b506105fd60048036038101906105f89190613083565b61120e565b60405161060a91906130de565b60405180910390f35b34801561061f57600080fd5b5061063a60048036038101906106359190613251565b61122c565b005b34801561064857600080fd5b50610663600480360381019061065e9190613251565b61131c565b60405161067091906130de565b60405180910390f35b34801561068557600080fd5b5061068e61133c565b005b34801561069c57600080fd5b506106b760048036038101906106b291906133c6565b611415565b005b3480156106c557600080fd5b506106e060048036038101906106db9190613426565b61154f565b6040516106ed9190613182565b60405180910390f35b34801561070257600080fd5b5061071d600480360381019061071891906132d7565b6115d6565b005b34801561072b57600080fd5b5061074660048036038101906107419190613251565b61168d565b005b61075061184f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d4906134b2565b60405180910390fd5b60005b815181101561086e57600160106000848481518110610802576108016134d2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061086690613530565b9150506107e0565b5050565b60606040518060400160405280600a81526020017f426f79636f747446545800000000000000000000000000000000000000000000815250905090565b60006108c36108bc61184f565b8484611857565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000662386f26fc10000905090565b600061090f848484611a22565b6109d08461091b61184f565b6109cb856040518060600160405280602881526020016141c760289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061098161184f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122a79092919063ffffffff16565b611857565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a1861184f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9c906134b2565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b0861184f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8c906134b2565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bf361184f565b73ffffffffffffffffffffffffffffffffffffffff161480610c695750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c5161184f565b73ffffffffffffffffffffffffffffffffffffffff16145b610c7257600080fd5b6000479050610c808161230b565b50565b6000610ccd600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612377565b9050919050565b610cdc61184f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d60906134b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610e2f61184f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb3906134b2565b60405180910390fd5b6009600a610eca91906136ac565b81610ed591906136f7565b60168190555050565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610f2d61184f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb1906134b2565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600481526020017f4246545800000000000000000000000000000000000000000000000000000000815250905090565b61102261184f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a6906134b2565b60405180910390fd5b8060188190555050565b6110c161184f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461114e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611145906134b2565b60405180910390fd5b6007828561115c9190613751565b111561119d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611194906137f3565b60405180910390fd5b600781846111ab9190613751565b11156111ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e39061385f565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b600061122261121b61184f565b8484611a22565b6001905092915050565b61123461184f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b8906134b2565b60405180910390fd5b6001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661137d61184f565b73ffffffffffffffffffffffffffffffffffffffff1614806113f35750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113db61184f565b73ffffffffffffffffffffffffffffffffffffffff16145b6113fc57600080fd5b600061140730610c83565b9050611412816123e5565b50565b61141d61184f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a1906134b2565b60405180910390fd5b60005b838390508110156115495781600560008686858181106114d0576114cf6134d2565b5b90506020020160208101906114e59190613251565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061154190613530565b9150506114ad565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6115de61184f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461166b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611662906134b2565b60405180910390fd5b6009600a61167991906136ac565b8161168491906136f7565b60178190555050565b61169561184f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611722576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611719906134b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611792576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611789906138f1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118be90613983565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192e90613a15565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a159190613182565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8990613aa7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af990613b39565b60405180910390fd5b60008111611b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3c90613bcb565b60405180910390fd5b611b4d610efc565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611bbb5750611b8b610efc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611fa657601560149054906101000a900460ff16611c4a57611bdc610efc565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4090613c5d565b60405180910390fd5b5b601654811115611c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8690613cc9565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611d335750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611d72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6990613d5b565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611e1f5760175481611dd484610c83565b611dde9190613751565b10611e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1590613ded565b60405180910390fd5b5b6000611e2a30610c83565b9050600060185482101590506016548210611e455760165491505b808015611e5d575060158054906101000a900460ff16155b8015611eb75750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611ecf5750601560169054906101000a900460ff165b8015611f255750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f7b5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611fa357611f89826123e5565b60004790506000811115611fa157611fa04761230b565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061204d5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806121005750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156120ff5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561210e5760009050612295565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156121b95750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156121d157600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561227c5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561229457600a54600c81905550600b54600d819055505b5b6122a18484848461266b565b50505050565b60008383111582906122ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e6919061302b565b60405180910390fd5b50600083856122fe9190613e0d565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612373573d6000803e3d6000fd5b5050565b60006006548211156123be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b590613eb3565b60405180910390fd5b60006123c8612698565b90506123dd81846126c390919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561241c5761241b612db9565b5b60405190808252806020026020018201604052801561244a5781602001602082028036833780820191505090505b5090503081600081518110612462576124616134d2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561250457600080fd5b505afa158015612518573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253c9190613ee8565b816001815181106125505761254f6134d2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125b730601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611857565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161261b95949392919061400e565b600060405180830381600087803b15801561263557600080fd5b505af1158015612649573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806126795761267861270d565b5b612684848484612750565b806126925761269161291b565b5b50505050565b60008060006126a561292f565b915091506126bc81836126c390919063ffffffff16565b9250505090565b600061270583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061298b565b905092915050565b6000600c5414801561272157506000600d54145b1561272b5761274e565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612762876129ee565b9550955095509550955095506127c086600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061285585600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aa090919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128a181612afe565b6128ab8483612bbb565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516129089190613182565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000662386f26fc100009050612961662386f26fc100006006546126c390919063ffffffff16565b82101561297e57600654662386f26fc10000935093505050612987565b81819350935050505b9091565b600080831182906129d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c9919061302b565b60405180910390fd5b50600083856129e19190614097565b9050809150509392505050565b6000806000806000806000806000612a0b8a600c54600d54612bf5565b9250925092506000612a1b612698565b90506000806000612a2e8e878787612c8b565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612a9883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122a7565b905092915050565b6000808284612aaf9190613751565b905083811015612af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aeb90614114565b60405180910390fd5b8091505092915050565b6000612b08612698565b90506000612b1f8284612d1490919063ffffffff16565b9050612b7381600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aa090919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612bd082600654612a5690919063ffffffff16565b600681905550612beb81600754612aa090919063ffffffff16565b6007819055505050565b600080600080612c216064612c13888a612d1490919063ffffffff16565b6126c390919063ffffffff16565b90506000612c4b6064612c3d888b612d1490919063ffffffff16565b6126c390919063ffffffff16565b90506000612c7482612c66858c612a5690919063ffffffff16565b612a5690919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612ca48589612d1490919063ffffffff16565b90506000612cbb8689612d1490919063ffffffff16565b90506000612cd28789612d1490919063ffffffff16565b90506000612cfb82612ced8587612a5690919063ffffffff16565b612a5690919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612d275760009050612d89565b60008284612d3591906136f7565b9050828482612d449190614097565b14612d84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7b906141a6565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612df182612da8565b810181811067ffffffffffffffff82111715612e1057612e0f612db9565b5b80604052505050565b6000612e23612d8f565b9050612e2f8282612de8565b919050565b600067ffffffffffffffff821115612e4f57612e4e612db9565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e9082612e65565b9050919050565b612ea081612e85565b8114612eab57600080fd5b50565b600081359050612ebd81612e97565b92915050565b6000612ed6612ed184612e34565b612e19565b90508083825260208201905060208402830185811115612ef957612ef8612e60565b5b835b81811015612f225780612f0e8882612eae565b845260208401935050602081019050612efb565b5050509392505050565b600082601f830112612f4157612f40612da3565b5b8135612f51848260208601612ec3565b91505092915050565b600060208284031215612f7057612f6f612d99565b5b600082013567ffffffffffffffff811115612f8e57612f8d612d9e565b5b612f9a84828501612f2c565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612fdd578082015181840152602081019050612fc2565b83811115612fec576000848401525b50505050565b6000612ffd82612fa3565b6130078185612fae565b9350613017818560208601612fbf565b61302081612da8565b840191505092915050565b600060208201905081810360008301526130458184612ff2565b905092915050565b6000819050919050565b6130608161304d565b811461306b57600080fd5b50565b60008135905061307d81613057565b92915050565b6000806040838503121561309a57613099612d99565b5b60006130a885828601612eae565b92505060206130b98582860161306e565b9150509250929050565b60008115159050919050565b6130d8816130c3565b82525050565b60006020820190506130f360008301846130cf565b92915050565b6000819050919050565b600061311e61311961311484612e65565b6130f9565b612e65565b9050919050565b600061313082613103565b9050919050565b600061314282613125565b9050919050565b61315281613137565b82525050565b600060208201905061316d6000830184613149565b92915050565b61317c8161304d565b82525050565b60006020820190506131976000830184613173565b92915050565b6000806000606084860312156131b6576131b5612d99565b5b60006131c486828701612eae565b93505060206131d586828701612eae565b92505060406131e68682870161306e565b9150509250925092565b600060ff82169050919050565b613206816131f0565b82525050565b600060208201905061322160008301846131fd565b92915050565b61323081612e85565b82525050565b600060208201905061324b6000830184613227565b92915050565b60006020828403121561326757613266612d99565b5b600061327584828501612eae565b91505092915050565b613287816130c3565b811461329257600080fd5b50565b6000813590506132a48161327e565b92915050565b6000602082840312156132c0576132bf612d99565b5b60006132ce84828501613295565b91505092915050565b6000602082840312156132ed576132ec612d99565b5b60006132fb8482850161306e565b91505092915050565b6000806000806080858703121561331e5761331d612d99565b5b600061332c8782880161306e565b945050602061333d8782880161306e565b935050604061334e8782880161306e565b925050606061335f8782880161306e565b91505092959194509250565b600080fd5b60008083601f84011261338657613385612da3565b5b8235905067ffffffffffffffff8111156133a3576133a261336b565b5b6020830191508360208202830111156133bf576133be612e60565b5b9250929050565b6000806000604084860312156133df576133de612d99565b5b600084013567ffffffffffffffff8111156133fd576133fc612d9e565b5b61340986828701613370565b9350935050602061341c86828701613295565b9150509250925092565b6000806040838503121561343d5761343c612d99565b5b600061344b85828601612eae565b925050602061345c85828601612eae565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061349c602083612fae565b91506134a782613466565b602082019050919050565b600060208201905081810360008301526134cb8161348f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061353b8261304d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561356e5761356d613501565b5b600182019050919050565b60008160011c9050919050565b6000808291508390505b60018511156135d0578086048111156135ac576135ab613501565b5b60018516156135bb5780820291505b80810290506135c985613579565b9450613590565b94509492505050565b6000826135e957600190506136a5565b816135f757600090506136a5565b816001811461360d576002811461361757613646565b60019150506136a5565b60ff84111561362957613628613501565b5b8360020a9150848211156136405761363f613501565b5b506136a5565b5060208310610133831016604e8410600b841016171561367b5782820a90508381111561367657613675613501565b5b6136a5565b6136888484846001613586565b9250905081840481111561369f5761369e613501565b5b81810290505b9392505050565b60006136b78261304d565b91506136c2836131f0565b92506136ef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846135d9565b905092915050565b60006137028261304d565b915061370d8361304d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561374657613745613501565b5b828202905092915050565b600061375c8261304d565b91506137678361304d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561379c5761379b613501565b5b828201905092915050565b7f62757920666565732062656c6f77203500000000000000000000000000000000600082015250565b60006137dd601083612fae565b91506137e8826137a7565b602082019050919050565b6000602082019050818103600083015261380c816137d0565b9050919050565b7f73656c6c20666565732062656c6f772035000000000000000000000000000000600082015250565b6000613849601183612fae565b915061385482613813565b602082019050919050565b600060208201905081810360008301526138788161383c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006138db602683612fae565b91506138e68261387f565b604082019050919050565b6000602082019050818103600083015261390a816138ce565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061396d602483612fae565b915061397882613911565b604082019050919050565b6000602082019050818103600083015261399c81613960565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006139ff602283612fae565b9150613a0a826139a3565b604082019050919050565b60006020820190508181036000830152613a2e816139f2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613a91602583612fae565b9150613a9c82613a35565b604082019050919050565b60006020820190508181036000830152613ac081613a84565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613b23602383612fae565b9150613b2e82613ac7565b604082019050919050565b60006020820190508181036000830152613b5281613b16565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613bb5602983612fae565b9150613bc082613b59565b604082019050919050565b60006020820190508181036000830152613be481613ba8565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613c47603f83612fae565b9150613c5282613beb565b604082019050919050565b60006020820190508181036000830152613c7681613c3a565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613cb3601c83612fae565b9150613cbe82613c7d565b602082019050919050565b60006020820190508181036000830152613ce281613ca6565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613d45602383612fae565b9150613d5082613ce9565b604082019050919050565b60006020820190508181036000830152613d7481613d38565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613dd7602383612fae565b9150613de282613d7b565b604082019050919050565b60006020820190508181036000830152613e0681613dca565b9050919050565b6000613e188261304d565b9150613e238361304d565b925082821015613e3657613e35613501565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613e9d602a83612fae565b9150613ea882613e41565b604082019050919050565b60006020820190508181036000830152613ecc81613e90565b9050919050565b600081519050613ee281612e97565b92915050565b600060208284031215613efe57613efd612d99565b5b6000613f0c84828501613ed3565b91505092915050565b6000819050919050565b6000613f3a613f35613f3084613f15565b6130f9565b61304d565b9050919050565b613f4a81613f1f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613f8581612e85565b82525050565b6000613f978383613f7c565b60208301905092915050565b6000602082019050919050565b6000613fbb82613f50565b613fc58185613f5b565b9350613fd083613f6c565b8060005b83811015614001578151613fe88882613f8b565b9750613ff383613fa3565b925050600181019050613fd4565b5085935050505092915050565b600060a0820190506140236000830188613173565b6140306020830187613f41565b81810360408301526140428186613fb0565b90506140516060830185613227565b61405e6080830184613173565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006140a28261304d565b91506140ad8361304d565b9250826140bd576140bc614068565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006140fe601b83612fae565b9150614109826140c8565b602082019050919050565b6000602082019050818103600083015261412d816140f1565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614190602183612fae565b915061419b82614134565b604082019050919050565b600060208201905081810360008301526141bf81614183565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f494692aabec6953ad556cf8235ba4f777237b30c1129e66d77f1fb1f5d484cb64736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101db5760003560e01c80637d1db4a511610102578063a9059cbb11610095578063c492f04611610064578063c492f04614610690578063dd62ed3e146106b9578063ea1644d5146106f6578063f2fde38b1461071f576101e2565b8063a9059cbb146105d6578063be1aa3cd14610613578063bfd792841461063c578063c3c8cd8014610679576101e2565b80638f9a55c0116100d15780638f9a55c01461052e57806395d89b411461055957806398a5c31514610584578063a2a957bb146105ad576101e2565b80637d1db4a5146104725780637f2feddc1461049d5780638da5cb5b146104da5780638f70ccf714610505576101e2565b8063313ce5671161017a5780636fc3eaec116101495780636fc3eaec146103de57806370a08231146103f5578063715018a61461043257806374010ece14610449576101e2565b8063313ce5671461033657806349bd5a5e146103615780636b9990531461038c5780636d8aa8f8146103b5576101e2565b80631694505e116101b65780631694505e1461027857806318160ddd146102a357806323b872dd146102ce5780632fd689e31461030b576101e2565b8062b8cf2a146101e757806306fdde0314610210578063095ea7b31461023b576101e2565b366101e257005b600080fd5b3480156101f357600080fd5b5061020e60048036038101906102099190612f5a565b610748565b005b34801561021c57600080fd5b50610225610872565b604051610232919061302b565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190613083565b6108af565b60405161026f91906130de565b60405180910390f35b34801561028457600080fd5b5061028d6108cd565b60405161029a9190613158565b60405180910390f35b3480156102af57600080fd5b506102b86108f3565b6040516102c59190613182565b60405180910390f35b3480156102da57600080fd5b506102f560048036038101906102f0919061319d565b610902565b60405161030291906130de565b60405180910390f35b34801561031757600080fd5b506103206109db565b60405161032d9190613182565b60405180910390f35b34801561034257600080fd5b5061034b6109e1565b604051610358919061320c565b60405180910390f35b34801561036d57600080fd5b506103766109ea565b6040516103839190613236565b60405180910390f35b34801561039857600080fd5b506103b360048036038101906103ae9190613251565b610a10565b005b3480156103c157600080fd5b506103dc60048036038101906103d791906132aa565b610b00565b005b3480156103ea57600080fd5b506103f3610bb2565b005b34801561040157600080fd5b5061041c60048036038101906104179190613251565b610c83565b6040516104299190613182565b60405180910390f35b34801561043e57600080fd5b50610447610cd4565b005b34801561045557600080fd5b50610470600480360381019061046b91906132d7565b610e27565b005b34801561047e57600080fd5b50610487610ede565b6040516104949190613182565b60405180910390f35b3480156104a957600080fd5b506104c460048036038101906104bf9190613251565b610ee4565b6040516104d19190613182565b60405180910390f35b3480156104e657600080fd5b506104ef610efc565b6040516104fc9190613236565b60405180910390f35b34801561051157600080fd5b5061052c600480360381019061052791906132aa565b610f25565b005b34801561053a57600080fd5b50610543610fd7565b6040516105509190613182565b60405180910390f35b34801561056557600080fd5b5061056e610fdd565b60405161057b919061302b565b60405180910390f35b34801561059057600080fd5b506105ab60048036038101906105a691906132d7565b61101a565b005b3480156105b957600080fd5b506105d460048036038101906105cf9190613304565b6110b9565b005b3480156105e257600080fd5b506105fd60048036038101906105f89190613083565b61120e565b60405161060a91906130de565b60405180910390f35b34801561061f57600080fd5b5061063a60048036038101906106359190613251565b61122c565b005b34801561064857600080fd5b50610663600480360381019061065e9190613251565b61131c565b60405161067091906130de565b60405180910390f35b34801561068557600080fd5b5061068e61133c565b005b34801561069c57600080fd5b506106b760048036038101906106b291906133c6565b611415565b005b3480156106c557600080fd5b506106e060048036038101906106db9190613426565b61154f565b6040516106ed9190613182565b60405180910390f35b34801561070257600080fd5b5061071d600480360381019061071891906132d7565b6115d6565b005b34801561072b57600080fd5b5061074660048036038101906107419190613251565b61168d565b005b61075061184f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d4906134b2565b60405180910390fd5b60005b815181101561086e57600160106000848481518110610802576108016134d2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061086690613530565b9150506107e0565b5050565b60606040518060400160405280600a81526020017f426f79636f747446545800000000000000000000000000000000000000000000815250905090565b60006108c36108bc61184f565b8484611857565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000662386f26fc10000905090565b600061090f848484611a22565b6109d08461091b61184f565b6109cb856040518060600160405280602881526020016141c760289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061098161184f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122a79092919063ffffffff16565b611857565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a1861184f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9c906134b2565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b0861184f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8c906134b2565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bf361184f565b73ffffffffffffffffffffffffffffffffffffffff161480610c695750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c5161184f565b73ffffffffffffffffffffffffffffffffffffffff16145b610c7257600080fd5b6000479050610c808161230b565b50565b6000610ccd600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612377565b9050919050565b610cdc61184f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d60906134b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610e2f61184f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb3906134b2565b60405180910390fd5b6009600a610eca91906136ac565b81610ed591906136f7565b60168190555050565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610f2d61184f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb1906134b2565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600481526020017f4246545800000000000000000000000000000000000000000000000000000000815250905090565b61102261184f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a6906134b2565b60405180910390fd5b8060188190555050565b6110c161184f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461114e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611145906134b2565b60405180910390fd5b6007828561115c9190613751565b111561119d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611194906137f3565b60405180910390fd5b600781846111ab9190613751565b11156111ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e39061385f565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b600061122261121b61184f565b8484611a22565b6001905092915050565b61123461184f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b8906134b2565b60405180910390fd5b6001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661137d61184f565b73ffffffffffffffffffffffffffffffffffffffff1614806113f35750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113db61184f565b73ffffffffffffffffffffffffffffffffffffffff16145b6113fc57600080fd5b600061140730610c83565b9050611412816123e5565b50565b61141d61184f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a1906134b2565b60405180910390fd5b60005b838390508110156115495781600560008686858181106114d0576114cf6134d2565b5b90506020020160208101906114e59190613251565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061154190613530565b9150506114ad565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6115de61184f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461166b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611662906134b2565b60405180910390fd5b6009600a61167991906136ac565b8161168491906136f7565b60178190555050565b61169561184f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611722576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611719906134b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611792576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611789906138f1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118be90613983565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192e90613a15565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a159190613182565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8990613aa7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af990613b39565b60405180910390fd5b60008111611b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3c90613bcb565b60405180910390fd5b611b4d610efc565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611bbb5750611b8b610efc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611fa657601560149054906101000a900460ff16611c4a57611bdc610efc565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4090613c5d565b60405180910390fd5b5b601654811115611c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8690613cc9565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611d335750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611d72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6990613d5b565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611e1f5760175481611dd484610c83565b611dde9190613751565b10611e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1590613ded565b60405180910390fd5b5b6000611e2a30610c83565b9050600060185482101590506016548210611e455760165491505b808015611e5d575060158054906101000a900460ff16155b8015611eb75750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611ecf5750601560169054906101000a900460ff165b8015611f255750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f7b5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611fa357611f89826123e5565b60004790506000811115611fa157611fa04761230b565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061204d5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806121005750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156120ff5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561210e5760009050612295565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156121b95750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156121d157600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561227c5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561229457600a54600c81905550600b54600d819055505b5b6122a18484848461266b565b50505050565b60008383111582906122ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e6919061302b565b60405180910390fd5b50600083856122fe9190613e0d565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612373573d6000803e3d6000fd5b5050565b60006006548211156123be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b590613eb3565b60405180910390fd5b60006123c8612698565b90506123dd81846126c390919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561241c5761241b612db9565b5b60405190808252806020026020018201604052801561244a5781602001602082028036833780820191505090505b5090503081600081518110612462576124616134d2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561250457600080fd5b505afa158015612518573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253c9190613ee8565b816001815181106125505761254f6134d2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125b730601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611857565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161261b95949392919061400e565b600060405180830381600087803b15801561263557600080fd5b505af1158015612649573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806126795761267861270d565b5b612684848484612750565b806126925761269161291b565b5b50505050565b60008060006126a561292f565b915091506126bc81836126c390919063ffffffff16565b9250505090565b600061270583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061298b565b905092915050565b6000600c5414801561272157506000600d54145b1561272b5761274e565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612762876129ee565b9550955095509550955095506127c086600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061285585600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aa090919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128a181612afe565b6128ab8483612bbb565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516129089190613182565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000662386f26fc100009050612961662386f26fc100006006546126c390919063ffffffff16565b82101561297e57600654662386f26fc10000935093505050612987565b81819350935050505b9091565b600080831182906129d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c9919061302b565b60405180910390fd5b50600083856129e19190614097565b9050809150509392505050565b6000806000806000806000806000612a0b8a600c54600d54612bf5565b9250925092506000612a1b612698565b90506000806000612a2e8e878787612c8b565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612a9883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122a7565b905092915050565b6000808284612aaf9190613751565b905083811015612af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aeb90614114565b60405180910390fd5b8091505092915050565b6000612b08612698565b90506000612b1f8284612d1490919063ffffffff16565b9050612b7381600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aa090919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612bd082600654612a5690919063ffffffff16565b600681905550612beb81600754612aa090919063ffffffff16565b6007819055505050565b600080600080612c216064612c13888a612d1490919063ffffffff16565b6126c390919063ffffffff16565b90506000612c4b6064612c3d888b612d1490919063ffffffff16565b6126c390919063ffffffff16565b90506000612c7482612c66858c612a5690919063ffffffff16565b612a5690919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612ca48589612d1490919063ffffffff16565b90506000612cbb8689612d1490919063ffffffff16565b90506000612cd28789612d1490919063ffffffff16565b90506000612cfb82612ced8587612a5690919063ffffffff16565b612a5690919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612d275760009050612d89565b60008284612d3591906136f7565b9050828482612d449190614097565b14612d84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7b906141a6565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612df182612da8565b810181811067ffffffffffffffff82111715612e1057612e0f612db9565b5b80604052505050565b6000612e23612d8f565b9050612e2f8282612de8565b919050565b600067ffffffffffffffff821115612e4f57612e4e612db9565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e9082612e65565b9050919050565b612ea081612e85565b8114612eab57600080fd5b50565b600081359050612ebd81612e97565b92915050565b6000612ed6612ed184612e34565b612e19565b90508083825260208201905060208402830185811115612ef957612ef8612e60565b5b835b81811015612f225780612f0e8882612eae565b845260208401935050602081019050612efb565b5050509392505050565b600082601f830112612f4157612f40612da3565b5b8135612f51848260208601612ec3565b91505092915050565b600060208284031215612f7057612f6f612d99565b5b600082013567ffffffffffffffff811115612f8e57612f8d612d9e565b5b612f9a84828501612f2c565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612fdd578082015181840152602081019050612fc2565b83811115612fec576000848401525b50505050565b6000612ffd82612fa3565b6130078185612fae565b9350613017818560208601612fbf565b61302081612da8565b840191505092915050565b600060208201905081810360008301526130458184612ff2565b905092915050565b6000819050919050565b6130608161304d565b811461306b57600080fd5b50565b60008135905061307d81613057565b92915050565b6000806040838503121561309a57613099612d99565b5b60006130a885828601612eae565b92505060206130b98582860161306e565b9150509250929050565b60008115159050919050565b6130d8816130c3565b82525050565b60006020820190506130f360008301846130cf565b92915050565b6000819050919050565b600061311e61311961311484612e65565b6130f9565b612e65565b9050919050565b600061313082613103565b9050919050565b600061314282613125565b9050919050565b61315281613137565b82525050565b600060208201905061316d6000830184613149565b92915050565b61317c8161304d565b82525050565b60006020820190506131976000830184613173565b92915050565b6000806000606084860312156131b6576131b5612d99565b5b60006131c486828701612eae565b93505060206131d586828701612eae565b92505060406131e68682870161306e565b9150509250925092565b600060ff82169050919050565b613206816131f0565b82525050565b600060208201905061322160008301846131fd565b92915050565b61323081612e85565b82525050565b600060208201905061324b6000830184613227565b92915050565b60006020828403121561326757613266612d99565b5b600061327584828501612eae565b91505092915050565b613287816130c3565b811461329257600080fd5b50565b6000813590506132a48161327e565b92915050565b6000602082840312156132c0576132bf612d99565b5b60006132ce84828501613295565b91505092915050565b6000602082840312156132ed576132ec612d99565b5b60006132fb8482850161306e565b91505092915050565b6000806000806080858703121561331e5761331d612d99565b5b600061332c8782880161306e565b945050602061333d8782880161306e565b935050604061334e8782880161306e565b925050606061335f8782880161306e565b91505092959194509250565b600080fd5b60008083601f84011261338657613385612da3565b5b8235905067ffffffffffffffff8111156133a3576133a261336b565b5b6020830191508360208202830111156133bf576133be612e60565b5b9250929050565b6000806000604084860312156133df576133de612d99565b5b600084013567ffffffffffffffff8111156133fd576133fc612d9e565b5b61340986828701613370565b9350935050602061341c86828701613295565b9150509250925092565b6000806040838503121561343d5761343c612d99565b5b600061344b85828601612eae565b925050602061345c85828601612eae565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061349c602083612fae565b91506134a782613466565b602082019050919050565b600060208201905081810360008301526134cb8161348f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061353b8261304d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561356e5761356d613501565b5b600182019050919050565b60008160011c9050919050565b6000808291508390505b60018511156135d0578086048111156135ac576135ab613501565b5b60018516156135bb5780820291505b80810290506135c985613579565b9450613590565b94509492505050565b6000826135e957600190506136a5565b816135f757600090506136a5565b816001811461360d576002811461361757613646565b60019150506136a5565b60ff84111561362957613628613501565b5b8360020a9150848211156136405761363f613501565b5b506136a5565b5060208310610133831016604e8410600b841016171561367b5782820a90508381111561367657613675613501565b5b6136a5565b6136888484846001613586565b9250905081840481111561369f5761369e613501565b5b81810290505b9392505050565b60006136b78261304d565b91506136c2836131f0565b92506136ef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846135d9565b905092915050565b60006137028261304d565b915061370d8361304d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561374657613745613501565b5b828202905092915050565b600061375c8261304d565b91506137678361304d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561379c5761379b613501565b5b828201905092915050565b7f62757920666565732062656c6f77203500000000000000000000000000000000600082015250565b60006137dd601083612fae565b91506137e8826137a7565b602082019050919050565b6000602082019050818103600083015261380c816137d0565b9050919050565b7f73656c6c20666565732062656c6f772035000000000000000000000000000000600082015250565b6000613849601183612fae565b915061385482613813565b602082019050919050565b600060208201905081810360008301526138788161383c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006138db602683612fae565b91506138e68261387f565b604082019050919050565b6000602082019050818103600083015261390a816138ce565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061396d602483612fae565b915061397882613911565b604082019050919050565b6000602082019050818103600083015261399c81613960565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006139ff602283612fae565b9150613a0a826139a3565b604082019050919050565b60006020820190508181036000830152613a2e816139f2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613a91602583612fae565b9150613a9c82613a35565b604082019050919050565b60006020820190508181036000830152613ac081613a84565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613b23602383612fae565b9150613b2e82613ac7565b604082019050919050565b60006020820190508181036000830152613b5281613b16565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613bb5602983612fae565b9150613bc082613b59565b604082019050919050565b60006020820190508181036000830152613be481613ba8565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613c47603f83612fae565b9150613c5282613beb565b604082019050919050565b60006020820190508181036000830152613c7681613c3a565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613cb3601c83612fae565b9150613cbe82613c7d565b602082019050919050565b60006020820190508181036000830152613ce281613ca6565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613d45602383612fae565b9150613d5082613ce9565b604082019050919050565b60006020820190508181036000830152613d7481613d38565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613dd7602383612fae565b9150613de282613d7b565b604082019050919050565b60006020820190508181036000830152613e0681613dca565b9050919050565b6000613e188261304d565b9150613e238361304d565b925082821015613e3657613e35613501565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613e9d602a83612fae565b9150613ea882613e41565b604082019050919050565b60006020820190508181036000830152613ecc81613e90565b9050919050565b600081519050613ee281612e97565b92915050565b600060208284031215613efe57613efd612d99565b5b6000613f0c84828501613ed3565b91505092915050565b6000819050919050565b6000613f3a613f35613f3084613f15565b6130f9565b61304d565b9050919050565b613f4a81613f1f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613f8581612e85565b82525050565b6000613f978383613f7c565b60208301905092915050565b6000602082019050919050565b6000613fbb82613f50565b613fc58185613f5b565b9350613fd083613f6c565b8060005b83811015614001578151613fe88882613f8b565b9750613ff383613fa3565b925050600181019050613fd4565b5085935050505092915050565b600060a0820190506140236000830188613173565b6140306020830187613f41565b81810360408301526140428186613fb0565b90506140516060830185613227565b61405e6080830184613173565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006140a28261304d565b91506140ad8361304d565b9250826140bd576140bc614068565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006140fe601b83612fae565b9150614109826140c8565b602082019050919050565b6000602082019050818103600083015261412d816140f1565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614190602183612fae565b915061419b82614134565b604082019050919050565b600060208201905081810360008301526141bf81614183565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f494692aabec6953ad556cf8235ba4f777237b30c1129e66d77f1fb1f5d484cb64736f6c63430008090033

Deployed Bytecode Sourcemap

4746:13769:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13412:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7240:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8165:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6089:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7517:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8366:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6388:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7426:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6137:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13589:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17865:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13169:235;;;;;;;;;;;;;:::i;:::-;;7620:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2233:148;;;;;;;;;;;;;:::i;:::-;;18005:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6279:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5831:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2019:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12816:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6333:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7331:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17674:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17184:438;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7766:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13689:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5793:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12925:236;;;;;;;;;;;;;:::i;:::-;;18276:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7973:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18137:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2389:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13412:169;2156:12;:10;:12::i;:::-;2146:22;;:6;;;;;;;;;;:22;;;2138:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13488:9:::1;13483:91;13507:5;:12;13503:1;:16;13483:91;;;13558:4;13541;:14;13546:5;13552:1;13546:8;;;;;;;;:::i;:::-;;;;;;;;13541:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13521:3;;;;;:::i;:::-;;;;13483:91;;;;13412:169:::0;:::o;7240:83::-;7277:13;7310:5;;;;;;;;;;;;;;;;;7303:12;;7240:83;:::o;8165:193::-;8267:4;8289:39;8298:12;:10;:12::i;:::-;8312:7;8321:6;8289:8;:39::i;:::-;8346:4;8339:11;;8165:193;;;;:::o;6089:41::-;;;;;;;;;;;;;:::o;7517:95::-;7570:7;5297:16;7590:14;;7517:95;:::o;8366:446::-;8498:4;8515:36;8525:6;8533:9;8544:6;8515:9;:36::i;:::-;8562:220;8585:6;8606:12;:10;:12::i;:::-;8633:138;8689:6;8633:138;;;;;;;;;;;;;;;;;:11;:19;8645:6;8633:19;;;;;;;;;;;;;;;:33;8653:12;:10;:12::i;:::-;8633:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8562:8;:220::i;:::-;8800:4;8793:11;;8366:446;;;;;:::o;6388:50::-;;;;:::o;7426:83::-;7467:5;4971:1;7485:16;;7426:83;:::o;6137:28::-;;;;;;;;;;;;;:::o;13589:92::-;2156:12;:10;:12::i;:::-;2146:22;;:6;;;;;;;;;;:22;;;2138:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13668:5:::1;13653:4;:12;13658:6;13653:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13589:92:::0;:::o;17865:101::-;2156:12;:10;:12::i;:::-;2146:22;;:6;;;;;;;;;;:22;;;2138:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17946:12:::1;17932:11;;:26;;;;;;;;;;;;;;;;;;17865:101:::0;:::o;13169:235::-;13235:19;;;;;;;;;;;13219:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13274:17;;;;;;;;;;;13258:33;;:12;:10;:12::i;:::-;:33;;;13219:72;13211:81;;;;;;13303:26;13332:21;13303:50;;13364:32;13377:18;13364:12;:32::i;:::-;13200:204;13169:235::o;7620:138::-;7686:7;7713:37;7733:7;:16;7741:7;7733:16;;;;;;;;;;;;;;;;7713:19;:37::i;:::-;7706:44;;7620:138;;;:::o;2233:148::-;2156:12;:10;:12::i;:::-;2146:22;;:6;;;;;;;;;;:22;;;2138:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2340:1:::1;2303:40;;2324:6;::::0;::::1;;;;;;;;2303:40;;;;;;;;;;;;2371:1;2354:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2233:148::o:0;18005:124::-;2156:12;:10;:12::i;:::-;2146:22;;:6;;;;;;;;;;:22;;;2138:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4971:1:::1;18108:2;:13;;;;:::i;:::-;18094:11;:27;;;;:::i;:::-;18079:12;:42;;;;18005:124:::0;:::o;6279:47::-;;;;:::o;5831:43::-;;;;;;;;;;;;;;;;;:::o;2019:79::-;2057:7;2084:6;;;;;;;;;;;2077:13;;2019:79;:::o;12816:101::-;2156:12;:10;:12::i;:::-;2146:22;;:6;;;;;;;;;;:22;;;2138:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12897:12:::1;12883:11;;:26;;;;;;;;;;;;;;;;;;12816:101:::0;:::o;6333:48::-;;;;:::o;7331:87::-;7370:13;7403:7;;;;;;;;;;;;;;;;;7396:14;;7331:87;:::o;17674:139::-;2156:12;:10;:12::i;:::-;2146:22;;:6;;;;;;;;;;:22;;;2138:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17787:18:::1;17765:19;:40;;;;17674:139:::0;:::o;17184:438::-;2156:12;:10;:12::i;:::-;2146:22;;:6;;;;;;;;;;:22;;;2138:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17357:1:::1;17342:11;17326:13;:27;;;;:::i;:::-;:32;;17318:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;17431:1;17415:12;17398:14;:29;;;;:::i;:::-;:34;;17390:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;17482:13;17465:14;:30;;;;17524:14;17506:15;:32;;;;17564:11;17549:12;:26;;;;17602:12;17586:13;:28;;;;17184:438:::0;;;;:::o;7766:199::-;7871:4;7893:42;7903:12;:10;:12::i;:::-;7917:9;7928:6;7893:9;:42::i;:::-;7953:4;7946:11;;7766:199;;;;:::o;13689:89::-;2156:12;:10;:12::i;:::-;2146:22;;:6;;;;;;;;;;:22;;;2138:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13766:4:::1;13754;:9;13759:3;13754:9;;;;;;;;;;;;;;;;:16;;;;;;;;;;;;;;;;;;13689:89:::0;:::o;5793:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12925:236::-;12991:19;;;;;;;;;;;12975:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13030:17;;;;;;;;;;;13014:33;;:12;:10;:12::i;:::-;:33;;;12975:72;12967:81;;;;;;13059:23;13085:24;13103:4;13085:9;:24::i;:::-;13059:50;;13120:33;13137:15;13120:16;:33::i;:::-;12956:205;12925:236::o;18276:234::-;2156:12;:10;:12::i;:::-;2146:22;;:6;;;;;;;;;;:22;;;2138:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18393:9:::1;18389:114;18412:8;;:15;;18408:1;:19;18389:114;;;18483:8;18449:18;:31;18468:8;;18477:1;18468:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18449:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;18429:3;;;;;:::i;:::-;;;;18389:114;;;;18276:234:::0;;;:::o;7973:184::-;8090:7;8122:11;:18;8134:5;8122:18;;;;;;;;;;;;;;;:27;8141:7;8122:27;;;;;;;;;;;;;;;;8115:34;;7973:184;;;;:::o;18137:131::-;2156:12;:10;:12::i;:::-;2146:22;;:6;;;;;;;;;;:22;;;2138:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4971:1:::1;18247:2;:13;;;;:::i;:::-;18231;:29;;;;:::i;:::-;18214:14;:46;;;;18137:131:::0;:::o;2389:244::-;2156:12;:10;:12::i;:::-;2146:22;;:6;;;;;;;;;;:22;;;2138:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2498:1:::1;2478:22;;:8;:22;;;;2470:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2588:8;2559:38;;2580:6;::::0;::::1;;;;;;;;2559:38;;;;;;;;;;;;2617:8;2608:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2389:244:::0;:::o;778:98::-;831:7;858:10;851:17;;778:98;:::o;9503:369::-;9647:1;9630:19;;:5;:19;;;;9622:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9728:1;9709:21;;:7;:21;;;;9701:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9810:6;9780:11;:18;9792:5;9780:18;;;;;;;;;;;;;;;:27;9799:7;9780:27;;;;;;;;;;;;;;;:36;;;;9848:7;9832:32;;9841:5;9832:32;;;9857:6;9832:32;;;;;;:::i;:::-;;;;;;;;9503:369;;;:::o;9880:2330::-;10018:1;10002:18;;:4;:18;;;;9994:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10095:1;10081:16;;:2;:16;;;;10073:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10165:1;10156:6;:10;10148:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10237:7;:5;:7::i;:::-;10229:15;;:4;:15;;;;:32;;;;;10254:7;:5;:7::i;:::-;10248:13;;:2;:13;;;;10229:32;10225:1259;;;10318:11;;;;;;;;;;;10313:144;;10366:7;:5;:7::i;:::-;10358:15;;:4;:15;;;10350:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;10313:144;10491:12;;10481:6;:22;;10473:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10560:4;:10;10565:4;10560:10;;;;;;;;;;;;;;;;;;;;;;;;;10559:11;:24;;;;;10575:4;:8;10580:2;10575:8;;;;;;;;;;;;;;;;;;;;;;;;;10574:9;10559:24;10551:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10649:13;;;;;;;;;;;10643:19;;:2;:19;;;10640:146;;10716:14;;10707:6;10691:13;10701:2;10691:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10683:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10640:146;10802:28;10833:24;10851:4;10833:9;:24::i;:::-;10802:55;;10872:12;10911:19;;10887:20;:43;;10872:58;;10974:12;;10950:20;:36;10947:124;;11043:12;;11020:35;;10947:124;11091:7;:18;;;;;11103:6;;;;;;;;;;11102:7;11091:18;:43;;;;;11121:13;;;;;;;;;;;11113:21;;:4;:21;;;;11091:43;:58;;;;;11138:11;;;;;;;;;;;11091:58;:87;;;;;11154:18;:24;11173:4;11154:24;;;;;;;;;;;;;;;;;;;;;;;;;11153:25;11091:87;:114;;;;;11183:18;:22;11202:2;11183:22;;;;;;;;;;;;;;;;;;;;;;;;;11182:23;11091:114;11087:386;;;11226:38;11243:20;11226:16;:38::i;:::-;11283:26;11312:21;11283:50;;11377:1;11356:18;:22;11352:106;;;11403:35;11416:21;11403:12;:35::i;:::-;11352:106;11207:266;11087:386;10263:1221;;10225:1259;11496:12;11511:4;11496:19;;11560:18;:24;11579:4;11560:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11588:18;:22;11607:2;11588:22;;;;;;;;;;;;;;;;;;;;;;;;;11560:50;11559:102;;;;11624:13;;;;;;;;;;;11616:21;;:4;:21;;;;:44;;;;;11647:13;;;;;;;;;;;11641:19;;:2;:19;;;;11616:44;11559:102;11555:594;;;11688:5;11678:15;;11555:594;;;11771:13;;;;;;;;;;;11763:21;;:4;:21;;;:55;;;;;11802:15;;;;;;;;;;;11788:30;;:2;:30;;;;11763:55;11760:162;;;11851:14;;11839:9;:26;;;;11894:12;;11884:7;:22;;;;11760:162;11981:13;;;;;;;;;;;11975:19;;:2;:19;;;:55;;;;;12014:15;;;;;;;;;;;11998:32;;:4;:32;;;;11975:55;11971:165;;;12063:15;;12051:9;:27;;;;12107:13;;12097:7;:23;;;;11971:165;11555:594;12161:41;12176:4;12182:2;12186:6;12194:7;12161:14;:41::i;:::-;9983:2227;9880:2330;;;:::o;2997:224::-;3117:7;3150:1;3145;:6;;3153:12;3137:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3177:9;3193:1;3189;:5;;;;:::i;:::-;3177:17;;3212:1;3205:8;;;2997:224;;;;;:::o;12709:99::-;12766:17;;;;;;;;;;;:26;;:34;12793:6;12766:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12709:99;:::o;8820:323::-;8915:7;8973;;8962;:18;;8940:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;9061:19;9083:10;:8;:10::i;:::-;9061:32;;9111:24;9123:11;9111:7;:11;;:24;;;;:::i;:::-;9104:31;;;8820:323;;;:::o;12218:483::-;6541:4;6532:6;;:13;;;;;;;;;;;;;;;;;;12296:21:::1;12334:1;12320:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12296:40;;12365:4;12347;12352:1;12347:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12391:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12381:4;12386:1;12381:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12424:62;12441:4;12456:15;;;;;;;;;;;12474:11;12424:8;:62::i;:::-;12497:15;;;;;;;;;;;:66;;;12578:11;12604:1;12620:4;12647;12667:15;12497:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12285:416;6577:5:::0;6568:6;;:14;;;;;;;;;;;;;;;;;;12218:483;:::o;13786:282::-;13942:7;13937:28;;13951:14;:12;:14::i;:::-;13937:28;13976:44;13994:6;14002:9;14013:6;13976:17;:44::i;:::-;14036:7;14031:29;;14045:15;:13;:15::i;:::-;14031:29;13786:282;;;;:::o;16747:164::-;16789:7;16810:15;16827;16846:19;:17;:19::i;:::-;16809:56;;;;16883:20;16895:7;16883;:11;;:20;;;;:::i;:::-;16876:27;;;;16747:164;:::o;3483:132::-;3541:7;3568:39;3572:1;3575;3568:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3561:46;;3483:132;;;;:::o;9151:219::-;9211:1;9198:9;;:14;:30;;;;;9227:1;9216:7;;:12;9198:30;9194:43;;;9230:7;;9194:43;9269:9;;9249:17;:29;;;;9307:7;;9289:15;:25;;;;9339:1;9327:9;:13;;;;9361:1;9351:7;:11;;;;9151:219;:::o;14076:610::-;14223:15;14253:23;14291:12;14318:23;14356:12;14383:13;14410:19;14421:7;14410:10;:19::i;:::-;14208:221;;;;;;;;;;;;14458:28;14478:7;14458;:15;14466:6;14458:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14440:7;:15;14448:6;14440:15;;;;;;;;;;;;;;;:46;;;;14518:39;14541:15;14518:7;:18;14526:9;14518:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14497:7;:18;14505:9;14497:18;;;;;;;;;;;;;;;:60;;;;14568:16;14578:5;14568:9;:16::i;:::-;14595:23;14607:4;14613;14595:11;:23::i;:::-;14651:9;14634:44;;14643:6;14634:44;;;14662:15;14634:44;;;;;;:::i;:::-;;;;;;;;14197:489;;;;;;14076:610;;;:::o;9378:117::-;9434:17;;9422:9;:29;;;;9472:15;;9462:7;:25;;;;9378:117::o;16919:257::-;16970:7;16979;16999:15;17017:7;;16999:25;;17035:15;5297:16;17035:25;;17085:20;5297:16;17085:7;;:11;;:20;;;;:::i;:::-;17075:7;:30;17071:61;;;17115:7;;5297:16;17107:25;;;;;;;;17071:61;17151:7;17160;17143:25;;;;;;16919:257;;;:::o;3623:223::-;3743:7;3775:1;3771;:5;3778:12;3763:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3802:9;3818:1;3814;:5;;;;:::i;:::-;3802:17;;3837:1;3830:8;;;3623:223;;;;;:::o;15105:615::-;15205:7;15227;15249;15271;15293;15315;15351:23;15376:12;15390:13;15420:40;15432:7;15441:9;;15452:7;;15420:11;:40::i;:::-;15350:110;;;;;;15471:19;15493:10;:8;:10::i;:::-;15471:32;;15515:15;15532:23;15557:12;15586:46;15598:7;15607:4;15613:5;15620:11;15586;:46::i;:::-;15514:118;;;;;;15651:7;15660:15;15677:4;15683:15;15700:4;15706:5;15643:69;;;;;;;;;;;;;;;;;;;15105:615;;;;;;;:::o;2853:136::-;2911:7;2938:43;2942:1;2945;2938:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2931:50;;2853:136;;;;:::o;2666:179::-;2724:7;2744:9;2760:1;2756;:5;;;;:::i;:::-;2744:17;;2785:1;2780;:6;;2772:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2836:1;2829:8;;;2666:179;;;;:::o;14694:211::-;14747:19;14769:10;:8;:10::i;:::-;14747:32;;14790:13;14806:22;14816:11;14806:5;:9;;:22;;;;:::i;:::-;14790:38;;14864:33;14891:5;14864:7;:22;14880:4;14864:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14839:7;:22;14855:4;14839:22;;;;;;;;;;;;;;;:58;;;;14736:169;;14694:211;:::o;14913:147::-;14991:17;15003:4;14991:7;;:11;;:17;;;;:::i;:::-;14981:7;:27;;;;15032:20;15047:4;15032:10;;:14;;:20;;;;:::i;:::-;15019:10;:33;;;;14913:147;;:::o;15728:469::-;15897:7;15919;15941;15976:12;15991:30;16017:3;15991:21;16003:8;15991:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15976:45;;16032:13;16048:28;16072:3;16048:19;16060:6;16048:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16032:44;;16087:23;16113:28;16135:5;16113:17;16125:4;16113:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16087:54;;16160:15;16177:4;16183:5;16152:37;;;;;;;;;15728:469;;;;;;;:::o;16205:534::-;16399:7;16421;16443;16478:15;16496:24;16508:11;16496:7;:11;;:24;;;;:::i;:::-;16478:42;;16531:12;16546:21;16555:11;16546:4;:8;;:21;;;;:::i;:::-;16531:36;;16578:13;16594:22;16604:11;16594:5;:9;;:22;;;;:::i;:::-;16578:38;;16627:23;16653:28;16675:5;16653:17;16665:4;16653:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16627:54;;16700:7;16709:15;16726:4;16692:39;;;;;;;;;;16205:534;;;;;;;;:::o;3229:246::-;3287:7;3316:1;3311;:6;3307:47;;;3341:1;3334:8;;;;3307:47;3364:9;3380:1;3376;:5;;;;:::i;:::-;3364:17;;3409:1;3404;3400;:5;;;;:::i;:::-;:10;3392:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3466:1;3459:8;;;3229:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:307::-;4139:1;4149:113;4163:6;4160:1;4157:13;4149:113;;;4248:1;4243:3;4239:11;4233:18;4229:1;4224:3;4220:11;4213:39;4185:2;4182:1;4178:10;4173:15;;4149:113;;;4280:6;4277:1;4274:13;4271:101;;;4360:1;4351:6;4346:3;4342:16;4335:27;4271:101;4120:258;4071:307;;;:::o;4384:364::-;4472:3;4500:39;4533:5;4500:39;:::i;:::-;4555:71;4619:6;4614:3;4555:71;:::i;:::-;4548:78;;4635:52;4680:6;4675:3;4668:4;4661:5;4657:16;4635:52;:::i;:::-;4712:29;4734:6;4712:29;:::i;:::-;4707:3;4703:39;4696:46;;4476:272;4384:364;;;;:::o;4754:313::-;4867:4;4905:2;4894:9;4890:18;4882:26;;4954:9;4948:4;4944:20;4940:1;4929:9;4925:17;4918:47;4982:78;5055:4;5046:6;4982:78;:::i;:::-;4974:86;;4754:313;;;;:::o;5073:77::-;5110:7;5139:5;5128:16;;5073:77;;;:::o;5156:122::-;5229:24;5247:5;5229:24;:::i;:::-;5222:5;5219:35;5209:63;;5268:1;5265;5258:12;5209:63;5156:122;:::o;5284:139::-;5330:5;5368:6;5355:20;5346:29;;5384:33;5411:5;5384:33;:::i;:::-;5284:139;;;;:::o;5429:474::-;5497:6;5505;5554:2;5542:9;5533:7;5529:23;5525:32;5522:119;;;5560:79;;:::i;:::-;5522:119;5680:1;5705:53;5750:7;5741:6;5730:9;5726:22;5705:53;:::i;:::-;5695:63;;5651:117;5807:2;5833:53;5878:7;5869:6;5858:9;5854:22;5833:53;:::i;:::-;5823:63;;5778:118;5429:474;;;;;:::o;5909:90::-;5943:7;5986:5;5979:13;5972:21;5961:32;;5909:90;;;:::o;6005:109::-;6086:21;6101:5;6086:21;:::i;:::-;6081:3;6074:34;6005:109;;:::o;6120:210::-;6207:4;6245:2;6234:9;6230:18;6222:26;;6258:65;6320:1;6309:9;6305:17;6296:6;6258:65;:::i;:::-;6120:210;;;;:::o;6336:60::-;6364:3;6385:5;6378:12;;6336:60;;;:::o;6402:142::-;6452:9;6485:53;6503:34;6512:24;6530:5;6512:24;:::i;:::-;6503:34;:::i;:::-;6485:53;:::i;:::-;6472:66;;6402:142;;;:::o;6550:126::-;6600:9;6633:37;6664:5;6633:37;:::i;:::-;6620:50;;6550:126;;;:::o;6682:152::-;6758:9;6791:37;6822:5;6791:37;:::i;:::-;6778:50;;6682:152;;;:::o;6840:183::-;6953:63;7010:5;6953:63;:::i;:::-;6948:3;6941:76;6840:183;;:::o;7029:274::-;7148:4;7186:2;7175:9;7171:18;7163:26;;7199:97;7293:1;7282:9;7278:17;7269:6;7199:97;:::i;:::-;7029:274;;;;:::o;7309:118::-;7396:24;7414:5;7396:24;:::i;:::-;7391:3;7384:37;7309:118;;:::o;7433:222::-;7526:4;7564:2;7553:9;7549:18;7541:26;;7577:71;7645:1;7634:9;7630:17;7621:6;7577:71;:::i;:::-;7433:222;;;;:::o;7661:619::-;7738:6;7746;7754;7803:2;7791:9;7782:7;7778:23;7774:32;7771:119;;;7809:79;;:::i;:::-;7771:119;7929:1;7954:53;7999:7;7990:6;7979:9;7975:22;7954:53;:::i;:::-;7944:63;;7900:117;8056:2;8082:53;8127:7;8118:6;8107:9;8103:22;8082:53;:::i;:::-;8072:63;;8027:118;8184:2;8210:53;8255:7;8246:6;8235:9;8231:22;8210:53;:::i;:::-;8200:63;;8155:118;7661:619;;;;;:::o;8286:86::-;8321:7;8361:4;8354:5;8350:16;8339:27;;8286:86;;;:::o;8378:112::-;8461:22;8477:5;8461:22;:::i;:::-;8456:3;8449:35;8378:112;;:::o;8496:214::-;8585:4;8623:2;8612:9;8608:18;8600:26;;8636:67;8700:1;8689:9;8685:17;8676:6;8636:67;:::i;:::-;8496:214;;;;:::o;8716:118::-;8803:24;8821:5;8803:24;:::i;:::-;8798:3;8791:37;8716:118;;:::o;8840:222::-;8933:4;8971:2;8960:9;8956:18;8948:26;;8984:71;9052:1;9041:9;9037:17;9028:6;8984:71;:::i;:::-;8840:222;;;;:::o;9068:329::-;9127:6;9176:2;9164:9;9155:7;9151:23;9147:32;9144:119;;;9182:79;;:::i;:::-;9144:119;9302:1;9327:53;9372:7;9363:6;9352:9;9348:22;9327:53;:::i;:::-;9317:63;;9273:117;9068:329;;;;:::o;9403:116::-;9473:21;9488:5;9473:21;:::i;:::-;9466:5;9463:32;9453:60;;9509:1;9506;9499:12;9453:60;9403:116;:::o;9525:133::-;9568:5;9606:6;9593:20;9584:29;;9622:30;9646:5;9622:30;:::i;:::-;9525:133;;;;:::o;9664:323::-;9720:6;9769:2;9757:9;9748:7;9744:23;9740:32;9737:119;;;9775:79;;:::i;:::-;9737:119;9895:1;9920:50;9962:7;9953:6;9942:9;9938:22;9920:50;:::i;:::-;9910:60;;9866:114;9664:323;;;;:::o;9993:329::-;10052:6;10101:2;10089:9;10080:7;10076:23;10072:32;10069:119;;;10107:79;;:::i;:::-;10069:119;10227:1;10252:53;10297:7;10288:6;10277:9;10273:22;10252:53;:::i;:::-;10242:63;;10198:117;9993:329;;;;:::o;10328:765::-;10414:6;10422;10430;10438;10487:3;10475:9;10466:7;10462:23;10458:33;10455:120;;;10494:79;;:::i;:::-;10455:120;10614:1;10639:53;10684:7;10675:6;10664:9;10660:22;10639:53;:::i;:::-;10629:63;;10585:117;10741:2;10767:53;10812:7;10803:6;10792:9;10788:22;10767:53;:::i;:::-;10757:63;;10712:118;10869:2;10895:53;10940:7;10931:6;10920:9;10916:22;10895:53;:::i;:::-;10885:63;;10840:118;10997:2;11023:53;11068:7;11059:6;11048:9;11044:22;11023:53;:::i;:::-;11013:63;;10968:118;10328:765;;;;;;;:::o;11099:117::-;11208:1;11205;11198:12;11239:568;11312:8;11322:6;11372:3;11365:4;11357:6;11353:17;11349:27;11339:122;;11380:79;;:::i;:::-;11339:122;11493:6;11480:20;11470:30;;11523:18;11515:6;11512:30;11509:117;;;11545:79;;:::i;:::-;11509:117;11659:4;11651:6;11647:17;11635:29;;11713:3;11705:4;11697:6;11693:17;11683:8;11679:32;11676:41;11673:128;;;11720:79;;:::i;:::-;11673:128;11239:568;;;;;:::o;11813:698::-;11905:6;11913;11921;11970:2;11958:9;11949:7;11945:23;11941:32;11938:119;;;11976:79;;:::i;:::-;11938:119;12124:1;12113:9;12109:17;12096:31;12154:18;12146:6;12143:30;12140:117;;;12176:79;;:::i;:::-;12140:117;12289:80;12361:7;12352:6;12341:9;12337:22;12289:80;:::i;:::-;12271:98;;;;12067:312;12418:2;12444:50;12486:7;12477:6;12466:9;12462:22;12444:50;:::i;:::-;12434:60;;12389:115;11813:698;;;;;:::o;12517:474::-;12585:6;12593;12642:2;12630:9;12621:7;12617:23;12613:32;12610:119;;;12648:79;;:::i;:::-;12610:119;12768:1;12793:53;12838:7;12829:6;12818:9;12814:22;12793:53;:::i;:::-;12783:63;;12739:117;12895:2;12921:53;12966:7;12957:6;12946:9;12942:22;12921:53;:::i;:::-;12911:63;;12866:118;12517:474;;;;;:::o;12997:182::-;13137:34;13133:1;13125:6;13121:14;13114:58;12997:182;:::o;13185:366::-;13327:3;13348:67;13412:2;13407:3;13348:67;:::i;:::-;13341:74;;13424:93;13513:3;13424:93;:::i;:::-;13542:2;13537:3;13533:12;13526:19;;13185:366;;;:::o;13557:419::-;13723:4;13761:2;13750:9;13746:18;13738:26;;13810:9;13804:4;13800:20;13796:1;13785:9;13781:17;13774:47;13838:131;13964:4;13838:131;:::i;:::-;13830:139;;13557:419;;;:::o;13982:180::-;14030:77;14027:1;14020:88;14127:4;14124:1;14117:15;14151:4;14148:1;14141:15;14168:180;14216:77;14213:1;14206:88;14313:4;14310:1;14303:15;14337:4;14334:1;14327:15;14354:233;14393:3;14416:24;14434:5;14416:24;:::i;:::-;14407:33;;14462:66;14455:5;14452:77;14449:103;;;14532:18;;:::i;:::-;14449:103;14579:1;14572:5;14568:13;14561:20;;14354:233;;;:::o;14593:102::-;14635:8;14682:5;14679:1;14675:13;14654:34;;14593:102;;;:::o;14701:848::-;14762:5;14769:4;14793:6;14784:15;;14817:5;14808:14;;14831:712;14852:1;14842:8;14839:15;14831:712;;;14947:4;14942:3;14938:14;14932:4;14929:24;14926:50;;;14956:18;;:::i;:::-;14926:50;15006:1;14996:8;14992:16;14989:451;;;15421:4;15414:5;15410:16;15401:25;;14989:451;15471:4;15465;15461:15;15453:23;;15501:32;15524:8;15501:32;:::i;:::-;15489:44;;14831:712;;;14701:848;;;;;;;:::o;15555:1073::-;15609:5;15800:8;15790:40;;15821:1;15812:10;;15823:5;;15790:40;15849:4;15839:36;;15866:1;15857:10;;15868:5;;15839:36;15935:4;15983:1;15978:27;;;;16019:1;16014:191;;;;15928:277;;15978:27;15996:1;15987:10;;15998:5;;;16014:191;16059:3;16049:8;16046:17;16043:43;;;16066:18;;:::i;:::-;16043:43;16115:8;16112:1;16108:16;16099:25;;16150:3;16143:5;16140:14;16137:40;;;16157:18;;:::i;:::-;16137:40;16190:5;;;15928:277;;16314:2;16304:8;16301:16;16295:3;16289:4;16286:13;16282:36;16264:2;16254:8;16251:16;16246:2;16240:4;16237:12;16233:35;16217:111;16214:246;;;16370:8;16364:4;16360:19;16351:28;;16405:3;16398:5;16395:14;16392:40;;;16412:18;;:::i;:::-;16392:40;16445:5;;16214:246;16485:42;16523:3;16513:8;16507:4;16504:1;16485:42;:::i;:::-;16470:57;;;;16559:4;16554:3;16550:14;16543:5;16540:25;16537:51;;;16568:18;;:::i;:::-;16537:51;16617:4;16610:5;16606:16;16597:25;;15555:1073;;;;;;:::o;16634:281::-;16692:5;16716:23;16734:4;16716:23;:::i;:::-;16708:31;;16760:25;16776:8;16760:25;:::i;:::-;16748:37;;16804:104;16841:66;16831:8;16825:4;16804:104;:::i;:::-;16795:113;;16634:281;;;;:::o;16921:348::-;16961:7;16984:20;17002:1;16984:20;:::i;:::-;16979:25;;17018:20;17036:1;17018:20;:::i;:::-;17013:25;;17206:1;17138:66;17134:74;17131:1;17128:81;17123:1;17116:9;17109:17;17105:105;17102:131;;;17213:18;;:::i;:::-;17102:131;17261:1;17258;17254:9;17243:20;;16921:348;;;;:::o;17275:305::-;17315:3;17334:20;17352:1;17334:20;:::i;:::-;17329:25;;17368:20;17386:1;17368:20;:::i;:::-;17363:25;;17522:1;17454:66;17450:74;17447:1;17444:81;17441:107;;;17528:18;;:::i;:::-;17441:107;17572:1;17569;17565:9;17558:16;;17275:305;;;;:::o;17586:166::-;17726:18;17722:1;17714:6;17710:14;17703:42;17586:166;:::o;17758:366::-;17900:3;17921:67;17985:2;17980:3;17921:67;:::i;:::-;17914:74;;17997:93;18086:3;17997:93;:::i;:::-;18115:2;18110:3;18106:12;18099:19;;17758:366;;;:::o;18130:419::-;18296:4;18334:2;18323:9;18319:18;18311:26;;18383:9;18377:4;18373:20;18369:1;18358:9;18354:17;18347:47;18411:131;18537:4;18411:131;:::i;:::-;18403:139;;18130:419;;;:::o;18555:167::-;18695:19;18691:1;18683:6;18679:14;18672:43;18555:167;:::o;18728:366::-;18870:3;18891:67;18955:2;18950:3;18891:67;:::i;:::-;18884:74;;18967:93;19056:3;18967:93;:::i;:::-;19085:2;19080:3;19076:12;19069:19;;18728:366;;;:::o;19100:419::-;19266:4;19304:2;19293:9;19289:18;19281:26;;19353:9;19347:4;19343:20;19339:1;19328:9;19324:17;19317:47;19381:131;19507:4;19381:131;:::i;:::-;19373:139;;19100:419;;;:::o;19525:225::-;19665:34;19661:1;19653:6;19649:14;19642:58;19734:8;19729:2;19721:6;19717:15;19710:33;19525:225;:::o;19756:366::-;19898:3;19919:67;19983:2;19978:3;19919:67;:::i;:::-;19912:74;;19995:93;20084:3;19995:93;:::i;:::-;20113:2;20108:3;20104:12;20097:19;;19756:366;;;:::o;20128:419::-;20294:4;20332:2;20321:9;20317:18;20309:26;;20381:9;20375:4;20371:20;20367:1;20356:9;20352:17;20345:47;20409:131;20535:4;20409:131;:::i;:::-;20401:139;;20128:419;;;:::o;20553:223::-;20693:34;20689:1;20681:6;20677:14;20670:58;20762:6;20757:2;20749:6;20745:15;20738:31;20553:223;:::o;20782:366::-;20924:3;20945:67;21009:2;21004:3;20945:67;:::i;:::-;20938:74;;21021:93;21110:3;21021:93;:::i;:::-;21139:2;21134:3;21130:12;21123:19;;20782:366;;;:::o;21154:419::-;21320:4;21358:2;21347:9;21343:18;21335:26;;21407:9;21401:4;21397:20;21393:1;21382:9;21378:17;21371:47;21435:131;21561:4;21435:131;:::i;:::-;21427:139;;21154:419;;;:::o;21579:221::-;21719:34;21715:1;21707:6;21703:14;21696:58;21788:4;21783:2;21775:6;21771:15;21764:29;21579:221;:::o;21806:366::-;21948:3;21969:67;22033:2;22028:3;21969:67;:::i;:::-;21962:74;;22045:93;22134:3;22045:93;:::i;:::-;22163:2;22158:3;22154:12;22147:19;;21806:366;;;:::o;22178:419::-;22344:4;22382:2;22371:9;22367:18;22359:26;;22431:9;22425:4;22421:20;22417:1;22406:9;22402:17;22395:47;22459:131;22585:4;22459:131;:::i;:::-;22451:139;;22178:419;;;:::o;22603:224::-;22743:34;22739:1;22731:6;22727:14;22720:58;22812:7;22807:2;22799:6;22795:15;22788:32;22603:224;:::o;22833:366::-;22975:3;22996:67;23060:2;23055:3;22996:67;:::i;:::-;22989:74;;23072:93;23161:3;23072:93;:::i;:::-;23190:2;23185:3;23181:12;23174:19;;22833:366;;;:::o;23205:419::-;23371:4;23409:2;23398:9;23394:18;23386:26;;23458:9;23452:4;23448:20;23444:1;23433:9;23429:17;23422:47;23486:131;23612:4;23486:131;:::i;:::-;23478:139;;23205:419;;;:::o;23630:222::-;23770:34;23766:1;23758:6;23754:14;23747:58;23839:5;23834:2;23826:6;23822:15;23815:30;23630:222;:::o;23858:366::-;24000:3;24021:67;24085:2;24080:3;24021:67;:::i;:::-;24014:74;;24097:93;24186:3;24097:93;:::i;:::-;24215:2;24210:3;24206:12;24199:19;;23858:366;;;:::o;24230:419::-;24396:4;24434:2;24423:9;24419:18;24411:26;;24483:9;24477:4;24473:20;24469:1;24458:9;24454:17;24447:47;24511:131;24637:4;24511:131;:::i;:::-;24503:139;;24230:419;;;:::o;24655:228::-;24795:34;24791:1;24783:6;24779:14;24772:58;24864:11;24859:2;24851:6;24847:15;24840:36;24655:228;:::o;24889:366::-;25031:3;25052:67;25116:2;25111:3;25052:67;:::i;:::-;25045:74;;25128:93;25217:3;25128:93;:::i;:::-;25246:2;25241:3;25237:12;25230:19;;24889:366;;;:::o;25261:419::-;25427:4;25465:2;25454:9;25450:18;25442:26;;25514:9;25508:4;25504:20;25500:1;25489:9;25485:17;25478:47;25542:131;25668:4;25542:131;:::i;:::-;25534:139;;25261:419;;;:::o;25686:250::-;25826:34;25822:1;25814:6;25810:14;25803:58;25895:33;25890:2;25882:6;25878:15;25871:58;25686:250;:::o;25942:366::-;26084:3;26105:67;26169:2;26164:3;26105:67;:::i;:::-;26098:74;;26181:93;26270:3;26181:93;:::i;:::-;26299:2;26294:3;26290:12;26283:19;;25942:366;;;:::o;26314:419::-;26480:4;26518:2;26507:9;26503:18;26495:26;;26567:9;26561:4;26557:20;26553:1;26542:9;26538:17;26531:47;26595:131;26721:4;26595:131;:::i;:::-;26587:139;;26314:419;;;:::o;26739:178::-;26879:30;26875:1;26867:6;26863:14;26856:54;26739:178;:::o;26923:366::-;27065:3;27086:67;27150:2;27145:3;27086:67;:::i;:::-;27079:74;;27162:93;27251:3;27162:93;:::i;:::-;27280:2;27275:3;27271:12;27264:19;;26923:366;;;:::o;27295:419::-;27461:4;27499:2;27488:9;27484:18;27476:26;;27548:9;27542:4;27538:20;27534:1;27523:9;27519:17;27512:47;27576:131;27702:4;27576:131;:::i;:::-;27568:139;;27295:419;;;:::o;27720:222::-;27860:34;27856:1;27848:6;27844:14;27837:58;27929:5;27924:2;27916:6;27912:15;27905:30;27720:222;:::o;27948:366::-;28090:3;28111:67;28175:2;28170:3;28111:67;:::i;:::-;28104:74;;28187:93;28276:3;28187:93;:::i;:::-;28305:2;28300:3;28296:12;28289:19;;27948:366;;;:::o;28320:419::-;28486:4;28524:2;28513:9;28509:18;28501:26;;28573:9;28567:4;28563:20;28559:1;28548:9;28544:17;28537:47;28601:131;28727:4;28601:131;:::i;:::-;28593:139;;28320:419;;;:::o;28745:222::-;28885:34;28881:1;28873:6;28869:14;28862:58;28954:5;28949:2;28941:6;28937:15;28930:30;28745:222;:::o;28973:366::-;29115:3;29136:67;29200:2;29195:3;29136:67;:::i;:::-;29129:74;;29212:93;29301:3;29212:93;:::i;:::-;29330:2;29325:3;29321:12;29314:19;;28973:366;;;:::o;29345:419::-;29511:4;29549:2;29538:9;29534:18;29526:26;;29598:9;29592:4;29588:20;29584:1;29573:9;29569:17;29562:47;29626:131;29752:4;29626:131;:::i;:::-;29618:139;;29345:419;;;:::o;29770:191::-;29810:4;29830:20;29848:1;29830:20;:::i;:::-;29825:25;;29864:20;29882:1;29864:20;:::i;:::-;29859:25;;29903:1;29900;29897:8;29894:34;;;29908:18;;:::i;:::-;29894:34;29953:1;29950;29946:9;29938:17;;29770:191;;;;:::o;29967:229::-;30107:34;30103:1;30095:6;30091:14;30084:58;30176:12;30171:2;30163:6;30159:15;30152:37;29967:229;:::o;30202:366::-;30344:3;30365:67;30429:2;30424:3;30365:67;:::i;:::-;30358:74;;30441:93;30530:3;30441:93;:::i;:::-;30559:2;30554:3;30550:12;30543:19;;30202:366;;;:::o;30574:419::-;30740:4;30778:2;30767:9;30763:18;30755:26;;30827:9;30821:4;30817:20;30813:1;30802:9;30798:17;30791:47;30855:131;30981:4;30855:131;:::i;:::-;30847:139;;30574:419;;;:::o;30999:143::-;31056:5;31087:6;31081:13;31072:22;;31103:33;31130:5;31103:33;:::i;:::-;30999:143;;;;:::o;31148:351::-;31218:6;31267:2;31255:9;31246:7;31242:23;31238:32;31235:119;;;31273:79;;:::i;:::-;31235:119;31393:1;31418:64;31474:7;31465:6;31454:9;31450:22;31418:64;:::i;:::-;31408:74;;31364:128;31148:351;;;;:::o;31505:85::-;31550:7;31579:5;31568:16;;31505:85;;;:::o;31596:158::-;31654:9;31687:61;31705:42;31714:32;31740:5;31714:32;:::i;:::-;31705:42;:::i;:::-;31687:61;:::i;:::-;31674:74;;31596:158;;;:::o;31760:147::-;31855:45;31894:5;31855:45;:::i;:::-;31850:3;31843:58;31760:147;;:::o;31913:114::-;31980:6;32014:5;32008:12;31998:22;;31913:114;;;:::o;32033:184::-;32132:11;32166:6;32161:3;32154:19;32206:4;32201:3;32197:14;32182:29;;32033:184;;;;:::o;32223:132::-;32290:4;32313:3;32305:11;;32343:4;32338:3;32334:14;32326:22;;32223:132;;;:::o;32361:108::-;32438:24;32456:5;32438:24;:::i;:::-;32433:3;32426:37;32361:108;;:::o;32475:179::-;32544:10;32565:46;32607:3;32599:6;32565:46;:::i;:::-;32643:4;32638:3;32634:14;32620:28;;32475:179;;;;:::o;32660:113::-;32730:4;32762;32757:3;32753:14;32745:22;;32660:113;;;:::o;32809:732::-;32928:3;32957:54;33005:5;32957:54;:::i;:::-;33027:86;33106:6;33101:3;33027:86;:::i;:::-;33020:93;;33137:56;33187:5;33137:56;:::i;:::-;33216:7;33247:1;33232:284;33257:6;33254:1;33251:13;33232:284;;;33333:6;33327:13;33360:63;33419:3;33404:13;33360:63;:::i;:::-;33353:70;;33446:60;33499:6;33446:60;:::i;:::-;33436:70;;33292:224;33279:1;33276;33272:9;33267:14;;33232:284;;;33236:14;33532:3;33525:10;;32933:608;;;32809:732;;;;:::o;33547:831::-;33810:4;33848:3;33837:9;33833:19;33825:27;;33862:71;33930:1;33919:9;33915:17;33906:6;33862:71;:::i;:::-;33943:80;34019:2;34008:9;34004:18;33995:6;33943:80;:::i;:::-;34070:9;34064:4;34060:20;34055:2;34044:9;34040:18;34033:48;34098:108;34201:4;34192:6;34098:108;:::i;:::-;34090:116;;34216:72;34284:2;34273:9;34269:18;34260:6;34216:72;:::i;:::-;34298:73;34366:3;34355:9;34351:19;34342:6;34298:73;:::i;:::-;33547:831;;;;;;;;:::o;34384:180::-;34432:77;34429:1;34422:88;34529:4;34526:1;34519:15;34553:4;34550:1;34543:15;34570:185;34610:1;34627:20;34645:1;34627:20;:::i;:::-;34622:25;;34661:20;34679:1;34661:20;:::i;:::-;34656:25;;34700:1;34690:35;;34705:18;;:::i;:::-;34690:35;34747:1;34744;34740:9;34735:14;;34570:185;;;;:::o;34761:177::-;34901:29;34897:1;34889:6;34885:14;34878:53;34761:177;:::o;34944:366::-;35086:3;35107:67;35171:2;35166:3;35107:67;:::i;:::-;35100:74;;35183:93;35272:3;35183:93;:::i;:::-;35301:2;35296:3;35292:12;35285:19;;34944:366;;;:::o;35316:419::-;35482:4;35520:2;35509:9;35505:18;35497:26;;35569:9;35563:4;35559:20;35555:1;35544:9;35540:17;35533:47;35597:131;35723:4;35597:131;:::i;:::-;35589:139;;35316:419;;;:::o;35741:220::-;35881:34;35877:1;35869:6;35865:14;35858:58;35950:3;35945:2;35937:6;35933:15;35926:28;35741:220;:::o;35967:366::-;36109:3;36130:67;36194:2;36189:3;36130:67;:::i;:::-;36123:74;;36206:93;36295:3;36206:93;:::i;:::-;36324:2;36319:3;36315:12;36308:19;;35967:366;;;:::o;36339:419::-;36505:4;36543:2;36532:9;36528:18;36520:26;;36592:9;36586:4;36582:20;36578:1;36567:9;36563:17;36556:47;36620:131;36746:4;36620:131;:::i;:::-;36612:139;;36339:419;;;:::o

Swarm Source

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