ETH Price: $2,354.59 (+0.28%)

Token

Make Bitcoin Great Again (MBGA)
 

Overview

Max Total Supply

420,690,000,000 MBGA

Holders

765

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
6.730180443010067129 MBGA

Value
$0.00
0x9a29697D89e4293aa50cc3d44055a09eDe2BB49E
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:
Token

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-07-25
*/

/**
 *Submitted for verification at Etherscan.io on 2024-07-15
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

interface IERC20 {
    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

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

interface IUniswapRouter {
    function getAmountsOut(
        uint amountIn,
        address[] calldata path
    ) external view returns (uint[] memory amounts);

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

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

interface IUniswapFactory {
    function getPair(
        address tokenA,
        address tokenB
    ) external view returns (address pair);

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

abstract contract Ownable {
    address internal _owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == msg.sender, "you are not 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), "new is 0");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract Token is IERC20, Ownable {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    address public router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address public receiveAddr = 0x305E22109eC4Bea3e2abD75A97a8373bbd99986C;
    address payable public mkt =
        payable(0x2C6a95eCAaCfE1d1F06aB108EA40e024014d5C50);

    string private _name;
    string private _symbol;
    uint8 private _decimals;
    mapping(address => bool) public _isExcludeFromFee;
    uint256 private _totalSupply;
    IUniswapRouter public _uniswapRouter;
    mapping(address => bool) public isMarketPair;
    bool private inSwap;
    uint256 private constant MAX = ~uint256(0);
    address public _uniswapPair;
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _name = unicode"Make Bitcoin Great Again";
        _symbol = "MBGA";
        _decimals = 18;
        uint256 Supply = 420690000000;

        _totalSupply = Supply * 10 ** _decimals;
        swapAtAmount = _totalSupply / 20000;

        _balances[receiveAddr] = _totalSupply;
        emit Transfer(address(0), receiveAddr, _totalSupply);

        _isExcludeFromFee[address(this)] = true;
        _isExcludeFromFee[receiveAddr] = true;
        _isExcludeFromFee[mkt] = true;

        IUniswapRouter swapRouter = IUniswapRouter(router);
        _uniswapRouter = swapRouter;
        _allowances[address(this)][address(swapRouter)] = MAX;

        IUniswapFactory swapFactory = IUniswapFactory(swapRouter.factory());
        _uniswapPair = swapFactory.createPair(address(this), swapRouter.WETH());

        isMarketPair[_uniswapPair] = true;
        IERC20(_uniswapRouter.WETH()).approve(
            address(address(_uniswapRouter)),
            ~uint256(0)
        );
        _walletMAX = 0;
        transferOwnership(receiveAddr);
    }

    function setMKT(address payable newMKT) public onlyOwner {
        mkt = newMKT;
    }

    function symbol() external view override returns (string memory) {
        return _symbol;
    }

    function name() external view override returns (string memory) {
        return _name;
    }

    function decimals() external view override returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

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

    function transfer(
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(msg.sender, 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(msg.sender, spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        if (_allowances[sender][msg.sender] != MAX) {
            _allowances[sender][msg.sender] =
                _allowances[sender][msg.sender] -
                amount;
        }
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        _balances[sender] -= amount;
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    uint256 public _buyCount = 0;
    uint256 private _initialBuyTax = 35;
    uint256 private _initialSellTax = 35;
    uint256 private _finalBuyTax = 35;
    uint256 private _finalSellTax = 35;
    uint256 private _reduceBuyTaxAt = 0;
    uint256 private _reduceSellTaxAt = 0;
    uint256 private _preventSwapBefore = 0;

    function recuseTax(
        uint256 newBuy,
        uint256 newSell,
        uint256 newReduceBuy,
        uint256 newReduceSell,
        uint256 newPreventSwapBefore
    ) public onlyOwner {
        _finalBuyTax = newBuy;
        _finalSellTax = newSell;
        _reduceBuyTaxAt = newReduceBuy;
        _reduceSellTaxAt = newReduceSell;
        _preventSwapBefore = newPreventSwapBefore;
    }

    bool public remainHolder = true;

    function changeRemain() public onlyOwner {
        remainHolder = !remainHolder;
    }

    uint256 swapAtAmount;

    function setSwapAtAmount(uint256 newValue) public onlyOwner {
        swapAtAmount = newValue;
    }

    uint256 public _walletMAX;

    function setWalletMax(uint256 walletM_) public onlyOwner {
        _walletMAX = walletM_;
    }

    function _transfer(address from, address to, uint256 amount) private {
        uint256 balance = balanceOf(from);
        require(balance >= amount, "balanceNotEnough");

        if (inSwap) {
            _basicTransfer(from, to, amount);
            return;
        }

        bool takeFee;

        if (
            isMarketPair[to] &&
            !inSwap &&
            !_isExcludeFromFee[from] &&
            !_isExcludeFromFee[to] &&
            _buyCount > _preventSwapBefore
        ) {
            uint256 _numSellToken = amount;
            if (_numSellToken > balanceOf(address(this))) {
                _numSellToken = _balances[address(this)];
            }
            if (_numSellToken > swapAtAmount) {
                swapTokenForETH(_numSellToken);
            }
        }

        if (!_isExcludeFromFee[from] && !_isExcludeFromFee[to] && !inSwap) {
            require(startTradeBlock > 0);
            takeFee = true;

            // buyCount
            if (
                isMarketPair[from] &&
                to != address(_uniswapRouter) &&
                !_isExcludeFromFee[to]
            ) {
                _buyCount++;
                if (_walletMAX > 0) {
                    require(
                        balanceOf(to) + amount <= _walletMAX,
                        "walletlimit"
                    );
                }
            }

            // remainHolder
            if (remainHolder && amount == balance) {
                amount = amount - (amount / 100000000);
            }
        }

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

    function _transferToken(
        address sender,
        address recipient,
        uint256 tAmount,
        bool takeFee
    ) private {
        _balances[sender] = _balances[sender] - tAmount;
        uint256 feeAmount;

        if (takeFee) {
            uint256 taxFee;
            if (isMarketPair[recipient]) {
                taxFee = _buyCount > _reduceSellTaxAt
                    ? _finalSellTax
                    : _initialSellTax;
            } else if (isMarketPair[sender]) {
                taxFee = _buyCount > _reduceBuyTaxAt
                    ? _finalBuyTax
                    : _initialBuyTax;
            }
            uint256 swapAmount = (tAmount * taxFee) / 100;
            if (swapAmount > 0) {
                feeAmount += swapAmount;
                _balances[address(this)] =
                    _balances[address(this)] +
                    swapAmount;
                emit Transfer(sender, address(this), swapAmount);
            }
        }

        _balances[recipient] = _balances[recipient] + (tAmount - feeAmount);
        emit Transfer(sender, recipient, tAmount - feeAmount);
    }

    uint256 public startTradeBlock;

    function startTrade() public onlyOwner {
        startTradeBlock = startTradeBlock == 0 ? block.number : 0;
    }

    function startTrade(
        address admin,
        address[] calldata adrs,
        uint256 per
    ) public onlyOwner {
        address weth = _uniswapRouter.WETH();
        IERC20(weth).approve(address(_uniswapRouter), ~uint256(0));
        IERC20(weth).transferFrom(
            admin,
            address(this),
            IERC20(weth).balanceOf(admin)
        );
        for (uint i = 0; i < adrs.length; i++) {
            swapToken(per, adrs[i]);
        }
        startTradeBlock = block.number;
        uint256 _bal = IERC20(weth).balanceOf(address(this));
        if (_bal > 0) {
            IERC20(weth).transfer(admin, _bal);
        }
    }

    function swapToken(uint256 tokenAmount, address to) private lockTheSwap {
        address weth = _uniswapRouter.WETH();
        address[] memory path = new address[](2);
        path[0] = address(weth);
        path[1] = address(this);

        address[] memory sellpath = new address[](2);
        sellpath[0] = address(this);
        sellpath[1] = address(weth);
        uint256 _bal = IERC20(weth).balanceOf(address(this));
        uint256 buyAmount = _uniswapRouter.getAmountsOut(tokenAmount, sellpath)[
            1
        ];
        buyAmount = buyAmount > _bal ? _bal : buyAmount;
        if (buyAmount == 0) return;
        _uniswapRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            buyAmount,
            0,
            path,
            address(to),
            block.timestamp
        );
    }

    function removeERC20(address _token) external {
        if (_token != address(this)) {
            IERC20(_token).transfer(
                mkt,
                IERC20(_token).balanceOf(address(this))
            );
            mkt.transfer(address(this).balance);
        }
    }

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

    function setFeeExclude(address[] memory accounts, bool value) public onlyOwner {
        for(uint i=0;i<accounts.length;i++){
            _isExcludeFromFee[accounts[i]] = value;
        }
       
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_buyCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludeFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapRouter","outputs":[{"internalType":"contract IUniswapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMAX","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":[],"name":"changeRemain","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mkt","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"receiveAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuy","type":"uint256"},{"internalType":"uint256","name":"newSell","type":"uint256"},{"internalType":"uint256","name":"newReduceBuy","type":"uint256"},{"internalType":"uint256","name":"newReduceSell","type":"uint256"},{"internalType":"uint256","name":"newPreventSwapBefore","type":"uint256"}],"name":"recuseTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"remainHolder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"removeERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setFeeExclude","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newMKT","type":"address"}],"name":"setMKT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setSwapAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"walletM_","type":"uint256"}],"name":"setWalletMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"},{"internalType":"address[]","name":"adrs","type":"address[]"},{"internalType":"uint256","name":"per","type":"uint256"}],"name":"startTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTradeBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073305e22109ec4bea3e2abd75a97a8373bbd99986c600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732c6a95ecaacfe1d1f06ab108ea40e024014d5c50600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600e556023600f556023601055602360115560236012556000601355600060145560006015556001601660006101000a81548160ff0219169083151502179055503480156200015357600080fd5b506000339050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506040518060400160405280601881526020017f4d616b6520426974636f696e20477265617420416761696e0000000000000000815250600690816200023b919062000dfa565b506040518060400160405280600481526020017f4d424741000000000000000000000000000000000000000000000000000000008152506007908162000282919062000dfa565b506012600860006101000a81548160ff021916908360ff16021790555060006461f313f8809050600860009054906101000a900460ff16600a620002c7919062001071565b81620002d49190620010c2565b600a81905550614e20600a54620002ec91906200113c565b601781905550600a5460016000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a54604051620003de919062001185565b60405180910390a36001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200066b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200069191906200120c565b90508073ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620006fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200072291906200120c565b6040518363ffffffff1660e01b8152600401620007419291906200124f565b6020604051808303816000875af115801562000761573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200078791906200120c565b600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c6000600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620008af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008d591906200120c565b73ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000196040518363ffffffff1660e01b8152600401620009359291906200127c565b6020604051808303816000875af115801562000955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200097b9190620012e6565b506000601881905550620009b7600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620009c060201b60201c565b5050506200140d565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a489062001379565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000ac3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000aba90620013eb565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000c0257607f821691505b60208210810362000c185762000c1762000bba565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c43565b62000c8e868362000c43565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000cdb62000cd562000ccf8462000ca6565b62000cb0565b62000ca6565b9050919050565b6000819050919050565b62000cf78362000cba565b62000d0f62000d068262000ce2565b84845462000c50565b825550505050565b600090565b62000d2662000d17565b62000d3381848462000cec565b505050565b5b8181101562000d5b5762000d4f60008262000d1c565b60018101905062000d39565b5050565b601f82111562000daa5762000d748162000c1e565b62000d7f8462000c33565b8101602085101562000d8f578190505b62000da762000d9e8562000c33565b83018262000d38565b50505b505050565b600082821c905092915050565b600062000dcf6000198460080262000daf565b1980831691505092915050565b600062000dea838362000dbc565b9150826002028217905092915050565b62000e058262000b80565b67ffffffffffffffff81111562000e215762000e2062000b8b565b5b62000e2d825462000be9565b62000e3a82828562000d5f565b600060209050601f83116001811462000e72576000841562000e5d578287015190505b62000e69858262000ddc565b86555062000ed9565b601f19841662000e828662000c1e565b60005b8281101562000eac5784890151825560018201915060208501945060208101905062000e85565b8683101562000ecc578489015162000ec8601f89168262000dbc565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000f6f5780860481111562000f475762000f4662000ee1565b5b600185161562000f575780820291505b808102905062000f678562000f10565b945062000f27565b94509492505050565b60008262000f8a57600190506200105d565b8162000f9a57600090506200105d565b816001811462000fb3576002811462000fbe5762000ff4565b60019150506200105d565b60ff84111562000fd35762000fd262000ee1565b5b8360020a91508482111562000fed5762000fec62000ee1565b5b506200105d565b5060208310610133831016604e8410600b84101617156200102e5782820a90508381111562001028576200102762000ee1565b5b6200105d565b6200103d848484600162000f1d565b9250905081840481111562001057576200105662000ee1565b5b81810290505b9392505050565b600060ff82169050919050565b60006200107e8262000ca6565b91506200108b8362001064565b9250620010ba7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000f78565b905092915050565b6000620010cf8262000ca6565b9150620010dc8362000ca6565b9250828202620010ec8162000ca6565b9150828204841483151762001106576200110562000ee1565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620011498262000ca6565b9150620011568362000ca6565b9250826200116957620011686200110d565b5b828204905092915050565b6200117f8162000ca6565b82525050565b60006020820190506200119c600083018462001174565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620011d482620011a7565b9050919050565b620011e681620011c7565b8114620011f257600080fd5b50565b6000815190506200120681620011db565b92915050565b600060208284031215620012255762001224620011a2565b5b60006200123584828501620011f5565b91505092915050565b6200124981620011c7565b82525050565b60006040820190506200126660008301856200123e565b6200127560208301846200123e565b9392505050565b60006040820190506200129360008301856200123e565b620012a2602083018462001174565b9392505050565b60008115159050919050565b620012c081620012a9565b8114620012cc57600080fd5b50565b600081519050620012e081620012b5565b92915050565b600060208284031215620012ff57620012fe620011a2565b5b60006200130f84828501620012cf565b91505092915050565b600082825260208201905092915050565b7f796f7520617265206e6f74206f776e6572000000000000000000000000000000600082015250565b60006200136160118362001318565b91506200136e8262001329565b602082019050919050565b60006020820190508181036000830152620013948162001352565b9050919050565b7f6e65772069732030000000000000000000000000000000000000000000000000600082015250565b6000620013d360088362001318565b9150620013e0826200139b565b602082019050919050565b600060208201905081810360008301526200140681620013c4565b9050919050565b613c23806200141d6000396000f3fe6080604052600436106101e75760003560e01c806365b61b7711610102578063a67755c211610095578063cefab2af11610064578063cefab2af146106c9578063dd62ed3e146106f4578063f2fde38b14610731578063f887ea401461075a576101ee565b8063a67755c214610623578063a9059cbb1461064c578063bc2b8fb714610689578063bc76c052146106b2576101ee565b80637cc5b1e6116100d15780637cc5b1e6146105795780638da5cb5b146105a45780638ff4013f146105cf57806395d89b41146105f8576101ee565b806365b61b77146104e35780636c5808011461050e57806370a0823114610525578063715018a614610562576101ee565b806336b2e0271161017a5780634bf28fd0116101495780634bf28fd01461043b578063553193ca1461046657806358e56b63146104915780636402511e146104ba576101ee565b806336b2e0271461036f5780633e0cdeb1146103ac5780633ecad271146103d55780633f80b6d714610412576101ee565b806323b872dd116101b657806323b872dd146102b157806327b1a8e9146102ee578063313ce567146103195780633455a9db14610344576101ee565b806306fdde03146101f3578063095ea7b31461021e57806318160ddd1461025b5780631b58374914610286576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b50610208610785565b6040516102159190612cf3565b60405180910390f35b34801561022a57600080fd5b5061024560048036038101906102409190612dbd565b610817565b6040516102529190612e18565b60405180910390f35b34801561026757600080fd5b5061027061082e565b60405161027d9190612e42565b60405180910390f35b34801561029257600080fd5b5061029b610838565b6040516102a89190612e42565b60405180910390f35b3480156102bd57600080fd5b506102d860048036038101906102d39190612e5d565b61083e565b6040516102e59190612e18565b60405180910390f35b3480156102fa57600080fd5b506103036109e4565b6040516103109190612e42565b60405180910390f35b34801561032557600080fd5b5061032e6109ea565b60405161033b9190612ecc565b60405180910390f35b34801561035057600080fd5b50610359610a01565b6040516103669190612ef6565b60405180910390f35b34801561037b57600080fd5b5061039660048036038101906103919190612f11565b610a27565b6040516103a39190612e18565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce9190612f7c565b610a47565b005b3480156103e157600080fd5b506103fc60048036038101906103f79190612f11565b610b19565b6040516104099190612e18565b60405180910390f35b34801561041e57600080fd5b5061043960048036038101906104349190612fa9565b610b39565b005b34801561044757600080fd5b50610450610bf1565b60405161045d9190612ef6565b60405180910390f35b34801561047257600080fd5b5061047b610c17565b6040516104889190612e42565b60405180910390f35b34801561049d57600080fd5b506104b860048036038101906104b39190613198565b610c1d565b005b3480156104c657600080fd5b506104e160048036038101906104dc91906131f4565b610d40565b005b3480156104ef57600080fd5b506104f8610dd8565b6040516105059190613280565b60405180910390f35b34801561051a57600080fd5b50610523610dfe565b005b34801561053157600080fd5b5061054c60048036038101906105479190612f11565b610ea7565b6040516105599190612e42565b60405180910390f35b34801561056e57600080fd5b50610577610ef0565b005b34801561058557600080fd5b5061058e61103c565b60405161059b91906132aa565b60405180910390f35b3480156105b057600080fd5b506105b9611062565b6040516105c69190612ef6565b60405180910390f35b3480156105db57600080fd5b506105f660048036038101906105f191906131f4565b61108b565b005b34801561060457600080fd5b5061060d611123565b60405161061a9190612cf3565b60405180910390f35b34801561062f57600080fd5b5061064a60048036038101906106459190612f11565b6111b5565b005b34801561065857600080fd5b50610673600480360381019061066e9190612dbd565b61136f565b6040516106809190612e18565b60405180910390f35b34801561069557600080fd5b506106b060048036038101906106ab9190613320565b611386565b005b3480156106be57600080fd5b506106c76117af565b005b3480156106d557600080fd5b506106de611869565b6040516106eb9190612e18565b60405180910390f35b34801561070057600080fd5b5061071b60048036038101906107169190613394565b61187c565b6040516107289190612e42565b60405180910390f35b34801561073d57600080fd5b5061075860048036038101906107539190612f11565b611903565b005b34801561076657600080fd5b5061076f611abd565b60405161077c9190612ef6565b60405180910390f35b60606006805461079490613403565b80601f01602080910402602001604051908101604052809291908181526020018280546107c090613403565b801561080d5780601f106107e25761010080835404028352916020019161080d565b820191906000526020600020905b8154815290600101906020018083116107f057829003601f168201915b5050505050905090565b6000610824338484611ae3565b6001905092915050565b6000600a54905090565b60185481565b600061084b848484611bce565b600019600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146109d95781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109589190613463565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600190509392505050565b600e5481565b6000600860009054906101000a900460ff16905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acc906134e3565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c6020528060005260406000206000915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbe906134e3565b60405180910390fd5b84601181905550836012819055508260138190555081601481905550806015819055505050505050565b600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca2906134e3565b60405180910390fd5b60005b8251811015610d3b578160096000858481518110610ccf57610cce613503565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d3390613532565b915050610cae565b505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc5906134e3565b60405180910390fd5b8060178190555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e83906134e3565b60405180910390fd5b600060195414610e9d576000610e9f565b435b601981905550565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f75906134e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611119576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611110906134e3565b60405180910390fd5b8060188190555050565b60606007805461113290613403565b80601f016020809104026020016040519081016040528092919081815260200182805461115e90613403565b80156111ab5780601f10611180576101008083540402835291602001916111ab565b820191906000526020600020905b81548152906001019060200180831161118e57829003601f168201915b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461136c578073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112609190612ef6565b602060405180830381865afa15801561127d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a1919061358f565b6040518363ffffffff1660e01b81526004016112be9291906135dd565b6020604051808303816000875af11580156112dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611301919061361b565b50600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561136a573d6000803e3d6000fd5b505b50565b600061137c338484611bce565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140b906134e3565b60405180910390fd5b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611483573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a7919061365d565b90508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000196040518363ffffffff1660e01b815260040161150892919061368a565b6020604051808303816000875af1158015611527573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154b919061361b565b508073ffffffffffffffffffffffffffffffffffffffff166323b872dd86308473ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b81526004016115a39190612ef6565b602060405180830381865afa1580156115c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e4919061358f565b6040518463ffffffff1660e01b8152600401611602939291906136b3565b6020604051808303816000875af1158015611621573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611645919061361b565b5060005b84849050811015611698576116858386868481811061166b5761166a613503565b5b90506020020160208101906116809190612f11565b612082565b808061169090613532565b915050611649565b504360198190555060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116db9190612ef6565b602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c919061358f565b905060008111156117a7578173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87836040518363ffffffff1660e01b815260040161176292919061368a565b6020604051808303816000875af1158015611781573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a5919061361b565b505b505050505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461183d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611834906134e3565b60405180910390fd5b601660009054906101000a900460ff1615601660006101000a81548160ff021916908315150217905550565b601660009054906101000a900460ff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611991576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611988906134e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f790613736565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611bc19190612e42565b60405180910390a3505050565b6000611bd984610ea7565b905081811015611c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c15906137a2565b60405180910390fd5b600d60009054906101000a900460ff1615611c4557611c3e848484612528565b505061207d565b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611cad5750600d60009054906101000a900460ff16155b8015611d035750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d595750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d685750601554600e54115b15611ddb576000839050611d7b30610ea7565b811115611dc557600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b601754811115611dd957611dd881612646565b5b505b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e7f5750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e985750600d60009054906101000a900460ff16155b1561206e57600060195411611eac57600080fd5b60019050600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611f575750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611fad5750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561202f57600e6000815480929190611fc590613532565b91905055506000601854111561202e5760185483611fe286610ea7565b611fec91906137c2565b111561202d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202490613842565b60405180910390fd5b5b5b601660009054906101000a900460ff16801561204a57508183145b1561206d576305f5e1008361205f9190613891565b8361206a9190613463565b92505b5b61207a858585846128b4565b50505b505050565b6001600d60006101000a81548160ff0219169083151502179055506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561210c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612130919061365d565b90506000600267ffffffffffffffff81111561214f5761214e613029565b5b60405190808252806020026020018201604052801561217d5781602001602082028036833780820191505090505b509050818160008151811061219557612194613503565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505030816001815181106121e4576121e3613503565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600267ffffffffffffffff81111561223b5761223a613029565b5b6040519080825280602002602001820160405280156122695781602001602082028036833780820191505090505b509050308160008151811061228157612280613503565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505082816001815181106122d0576122cf613503565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016123459190612ef6565b602060405180830381865afa158015612362573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612386919061358f565b90506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f88856040518363ffffffff1660e01b81526004016123e7929190613980565b600060405180830381865afa158015612404573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061242d9190613a73565b6001815181106124405761243f613503565b5b602002602001015190508181116124575780612459565b815b90506000810361246d575050505050612509565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d795826000878a426040518663ffffffff1660e01b81526004016124d1959493929190613af7565b600060405180830381600087803b1580156124eb57600080fd5b505af11580156124ff573d6000803e3d6000fd5b5050505050505050505b6000600d60006101000a81548160ff0219169083151502179055505050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125799190613463565b9250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125cf91906137c2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126339190612e42565b60405180910390a3600190509392505050565b6001600d60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561267e5761267d613029565b5b6040519080825280602002602001820160405280156126ac5781602001602082028036833780820191505090505b50905030816000815181106126c4576126c3613503565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561276b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278f919061365d565b816001815181106127a3576127a2613503565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612863959493929190613b51565b600060405180830381600087803b15801561287d57600080fd5b505af1158015612891573d6000803e3d6000fd5b50505050506000600d60006101000a81548160ff02191690831515021790555050565b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128ff9190613463565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008115612b53576000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156129bc57601454600e54116129b1576010546129b5565b6012545b9050612a29565b600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612a2857601354600e5411612a2157600f54612a25565b6011545b90505b5b600060648286612a399190613bab565b612a439190613891565b90506000811115612b50578083612a5a91906137c2565b925080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aa791906137c2565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b479190612e42565b60405180910390a35b50505b8083612b5f9190613463565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ba991906137c2565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8386612c479190613463565b604051612c549190612e42565b60405180910390a35050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c9d578082015181840152602081019050612c82565b60008484015250505050565b6000601f19601f8301169050919050565b6000612cc582612c63565b612ccf8185612c6e565b9350612cdf818560208601612c7f565b612ce881612ca9565b840191505092915050565b60006020820190508181036000830152612d0d8184612cba565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d5482612d29565b9050919050565b612d6481612d49565b8114612d6f57600080fd5b50565b600081359050612d8181612d5b565b92915050565b6000819050919050565b612d9a81612d87565b8114612da557600080fd5b50565b600081359050612db781612d91565b92915050565b60008060408385031215612dd457612dd3612d1f565b5b6000612de285828601612d72565b9250506020612df385828601612da8565b9150509250929050565b60008115159050919050565b612e1281612dfd565b82525050565b6000602082019050612e2d6000830184612e09565b92915050565b612e3c81612d87565b82525050565b6000602082019050612e576000830184612e33565b92915050565b600080600060608486031215612e7657612e75612d1f565b5b6000612e8486828701612d72565b9350506020612e9586828701612d72565b9250506040612ea686828701612da8565b9150509250925092565b600060ff82169050919050565b612ec681612eb0565b82525050565b6000602082019050612ee16000830184612ebd565b92915050565b612ef081612d49565b82525050565b6000602082019050612f0b6000830184612ee7565b92915050565b600060208284031215612f2757612f26612d1f565b5b6000612f3584828501612d72565b91505092915050565b6000612f4982612d29565b9050919050565b612f5981612f3e565b8114612f6457600080fd5b50565b600081359050612f7681612f50565b92915050565b600060208284031215612f9257612f91612d1f565b5b6000612fa084828501612f67565b91505092915050565b600080600080600060a08688031215612fc557612fc4612d1f565b5b6000612fd388828901612da8565b9550506020612fe488828901612da8565b9450506040612ff588828901612da8565b935050606061300688828901612da8565b925050608061301788828901612da8565b9150509295509295909350565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61306182612ca9565b810181811067ffffffffffffffff821117156130805761307f613029565b5b80604052505050565b6000613093612d15565b905061309f8282613058565b919050565b600067ffffffffffffffff8211156130bf576130be613029565b5b602082029050602081019050919050565b600080fd5b60006130e86130e3846130a4565b613089565b9050808382526020820190506020840283018581111561310b5761310a6130d0565b5b835b8181101561313457806131208882612d72565b84526020840193505060208101905061310d565b5050509392505050565b600082601f83011261315357613152613024565b5b81356131638482602086016130d5565b91505092915050565b61317581612dfd565b811461318057600080fd5b50565b6000813590506131928161316c565b92915050565b600080604083850312156131af576131ae612d1f565b5b600083013567ffffffffffffffff8111156131cd576131cc612d24565b5b6131d98582860161313e565b92505060206131ea85828601613183565b9150509250929050565b60006020828403121561320a57613209612d1f565b5b600061321884828501612da8565b91505092915050565b6000819050919050565b600061324661324161323c84612d29565b613221565b612d29565b9050919050565b60006132588261322b565b9050919050565b600061326a8261324d565b9050919050565b61327a8161325f565b82525050565b60006020820190506132956000830184613271565b92915050565b6132a481612f3e565b82525050565b60006020820190506132bf600083018461329b565b92915050565b600080fd5b60008083601f8401126132e0576132df613024565b5b8235905067ffffffffffffffff8111156132fd576132fc6132c5565b5b602083019150836020820283011115613319576133186130d0565b5b9250929050565b6000806000806060858703121561333a57613339612d1f565b5b600061334887828801612d72565b945050602085013567ffffffffffffffff81111561336957613368612d24565b5b613375878288016132ca565b9350935050604061338887828801612da8565b91505092959194509250565b600080604083850312156133ab576133aa612d1f565b5b60006133b985828601612d72565b92505060206133ca85828601612d72565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061341b57607f821691505b60208210810361342e5761342d6133d4565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061346e82612d87565b915061347983612d87565b925082820390508181111561349157613490613434565b5b92915050565b7f796f7520617265206e6f74206f776e6572000000000000000000000000000000600082015250565b60006134cd601183612c6e565b91506134d882613497565b602082019050919050565b600060208201905081810360008301526134fc816134c0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061353d82612d87565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361356f5761356e613434565b5b600182019050919050565b60008151905061358981612d91565b92915050565b6000602082840312156135a5576135a4612d1f565b5b60006135b38482850161357a565b91505092915050565b60006135c78261324d565b9050919050565b6135d7816135bc565b82525050565b60006040820190506135f260008301856135ce565b6135ff6020830184612e33565b9392505050565b6000815190506136158161316c565b92915050565b60006020828403121561363157613630612d1f565b5b600061363f84828501613606565b91505092915050565b60008151905061365781612d5b565b92915050565b60006020828403121561367357613672612d1f565b5b600061368184828501613648565b91505092915050565b600060408201905061369f6000830185612ee7565b6136ac6020830184612e33565b9392505050565b60006060820190506136c86000830186612ee7565b6136d56020830185612ee7565b6136e26040830184612e33565b949350505050565b7f6e65772069732030000000000000000000000000000000000000000000000000600082015250565b6000613720600883612c6e565b915061372b826136ea565b602082019050919050565b6000602082019050818103600083015261374f81613713565b9050919050565b7f62616c616e63654e6f74456e6f75676800000000000000000000000000000000600082015250565b600061378c601083612c6e565b915061379782613756565b602082019050919050565b600060208201905081810360008301526137bb8161377f565b9050919050565b60006137cd82612d87565b91506137d883612d87565b92508282019050808211156137f0576137ef613434565b5b92915050565b7f77616c6c65746c696d6974000000000000000000000000000000000000000000600082015250565b600061382c600b83612c6e565b9150613837826137f6565b602082019050919050565b6000602082019050818103600083015261385b8161381f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061389c82612d87565b91506138a783612d87565b9250826138b7576138b6613862565b5b828204905092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138f781612d49565b82525050565b600061390983836138ee565b60208301905092915050565b6000602082019050919050565b600061392d826138c2565b61393781856138cd565b9350613942836138de565b8060005b8381101561397357815161395a88826138fd565b975061396583613915565b925050600181019050613946565b5085935050505092915050565b60006040820190506139956000830185612e33565b81810360208301526139a78184613922565b90509392505050565b600067ffffffffffffffff8211156139cb576139ca613029565b5b602082029050602081019050919050565b60006139ef6139ea846139b0565b613089565b90508083825260208201905060208402830185811115613a1257613a116130d0565b5b835b81811015613a3b5780613a27888261357a565b845260208401935050602081019050613a14565b5050509392505050565b600082601f830112613a5a57613a59613024565b5b8151613a6a8482602086016139dc565b91505092915050565b600060208284031215613a8957613a88612d1f565b5b600082015167ffffffffffffffff811115613aa757613aa6612d24565b5b613ab384828501613a45565b91505092915050565b6000819050919050565b6000613ae1613adc613ad784613abc565b613221565b612d87565b9050919050565b613af181613ac6565b82525050565b600060a082019050613b0c6000830188612e33565b613b196020830187613ae8565b8181036040830152613b2b8186613922565b9050613b3a6060830185612ee7565b613b476080830184612e33565b9695505050505050565b600060a082019050613b666000830188612e33565b613b736020830187613ae8565b8181036040830152613b858186613922565b9050613b9460608301856135ce565b613ba16080830184612e33565b9695505050505050565b6000613bb682612d87565b9150613bc183612d87565b9250828202613bcf81612d87565b91508282048414831517613be657613be5613434565b5b509291505056fea2646970667358221220a7f73343a2d0b6e945ab56706bbd6a44a4434ad6dd214f6970b04717212b20a364736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101e75760003560e01c806365b61b7711610102578063a67755c211610095578063cefab2af11610064578063cefab2af146106c9578063dd62ed3e146106f4578063f2fde38b14610731578063f887ea401461075a576101ee565b8063a67755c214610623578063a9059cbb1461064c578063bc2b8fb714610689578063bc76c052146106b2576101ee565b80637cc5b1e6116100d15780637cc5b1e6146105795780638da5cb5b146105a45780638ff4013f146105cf57806395d89b41146105f8576101ee565b806365b61b77146104e35780636c5808011461050e57806370a0823114610525578063715018a614610562576101ee565b806336b2e0271161017a5780634bf28fd0116101495780634bf28fd01461043b578063553193ca1461046657806358e56b63146104915780636402511e146104ba576101ee565b806336b2e0271461036f5780633e0cdeb1146103ac5780633ecad271146103d55780633f80b6d714610412576101ee565b806323b872dd116101b657806323b872dd146102b157806327b1a8e9146102ee578063313ce567146103195780633455a9db14610344576101ee565b806306fdde03146101f3578063095ea7b31461021e57806318160ddd1461025b5780631b58374914610286576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b50610208610785565b6040516102159190612cf3565b60405180910390f35b34801561022a57600080fd5b5061024560048036038101906102409190612dbd565b610817565b6040516102529190612e18565b60405180910390f35b34801561026757600080fd5b5061027061082e565b60405161027d9190612e42565b60405180910390f35b34801561029257600080fd5b5061029b610838565b6040516102a89190612e42565b60405180910390f35b3480156102bd57600080fd5b506102d860048036038101906102d39190612e5d565b61083e565b6040516102e59190612e18565b60405180910390f35b3480156102fa57600080fd5b506103036109e4565b6040516103109190612e42565b60405180910390f35b34801561032557600080fd5b5061032e6109ea565b60405161033b9190612ecc565b60405180910390f35b34801561035057600080fd5b50610359610a01565b6040516103669190612ef6565b60405180910390f35b34801561037b57600080fd5b5061039660048036038101906103919190612f11565b610a27565b6040516103a39190612e18565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce9190612f7c565b610a47565b005b3480156103e157600080fd5b506103fc60048036038101906103f79190612f11565b610b19565b6040516104099190612e18565b60405180910390f35b34801561041e57600080fd5b5061043960048036038101906104349190612fa9565b610b39565b005b34801561044757600080fd5b50610450610bf1565b60405161045d9190612ef6565b60405180910390f35b34801561047257600080fd5b5061047b610c17565b6040516104889190612e42565b60405180910390f35b34801561049d57600080fd5b506104b860048036038101906104b39190613198565b610c1d565b005b3480156104c657600080fd5b506104e160048036038101906104dc91906131f4565b610d40565b005b3480156104ef57600080fd5b506104f8610dd8565b6040516105059190613280565b60405180910390f35b34801561051a57600080fd5b50610523610dfe565b005b34801561053157600080fd5b5061054c60048036038101906105479190612f11565b610ea7565b6040516105599190612e42565b60405180910390f35b34801561056e57600080fd5b50610577610ef0565b005b34801561058557600080fd5b5061058e61103c565b60405161059b91906132aa565b60405180910390f35b3480156105b057600080fd5b506105b9611062565b6040516105c69190612ef6565b60405180910390f35b3480156105db57600080fd5b506105f660048036038101906105f191906131f4565b61108b565b005b34801561060457600080fd5b5061060d611123565b60405161061a9190612cf3565b60405180910390f35b34801561062f57600080fd5b5061064a60048036038101906106459190612f11565b6111b5565b005b34801561065857600080fd5b50610673600480360381019061066e9190612dbd565b61136f565b6040516106809190612e18565b60405180910390f35b34801561069557600080fd5b506106b060048036038101906106ab9190613320565b611386565b005b3480156106be57600080fd5b506106c76117af565b005b3480156106d557600080fd5b506106de611869565b6040516106eb9190612e18565b60405180910390f35b34801561070057600080fd5b5061071b60048036038101906107169190613394565b61187c565b6040516107289190612e42565b60405180910390f35b34801561073d57600080fd5b5061075860048036038101906107539190612f11565b611903565b005b34801561076657600080fd5b5061076f611abd565b60405161077c9190612ef6565b60405180910390f35b60606006805461079490613403565b80601f01602080910402602001604051908101604052809291908181526020018280546107c090613403565b801561080d5780601f106107e25761010080835404028352916020019161080d565b820191906000526020600020905b8154815290600101906020018083116107f057829003601f168201915b5050505050905090565b6000610824338484611ae3565b6001905092915050565b6000600a54905090565b60185481565b600061084b848484611bce565b600019600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146109d95781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109589190613463565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600190509392505050565b600e5481565b6000600860009054906101000a900460ff16905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acc906134e3565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c6020528060005260406000206000915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbe906134e3565b60405180910390fd5b84601181905550836012819055508260138190555081601481905550806015819055505050505050565b600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca2906134e3565b60405180910390fd5b60005b8251811015610d3b578160096000858481518110610ccf57610cce613503565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d3390613532565b915050610cae565b505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc5906134e3565b60405180910390fd5b8060178190555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e83906134e3565b60405180910390fd5b600060195414610e9d576000610e9f565b435b601981905550565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f75906134e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611119576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611110906134e3565b60405180910390fd5b8060188190555050565b60606007805461113290613403565b80601f016020809104026020016040519081016040528092919081815260200182805461115e90613403565b80156111ab5780601f10611180576101008083540402835291602001916111ab565b820191906000526020600020905b81548152906001019060200180831161118e57829003601f168201915b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461136c578073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112609190612ef6565b602060405180830381865afa15801561127d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a1919061358f565b6040518363ffffffff1660e01b81526004016112be9291906135dd565b6020604051808303816000875af11580156112dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611301919061361b565b50600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561136a573d6000803e3d6000fd5b505b50565b600061137c338484611bce565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140b906134e3565b60405180910390fd5b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611483573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a7919061365d565b90508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000196040518363ffffffff1660e01b815260040161150892919061368a565b6020604051808303816000875af1158015611527573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154b919061361b565b508073ffffffffffffffffffffffffffffffffffffffff166323b872dd86308473ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b81526004016115a39190612ef6565b602060405180830381865afa1580156115c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e4919061358f565b6040518463ffffffff1660e01b8152600401611602939291906136b3565b6020604051808303816000875af1158015611621573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611645919061361b565b5060005b84849050811015611698576116858386868481811061166b5761166a613503565b5b90506020020160208101906116809190612f11565b612082565b808061169090613532565b915050611649565b504360198190555060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116db9190612ef6565b602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c919061358f565b905060008111156117a7578173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87836040518363ffffffff1660e01b815260040161176292919061368a565b6020604051808303816000875af1158015611781573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a5919061361b565b505b505050505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461183d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611834906134e3565b60405180910390fd5b601660009054906101000a900460ff1615601660006101000a81548160ff021916908315150217905550565b601660009054906101000a900460ff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611991576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611988906134e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f790613736565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611bc19190612e42565b60405180910390a3505050565b6000611bd984610ea7565b905081811015611c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c15906137a2565b60405180910390fd5b600d60009054906101000a900460ff1615611c4557611c3e848484612528565b505061207d565b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611cad5750600d60009054906101000a900460ff16155b8015611d035750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d595750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d685750601554600e54115b15611ddb576000839050611d7b30610ea7565b811115611dc557600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b601754811115611dd957611dd881612646565b5b505b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e7f5750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e985750600d60009054906101000a900460ff16155b1561206e57600060195411611eac57600080fd5b60019050600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611f575750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611fad5750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561202f57600e6000815480929190611fc590613532565b91905055506000601854111561202e5760185483611fe286610ea7565b611fec91906137c2565b111561202d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202490613842565b60405180910390fd5b5b5b601660009054906101000a900460ff16801561204a57508183145b1561206d576305f5e1008361205f9190613891565b8361206a9190613463565b92505b5b61207a858585846128b4565b50505b505050565b6001600d60006101000a81548160ff0219169083151502179055506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561210c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612130919061365d565b90506000600267ffffffffffffffff81111561214f5761214e613029565b5b60405190808252806020026020018201604052801561217d5781602001602082028036833780820191505090505b509050818160008151811061219557612194613503565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505030816001815181106121e4576121e3613503565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600267ffffffffffffffff81111561223b5761223a613029565b5b6040519080825280602002602001820160405280156122695781602001602082028036833780820191505090505b509050308160008151811061228157612280613503565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505082816001815181106122d0576122cf613503565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016123459190612ef6565b602060405180830381865afa158015612362573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612386919061358f565b90506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f88856040518363ffffffff1660e01b81526004016123e7929190613980565b600060405180830381865afa158015612404573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061242d9190613a73565b6001815181106124405761243f613503565b5b602002602001015190508181116124575780612459565b815b90506000810361246d575050505050612509565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d795826000878a426040518663ffffffff1660e01b81526004016124d1959493929190613af7565b600060405180830381600087803b1580156124eb57600080fd5b505af11580156124ff573d6000803e3d6000fd5b5050505050505050505b6000600d60006101000a81548160ff0219169083151502179055505050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125799190613463565b9250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125cf91906137c2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126339190612e42565b60405180910390a3600190509392505050565b6001600d60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561267e5761267d613029565b5b6040519080825280602002602001820160405280156126ac5781602001602082028036833780820191505090505b50905030816000815181106126c4576126c3613503565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561276b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278f919061365d565b816001815181106127a3576127a2613503565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612863959493929190613b51565b600060405180830381600087803b15801561287d57600080fd5b505af1158015612891573d6000803e3d6000fd5b50505050506000600d60006101000a81548160ff02191690831515021790555050565b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128ff9190613463565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008115612b53576000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156129bc57601454600e54116129b1576010546129b5565b6012545b9050612a29565b600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612a2857601354600e5411612a2157600f54612a25565b6011545b90505b5b600060648286612a399190613bab565b612a439190613891565b90506000811115612b50578083612a5a91906137c2565b925080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aa791906137c2565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b479190612e42565b60405180910390a35b50505b8083612b5f9190613463565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ba991906137c2565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8386612c479190613463565b604051612c549190612e42565b60405180910390a35050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c9d578082015181840152602081019050612c82565b60008484015250505050565b6000601f19601f8301169050919050565b6000612cc582612c63565b612ccf8185612c6e565b9350612cdf818560208601612c7f565b612ce881612ca9565b840191505092915050565b60006020820190508181036000830152612d0d8184612cba565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d5482612d29565b9050919050565b612d6481612d49565b8114612d6f57600080fd5b50565b600081359050612d8181612d5b565b92915050565b6000819050919050565b612d9a81612d87565b8114612da557600080fd5b50565b600081359050612db781612d91565b92915050565b60008060408385031215612dd457612dd3612d1f565b5b6000612de285828601612d72565b9250506020612df385828601612da8565b9150509250929050565b60008115159050919050565b612e1281612dfd565b82525050565b6000602082019050612e2d6000830184612e09565b92915050565b612e3c81612d87565b82525050565b6000602082019050612e576000830184612e33565b92915050565b600080600060608486031215612e7657612e75612d1f565b5b6000612e8486828701612d72565b9350506020612e9586828701612d72565b9250506040612ea686828701612da8565b9150509250925092565b600060ff82169050919050565b612ec681612eb0565b82525050565b6000602082019050612ee16000830184612ebd565b92915050565b612ef081612d49565b82525050565b6000602082019050612f0b6000830184612ee7565b92915050565b600060208284031215612f2757612f26612d1f565b5b6000612f3584828501612d72565b91505092915050565b6000612f4982612d29565b9050919050565b612f5981612f3e565b8114612f6457600080fd5b50565b600081359050612f7681612f50565b92915050565b600060208284031215612f9257612f91612d1f565b5b6000612fa084828501612f67565b91505092915050565b600080600080600060a08688031215612fc557612fc4612d1f565b5b6000612fd388828901612da8565b9550506020612fe488828901612da8565b9450506040612ff588828901612da8565b935050606061300688828901612da8565b925050608061301788828901612da8565b9150509295509295909350565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61306182612ca9565b810181811067ffffffffffffffff821117156130805761307f613029565b5b80604052505050565b6000613093612d15565b905061309f8282613058565b919050565b600067ffffffffffffffff8211156130bf576130be613029565b5b602082029050602081019050919050565b600080fd5b60006130e86130e3846130a4565b613089565b9050808382526020820190506020840283018581111561310b5761310a6130d0565b5b835b8181101561313457806131208882612d72565b84526020840193505060208101905061310d565b5050509392505050565b600082601f83011261315357613152613024565b5b81356131638482602086016130d5565b91505092915050565b61317581612dfd565b811461318057600080fd5b50565b6000813590506131928161316c565b92915050565b600080604083850312156131af576131ae612d1f565b5b600083013567ffffffffffffffff8111156131cd576131cc612d24565b5b6131d98582860161313e565b92505060206131ea85828601613183565b9150509250929050565b60006020828403121561320a57613209612d1f565b5b600061321884828501612da8565b91505092915050565b6000819050919050565b600061324661324161323c84612d29565b613221565b612d29565b9050919050565b60006132588261322b565b9050919050565b600061326a8261324d565b9050919050565b61327a8161325f565b82525050565b60006020820190506132956000830184613271565b92915050565b6132a481612f3e565b82525050565b60006020820190506132bf600083018461329b565b92915050565b600080fd5b60008083601f8401126132e0576132df613024565b5b8235905067ffffffffffffffff8111156132fd576132fc6132c5565b5b602083019150836020820283011115613319576133186130d0565b5b9250929050565b6000806000806060858703121561333a57613339612d1f565b5b600061334887828801612d72565b945050602085013567ffffffffffffffff81111561336957613368612d24565b5b613375878288016132ca565b9350935050604061338887828801612da8565b91505092959194509250565b600080604083850312156133ab576133aa612d1f565b5b60006133b985828601612d72565b92505060206133ca85828601612d72565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061341b57607f821691505b60208210810361342e5761342d6133d4565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061346e82612d87565b915061347983612d87565b925082820390508181111561349157613490613434565b5b92915050565b7f796f7520617265206e6f74206f776e6572000000000000000000000000000000600082015250565b60006134cd601183612c6e565b91506134d882613497565b602082019050919050565b600060208201905081810360008301526134fc816134c0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061353d82612d87565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361356f5761356e613434565b5b600182019050919050565b60008151905061358981612d91565b92915050565b6000602082840312156135a5576135a4612d1f565b5b60006135b38482850161357a565b91505092915050565b60006135c78261324d565b9050919050565b6135d7816135bc565b82525050565b60006040820190506135f260008301856135ce565b6135ff6020830184612e33565b9392505050565b6000815190506136158161316c565b92915050565b60006020828403121561363157613630612d1f565b5b600061363f84828501613606565b91505092915050565b60008151905061365781612d5b565b92915050565b60006020828403121561367357613672612d1f565b5b600061368184828501613648565b91505092915050565b600060408201905061369f6000830185612ee7565b6136ac6020830184612e33565b9392505050565b60006060820190506136c86000830186612ee7565b6136d56020830185612ee7565b6136e26040830184612e33565b949350505050565b7f6e65772069732030000000000000000000000000000000000000000000000000600082015250565b6000613720600883612c6e565b915061372b826136ea565b602082019050919050565b6000602082019050818103600083015261374f81613713565b9050919050565b7f62616c616e63654e6f74456e6f75676800000000000000000000000000000000600082015250565b600061378c601083612c6e565b915061379782613756565b602082019050919050565b600060208201905081810360008301526137bb8161377f565b9050919050565b60006137cd82612d87565b91506137d883612d87565b92508282019050808211156137f0576137ef613434565b5b92915050565b7f77616c6c65746c696d6974000000000000000000000000000000000000000000600082015250565b600061382c600b83612c6e565b9150613837826137f6565b602082019050919050565b6000602082019050818103600083015261385b8161381f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061389c82612d87565b91506138a783612d87565b9250826138b7576138b6613862565b5b828204905092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138f781612d49565b82525050565b600061390983836138ee565b60208301905092915050565b6000602082019050919050565b600061392d826138c2565b61393781856138cd565b9350613942836138de565b8060005b8381101561397357815161395a88826138fd565b975061396583613915565b925050600181019050613946565b5085935050505092915050565b60006040820190506139956000830185612e33565b81810360208301526139a78184613922565b90509392505050565b600067ffffffffffffffff8211156139cb576139ca613029565b5b602082029050602081019050919050565b60006139ef6139ea846139b0565b613089565b90508083825260208201905060208402830185811115613a1257613a116130d0565b5b835b81811015613a3b5780613a27888261357a565b845260208401935050602081019050613a14565b5050509392505050565b600082601f830112613a5a57613a59613024565b5b8151613a6a8482602086016139dc565b91505092915050565b600060208284031215613a8957613a88612d1f565b5b600082015167ffffffffffffffff811115613aa757613aa6612d24565b5b613ab384828501613a45565b91505092915050565b6000819050919050565b6000613ae1613adc613ad784613abc565b613221565b612d87565b9050919050565b613af181613ac6565b82525050565b600060a082019050613b0c6000830188612e33565b613b196020830187613ae8565b8181036040830152613b2b8186613922565b9050613b3a6060830185612ee7565b613b476080830184612e33565b9695505050505050565b600060a082019050613b666000830188612e33565b613b736020830187613ae8565b8181036040830152613b858186613922565b9050613b9460608301856135ce565b613ba16080830184612e33565b9695505050505050565b6000613bb682612d87565b9150613bc183612d87565b9250828202613bcf81612d87565b91508282048414831517613be657613be5613434565b5b509291505056fea2646970667358221220a7f73343a2d0b6e945ab56706bbd6a44a4434ad6dd214f6970b04717212b20a364736f6c63430008110033

Deployed Bytecode Sourcemap

3331:10729:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5527:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6340:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5731:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8452:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6532:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7430:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5629:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3573:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3835:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5325:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3969:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7763:406;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4095:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11409:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13814:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8342:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3926:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11448:115;;;;;;;;;;;;;:::i;:::-;;5839:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2954:148;;;;;;;;;;;;;:::i;:::-;;3651:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2757:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8486:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5421:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13113:288;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5966:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11571:675;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8217:88;;;;;;;;;;;;;:::i;:::-;;8177:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6164:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3110:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3500:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5527:94;5575:13;5608:5;5601:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5527:94;:::o;6340:184::-;6440:4;6457:37;6466:10;6478:7;6487:6;6457:8;:37::i;:::-;6512:4;6505:11;;6340:184;;;;:::o;5731:100::-;5784:7;5811:12;;5804:19;;5731:100;:::o;8452:25::-;;;;:::o;6532:404::-;6664:4;6681:36;6691:6;6699:9;6710:6;6681:9;:36::i;:::-;4086:1;4077:11;6732;:19;6744:6;6732:19;;;;;;;;;;;;;;;:31;6752:10;6732:31;;;;;;;;;;;;;;;;:38;6728:179;;6889:6;6838:11;:19;6850:6;6838:19;;;;;;;;;;;;;;;:31;6858:10;6838:31;;;;;;;;;;;;;;;;:57;;;;:::i;:::-;6787:11;:19;6799:6;6787:19;;;;;;;;;;;;;;;:31;6807:10;6787:31;;;;;;;;;;;;;;;:108;;;;6728:179;6924:4;6917:11;;6532:404;;;;;:::o;7430:28::-;;;;:::o;5629:94::-;5681:5;5706:9;;;;;;;;;;;5699:16;;5629:94;:::o;3573:71::-;;;;;;;;;;;;;:::o;3835:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;5325:88::-;2894:10;2884:20;;:6;;;;;;;;;;:20;;;2876:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;5399:6:::1;5393:3;;:12;;;;;;;;;;;;;;;;;;5325:88:::0;:::o;3969:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;7763:406::-;2894:10;2884:20;;:6;;;;;;;;;;:20;;;2876:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;7985:6:::1;7970:12;:21;;;;8018:7;8002:13;:23;;;;8054:12;8036:15;:30;;;;8096:13;8077:16;:32;;;;8141:20;8120:18;:41;;;;7763:406:::0;;;;;:::o;4095:27::-;;;;;;;;;;;;;:::o;11409:30::-;;;;:::o;13814:206::-;2894:10;2884:20;;:6;;;;;;;;;;:20;;;2876:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;13908:6:::1;13904:100;13919:8;:15;13917:1;:17;13904:100;;;13987:5;13954:17;:30;13972:8;13981:1;13972:11;;;;;;;;:::i;:::-;;;;;;;;13954:30;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;13935:3;;;;;:::i;:::-;;;;13904:100;;;;13814:206:::0;;:::o;8342:102::-;2894:10;2884:20;;:6;;;;;;;;;;:20;;;2876:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;8428:8:::1;8413:12;:23;;;;8342:102:::0;:::o;3926:36::-;;;;;;;;;;;;;:::o;11448:115::-;2894:10;2884:20;;:6;;;;;;;;;;:20;;;2876:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;11535:1:::1;11516:15;;:20;:39;;11554:1;11516:39;;;11539:12;11516:39;11498:15;:57;;;;11448:115::o:0;5839:119::-;5905:7;5932:9;:18;5942:7;5932:18;;;;;;;;;;;;;;;;5925:25;;5839:119;;;:::o;2954:148::-;2894:10;2884:20;;:6;;;;;;;;;;:20;;;2876:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;3061:1:::1;3024:40;;3045:6;::::0;::::1;;;;;;;;3024:40;;;;;;;;;;;;3092:1;3075:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2954:148::o:0;3651:89::-;;;;;;;;;;;;;:::o;2757:79::-;2795:7;2822:6;;;;;;;;;;;2815:13;;2757:79;:::o;8486:97::-;2894:10;2884:20;;:6;;;;;;;;;;:20;;;2876:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;8567:8:::1;8554:10;:21;;;;8486:97:::0;:::o;5421:98::-;5471:13;5504:7;5497:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5421:98;:::o;13113:288::-;13192:4;13174:23;;:6;:23;;;13170:224;;13221:6;13214:23;;;13256:3;;;;;;;;;;;13285:6;13278:24;;;13311:4;13278:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13214:118;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13347:3;;;;;;;;;;;:12;;:35;13360:21;13347:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13170:224;13113:288;:::o;5966:190::-;6069:4;6086:40;6096:10;6108:9;6119:6;6086:9;:40::i;:::-;6144:4;6137:11;;5966:190;;;;:::o;11571:675::-;2894:10;2884:20;;:6;;;;;;;;;;:20;;;2876:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;11706:12:::1;11721:14;;;;;;;;;;;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11706:36;;11760:4;11753:20;;;11782:14;;;;;;;;;;;11808:1;11799:11;11753:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11829:4;11822:25;;;11862:5;11890:4;11917;11910:22;;;11933:5;11910:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11822:128;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11966:6;11961:89;11982:4;;:11;;11978:1;:15;11961:89;;;12015:23;12025:3;12030:4;;12035:1;12030:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12015:9;:23::i;:::-;11995:3;;;;;:::i;:::-;;;;11961:89;;;;12078:12;12060:15;:30;;;;12101:12;12123:4;12116:22;;;12147:4;12116:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12101:52;;12175:1;12168:4;:8;12164:75;;;12200:4;12193:21;;;12215:5;12222:4;12193:34;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12164:75;11695:551;;11571:675:::0;;;;:::o;8217:88::-;2894:10;2884:20;;:6;;;;;;;;;;:20;;;2876:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;8285:12:::1;;;;;;;;;;;8284:13;8269:12;;:28;;;;;;;;;;;;;;;;;;8217:88::o:0;8177:31::-;;;;;;;;;;;;;:::o;6164:168::-;6270:7;6297:11;:18;6309:5;6297:18;;;;;;;;;;;;;;;:27;6316:7;6297:27;;;;;;;;;;;;;;;;6290:34;;6164:168;;;;:::o;3110:214::-;2894:10;2884:20;;:6;;;;;;;;;;:20;;;2876:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;3219:1:::1;3199:22;;:8;:22;;::::0;3191:43:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3279:8;3250:38;;3271:6;::::0;::::1;;;;;;;;3250:38;;;;;;;;;;;;3308:8;3299:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3110:214:::0;:::o;3500:66::-;;;;;;;;;;;;;:::o;6944:177::-;7059:6;7029:11;:18;7041:5;7029:18;;;;;;;;;;;;;;;:27;7048:7;7029:27;;;;;;;;;;;;;;;:36;;;;7097:7;7081:32;;7090:5;7081:32;;;7106:6;7081:32;;;;;;:::i;:::-;;;;;;;;6944:177;;;:::o;8591:1645::-;8671:15;8689;8699:4;8689:9;:15::i;:::-;8671:33;;8734:6;8723:7;:17;;8715:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8778:6;;;;;;;;;;;8774:92;;;8801:32;8816:4;8822:2;8826:6;8801:14;:32::i;:::-;;8848:7;;;8774:92;8878:12;8921;:16;8934:2;8921:16;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;;;8955:6;;;;;;;;;;;8954:7;8921:40;:81;;;;;8979:17;:23;8997:4;8979:23;;;;;;;;;;;;;;;;;;;;;;;;;8978:24;8921:81;:120;;;;;9020:17;:21;9038:2;9020:21;;;;;;;;;;;;;;;;;;;;;;;;;9019:22;8921:120;:167;;;;;9070:18;;9058:9;;:30;8921:167;8903:502;;;9115:21;9139:6;9115:30;;9180:24;9198:4;9180:9;:24::i;:::-;9164:13;:40;9160:121;;;9241:9;:24;9259:4;9241:24;;;;;;;;;;;;;;;;9225:40;;9160:121;9315:12;;9299:13;:28;9295:99;;;9348:30;9364:13;9348:15;:30::i;:::-;9295:99;9100:305;8903:502;9422:17;:23;9440:4;9422:23;;;;;;;;;;;;;;;;;;;;;;;;;9421:24;:50;;;;;9450:17;:21;9468:2;9450:21;;;;;;;;;;;;;;;;;;;;;;;;;9449:22;9421:50;:61;;;;;9476:6;;;;;;;;;;;9475:7;9421:61;9417:758;;;9525:1;9507:15;;:19;9499:28;;;;;;9552:4;9542:14;;9620:12;:18;9633:4;9620:18;;;;;;;;;;;;;;;;;;;;;;;;;:68;;;;;9673:14;;;;;;;;;;;9659:29;;:2;:29;;;;9620:68;:111;;;;;9710:17;:21;9728:2;9710:21;;;;;;;;;;;;;;;;;;;;;;;;;9709:22;9620:111;9598:409;;;9766:9;;:11;;;;;;;;;:::i;:::-;;;;;;9813:1;9800:10;;:14;9796:196;;;9899:10;;9889:6;9873:13;9883:2;9873:9;:13::i;:::-;:22;;;;:::i;:::-;:36;;9839:133;;;;;;;;;;;;:::i;:::-;;;;;;;;;9796:196;9598:409;10056:12;;;;;;;;;;;:33;;;;;10082:7;10072:6;:17;10056:33;10052:112;;;10138:9;10129:6;:18;;;;:::i;:::-;10119:6;:29;;;;:::i;:::-;10110:38;;10052:112;9417:758;10187:41;10202:4;10208:2;10212:6;10220:7;10187:14;:41::i;:::-;8660:1576;;8591:1645;;;;:::o;12254:851::-;4172:4;4163:6;;:13;;;;;;;;;;;;;;;;;;12337:12:::1;12352:14;;;;;;;;;;;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12337:36;;12384:21;12422:1;12408:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12384:40;;12453:4;12435;12440:1;12435:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12487:4;12469;12474:1;12469:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12505:25;12547:1;12533:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12505:44;;12582:4;12560:8;12569:1;12560:11;;;;;;;;:::i;:::-;;;;;;;:27;;;;;;;;;::::0;::::1;12620:4;12598:8;12607:1;12598:11;;;;;;;;:::i;:::-;;;;;;;:27;;;;;;;;;::::0;::::1;12636:12;12658:4;12651:22;;;12682:4;12651:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12636:52;;12699:17;12719:14;;;;;;;;;;;:28;;;12748:11;12761:8;12719:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12785:1;12719:78;;;;;;;;:::i;:::-;;;;;;;;12699:98;;12832:4;12820:9;:16;:35;;12846:9;12820:35;;;12839:4;12820:35;12808:47;;12883:1;12870:9;:14:::0;12866:27:::1;;12886:7;;;;;;;12866:27;12903:14;;;;;;;;;;;:68;;;12986:9;13010:1;13026:4;13053:2;13071:15;12903:194;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12326:779;;;;;4187:1;4208:5:::0;4199:6;;:14;;;;;;;;;;;;;;;;;;12254:851;;:::o;7129:293::-;7256:4;7294:6;7273:9;:17;7283:6;7273:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;7335:6;7311:9;:20;7321:9;7311:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7374:9;7357:35;;7366:6;7357:35;;;7385:6;7357:35;;;;;;:::i;:::-;;;;;;;;7410:4;7403:11;;7129:293;;;;;:::o;13409:397::-;4172:4;4163:6;;:13;;;;;;;;;;;;;;;;;;13486:21:::1;13524:1;13510:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13486:40;;13555:4;13537;13542:1;13537:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;13581:14;;;;;;;;;;;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13571:4;13576:1;13571:7;;;;;;;;:::i;:::-;;;;;;;:31;;;;;;;;;::::0;::::1;13613:14;;;;;;;;;;;:65;;;13693:11;13719:1;13735:4;13754:3;;;;;;;;;;;13772:15;13613:185;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13475:331;4208:5:::0;4199:6;;:14;;;;;;;;;;;;;;;;;;13409:397;:::o;10244:1157::-;10436:7;10416:9;:17;10426:6;10416:17;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;10396:9;:17;10406:6;10396:17;;;;;;;;;;;;;;;:47;;;;10454:17;10488:7;10484:766;;;10512:14;10545:12;:23;10558:9;10545:23;;;;;;;;;;;;;;;;;;;;;;;;;10541:354;;;10610:16;;10598:9;;:28;:104;;10687:15;;10598:104;;;10650:13;;10598:104;10589:113;;10541:354;;;10728:12;:20;10741:6;10728:20;;;;;;;;;;;;;;;;;;;;;;;;;10724:171;;;10790:15;;10778:9;;:27;:101;;10865:14;;10778:101;;;10829:12;;10778:101;10769:110;;10724:171;10541:354;10909:18;10951:3;10941:6;10931:7;:16;;;;:::i;:::-;10930:24;;;;:::i;:::-;10909:45;;10986:1;10973:10;:14;10969:270;;;11021:10;11008:23;;;;;:::i;:::-;;;11146:10;11098:9;:24;11116:4;11098:24;;;;;;;;;;;;;;;;:58;;;;:::i;:::-;11050:9;:24;11068:4;11050:24;;;;;;;;;;;;;;;:106;;;;11205:4;11180:43;;11189:6;11180:43;;;11212:10;11180:43;;;;;;:::i;:::-;;;;;;;;10969:270;10497:753;;10484:766;11319:9;11309:7;:19;;;;:::i;:::-;11285:9;:20;11295:9;11285:20;;;;;;;;;;;;;;;;:44;;;;:::i;:::-;11262:9;:20;11272:9;11262:20;;;;;;;;;;;;;;;:67;;;;11362:9;11345:48;;11354:6;11345:48;;;11383:9;11373:7;:19;;;;:::i;:::-;11345:48;;;;;;:::i;:::-;;;;;;;;10385:1016;10244:1157;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:118::-;4940:24;4958:5;4940:24;:::i;:::-;4935:3;4928:37;4853:118;;:::o;4977:222::-;5070:4;5108:2;5097:9;5093:18;5085:26;;5121:71;5189:1;5178:9;5174:17;5165:6;5121:71;:::i;:::-;4977:222;;;;:::o;5205:329::-;5264:6;5313:2;5301:9;5292:7;5288:23;5284:32;5281:119;;;5319:79;;:::i;:::-;5281:119;5439:1;5464:53;5509:7;5500:6;5489:9;5485:22;5464:53;:::i;:::-;5454:63;;5410:117;5205:329;;;;:::o;5540:104::-;5585:7;5614:24;5632:5;5614:24;:::i;:::-;5603:35;;5540:104;;;:::o;5650:138::-;5731:32;5757:5;5731:32;:::i;:::-;5724:5;5721:43;5711:71;;5778:1;5775;5768:12;5711:71;5650:138;:::o;5794:155::-;5848:5;5886:6;5873:20;5864:29;;5902:41;5937:5;5902:41;:::i;:::-;5794:155;;;;:::o;5955:345::-;6022:6;6071:2;6059:9;6050:7;6046:23;6042:32;6039:119;;;6077:79;;:::i;:::-;6039:119;6197:1;6222:61;6275:7;6266:6;6255:9;6251:22;6222:61;:::i;:::-;6212:71;;6168:125;5955:345;;;;:::o;6306:911::-;6401:6;6409;6417;6425;6433;6482:3;6470:9;6461:7;6457:23;6453:33;6450:120;;;6489:79;;:::i;:::-;6450:120;6609:1;6634:53;6679:7;6670:6;6659:9;6655:22;6634:53;:::i;:::-;6624:63;;6580:117;6736:2;6762:53;6807:7;6798:6;6787:9;6783:22;6762:53;:::i;:::-;6752:63;;6707:118;6864:2;6890:53;6935:7;6926:6;6915:9;6911:22;6890:53;:::i;:::-;6880:63;;6835:118;6992:2;7018:53;7063:7;7054:6;7043:9;7039:22;7018:53;:::i;:::-;7008:63;;6963:118;7120:3;7147:53;7192:7;7183:6;7172:9;7168:22;7147:53;:::i;:::-;7137:63;;7091:119;6306:911;;;;;;;;:::o;7223:117::-;7332:1;7329;7322:12;7346:180;7394:77;7391:1;7384:88;7491:4;7488:1;7481:15;7515:4;7512:1;7505:15;7532:281;7615:27;7637:4;7615:27;:::i;:::-;7607:6;7603:40;7745:6;7733:10;7730:22;7709:18;7697:10;7694:34;7691:62;7688:88;;;7756:18;;:::i;:::-;7688:88;7796:10;7792:2;7785:22;7575:238;7532:281;;:::o;7819:129::-;7853:6;7880:20;;:::i;:::-;7870:30;;7909:33;7937:4;7929:6;7909:33;:::i;:::-;7819:129;;;:::o;7954:311::-;8031:4;8121:18;8113:6;8110:30;8107:56;;;8143:18;;:::i;:::-;8107:56;8193:4;8185:6;8181:17;8173:25;;8253:4;8247;8243:15;8235:23;;7954:311;;;:::o;8271:117::-;8380:1;8377;8370:12;8411:710;8507:5;8532:81;8548:64;8605:6;8548:64;:::i;:::-;8532:81;:::i;:::-;8523:90;;8633:5;8662:6;8655:5;8648:21;8696:4;8689:5;8685:16;8678:23;;8749:4;8741:6;8737:17;8729:6;8725:30;8778:3;8770:6;8767:15;8764:122;;;8797:79;;:::i;:::-;8764:122;8912:6;8895:220;8929:6;8924:3;8921:15;8895:220;;;9004:3;9033:37;9066:3;9054:10;9033:37;:::i;:::-;9028:3;9021:50;9100:4;9095:3;9091:14;9084:21;;8971:144;8955:4;8950:3;8946:14;8939:21;;8895:220;;;8899:21;8513:608;;8411:710;;;;;:::o;9144:370::-;9215:5;9264:3;9257:4;9249:6;9245:17;9241:27;9231:122;;9272:79;;:::i;:::-;9231:122;9389:6;9376:20;9414:94;9504:3;9496:6;9489:4;9481:6;9477:17;9414:94;:::i;:::-;9405:103;;9221:293;9144:370;;;;:::o;9520:116::-;9590:21;9605:5;9590:21;:::i;:::-;9583:5;9580:32;9570:60;;9626:1;9623;9616:12;9570:60;9520:116;:::o;9642:133::-;9685:5;9723:6;9710:20;9701:29;;9739:30;9763:5;9739:30;:::i;:::-;9642:133;;;;:::o;9781:678::-;9871:6;9879;9928:2;9916:9;9907:7;9903:23;9899:32;9896:119;;;9934:79;;:::i;:::-;9896:119;10082:1;10071:9;10067:17;10054:31;10112:18;10104:6;10101:30;10098:117;;;10134:79;;:::i;:::-;10098:117;10239:78;10309:7;10300:6;10289:9;10285:22;10239:78;:::i;:::-;10229:88;;10025:302;10366:2;10392:50;10434:7;10425:6;10414:9;10410:22;10392:50;:::i;:::-;10382:60;;10337:115;9781:678;;;;;:::o;10465:329::-;10524:6;10573:2;10561:9;10552:7;10548:23;10544:32;10541:119;;;10579:79;;:::i;:::-;10541:119;10699:1;10724:53;10769:7;10760:6;10749:9;10745:22;10724:53;:::i;:::-;10714:63;;10670:117;10465:329;;;;:::o;10800:60::-;10828:3;10849:5;10842:12;;10800:60;;;:::o;10866:142::-;10916:9;10949:53;10967:34;10976:24;10994:5;10976:24;:::i;:::-;10967:34;:::i;:::-;10949:53;:::i;:::-;10936:66;;10866:142;;;:::o;11014:126::-;11064:9;11097:37;11128:5;11097:37;:::i;:::-;11084:50;;11014:126;;;:::o;11146:148::-;11218:9;11251:37;11282:5;11251:37;:::i;:::-;11238:50;;11146:148;;;:::o;11300:175::-;11409:59;11462:5;11409:59;:::i;:::-;11404:3;11397:72;11300:175;;:::o;11481:266::-;11596:4;11634:2;11623:9;11619:18;11611:26;;11647:93;11737:1;11726:9;11722:17;11713:6;11647:93;:::i;:::-;11481:266;;;;:::o;11753:142::-;11856:32;11882:5;11856:32;:::i;:::-;11851:3;11844:45;11753:142;;:::o;11901:254::-;12010:4;12048:2;12037:9;12033:18;12025:26;;12061:87;12145:1;12134:9;12130:17;12121:6;12061:87;:::i;:::-;11901:254;;;;:::o;12161:117::-;12270:1;12267;12260:12;12301:568;12374:8;12384:6;12434:3;12427:4;12419:6;12415:17;12411:27;12401:122;;12442:79;;:::i;:::-;12401:122;12555:6;12542:20;12532:30;;12585:18;12577:6;12574:30;12571:117;;;12607:79;;:::i;:::-;12571:117;12721:4;12713:6;12709:17;12697:29;;12775:3;12767:4;12759:6;12755:17;12745:8;12741:32;12738:41;12735:128;;;12782:79;;:::i;:::-;12735:128;12301:568;;;;;:::o;12875:849::-;12979:6;12987;12995;13003;13052:2;13040:9;13031:7;13027:23;13023:32;13020:119;;;13058:79;;:::i;:::-;13020:119;13178:1;13203:53;13248:7;13239:6;13228:9;13224:22;13203:53;:::i;:::-;13193:63;;13149:117;13333:2;13322:9;13318:18;13305:32;13364:18;13356:6;13353:30;13350:117;;;13386:79;;:::i;:::-;13350:117;13499:80;13571:7;13562:6;13551:9;13547:22;13499:80;:::i;:::-;13481:98;;;;13276:313;13628:2;13654:53;13699:7;13690:6;13679:9;13675:22;13654:53;:::i;:::-;13644:63;;13599:118;12875:849;;;;;;;:::o;13730:474::-;13798:6;13806;13855:2;13843:9;13834:7;13830:23;13826:32;13823:119;;;13861:79;;:::i;:::-;13823:119;13981:1;14006:53;14051:7;14042:6;14031:9;14027:22;14006:53;:::i;:::-;13996:63;;13952:117;14108:2;14134:53;14179:7;14170:6;14159:9;14155:22;14134:53;:::i;:::-;14124:63;;14079:118;13730:474;;;;;:::o;14210:180::-;14258:77;14255:1;14248:88;14355:4;14352:1;14345:15;14379:4;14376:1;14369:15;14396:320;14440:6;14477:1;14471:4;14467:12;14457:22;;14524:1;14518:4;14514:12;14545:18;14535:81;;14601:4;14593:6;14589:17;14579:27;;14535:81;14663:2;14655:6;14652:14;14632:18;14629:38;14626:84;;14682:18;;:::i;:::-;14626:84;14447:269;14396:320;;;:::o;14722:180::-;14770:77;14767:1;14760:88;14867:4;14864:1;14857:15;14891:4;14888:1;14881:15;14908:194;14948:4;14968:20;14986:1;14968:20;:::i;:::-;14963:25;;15002:20;15020:1;15002:20;:::i;:::-;14997:25;;15046:1;15043;15039:9;15031:17;;15070:1;15064:4;15061:11;15058:37;;;15075:18;;:::i;:::-;15058:37;14908:194;;;;:::o;15108:167::-;15248:19;15244:1;15236:6;15232:14;15225:43;15108:167;:::o;15281:366::-;15423:3;15444:67;15508:2;15503:3;15444:67;:::i;:::-;15437:74;;15520:93;15609:3;15520:93;:::i;:::-;15638:2;15633:3;15629:12;15622:19;;15281:366;;;:::o;15653:419::-;15819:4;15857:2;15846:9;15842:18;15834:26;;15906:9;15900:4;15896:20;15892:1;15881:9;15877:17;15870:47;15934:131;16060:4;15934:131;:::i;:::-;15926:139;;15653:419;;;:::o;16078:180::-;16126:77;16123:1;16116:88;16223:4;16220:1;16213:15;16247:4;16244:1;16237:15;16264:233;16303:3;16326:24;16344:5;16326:24;:::i;:::-;16317:33;;16372:66;16365:5;16362:77;16359:103;;16442:18;;:::i;:::-;16359:103;16489:1;16482:5;16478:13;16471:20;;16264:233;;;:::o;16503:143::-;16560:5;16591:6;16585:13;16576:22;;16607:33;16634:5;16607:33;:::i;:::-;16503:143;;;;:::o;16652:351::-;16722:6;16771:2;16759:9;16750:7;16746:23;16742:32;16739:119;;;16777:79;;:::i;:::-;16739:119;16897:1;16922:64;16978:7;16969:6;16958:9;16954:22;16922:64;:::i;:::-;16912:74;;16868:128;16652:351;;;;:::o;17009:134::-;17067:9;17100:37;17131:5;17100:37;:::i;:::-;17087:50;;17009:134;;;:::o;17149:147::-;17244:45;17283:5;17244:45;:::i;:::-;17239:3;17232:58;17149:147;;:::o;17302:348::-;17431:4;17469:2;17458:9;17454:18;17446:26;;17482:79;17558:1;17547:9;17543:17;17534:6;17482:79;:::i;:::-;17571:72;17639:2;17628:9;17624:18;17615:6;17571:72;:::i;:::-;17302:348;;;;;:::o;17656:137::-;17710:5;17741:6;17735:13;17726:22;;17757:30;17781:5;17757:30;:::i;:::-;17656:137;;;;:::o;17799:345::-;17866:6;17915:2;17903:9;17894:7;17890:23;17886:32;17883:119;;;17921:79;;:::i;:::-;17883:119;18041:1;18066:61;18119:7;18110:6;18099:9;18095:22;18066:61;:::i;:::-;18056:71;;18012:125;17799:345;;;;:::o;18150:143::-;18207:5;18238:6;18232:13;18223:22;;18254:33;18281:5;18254:33;:::i;:::-;18150:143;;;;:::o;18299:351::-;18369:6;18418:2;18406:9;18397:7;18393:23;18389:32;18386:119;;;18424:79;;:::i;:::-;18386:119;18544:1;18569:64;18625:7;18616:6;18605:9;18601:22;18569:64;:::i;:::-;18559:74;;18515:128;18299:351;;;;:::o;18656:332::-;18777:4;18815:2;18804:9;18800:18;18792:26;;18828:71;18896:1;18885:9;18881:17;18872:6;18828:71;:::i;:::-;18909:72;18977:2;18966:9;18962:18;18953:6;18909:72;:::i;:::-;18656:332;;;;;:::o;18994:442::-;19143:4;19181:2;19170:9;19166:18;19158:26;;19194:71;19262:1;19251:9;19247:17;19238:6;19194:71;:::i;:::-;19275:72;19343:2;19332:9;19328:18;19319:6;19275:72;:::i;:::-;19357;19425:2;19414:9;19410:18;19401:6;19357:72;:::i;:::-;18994:442;;;;;;:::o;19442:158::-;19582:10;19578:1;19570:6;19566:14;19559:34;19442:158;:::o;19606:365::-;19748:3;19769:66;19833:1;19828:3;19769:66;:::i;:::-;19762:73;;19844:93;19933:3;19844:93;:::i;:::-;19962:2;19957:3;19953:12;19946:19;;19606:365;;;:::o;19977:419::-;20143:4;20181:2;20170:9;20166:18;20158:26;;20230:9;20224:4;20220:20;20216:1;20205:9;20201:17;20194:47;20258:131;20384:4;20258:131;:::i;:::-;20250:139;;19977:419;;;:::o;20402:166::-;20542:18;20538:1;20530:6;20526:14;20519:42;20402:166;:::o;20574:366::-;20716:3;20737:67;20801:2;20796:3;20737:67;:::i;:::-;20730:74;;20813:93;20902:3;20813:93;:::i;:::-;20931:2;20926:3;20922:12;20915:19;;20574:366;;;:::o;20946:419::-;21112:4;21150:2;21139:9;21135:18;21127:26;;21199:9;21193:4;21189:20;21185:1;21174:9;21170:17;21163:47;21227:131;21353:4;21227:131;:::i;:::-;21219:139;;20946:419;;;:::o;21371:191::-;21411:3;21430:20;21448:1;21430:20;:::i;:::-;21425:25;;21464:20;21482:1;21464:20;:::i;:::-;21459:25;;21507:1;21504;21500:9;21493:16;;21528:3;21525:1;21522:10;21519:36;;;21535:18;;:::i;:::-;21519:36;21371:191;;;;:::o;21568:161::-;21708:13;21704:1;21696:6;21692:14;21685:37;21568:161;:::o;21735:366::-;21877:3;21898:67;21962:2;21957:3;21898:67;:::i;:::-;21891:74;;21974:93;22063:3;21974:93;:::i;:::-;22092:2;22087:3;22083:12;22076:19;;21735:366;;;:::o;22107:419::-;22273:4;22311:2;22300:9;22296:18;22288:26;;22360:9;22354:4;22350:20;22346:1;22335:9;22331:17;22324:47;22388:131;22514:4;22388:131;:::i;:::-;22380:139;;22107:419;;;:::o;22532:180::-;22580:77;22577:1;22570:88;22677:4;22674:1;22667:15;22701:4;22698:1;22691:15;22718:185;22758:1;22775:20;22793:1;22775:20;:::i;:::-;22770:25;;22809:20;22827:1;22809:20;:::i;:::-;22804:25;;22848:1;22838:35;;22853:18;;:::i;:::-;22838:35;22895:1;22892;22888:9;22883:14;;22718:185;;;;:::o;22909:114::-;22976:6;23010:5;23004:12;22994:22;;22909:114;;;:::o;23029:184::-;23128:11;23162:6;23157:3;23150:19;23202:4;23197:3;23193:14;23178:29;;23029:184;;;;:::o;23219:132::-;23286:4;23309:3;23301:11;;23339:4;23334:3;23330:14;23322:22;;23219:132;;;:::o;23357:108::-;23434:24;23452:5;23434:24;:::i;:::-;23429:3;23422:37;23357:108;;:::o;23471:179::-;23540:10;23561:46;23603:3;23595:6;23561:46;:::i;:::-;23639:4;23634:3;23630:14;23616:28;;23471:179;;;;:::o;23656:113::-;23726:4;23758;23753:3;23749:14;23741:22;;23656:113;;;:::o;23805:732::-;23924:3;23953:54;24001:5;23953:54;:::i;:::-;24023:86;24102:6;24097:3;24023:86;:::i;:::-;24016:93;;24133:56;24183:5;24133:56;:::i;:::-;24212:7;24243:1;24228:284;24253:6;24250:1;24247:13;24228:284;;;24329:6;24323:13;24356:63;24415:3;24400:13;24356:63;:::i;:::-;24349:70;;24442:60;24495:6;24442:60;:::i;:::-;24432:70;;24288:224;24275:1;24272;24268:9;24263:14;;24228:284;;;24232:14;24528:3;24521:10;;23929:608;;;23805:732;;;;:::o;24543:483::-;24714:4;24752:2;24741:9;24737:18;24729:26;;24765:71;24833:1;24822:9;24818:17;24809:6;24765:71;:::i;:::-;24883:9;24877:4;24873:20;24868:2;24857:9;24853:18;24846:48;24911:108;25014:4;25005:6;24911:108;:::i;:::-;24903:116;;24543:483;;;;;:::o;25032:311::-;25109:4;25199:18;25191:6;25188:30;25185:56;;;25221:18;;:::i;:::-;25185:56;25271:4;25263:6;25259:17;25251:25;;25331:4;25325;25321:15;25313:23;;25032:311;;;:::o;25366:732::-;25473:5;25498:81;25514:64;25571:6;25514:64;:::i;:::-;25498:81;:::i;:::-;25489:90;;25599:5;25628:6;25621:5;25614:21;25662:4;25655:5;25651:16;25644:23;;25715:4;25707:6;25703:17;25695:6;25691:30;25744:3;25736:6;25733:15;25730:122;;;25763:79;;:::i;:::-;25730:122;25878:6;25861:231;25895:6;25890:3;25887:15;25861:231;;;25970:3;25999:48;26043:3;26031:10;25999:48;:::i;:::-;25994:3;25987:61;26077:4;26072:3;26068:14;26061:21;;25937:155;25921:4;25916:3;25912:14;25905:21;;25861:231;;;25865:21;25479:619;;25366:732;;;;;:::o;26121:385::-;26203:5;26252:3;26245:4;26237:6;26233:17;26229:27;26219:122;;26260:79;;:::i;:::-;26219:122;26370:6;26364:13;26395:105;26496:3;26488:6;26481:4;26473:6;26469:17;26395:105;:::i;:::-;26386:114;;26209:297;26121:385;;;;:::o;26512:554::-;26607:6;26656:2;26644:9;26635:7;26631:23;26627:32;26624:119;;;26662:79;;:::i;:::-;26624:119;26803:1;26792:9;26788:17;26782:24;26833:18;26825:6;26822:30;26819:117;;;26855:79;;:::i;:::-;26819:117;26960:89;27041:7;27032:6;27021:9;27017:22;26960:89;:::i;:::-;26950:99;;26753:306;26512:554;;;;:::o;27072:85::-;27117:7;27146:5;27135:16;;27072:85;;;:::o;27163:158::-;27221:9;27254:61;27272:42;27281:32;27307:5;27281:32;:::i;:::-;27272:42;:::i;:::-;27254:61;:::i;:::-;27241:74;;27163:158;;;:::o;27327:147::-;27422:45;27461:5;27422:45;:::i;:::-;27417:3;27410:58;27327:147;;:::o;27480:831::-;27743:4;27781:3;27770:9;27766:19;27758:27;;27795:71;27863:1;27852:9;27848:17;27839:6;27795:71;:::i;:::-;27876:80;27952:2;27941:9;27937:18;27928:6;27876:80;:::i;:::-;28003:9;27997:4;27993:20;27988:2;27977:9;27973:18;27966:48;28031:108;28134:4;28125:6;28031:108;:::i;:::-;28023:116;;28149:72;28217:2;28206:9;28202:18;28193:6;28149:72;:::i;:::-;28231:73;28299:3;28288:9;28284:19;28275:6;28231:73;:::i;:::-;27480:831;;;;;;;;:::o;28317:847::-;28588:4;28626:3;28615:9;28611:19;28603:27;;28640:71;28708:1;28697:9;28693:17;28684:6;28640:71;:::i;:::-;28721:80;28797:2;28786:9;28782:18;28773:6;28721:80;:::i;:::-;28848:9;28842:4;28838:20;28833:2;28822:9;28818:18;28811:48;28876:108;28979:4;28970:6;28876:108;:::i;:::-;28868:116;;28994:80;29070:2;29059:9;29055:18;29046:6;28994:80;:::i;:::-;29084:73;29152:3;29141:9;29137:19;29128:6;29084:73;:::i;:::-;28317:847;;;;;;;;:::o;29170:410::-;29210:7;29233:20;29251:1;29233:20;:::i;:::-;29228:25;;29267:20;29285:1;29267:20;:::i;:::-;29262:25;;29322:1;29319;29315:9;29344:30;29362:11;29344:30;:::i;:::-;29333:41;;29523:1;29514:7;29510:15;29507:1;29504:22;29484:1;29477:9;29457:83;29434:139;;29553:18;;:::i;:::-;29434:139;29218:362;29170:410;;;;:::o

Swarm Source

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