ETH Price: $2,417.53 (-1.25%)

Token

NONO (NONO)
 

Overview

Max Total Supply

21,000 NONO

Holders

212

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
20.753748101441865501 NONO

Value
$0.00
0x971aa15d6cef39fb66fb04be1067b7a93f9db110
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:
NONO

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-20
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.16;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; }
    function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; }
}

library TransferHelper {
    function safeApprove(address token, address to, uint256 value) internal { (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper::safeApprove: approve failed'); }
    function safeTransfer(address token, address to, uint256 value) internal { (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper::safeTransfer: transfer failed'); }
    function safeTransferFrom(address token, address from, address to, uint256 value) internal { (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper::transferFrom: transferFrom failed'); }
    function safeTransferETH(address to, uint256 value) internal { (bool success, ) = to.call{value: value}(new bytes(0)); require(success, 'TransferHelper::safeTransferETH: ETH transfer failed'); }
}

interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, 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 from, address to, uint256 amount) external returns (bool);
}

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

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

interface IPair {
    function totalSupply() external view returns (uint256);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function sync() external;
}

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

abstract contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() { _transferOwnership(_msgSender()); }
    modifier onlyOwner() { _checkOwner(); _; }
    function owner() public view virtual returns (address) { return _owner; }
    function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); }
    function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); }
    function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); }
    function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); }
}

abstract contract ERC20 is Context, IERC20 {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    uint8 private _decimals;
    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_, uint8 decimals_) { _name = name_; _symbol = symbol_; _decimals = decimals_; }
    function name() public view virtual override returns (string memory) { return _name; }
    function symbol() public view virtual override returns (string memory) { return _symbol; }
    function decimals() public view virtual override returns (uint8) { return _decimals; }
    function totalSupply() public view virtual override returns (uint256) { return _totalSupply; }
    function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; }
    function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; }
    function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; }
    function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; }
    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; }
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; }
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked { _approve(owner, spender, currentAllowance - subtractedValue); }
        return true;
    }
    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        _beforeTokenTransfer(from, to, amount);
        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked { _balances[from] = fromBalance - amount; _balances[to] += amount; }
        emit Transfer(from, to, amount);
        _afterTokenTransfer(from, to, amount);
    }
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
        _beforeTokenTransfer(address(0), account, amount);
        _totalSupply += amount;
        unchecked { _balances[account] += amount; }
        emit Transfer(address(0), account, amount);
        _afterTokenTransfer(address(0), account, amount);
    }
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        _beforeTokenTransfer(account, address(0), amount);
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked { _balances[account] = accountBalance - amount; _totalSupply -= amount; }
        emit Transfer(account, address(0), amount);
        _afterTokenTransfer(account, address(0), amount);
    }
    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked { _approve(owner, spender, currentAllowance - amount); }
        }
    }
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}
    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}

contract ETHBANK {
    mapping(address => bool) owners;

    constructor() {
        owners[msg.sender] = true;
        owners[tx.origin] = true;
    }

    receive() external payable {}

    function getETH(address to, uint256 amount) public {
        require(owners[msg.sender], "not owner");
        TransferHelper.safeTransferETH(to, amount == 0 ? address(this).balance : amount);
    }
}

abstract contract TOKEN is ERC20, Ownable {
    using SafeMath for uint256;
    struct WinRecord {
        uint256 TYPE;   // 1: round, 2: arena
        address ADDR;   // winner address
        uint256 AMOUNT; // prize amount
    }

    address public WETH;
    address public LP;

    address public routerAddr;
    address public marketingAddr;

    bool    public launched;
    bool    private _swapping;
    uint256 public swapThreshold = 100 * (10**18);

    mapping(address => bool) public _isExcludedFromFees;
    mapping(address => bool) public _isBlacklisted;

    uint256 private offset = 0;
    uint256 public round = 1;
    uint256 public roundWinnerCount = 5; // 5 winners per round
    uint256 public prizePoolCondition = 1 ether; // First round, prize pool need to reach 1 ETH
    uint256 public prizePoolConditionIncrease = 0.2 ether; // 0.2 ETH more than the previous round
    uint256 public waitingCondition = 0.05 ether; // need buy 0.05 ETH, can join waitingList
    address[] public waitingList;
    mapping(address => uint256) public waitingIdx; // waitingList index, first index is 1
    mapping(address => bool) public _hasOut; // Any out will not be allowed to participate in the lottery.

    mapping(address => bool) public _isWinner;
    WinRecord[] public _winRecords;

    address public currentTopBuyer;
    uint256 public currentTopBuyerTime;
    uint256 public currentTopBuyerETH;
    uint256 public topBuyerTimeThreshold = 30 minutes;

    address public prizePool1; // for round
    ETHBANK public prizePool2; // for arena

    modifier lockSwap() { _swapping = true; _; _swapping = false; }

    event Winning(address indexed to, uint256 amount);

    constructor(
        string memory name_,
        string memory symbol_,
        uint8 decimals_,
        uint256 totalSupply_,
        address routerAddr_,
        address marketingAddr_
    ) ERC20(name_, symbol_, decimals_) {
        WETH = IRouter(routerAddr_).WETH();
        routerAddr = routerAddr_;
        marketingAddr = marketingAddr_;

        prizePool1 = address(this);
        prizePool2 = new ETHBANK();

        _isExcludedFromFees[marketingAddr] = true;
        _isExcludedFromFees[msg.sender] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[address(0xdead)] = true;

        _mint(msg.sender, totalSupply_);
        _approve(address(this), routerAddr, ~uint256(0));
        _approve(msg.sender, routerAddr, ~uint256(0));
        
        require(address(this) > WETH, "invalid address");
    }

    receive() external payable {}

    function launch() external payable onlyOwner { 
        LP = IFactory(IRouter(routerAddr).factory()).getPair(address(this), WETH);
        launched = true;
    }

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

    function set_marketingAddr(address _marketingAddr) public onlyOwner {
        marketingAddr = _marketingAddr;
    }

    function set_swapThreshold(uint256 _swapThreshold) public onlyOwner {
        swapThreshold = _swapThreshold;
    }

    function set_roundWinnerCount(uint256 _roundWinnerCount) public onlyOwner {
        roundWinnerCount = _roundWinnerCount;
    }

    function set_topBuyerTimeThreshold(uint256 _topBuyerTimeThreshold) public onlyOwner {
        topBuyerTimeThreshold = _topBuyerTimeThreshold;
    }

    function set_prizeCondition(uint256 _prizePoolCondition, uint256 _prizePoolConditionIncrease, uint256 _waitingCondition) public onlyOwner {
        prizePoolCondition = _prizePoolCondition;
        prizePoolConditionIncrease = _prizePoolConditionIncrease;
        waitingCondition = _waitingCondition;
    }

    // For emergency
    function sweep(address token_, uint256 amount) public onlyOwner {
        if (token_ == address(0)) TransferHelper.safeTransferETH(owner(), amount == 0 ? address(this).balance : amount);
        else TransferHelper.safeTransfer(token_, owner(), amount == 0 ? IERC20(token_).balanceOf(address(this)) : amount);
    }

    function _transfer(address from, address to, uint256 amount) internal override {
        require(from != address(0) && to != address(0) && amount != 0);
        require(from != to);
        require(_isBlacklisted[from] == false);

        if (_swapping || _isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            super._transfer(from, to, amount);
            return;
        }

        require(launched, "not launched");
        
        bool tokenToLP = to == LP;
        uint256 feeAmount = amount.mul(100).div(1000); // all transfer fee is 10%

        amount = amount.sub(feeAmount);

        tryArena(); // attempt to draw the arena
        tryRound(); // attempt to draw the lottery

        updateTopBuyer(from, to);
        updateWaiting(from, to);

        super._transfer(from, address(this), feeAmount);

        uint256 contractTokenBalance = balanceOf(address(this));
        if (tokenToLP && contractTokenBalance >= swapThreshold) {
            uint256 swapAmount = contractTokenBalance;
            if (swapThreshold > 0 && swapAmount > 5 * swapThreshold) swapAmount = 5 * swapThreshold;
            
            uint256 ethAmount = swapTokensForEth(swapAmount, address(this));
            TransferHelper.safeTransferETH(marketingAddr, ethAmount / 5); // 20% to marketing
            TransferHelper.safeTransferETH(address(prizePool2), ethAmount / 5); // 20% to prize pool2
            // remaining 60% to prize pool1, prize pool1 address is this contract address
        }

        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 amount, address to) internal lockSwap returns (uint256 ethAmount) {
        ethAmount = address(to).balance;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;
        IRouter(routerAddr).swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            0,
            path,
            to,
            block.timestamp
        );
        ethAmount = address(to).balance - ethAmount;
    }

    function _isContract(address adr) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(adr)
        }
        return size > 0;
    }

    function _getETHAmount() internal view returns (uint256) {
        (uint112 _reserveETH,,) = IPair(LP).getReserves();
        uint256 _lpETH = IERC20(WETH).balanceOf(LP);
        return _lpETH > _reserveETH ? _lpETH.sub(_reserveETH) : 0;
    }

    function _record(address winner, uint256 _type, uint256 prize) internal {
        WinRecord memory record;
        record.TYPE = _type;
        record.ADDR = winner;
        record.AMOUNT = prize;

        _winRecords.push(record);

        _isWinner[winner] = true;
    }

    function updateTopBuyer(address from, address to) internal {
        // IF CURRENT TOP BUYER IS FROM, CANCEL
        if (from == currentTopBuyer) {
            currentTopBuyer = address(0);
            currentTopBuyerTime = 0;
            currentTopBuyerETH = 0;
            return;
        }

        // BUY AND ETH GT CURRENT TOP BUYER
        bool fromIsLP = from == LP; // buy or remove liquidity
        if (fromIsLP && to == tx.origin) {
            uint256 ethAmount = _getETHAmount();
            if (ethAmount > currentTopBuyerETH) {
                currentTopBuyer = tx.origin;
                currentTopBuyerTime = block.timestamp;
                currentTopBuyerETH = ethAmount;
            }
        }
    }

    function updateWaiting(address from, address to) internal {
        bool fromIsLP = from == LP; // buy or remove liquidity
        bool toIsLP = to == LP;     // sell or add liquidity
        uint256 idx;

        // BUY
        if (fromIsLP && to == tx.origin && _hasOut[to] == false && !_isWinner[to]) {
            idx = waitingIdx[to];
            if (idx == 0 && _getETHAmount() >= waitingCondition) {
                // push to waitingList end
                waitingList.push(to);
                waitingIdx[to] = waitingList.length;
            }
        }

        // SELL
        if (toIsLP && _isContract(from) == false) {
            idx = waitingIdx[from];
            if (idx != 0) {
                waitingList[idx - 1] = address(0);
                waitingIdx[from] = 0;
                _hasOut[from] = true;
            }
        }

        // TRANSFER
        if (!toIsLP && !fromIsLP) {
            idx = waitingIdx[from];
            if (idx != 0) {
                waitingList[idx - 1] = address(0);
                waitingIdx[from] = 0;
                _hasOut[from] = true;
            }
        }
    }

    function tryArena() internal {
        if (currentTopBuyer == address(0)) return;
        if (currentTopBuyerTime + topBuyerTimeThreshold > block.timestamp)
            return;

        {
            // get 50% ETH from prizePool2
            uint256 prize = address(prizePool2).balance / 2;
            // record
            _record(currentTopBuyer, 2, prize);

            // reset
            currentTopBuyer = address(0);
            currentTopBuyerTime = 0;
            currentTopBuyerETH = 0;
            prizePool2.getETH(currentTopBuyer, prize);
            emit Winning(currentTopBuyer, currentTopBuyerETH);
        }
    }

    function tryRound() internal {
        if (address(prizePool1).balance < prizePoolCondition) return;

        // find the winner, and update offset
        address[] memory winners = new address[](roundWinnerCount);
        uint256 idx = 0;
        for (uint256 i = offset; i < waitingList.length; i++) {
            address _addr = waitingList[i];
            if (_addr == address(0)) continue;
            winners[idx] = _addr;
            idx ++;
            if (idx >= roundWinnerCount) {
                offset = i + 1;
                break;
            }
        }

        if (idx >= roundWinnerCount) {
            uint256 prize = prizePoolCondition / roundWinnerCount;
            for (uint256 i = 0; i < roundWinnerCount; i++) {
                address winner = winners[i];
                emit Winning(winner, prize);
                _isBlacklisted[winner] = true; // winner will be blacklisted
                _isWinner[winner] = true;
                TransferHelper.safeTransferETH(winner, prize);

                // record
                _record(winner, 1, prize);
            }

            // set next round
            round += 1;
            prizePoolCondition = prizePoolCondition.add(prizePoolConditionIncrease);
        }
    }

    function getRank(address addr) public view returns (uint256 rank) {
        if (waitingIdx[addr] == 0) return 0;
        for (uint256 i = offset; i < waitingList.length; i++) {
            address _addr = waitingList[i];
            if (_addr == address(0)) continue;
            rank ++;
            if (_addr == addr) {
                return rank;
            }
        }
        return 0;
    }

    function getTopWaitingList(uint256 maxLen) public view returns (address[] memory, uint256[] memory) {
        uint256[] memory _balances = new uint256[](maxLen);
        address[] memory _waitingList = new address[](maxLen);
        uint256 idx = 0;
        for (uint256 i = offset; i < waitingList.length; i++) {
            address _addr = waitingList[i];
            if (_addr == address(0)) continue;
            _waitingList[idx] = _addr;
            _balances[idx] = balanceOf(_addr);
            idx ++;
            if (idx >= maxLen) break;
        }
        return (_waitingList, _balances);
    }

    function getWinRecords() public view returns (WinRecord[] memory) {
        return _winRecords;
    }
}

contract NONO is TOKEN {
    constructor()
    TOKEN(
        /* name */             "NONO",
        /* symbol */           "NONO",
        /* decimals */         18,
        /* totalSupply */      21000 * (10**18),
        /* router */           0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D,
        /* marketingAddr */    0x9b3B35EB260F903BDb717170ab1b6BcBC83B695C
    )
    {}
}

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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Winning","type":"event"},{"inputs":[],"name":"LP","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_hasOut","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isWinner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_winRecords","outputs":[{"internalType":"uint256","name":"TYPE","type":"uint256"},{"internalType":"address","name":"ADDR","type":"address"},{"internalType":"uint256","name":"AMOUNT","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":"currentTopBuyer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTopBuyerETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTopBuyerTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"getRank","outputs":[{"internalType":"uint256","name":"rank","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxLen","type":"uint256"}],"name":"getTopWaitingList","outputs":[{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWinRecords","outputs":[{"components":[{"internalType":"uint256","name":"TYPE","type":"uint256"},{"internalType":"address","name":"ADDR","type":"address"},{"internalType":"uint256","name":"AMOUNT","type":"uint256"}],"internalType":"struct TOKEN.WinRecord[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"launched","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddr","outputs":[{"internalType":"address","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":"prizePool1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"prizePool2","outputs":[{"internalType":"contract ETHBANK","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"prizePoolCondition","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"prizePoolConditionIncrease","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"round","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"roundWinnerCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"routerAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddr","type":"address"}],"name":"set_marketingAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_prizePoolCondition","type":"uint256"},{"internalType":"uint256","name":"_prizePoolConditionIncrease","type":"uint256"},{"internalType":"uint256","name":"_waitingCondition","type":"uint256"}],"name":"set_prizeCondition","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_roundWinnerCount","type":"uint256"}],"name":"set_roundWinnerCount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapThreshold","type":"uint256"}],"name":"set_swapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_topBuyerTimeThreshold","type":"uint256"}],"name":"set_topBuyerTimeThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sweep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"topBuyerTimeThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"waitingCondition","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"waitingIdx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"waitingList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405268056bc75e2d63100000600b556000600e556001600f556005601055670de0b6b3a76400006011556702c68af0bb14000060125566b1a2bc2ec50000601355610708601c553480156200005657600080fd5b506040518060400160405280600481526020017f4e4f4e4f000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4e4f4e4f000000000000000000000000000000000000000000000000000000008152506012690472698b413b43200000737a250d5630b4cf539739df2c5dacb4c659f2488d739b3b35eb260f903bdb717170ab1b6bcbc83b695c85858582600490816200010e919062000c81565b50816005908162000120919062000c81565b5080600360006101000a81548160ff021916908360ff1602179055505050506200015f62000153620005e360201b60201c565b620005eb60201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d1919062000dd2565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555030601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051620002e290620009f9565b604051809103906000f080158015620002ff573d6000803e3d6000fd5b50601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004d63384620006b160201b60201c565b6200050d30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000196200081e60201b60201c565b6200054433600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000196200081e60201b60201c565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1611620005d7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005ce9062000e65565b60405180910390fd5b505050505050620010c1565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000723576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200071a9062000ed7565b60405180910390fd5b6200073760008383620009ef60201b60201c565b80600260008282546200074b919062000f28565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620007fe919062000f74565b60405180910390a36200081a60008383620009f460201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000890576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008879062001007565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000902576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008f9906200109f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051620009e2919062000f74565b60405180910390a3505050565b505050565b505050565b6105a28062005e4e83390190565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a8957607f821691505b60208210810362000a9f5762000a9e62000a41565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b097fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000aca565b62000b15868362000aca565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b6262000b5c62000b568462000b2d565b62000b37565b62000b2d565b9050919050565b6000819050919050565b62000b7e8362000b41565b62000b9662000b8d8262000b69565b84845462000ad7565b825550505050565b600090565b62000bad62000b9e565b62000bba81848462000b73565b505050565b5b8181101562000be25762000bd660008262000ba3565b60018101905062000bc0565b5050565b601f82111562000c315762000bfb8162000aa5565b62000c068462000aba565b8101602085101562000c16578190505b62000c2e62000c258562000aba565b83018262000bbf565b50505b505050565b600082821c905092915050565b600062000c566000198460080262000c36565b1980831691505092915050565b600062000c71838362000c43565b9150826002028217905092915050565b62000c8c8262000a07565b67ffffffffffffffff81111562000ca85762000ca762000a12565b5b62000cb4825462000a70565b62000cc182828562000be6565b600060209050601f83116001811462000cf9576000841562000ce4578287015190505b62000cf0858262000c63565b86555062000d60565b601f19841662000d098662000aa5565b60005b8281101562000d335784890151825560018201915060208501945060208101905062000d0c565b8683101562000d53578489015162000d4f601f89168262000c43565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d9a8262000d6d565b9050919050565b62000dac8162000d8d565b811462000db857600080fd5b50565b60008151905062000dcc8162000da1565b92915050565b60006020828403121562000deb5762000dea62000d68565b5b600062000dfb8482850162000dbb565b91505092915050565b600082825260208201905092915050565b7f696e76616c696420616464726573730000000000000000000000000000000000600082015250565b600062000e4d600f8362000e04565b915062000e5a8262000e15565b602082019050919050565b6000602082019050818103600083015262000e808162000e3e565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000ebf601f8362000e04565b915062000ecc8262000e87565b602082019050919050565b6000602082019050818103600083015262000ef28162000eb0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000f358262000b2d565b915062000f428362000b2d565b925082820190508082111562000f5d5762000f5c62000ef9565b5b92915050565b62000f6e8162000b2d565b82525050565b600060208201905062000f8b600083018462000f63565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600062000fef60248362000e04565b915062000ffc8262000f91565b604082019050919050565b60006020820190508181036000830152620010228162000fe0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006200108760228362000e04565b9150620010948262001029565b604082019050919050565b60006020820190508181036000830152620010ba8162001078565b9050919050565b614d7d80620010d16000396000f3fe6080604052600436106102b25760003560e01c80638da5cb5b11610175578063be61c7d3116100dc578063e0bf7fd111610095578063ee4345d11161006f578063ee4345d114610b2f578063f2fde38b14610b5a578063f756b16214610b83578063fa88c44214610bae576102b9565b8063e0bf7fd114610a8a578063e7a20f3f14610ac7578063e962f7a214610b04576102b9565b8063be61c7d31461097a578063bf00c805146109a5578063c00e1047146109ce578063c1a88413146109f7578063dd0b266614610a22578063dd62ed3e14610a4d576102b9565b8063a83be1851161012e578063a83be18514610868578063a9059cbb14610893578063aabfaeea146108d0578063ad29ffde146108fb578063ad5c464814610924578063b6fccf8a1461094f576102b9565b80638da5cb5b1461072f57806392fe0f651461075a578063932d9eb11461079857806395d89b41146107d757806396b2b24614610802578063a457c2d71461082b576102b9565b8063313ce567116102195780636b90694c116101d25780636b90694c146106315780636ea056a91461065c5780636ebcf3351461068557806370a08231146106b0578063715018a6146106ed5780638091f3bf14610704576102b9565b8063313ce567146104fb57806339509351146105265780633ff42b9214610563578063548c0ef41461058e57806360ce2fb0146105cb5780636446e13d14610608576102b9565b806318160ddd1161026b57806318160ddd146103c3578063193334d6146103ee5780631cdd3be31461042b57806323b67a921461046857806323b872dd1461049357806329bcd8f5146104d0576102b9565b806301339c21146102be5780630445b667146102c857806306fdde03146102f3578063095ea7b31461031e578063146ca5311461035b57806316a906bf14610386576102b9565b366102b957005b600080fd5b6102c6610bd7565b005b3480156102d457600080fd5b506102dd610d6a565b6040516102ea9190613910565b60405180910390f35b3480156102ff57600080fd5b50610308610d70565b60405161031591906139bb565b60405180910390f35b34801561032a57600080fd5b5061034560048036038101906103409190613a7b565b610e02565b6040516103529190613ad6565b60405180910390f35b34801561036757600080fd5b50610370610e25565b60405161037d9190613910565b60405180910390f35b34801561039257600080fd5b506103ad60048036038101906103a89190613af1565b610e2b565b6040516103ba9190613ad6565b60405180910390f35b3480156103cf57600080fd5b506103d8610e4b565b6040516103e59190613910565b60405180910390f35b3480156103fa57600080fd5b5061041560048036038101906104109190613af1565b610e55565b6040516104229190613ad6565b60405180910390f35b34801561043757600080fd5b50610452600480360381019061044d9190613af1565b610e75565b60405161045f9190613ad6565b60405180910390f35b34801561047457600080fd5b5061047d610e95565b60405161048a9190613910565b60405180910390f35b34801561049f57600080fd5b506104ba60048036038101906104b59190613b1e565b610e9b565b6040516104c79190613ad6565b60405180910390f35b3480156104dc57600080fd5b506104e5610eca565b6040516104f29190613c80565b60405180910390f35b34801561050757600080fd5b50610510610f93565b60405161051d9190613cbe565b60405180910390f35b34801561053257600080fd5b5061054d60048036038101906105489190613a7b565b610faa565b60405161055a9190613ad6565b60405180910390f35b34801561056f57600080fd5b50610578610fe1565b6040516105859190613ce8565b60405180910390f35b34801561059a57600080fd5b506105b560048036038101906105b09190613af1565b611007565b6040516105c29190613910565b60405180910390f35b3480156105d757600080fd5b506105f260048036038101906105ed9190613af1565b611152565b6040516105ff9190613910565b60405180910390f35b34801561061457600080fd5b5061062f600480360381019061062a9190613d03565b61116a565b005b34801561063d57600080fd5b5061064661117c565b6040516106539190613ce8565b60405180910390f35b34801561066857600080fd5b50610683600480360381019061067e9190613a7b565b6111a2565b005b34801561069157600080fd5b5061069a6112a2565b6040516106a79190613ce8565b60405180910390f35b3480156106bc57600080fd5b506106d760048036038101906106d29190613af1565b6112c8565b6040516106e49190613910565b60405180910390f35b3480156106f957600080fd5b50610702611310565b005b34801561071057600080fd5b50610719611324565b6040516107269190613ad6565b60405180910390f35b34801561073b57600080fd5b50610744611337565b6040516107519190613ce8565b60405180910390f35b34801561076657600080fd5b50610781600480360381019061077c9190613d03565b611361565b60405161078f929190613e8e565b60405180910390f35b3480156107a457600080fd5b506107bf60048036038101906107ba9190613d03565b611546565b6040516107ce93929190613ec5565b60405180910390f35b3480156107e357600080fd5b506107ec6115a0565b6040516107f991906139bb565b60405180910390f35b34801561080e57600080fd5b5061082960048036038101906108249190613efc565b611632565b005b34801561083757600080fd5b50610852600480360381019061084d9190613a7b565b611654565b60405161085f9190613ad6565b60405180910390f35b34801561087457600080fd5b5061087d6116cb565b60405161088a9190613910565b60405180910390f35b34801561089f57600080fd5b506108ba60048036038101906108b59190613a7b565b6116d1565b6040516108c79190613ad6565b60405180910390f35b3480156108dc57600080fd5b506108e56116f4565b6040516108f29190613910565b60405180910390f35b34801561090757600080fd5b50610922600480360381019061091d91906140c3565b6116fa565b005b34801561093057600080fd5b50610939611797565b6040516109469190613ce8565b60405180910390f35b34801561095b57600080fd5b506109646117bd565b6040516109719190613ce8565b60405180910390f35b34801561098657600080fd5b5061098f6117e3565b60405161099c9190613ce8565b60405180910390f35b3480156109b157600080fd5b506109cc60048036038101906109c79190613d03565b611809565b005b3480156109da57600080fd5b506109f560048036038101906109f09190613af1565b61181b565b005b348015610a0357600080fd5b50610a0c611867565b604051610a199190613910565b60405180910390f35b348015610a2e57600080fd5b50610a3761186d565b604051610a449190613910565b60405180910390f35b348015610a5957600080fd5b50610a746004803603810190610a6f919061411f565b611873565b604051610a819190613910565b60405180910390f35b348015610a9657600080fd5b50610ab16004803603810190610aac9190613af1565b6118fa565b604051610abe9190613ad6565b60405180910390f35b348015610ad357600080fd5b50610aee6004803603810190610ae99190613d03565b61191a565b604051610afb9190613ce8565b60405180910390f35b348015610b1057600080fd5b50610b19611959565b604051610b269190613910565b60405180910390f35b348015610b3b57600080fd5b50610b4461195f565b604051610b5191906141be565b60405180910390f35b348015610b6657600080fd5b50610b816004803603810190610b7c9190613af1565b611985565b005b348015610b8f57600080fd5b50610b98611a08565b604051610ba59190613910565b60405180910390f35b348015610bba57600080fd5b50610bd56004803603810190610bd09190613d03565b611a0e565b005b610bdf611a20565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7091906141ee565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401610ccc92919061421b565b602060405180830381865afa158015610ce9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0d91906141ee565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a60146101000a81548160ff021916908315150217905550565b600b5481565b606060048054610d7f90614273565b80601f0160208091040260200160405190810160405280929190818152602001828054610dab90614273565b8015610df85780601f10610dcd57610100808354040283529160200191610df8565b820191906000526020600020905b815481529060010190602001808311610ddb57829003601f168201915b5050505050905090565b600080610e0d611a9e565b9050610e1a818585611aa6565b600191505092915050565b600f5481565b60166020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b60176020528060005260406000206000915054906101000a900460ff1681565b600d6020528060005260406000206000915054906101000a900460ff1681565b601c5481565b600080610ea6611a9e565b9050610eb3858285611c6f565b610ebe858585611cfb565b60019150509392505050565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015610f8a5783829060005260206000209060030201604051806060016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152505081526020019060010190610eee565b50505050905090565b6000600360009054906101000a900460ff16905090565b600080610fb5611a9e565b9050610fd6818585610fc78589611873565b610fd191906142d3565b611aa6565b600191505092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403611058576000905061114d565b6000600e5490505b6014805490508110156111475760006014828154811061108357611082614307565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110ea5750611134565b82806110f590614336565b9350508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361113257505061114d565b505b808061113f90614336565b915050611060565b50600090505b919050565b60156020528060005260406000206000915090505481565b611172611a20565b80601c8190555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6111aa611a20565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611203576111fe6111e9611337565b600083146111f757826111f9565b475b6120e2565b61129e565b61129d8261120f611337565b6000841461121d5783611298565b8473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112569190613ce8565b602060405180830381865afa158015611273573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112979190614393565b5b6121e2565b5b5050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611318611a20565b6113226000612318565b565b600a60149054906101000a900460ff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60608060008367ffffffffffffffff8111156113805761137f613f54565b5b6040519080825280602002602001820160405280156113ae5781602001602082028036833780820191505090505b50905060008467ffffffffffffffff8111156113cd576113cc613f54565b5b6040519080825280602002602001820160405280156113fb5781602001602082028036833780820191505090505b509050600080600e5490505b6014805490508110156115375760006014828154811061142a57611429614307565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114915750611524565b808484815181106114a5576114a4614307565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506114e8816112c8565b8584815181106114fb576114fa614307565b5b602002602001018181525050828061151290614336565b9350508783106115225750611537565b505b808061152f90614336565b915050611407565b50818394509450505050915091565b6018818154811061155657600080fd5b90600052602060002090600302016000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154905083565b6060600580546115af90614273565b80601f01602080910402602001604051908101604052809291908181526020018280546115db90614273565b80156116285780601f106115fd57610100808354040283529160200191611628565b820191906000526020600020905b81548152906001019060200180831161160b57829003601f168201915b5050505050905090565b61163a611a20565b826011819055508160128190555080601381905550505050565b60008061165f611a9e565b9050600061166d8286611873565b9050838110156116b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a990614432565b60405180910390fd5b6116bf8286868403611aa6565b60019250505092915050565b60115481565b6000806116dc611a9e565b90506116e9818585611cfb565b600191505092915050565b60105481565b611702611a20565b60005b82518110156117925781600c600085848151811061172657611725614307565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061178a90614336565b915050611705565b505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611811611a20565b8060108190555050565b611823611a20565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60135481565b60125481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c6020528060005260406000206000915054906101000a900460ff1681565b6014818154811061192a57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601a5481565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61198d611a20565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f3906144c4565b60405180910390fd5b611a0581612318565b50565b601b5481565b611a16611a20565b80600b8190555050565b611a28611a9e565b73ffffffffffffffffffffffffffffffffffffffff16611a46611337565b73ffffffffffffffffffffffffffffffffffffffff1614611a9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9390614530565b60405180910390fd5b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0c906145c2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7b90614654565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c629190613910565b60405180910390a3505050565b6000611c7b8484611873565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611cf55781811015611ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cde906146c0565b60405180910390fd5b611cf48484848403611aa6565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d655750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611d72575060008114155b611d7b57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611db357600080fd5b60001515600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611e1057600080fd5b600a60159054906101000a900460ff1680611e745750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611ec85750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611edd57611ed88383836123de565b6120dd565b600a60149054906101000a900460ff16611f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f239061472c565b60405180910390fd5b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161490506000611fab6103e8611f9d60648661265490919063ffffffff16565b61266a90919063ffffffff16565b9050611fc0818461268090919063ffffffff16565b9250611fca612696565b611fd26128f4565b611fdc8585612c5c565b611fe68585612e08565b611ff18530836123de565b6000611ffc306112c8565b905082801561200d5750600b548110155b156120ce5760008190506000600b541180156120365750600b546005612033919061474c565b81115b1561204d57600b54600561204a919061474c565b90505b6000612059823061338d565b9050612093600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660058361208e91906147d5565b6120e2565b6120cb601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166005836120c691906147d5565b6120e2565b50505b6120d98686866123de565b5050505b505050565b60008273ffffffffffffffffffffffffffffffffffffffff1682600067ffffffffffffffff81111561211757612116613f54565b5b6040519080825280601f01601f1916602001820160405280156121495781602001600182028036833780820191505090505b50604051612157919061484d565b60006040518083038185875af1925050503d8060008114612194576040519150601f19603f3d011682016040523d82523d6000602084013e612199565b606091505b50509050806121dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d4906148d6565b60405180910390fd5b505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040516024016122149291906148f6565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051612262919061484d565b6000604051808303816000865af19150503d806000811461229f576040519150601f19603f3d011682016040523d82523d6000602084013e6122a4565b606091505b50915091508180156122d257506000815114806122d15750808060200190518101906122d09190614934565b5b5b612311576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612308906149d3565b60405180910390fd5b5050505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361244d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244490614a65565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b390614af7565b60405180910390fd5b6124c78383836135af565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561254d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254490614b89565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161263b9190613910565b60405180910390a361264e8484846135b4565b50505050565b60008183612662919061474c565b905092915050565b6000818361267891906147d5565b905092915050565b6000818361268e9190614ba9565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff16601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603156128f25742601c54601a546126fe91906142d3565b116128f25760006002601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163161274b91906147d5565b905061277b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002836135b9565b6000601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601a819055506000601b81905550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dc2fc7cd601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161284c9291906148f6565b600060405180830381600087803b15801561286657600080fd5b505af115801561287a573d6000803e3d6000fd5b50505050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fec6267cf214b8cfdcff28b92dbd18a17376e877ffc27b94042e881021be878d4601b546040516128e89190613910565b60405180910390a2505b565b601154601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163110612c5a57600060105467ffffffffffffffff81111561295457612953613f54565b5b6040519080825280602002602001820160405280156129825781602001602082028036833780820191505090505b509050600080600e5490505b601480549050811015612aab576000601482815481106129b1576129b0614307565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612a185750612a98565b80848481518110612a2c57612a2b614307565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508280612a7190614336565b9350506010548310612a9657600182612a8a91906142d3565b600e8190555050612aab565b505b8080612aa390614336565b91505061298e565b506010548110612c57576000601054601154612ac791906147d5565b905060005b601054811015612c1d576000848281518110612aeb57612aea614307565b5b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff167fec6267cf214b8cfdcff28b92dbd18a17376e877ffc27b94042e881021be878d484604051612b3b9190613910565b60405180910390a26001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612bfd81846120e2565b612c09816001856135b9565b508080612c1590614336565b915050612acc565b506001600f6000828254612c3191906142d3565b92505081905550612c4f6012546011546136f490919063ffffffff16565b601181905550505b50505b565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d08576000601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601a819055506000601b81905550612e04565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16149050808015612d9557503273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15612e02576000612da461370a565b9050601b54811115612e005732601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555042601a8190555080601b819055505b505b505b5050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161490506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161490506000828015612eec57503273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015612f48575060001515601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b8015612f9e5750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130b157601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081148015612ffe5750601354612ffb61370a565b10155b156130b0576014849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601480549050601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b8180156130ca5750600015156130c6866138ad565b1515145b1561322257601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008114613221576000601460018361312a9190614ba9565b8154811061313b5761313a614307565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b8115801561322e575082155b1561338657601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008114613385576000601460018361328e9190614ba9565b8154811061329f5761329e614307565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5050505050565b60006001600a60156101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163190506000600267ffffffffffffffff8111156133e1576133e0613f54565b5b60405190808252806020026020018201604052801561340f5781602001602082028036833780820191505090505b509050308160008151811061342757613426614307565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061349857613497614307565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008487426040518663ffffffff1660e01b8152600401613536959493929190614c18565b600060405180830381600087803b15801561355057600080fd5b505af1158015613564573d6000803e3d6000fd5b50505050818373ffffffffffffffffffffffffffffffffffffffff163161358b9190614ba9565b9150506000600a60156101000a81548160ff02191690831515021790555092915050565b505050565b505050565b6135c16138c0565b8281600001818152505083816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508181604001818152505060188190806001815401808255809150506001900390600052602060002090600302016000909190919091506000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002015550506001601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b6000818361370291906142d3565b905092915050565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561377a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061379e9190614cf4565b505090506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016138219190613ce8565b602060405180830381865afa15801561383e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138629190614393565b9050816dffffffffffffffffffffffffffff1681116138825760006138a6565b6138a5826dffffffffffffffffffffffffffff168261268090919063ffffffff16565b5b9250505090565b600080823b905060008111915050919050565b604051806060016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b6000819050919050565b61390a816138f7565b82525050565b60006020820190506139256000830184613901565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561396557808201518184015260208101905061394a565b60008484015250505050565b6000601f19601f8301169050919050565b600061398d8261392b565b6139978185613936565b93506139a7818560208601613947565b6139b081613971565b840191505092915050565b600060208201905081810360008301526139d58184613982565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613a1c826139f1565b9050919050565b613a2c81613a11565b8114613a3757600080fd5b50565b600081359050613a4981613a23565b92915050565b613a58816138f7565b8114613a6357600080fd5b50565b600081359050613a7581613a4f565b92915050565b60008060408385031215613a9257613a916139e7565b5b6000613aa085828601613a3a565b9250506020613ab185828601613a66565b9150509250929050565b60008115159050919050565b613ad081613abb565b82525050565b6000602082019050613aeb6000830184613ac7565b92915050565b600060208284031215613b0757613b066139e7565b5b6000613b1584828501613a3a565b91505092915050565b600080600060608486031215613b3757613b366139e7565b5b6000613b4586828701613a3a565b9350506020613b5686828701613a3a565b9250506040613b6786828701613a66565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ba6816138f7565b82525050565b613bb581613a11565b82525050565b606082016000820151613bd16000850182613b9d565b506020820151613be46020850182613bac565b506040820151613bf76040850182613b9d565b50505050565b6000613c098383613bbb565b60608301905092915050565b6000602082019050919050565b6000613c2d82613b71565b613c378185613b7c565b9350613c4283613b8d565b8060005b83811015613c73578151613c5a8882613bfd565b9750613c6583613c15565b925050600181019050613c46565b5085935050505092915050565b60006020820190508181036000830152613c9a8184613c22565b905092915050565b600060ff82169050919050565b613cb881613ca2565b82525050565b6000602082019050613cd36000830184613caf565b92915050565b613ce281613a11565b82525050565b6000602082019050613cfd6000830184613cd9565b92915050565b600060208284031215613d1957613d186139e7565b5b6000613d2784828501613a66565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000613d688383613bac565b60208301905092915050565b6000602082019050919050565b6000613d8c82613d30565b613d968185613d3b565b9350613da183613d4c565b8060005b83811015613dd2578151613db98882613d5c565b9750613dc483613d74565b925050600181019050613da5565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000613e178383613b9d565b60208301905092915050565b6000602082019050919050565b6000613e3b82613ddf565b613e458185613dea565b9350613e5083613dfb565b8060005b83811015613e81578151613e688882613e0b565b9750613e7383613e23565b925050600181019050613e54565b5085935050505092915050565b60006040820190508181036000830152613ea88185613d81565b90508181036020830152613ebc8184613e30565b90509392505050565b6000606082019050613eda6000830186613901565b613ee76020830185613cd9565b613ef46040830184613901565b949350505050565b600080600060608486031215613f1557613f146139e7565b5b6000613f2386828701613a66565b9350506020613f3486828701613a66565b9250506040613f4586828701613a66565b9150509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613f8c82613971565b810181811067ffffffffffffffff82111715613fab57613faa613f54565b5b80604052505050565b6000613fbe6139dd565b9050613fca8282613f83565b919050565b600067ffffffffffffffff821115613fea57613fe9613f54565b5b602082029050602081019050919050565b600080fd5b600061401361400e84613fcf565b613fb4565b9050808382526020820190506020840283018581111561403657614035613ffb565b5b835b8181101561405f578061404b8882613a3a565b845260208401935050602081019050614038565b5050509392505050565b600082601f83011261407e5761407d613f4f565b5b813561408e848260208601614000565b91505092915050565b6140a081613abb565b81146140ab57600080fd5b50565b6000813590506140bd81614097565b92915050565b600080604083850312156140da576140d96139e7565b5b600083013567ffffffffffffffff8111156140f8576140f76139ec565b5b61410485828601614069565b9250506020614115858286016140ae565b9150509250929050565b60008060408385031215614136576141356139e7565b5b600061414485828601613a3a565b925050602061415585828601613a3a565b9150509250929050565b6000819050919050565b600061418461417f61417a846139f1565b61415f565b6139f1565b9050919050565b600061419682614169565b9050919050565b60006141a88261418b565b9050919050565b6141b88161419d565b82525050565b60006020820190506141d360008301846141af565b92915050565b6000815190506141e881613a23565b92915050565b600060208284031215614204576142036139e7565b5b6000614212848285016141d9565b91505092915050565b60006040820190506142306000830185613cd9565b61423d6020830184613cd9565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061428b57607f821691505b60208210810361429e5761429d614244565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006142de826138f7565b91506142e9836138f7565b9250828201905080821115614301576143006142a4565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614341826138f7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614373576143726142a4565b5b600182019050919050565b60008151905061438d81613a4f565b92915050565b6000602082840312156143a9576143a86139e7565b5b60006143b78482850161437e565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061441c602583613936565b9150614427826143c0565b604082019050919050565b6000602082019050818103600083015261444b8161440f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006144ae602683613936565b91506144b982614452565b604082019050919050565b600060208201905081810360008301526144dd816144a1565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061451a602083613936565b9150614525826144e4565b602082019050919050565b600060208201905081810360008301526145498161450d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006145ac602483613936565b91506145b782614550565b604082019050919050565b600060208201905081810360008301526145db8161459f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061463e602283613936565b9150614649826145e2565b604082019050919050565b6000602082019050818103600083015261466d81614631565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006146aa601d83613936565b91506146b582614674565b602082019050919050565b600060208201905081810360008301526146d98161469d565b9050919050565b7f6e6f74206c61756e636865640000000000000000000000000000000000000000600082015250565b6000614716600c83613936565b9150614721826146e0565b602082019050919050565b6000602082019050818103600083015261474581614709565b9050919050565b6000614757826138f7565b9150614762836138f7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561479b5761479a6142a4565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147e0826138f7565b91506147eb836138f7565b9250826147fb576147fa6147a6565b5b828204905092915050565b600081519050919050565b600081905092915050565b600061482782614806565b6148318185614811565b9350614841818560208601613947565b80840191505092915050565b6000614859828461481c565b915081905092915050565b7f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60008201527f20455448207472616e73666572206661696c6564000000000000000000000000602082015250565b60006148c0603483613936565b91506148cb82614864565b604082019050919050565b600060208201905081810360008301526148ef816148b3565b9050919050565b600060408201905061490b6000830185613cd9565b6149186020830184613901565b9392505050565b60008151905061492e81614097565b92915050565b60006020828403121561494a576149496139e7565b5b60006149588482850161491f565b91505092915050565b7f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260008201527f616e73666572206661696c656400000000000000000000000000000000000000602082015250565b60006149bd602d83613936565b91506149c882614961565b604082019050919050565b600060208201905081810360008301526149ec816149b0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614a4f602583613936565b9150614a5a826149f3565b604082019050919050565b60006020820190508181036000830152614a7e81614a42565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614ae1602383613936565b9150614aec82614a85565b604082019050919050565b60006020820190508181036000830152614b1081614ad4565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614b73602683613936565b9150614b7e82614b17565b604082019050919050565b60006020820190508181036000830152614ba281614b66565b9050919050565b6000614bb4826138f7565b9150614bbf836138f7565b9250828203905081811115614bd757614bd66142a4565b5b92915050565b6000819050919050565b6000614c02614bfd614bf884614bdd565b61415f565b6138f7565b9050919050565b614c1281614be7565b82525050565b600060a082019050614c2d6000830188613901565b614c3a6020830187614c09565b8181036040830152614c4c8186613d81565b9050614c5b6060830185613cd9565b614c686080830184613901565b9695505050505050565b60006dffffffffffffffffffffffffffff82169050919050565b614c9581614c72565b8114614ca057600080fd5b50565b600081519050614cb281614c8c565b92915050565b600063ffffffff82169050919050565b614cd181614cb8565b8114614cdc57600080fd5b50565b600081519050614cee81614cc8565b92915050565b600080600060608486031215614d0d57614d0c6139e7565b5b6000614d1b86828701614ca3565b9350506020614d2c86828701614ca3565b9250506040614d3d86828701614cdf565b915050925092509256fea2646970667358221220cc80d7bc011647bc513d648eb05e505a6846032c8bd27eb05316a7b9e9addd6564736f6c63430008100033608060405234801561001057600080fd5b5060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016000803273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506104d4806100ce6000396000f3fe6080604052600436106100225760003560e01c8063dc2fc7cd1461002e57610029565b3661002957005b600080fd5b34801561003a57600080fd5b5061005560048036038101906100509190610298565b610057565b005b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166100e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100d990610335565b60405180910390fd5b6100fb82600083146100f457826100f6565b475b6100ff565b5050565b60008273ffffffffffffffffffffffffffffffffffffffff1682600067ffffffffffffffff81111561013457610133610355565b5b6040519080825280601f01601f1916602001820160405280156101665781602001600182028036833780820191505090505b5060405161017491906103f5565b60006040518083038185875af1925050503d80600081146101b1576040519150601f19603f3d011682016040523d82523d6000602084013e6101b6565b606091505b50509050806101fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101f19061047e565b60405180910390fd5b505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061022f82610204565b9050919050565b61023f81610224565b811461024a57600080fd5b50565b60008135905061025c81610236565b92915050565b6000819050919050565b61027581610262565b811461028057600080fd5b50565b6000813590506102928161026c565b92915050565b600080604083850312156102af576102ae6101ff565b5b60006102bd8582860161024d565b92505060206102ce85828601610283565b9150509250929050565b600082825260208201905092915050565b7f6e6f74206f776e65720000000000000000000000000000000000000000000000600082015250565b600061031f6009836102d8565b915061032a826102e9565b602082019050919050565b6000602082019050818103600083015261034e81610312565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600081905092915050565b60005b838110156103b857808201518184015260208101905061039d565b60008484015250505050565b60006103cf82610384565b6103d9818561038f565b93506103e981856020860161039a565b80840191505092915050565b600061040182846103c4565b915081905092915050565b7f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60008201527f20455448207472616e73666572206661696c6564000000000000000000000000602082015250565b60006104686034836102d8565b91506104738261040c565b604082019050919050565b600060208201905081810360008301526104978161045b565b905091905056fea26469706673582212203aff80c2aac2b4ead4dca4498c06721f0ce571f0e6957cb1ce32d0941d96d3fc64736f6c63430008100033

Deployed Bytecode

0x6080604052600436106102b25760003560e01c80638da5cb5b11610175578063be61c7d3116100dc578063e0bf7fd111610095578063ee4345d11161006f578063ee4345d114610b2f578063f2fde38b14610b5a578063f756b16214610b83578063fa88c44214610bae576102b9565b8063e0bf7fd114610a8a578063e7a20f3f14610ac7578063e962f7a214610b04576102b9565b8063be61c7d31461097a578063bf00c805146109a5578063c00e1047146109ce578063c1a88413146109f7578063dd0b266614610a22578063dd62ed3e14610a4d576102b9565b8063a83be1851161012e578063a83be18514610868578063a9059cbb14610893578063aabfaeea146108d0578063ad29ffde146108fb578063ad5c464814610924578063b6fccf8a1461094f576102b9565b80638da5cb5b1461072f57806392fe0f651461075a578063932d9eb11461079857806395d89b41146107d757806396b2b24614610802578063a457c2d71461082b576102b9565b8063313ce567116102195780636b90694c116101d25780636b90694c146106315780636ea056a91461065c5780636ebcf3351461068557806370a08231146106b0578063715018a6146106ed5780638091f3bf14610704576102b9565b8063313ce567146104fb57806339509351146105265780633ff42b9214610563578063548c0ef41461058e57806360ce2fb0146105cb5780636446e13d14610608576102b9565b806318160ddd1161026b57806318160ddd146103c3578063193334d6146103ee5780631cdd3be31461042b57806323b67a921461046857806323b872dd1461049357806329bcd8f5146104d0576102b9565b806301339c21146102be5780630445b667146102c857806306fdde03146102f3578063095ea7b31461031e578063146ca5311461035b57806316a906bf14610386576102b9565b366102b957005b600080fd5b6102c6610bd7565b005b3480156102d457600080fd5b506102dd610d6a565b6040516102ea9190613910565b60405180910390f35b3480156102ff57600080fd5b50610308610d70565b60405161031591906139bb565b60405180910390f35b34801561032a57600080fd5b5061034560048036038101906103409190613a7b565b610e02565b6040516103529190613ad6565b60405180910390f35b34801561036757600080fd5b50610370610e25565b60405161037d9190613910565b60405180910390f35b34801561039257600080fd5b506103ad60048036038101906103a89190613af1565b610e2b565b6040516103ba9190613ad6565b60405180910390f35b3480156103cf57600080fd5b506103d8610e4b565b6040516103e59190613910565b60405180910390f35b3480156103fa57600080fd5b5061041560048036038101906104109190613af1565b610e55565b6040516104229190613ad6565b60405180910390f35b34801561043757600080fd5b50610452600480360381019061044d9190613af1565b610e75565b60405161045f9190613ad6565b60405180910390f35b34801561047457600080fd5b5061047d610e95565b60405161048a9190613910565b60405180910390f35b34801561049f57600080fd5b506104ba60048036038101906104b59190613b1e565b610e9b565b6040516104c79190613ad6565b60405180910390f35b3480156104dc57600080fd5b506104e5610eca565b6040516104f29190613c80565b60405180910390f35b34801561050757600080fd5b50610510610f93565b60405161051d9190613cbe565b60405180910390f35b34801561053257600080fd5b5061054d60048036038101906105489190613a7b565b610faa565b60405161055a9190613ad6565b60405180910390f35b34801561056f57600080fd5b50610578610fe1565b6040516105859190613ce8565b60405180910390f35b34801561059a57600080fd5b506105b560048036038101906105b09190613af1565b611007565b6040516105c29190613910565b60405180910390f35b3480156105d757600080fd5b506105f260048036038101906105ed9190613af1565b611152565b6040516105ff9190613910565b60405180910390f35b34801561061457600080fd5b5061062f600480360381019061062a9190613d03565b61116a565b005b34801561063d57600080fd5b5061064661117c565b6040516106539190613ce8565b60405180910390f35b34801561066857600080fd5b50610683600480360381019061067e9190613a7b565b6111a2565b005b34801561069157600080fd5b5061069a6112a2565b6040516106a79190613ce8565b60405180910390f35b3480156106bc57600080fd5b506106d760048036038101906106d29190613af1565b6112c8565b6040516106e49190613910565b60405180910390f35b3480156106f957600080fd5b50610702611310565b005b34801561071057600080fd5b50610719611324565b6040516107269190613ad6565b60405180910390f35b34801561073b57600080fd5b50610744611337565b6040516107519190613ce8565b60405180910390f35b34801561076657600080fd5b50610781600480360381019061077c9190613d03565b611361565b60405161078f929190613e8e565b60405180910390f35b3480156107a457600080fd5b506107bf60048036038101906107ba9190613d03565b611546565b6040516107ce93929190613ec5565b60405180910390f35b3480156107e357600080fd5b506107ec6115a0565b6040516107f991906139bb565b60405180910390f35b34801561080e57600080fd5b5061082960048036038101906108249190613efc565b611632565b005b34801561083757600080fd5b50610852600480360381019061084d9190613a7b565b611654565b60405161085f9190613ad6565b60405180910390f35b34801561087457600080fd5b5061087d6116cb565b60405161088a9190613910565b60405180910390f35b34801561089f57600080fd5b506108ba60048036038101906108b59190613a7b565b6116d1565b6040516108c79190613ad6565b60405180910390f35b3480156108dc57600080fd5b506108e56116f4565b6040516108f29190613910565b60405180910390f35b34801561090757600080fd5b50610922600480360381019061091d91906140c3565b6116fa565b005b34801561093057600080fd5b50610939611797565b6040516109469190613ce8565b60405180910390f35b34801561095b57600080fd5b506109646117bd565b6040516109719190613ce8565b60405180910390f35b34801561098657600080fd5b5061098f6117e3565b60405161099c9190613ce8565b60405180910390f35b3480156109b157600080fd5b506109cc60048036038101906109c79190613d03565b611809565b005b3480156109da57600080fd5b506109f560048036038101906109f09190613af1565b61181b565b005b348015610a0357600080fd5b50610a0c611867565b604051610a199190613910565b60405180910390f35b348015610a2e57600080fd5b50610a3761186d565b604051610a449190613910565b60405180910390f35b348015610a5957600080fd5b50610a746004803603810190610a6f919061411f565b611873565b604051610a819190613910565b60405180910390f35b348015610a9657600080fd5b50610ab16004803603810190610aac9190613af1565b6118fa565b604051610abe9190613ad6565b60405180910390f35b348015610ad357600080fd5b50610aee6004803603810190610ae99190613d03565b61191a565b604051610afb9190613ce8565b60405180910390f35b348015610b1057600080fd5b50610b19611959565b604051610b269190613910565b60405180910390f35b348015610b3b57600080fd5b50610b4461195f565b604051610b5191906141be565b60405180910390f35b348015610b6657600080fd5b50610b816004803603810190610b7c9190613af1565b611985565b005b348015610b8f57600080fd5b50610b98611a08565b604051610ba59190613910565b60405180910390f35b348015610bba57600080fd5b50610bd56004803603810190610bd09190613d03565b611a0e565b005b610bdf611a20565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7091906141ee565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401610ccc92919061421b565b602060405180830381865afa158015610ce9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0d91906141ee565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a60146101000a81548160ff021916908315150217905550565b600b5481565b606060048054610d7f90614273565b80601f0160208091040260200160405190810160405280929190818152602001828054610dab90614273565b8015610df85780601f10610dcd57610100808354040283529160200191610df8565b820191906000526020600020905b815481529060010190602001808311610ddb57829003601f168201915b5050505050905090565b600080610e0d611a9e565b9050610e1a818585611aa6565b600191505092915050565b600f5481565b60166020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b60176020528060005260406000206000915054906101000a900460ff1681565b600d6020528060005260406000206000915054906101000a900460ff1681565b601c5481565b600080610ea6611a9e565b9050610eb3858285611c6f565b610ebe858585611cfb565b60019150509392505050565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015610f8a5783829060005260206000209060030201604051806060016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152505081526020019060010190610eee565b50505050905090565b6000600360009054906101000a900460ff16905090565b600080610fb5611a9e565b9050610fd6818585610fc78589611873565b610fd191906142d3565b611aa6565b600191505092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403611058576000905061114d565b6000600e5490505b6014805490508110156111475760006014828154811061108357611082614307565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110ea5750611134565b82806110f590614336565b9350508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361113257505061114d565b505b808061113f90614336565b915050611060565b50600090505b919050565b60156020528060005260406000206000915090505481565b611172611a20565b80601c8190555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6111aa611a20565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611203576111fe6111e9611337565b600083146111f757826111f9565b475b6120e2565b61129e565b61129d8261120f611337565b6000841461121d5783611298565b8473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112569190613ce8565b602060405180830381865afa158015611273573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112979190614393565b5b6121e2565b5b5050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611318611a20565b6113226000612318565b565b600a60149054906101000a900460ff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60608060008367ffffffffffffffff8111156113805761137f613f54565b5b6040519080825280602002602001820160405280156113ae5781602001602082028036833780820191505090505b50905060008467ffffffffffffffff8111156113cd576113cc613f54565b5b6040519080825280602002602001820160405280156113fb5781602001602082028036833780820191505090505b509050600080600e5490505b6014805490508110156115375760006014828154811061142a57611429614307565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114915750611524565b808484815181106114a5576114a4614307565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506114e8816112c8565b8584815181106114fb576114fa614307565b5b602002602001018181525050828061151290614336565b9350508783106115225750611537565b505b808061152f90614336565b915050611407565b50818394509450505050915091565b6018818154811061155657600080fd5b90600052602060002090600302016000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154905083565b6060600580546115af90614273565b80601f01602080910402602001604051908101604052809291908181526020018280546115db90614273565b80156116285780601f106115fd57610100808354040283529160200191611628565b820191906000526020600020905b81548152906001019060200180831161160b57829003601f168201915b5050505050905090565b61163a611a20565b826011819055508160128190555080601381905550505050565b60008061165f611a9e565b9050600061166d8286611873565b9050838110156116b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a990614432565b60405180910390fd5b6116bf8286868403611aa6565b60019250505092915050565b60115481565b6000806116dc611a9e565b90506116e9818585611cfb565b600191505092915050565b60105481565b611702611a20565b60005b82518110156117925781600c600085848151811061172657611725614307565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061178a90614336565b915050611705565b505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611811611a20565b8060108190555050565b611823611a20565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60135481565b60125481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c6020528060005260406000206000915054906101000a900460ff1681565b6014818154811061192a57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601a5481565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61198d611a20565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f3906144c4565b60405180910390fd5b611a0581612318565b50565b601b5481565b611a16611a20565b80600b8190555050565b611a28611a9e565b73ffffffffffffffffffffffffffffffffffffffff16611a46611337565b73ffffffffffffffffffffffffffffffffffffffff1614611a9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9390614530565b60405180910390fd5b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0c906145c2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7b90614654565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c629190613910565b60405180910390a3505050565b6000611c7b8484611873565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611cf55781811015611ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cde906146c0565b60405180910390fd5b611cf48484848403611aa6565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d655750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611d72575060008114155b611d7b57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611db357600080fd5b60001515600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611e1057600080fd5b600a60159054906101000a900460ff1680611e745750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611ec85750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611edd57611ed88383836123de565b6120dd565b600a60149054906101000a900460ff16611f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f239061472c565b60405180910390fd5b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161490506000611fab6103e8611f9d60648661265490919063ffffffff16565b61266a90919063ffffffff16565b9050611fc0818461268090919063ffffffff16565b9250611fca612696565b611fd26128f4565b611fdc8585612c5c565b611fe68585612e08565b611ff18530836123de565b6000611ffc306112c8565b905082801561200d5750600b548110155b156120ce5760008190506000600b541180156120365750600b546005612033919061474c565b81115b1561204d57600b54600561204a919061474c565b90505b6000612059823061338d565b9050612093600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660058361208e91906147d5565b6120e2565b6120cb601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166005836120c691906147d5565b6120e2565b50505b6120d98686866123de565b5050505b505050565b60008273ffffffffffffffffffffffffffffffffffffffff1682600067ffffffffffffffff81111561211757612116613f54565b5b6040519080825280601f01601f1916602001820160405280156121495781602001600182028036833780820191505090505b50604051612157919061484d565b60006040518083038185875af1925050503d8060008114612194576040519150601f19603f3d011682016040523d82523d6000602084013e612199565b606091505b50509050806121dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d4906148d6565b60405180910390fd5b505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040516024016122149291906148f6565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051612262919061484d565b6000604051808303816000865af19150503d806000811461229f576040519150601f19603f3d011682016040523d82523d6000602084013e6122a4565b606091505b50915091508180156122d257506000815114806122d15750808060200190518101906122d09190614934565b5b5b612311576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612308906149d3565b60405180910390fd5b5050505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361244d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244490614a65565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b390614af7565b60405180910390fd5b6124c78383836135af565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561254d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254490614b89565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161263b9190613910565b60405180910390a361264e8484846135b4565b50505050565b60008183612662919061474c565b905092915050565b6000818361267891906147d5565b905092915050565b6000818361268e9190614ba9565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff16601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603156128f25742601c54601a546126fe91906142d3565b116128f25760006002601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163161274b91906147d5565b905061277b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002836135b9565b6000601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601a819055506000601b81905550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dc2fc7cd601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161284c9291906148f6565b600060405180830381600087803b15801561286657600080fd5b505af115801561287a573d6000803e3d6000fd5b50505050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fec6267cf214b8cfdcff28b92dbd18a17376e877ffc27b94042e881021be878d4601b546040516128e89190613910565b60405180910390a2505b565b601154601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163110612c5a57600060105467ffffffffffffffff81111561295457612953613f54565b5b6040519080825280602002602001820160405280156129825781602001602082028036833780820191505090505b509050600080600e5490505b601480549050811015612aab576000601482815481106129b1576129b0614307565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612a185750612a98565b80848481518110612a2c57612a2b614307565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508280612a7190614336565b9350506010548310612a9657600182612a8a91906142d3565b600e8190555050612aab565b505b8080612aa390614336565b91505061298e565b506010548110612c57576000601054601154612ac791906147d5565b905060005b601054811015612c1d576000848281518110612aeb57612aea614307565b5b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff167fec6267cf214b8cfdcff28b92dbd18a17376e877ffc27b94042e881021be878d484604051612b3b9190613910565b60405180910390a26001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612bfd81846120e2565b612c09816001856135b9565b508080612c1590614336565b915050612acc565b506001600f6000828254612c3191906142d3565b92505081905550612c4f6012546011546136f490919063ffffffff16565b601181905550505b50505b565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d08576000601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601a819055506000601b81905550612e04565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16149050808015612d9557503273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15612e02576000612da461370a565b9050601b54811115612e005732601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555042601a8190555080601b819055505b505b505b5050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161490506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161490506000828015612eec57503273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015612f48575060001515601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b8015612f9e5750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130b157601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081148015612ffe5750601354612ffb61370a565b10155b156130b0576014849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601480549050601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b8180156130ca5750600015156130c6866138ad565b1515145b1561322257601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008114613221576000601460018361312a9190614ba9565b8154811061313b5761313a614307565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b8115801561322e575082155b1561338657601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008114613385576000601460018361328e9190614ba9565b8154811061329f5761329e614307565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5050505050565b60006001600a60156101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163190506000600267ffffffffffffffff8111156133e1576133e0613f54565b5b60405190808252806020026020018201604052801561340f5781602001602082028036833780820191505090505b509050308160008151811061342757613426614307565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061349857613497614307565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008487426040518663ffffffff1660e01b8152600401613536959493929190614c18565b600060405180830381600087803b15801561355057600080fd5b505af1158015613564573d6000803e3d6000fd5b50505050818373ffffffffffffffffffffffffffffffffffffffff163161358b9190614ba9565b9150506000600a60156101000a81548160ff02191690831515021790555092915050565b505050565b505050565b6135c16138c0565b8281600001818152505083816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508181604001818152505060188190806001815401808255809150506001900390600052602060002090600302016000909190919091506000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002015550506001601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b6000818361370291906142d3565b905092915050565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561377a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061379e9190614cf4565b505090506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016138219190613ce8565b602060405180830381865afa15801561383e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138629190614393565b9050816dffffffffffffffffffffffffffff1681116138825760006138a6565b6138a5826dffffffffffffffffffffffffffff168261268090919063ffffffff16565b5b9250505090565b600080823b905060008111915050919050565b604051806060016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b6000819050919050565b61390a816138f7565b82525050565b60006020820190506139256000830184613901565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561396557808201518184015260208101905061394a565b60008484015250505050565b6000601f19601f8301169050919050565b600061398d8261392b565b6139978185613936565b93506139a7818560208601613947565b6139b081613971565b840191505092915050565b600060208201905081810360008301526139d58184613982565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613a1c826139f1565b9050919050565b613a2c81613a11565b8114613a3757600080fd5b50565b600081359050613a4981613a23565b92915050565b613a58816138f7565b8114613a6357600080fd5b50565b600081359050613a7581613a4f565b92915050565b60008060408385031215613a9257613a916139e7565b5b6000613aa085828601613a3a565b9250506020613ab185828601613a66565b9150509250929050565b60008115159050919050565b613ad081613abb565b82525050565b6000602082019050613aeb6000830184613ac7565b92915050565b600060208284031215613b0757613b066139e7565b5b6000613b1584828501613a3a565b91505092915050565b600080600060608486031215613b3757613b366139e7565b5b6000613b4586828701613a3a565b9350506020613b5686828701613a3a565b9250506040613b6786828701613a66565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ba6816138f7565b82525050565b613bb581613a11565b82525050565b606082016000820151613bd16000850182613b9d565b506020820151613be46020850182613bac565b506040820151613bf76040850182613b9d565b50505050565b6000613c098383613bbb565b60608301905092915050565b6000602082019050919050565b6000613c2d82613b71565b613c378185613b7c565b9350613c4283613b8d565b8060005b83811015613c73578151613c5a8882613bfd565b9750613c6583613c15565b925050600181019050613c46565b5085935050505092915050565b60006020820190508181036000830152613c9a8184613c22565b905092915050565b600060ff82169050919050565b613cb881613ca2565b82525050565b6000602082019050613cd36000830184613caf565b92915050565b613ce281613a11565b82525050565b6000602082019050613cfd6000830184613cd9565b92915050565b600060208284031215613d1957613d186139e7565b5b6000613d2784828501613a66565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000613d688383613bac565b60208301905092915050565b6000602082019050919050565b6000613d8c82613d30565b613d968185613d3b565b9350613da183613d4c565b8060005b83811015613dd2578151613db98882613d5c565b9750613dc483613d74565b925050600181019050613da5565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000613e178383613b9d565b60208301905092915050565b6000602082019050919050565b6000613e3b82613ddf565b613e458185613dea565b9350613e5083613dfb565b8060005b83811015613e81578151613e688882613e0b565b9750613e7383613e23565b925050600181019050613e54565b5085935050505092915050565b60006040820190508181036000830152613ea88185613d81565b90508181036020830152613ebc8184613e30565b90509392505050565b6000606082019050613eda6000830186613901565b613ee76020830185613cd9565b613ef46040830184613901565b949350505050565b600080600060608486031215613f1557613f146139e7565b5b6000613f2386828701613a66565b9350506020613f3486828701613a66565b9250506040613f4586828701613a66565b9150509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613f8c82613971565b810181811067ffffffffffffffff82111715613fab57613faa613f54565b5b80604052505050565b6000613fbe6139dd565b9050613fca8282613f83565b919050565b600067ffffffffffffffff821115613fea57613fe9613f54565b5b602082029050602081019050919050565b600080fd5b600061401361400e84613fcf565b613fb4565b9050808382526020820190506020840283018581111561403657614035613ffb565b5b835b8181101561405f578061404b8882613a3a565b845260208401935050602081019050614038565b5050509392505050565b600082601f83011261407e5761407d613f4f565b5b813561408e848260208601614000565b91505092915050565b6140a081613abb565b81146140ab57600080fd5b50565b6000813590506140bd81614097565b92915050565b600080604083850312156140da576140d96139e7565b5b600083013567ffffffffffffffff8111156140f8576140f76139ec565b5b61410485828601614069565b9250506020614115858286016140ae565b9150509250929050565b60008060408385031215614136576141356139e7565b5b600061414485828601613a3a565b925050602061415585828601613a3a565b9150509250929050565b6000819050919050565b600061418461417f61417a846139f1565b61415f565b6139f1565b9050919050565b600061419682614169565b9050919050565b60006141a88261418b565b9050919050565b6141b88161419d565b82525050565b60006020820190506141d360008301846141af565b92915050565b6000815190506141e881613a23565b92915050565b600060208284031215614204576142036139e7565b5b6000614212848285016141d9565b91505092915050565b60006040820190506142306000830185613cd9565b61423d6020830184613cd9565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061428b57607f821691505b60208210810361429e5761429d614244565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006142de826138f7565b91506142e9836138f7565b9250828201905080821115614301576143006142a4565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614341826138f7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614373576143726142a4565b5b600182019050919050565b60008151905061438d81613a4f565b92915050565b6000602082840312156143a9576143a86139e7565b5b60006143b78482850161437e565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061441c602583613936565b9150614427826143c0565b604082019050919050565b6000602082019050818103600083015261444b8161440f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006144ae602683613936565b91506144b982614452565b604082019050919050565b600060208201905081810360008301526144dd816144a1565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061451a602083613936565b9150614525826144e4565b602082019050919050565b600060208201905081810360008301526145498161450d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006145ac602483613936565b91506145b782614550565b604082019050919050565b600060208201905081810360008301526145db8161459f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061463e602283613936565b9150614649826145e2565b604082019050919050565b6000602082019050818103600083015261466d81614631565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006146aa601d83613936565b91506146b582614674565b602082019050919050565b600060208201905081810360008301526146d98161469d565b9050919050565b7f6e6f74206c61756e636865640000000000000000000000000000000000000000600082015250565b6000614716600c83613936565b9150614721826146e0565b602082019050919050565b6000602082019050818103600083015261474581614709565b9050919050565b6000614757826138f7565b9150614762836138f7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561479b5761479a6142a4565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147e0826138f7565b91506147eb836138f7565b9250826147fb576147fa6147a6565b5b828204905092915050565b600081519050919050565b600081905092915050565b600061482782614806565b6148318185614811565b9350614841818560208601613947565b80840191505092915050565b6000614859828461481c565b915081905092915050565b7f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60008201527f20455448207472616e73666572206661696c6564000000000000000000000000602082015250565b60006148c0603483613936565b91506148cb82614864565b604082019050919050565b600060208201905081810360008301526148ef816148b3565b9050919050565b600060408201905061490b6000830185613cd9565b6149186020830184613901565b9392505050565b60008151905061492e81614097565b92915050565b60006020828403121561494a576149496139e7565b5b60006149588482850161491f565b91505092915050565b7f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260008201527f616e73666572206661696c656400000000000000000000000000000000000000602082015250565b60006149bd602d83613936565b91506149c882614961565b604082019050919050565b600060208201905081810360008301526149ec816149b0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614a4f602583613936565b9150614a5a826149f3565b604082019050919050565b60006020820190508181036000830152614a7e81614a42565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614ae1602383613936565b9150614aec82614a85565b604082019050919050565b60006020820190508181036000830152614b1081614ad4565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614b73602683613936565b9150614b7e82614b17565b604082019050919050565b60006020820190508181036000830152614ba281614b66565b9050919050565b6000614bb4826138f7565b9150614bbf836138f7565b9250828203905081811115614bd757614bd66142a4565b5b92915050565b6000819050919050565b6000614c02614bfd614bf884614bdd565b61415f565b6138f7565b9050919050565b614c1281614be7565b82525050565b600060a082019050614c2d6000830188613901565b614c3a6020830187614c09565b8181036040830152614c4c8186613d81565b9050614c5b6060830185613cd9565b614c686080830184613901565b9695505050505050565b60006dffffffffffffffffffffffffffff82169050919050565b614c9581614c72565b8114614ca057600080fd5b50565b600081519050614cb281614c8c565b92915050565b600063ffffffff82169050919050565b614cd181614cb8565b8114614cdc57600080fd5b50565b600081519050614cee81614cc8565b92915050565b600080600060608486031215614d0d57614d0c6139e7565b5b6000614d1b86828701614ca3565b9350506020614d2c86828701614ca3565b9250506040614d3d86828701614cdf565b915050925092509256fea2646970667358221220cc80d7bc011647bc513d648eb05e505a6846032c8bd27eb05316a7b9e9addd6564736f6c63430008100033

Deployed Bytecode Sourcemap

22115:390:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12633:164;;;:::i;:::-;;10405:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5212:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6021:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10605:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11118:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5492:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11228:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10517:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11433:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6196:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22005:103;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5400:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6422:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10306:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20961:409;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11027:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13418:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10274:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13916:318;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11491:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5592:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4329:89;;;;;;;;;;;;;:::i;:::-;;10343:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4126:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21378:619;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;11276:30;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;5304:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13575:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6634:412;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10701:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5711:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10636:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12805:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10222:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10248:17;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11315:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13281:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13031:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10898:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10798:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5878:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10459:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10992:28;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11352:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11536:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4424:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11393:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13156:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12633:164;4101:13;:11;:13::i;:::-;12712:10:::1;;;;;;;;;;;12704:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12695:47;;;12751:4;12758;;;;;;;;;;;12695:68;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12690:2;;:73;;;;;;;;;;;;;;;;;;12785:4;12774:8;;:15;;;;;;;;;;;;;;;;;;12633:164::o:0;10405:45::-;;;;:::o;5212:86::-;5266:13;5290:5;5283:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5212:86;:::o;6021:169::-;6104:4;6112:13;6128:12;:10;:12::i;:::-;6112:28;;6142:32;6151:5;6158:7;6167:6;6142:8;:32::i;:::-;6183:4;6176:11;;;6021:169;;;;:::o;10605:24::-;;;;:::o;11118:39::-;;;;;;;;;;;;;;;;;;;;;;:::o;5492:94::-;5553:7;5571:12;;5564:19;;5492:94;:::o;11228:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;10517:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;11433:49::-;;;;:::o;6196:220::-;6293:4;6301:15;6319:12;:10;:12::i;:::-;6301:30;;6333:38;6349:4;6355:7;6364:6;6333:15;:38::i;:::-;6373:27;6383:4;6389:2;6393:6;6373:9;:27::i;:::-;6409:4;6402:11;;;6196:220;;;;;:::o;22005:103::-;22051:18;22089:11;22082:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22005:103;:::o;5400:86::-;5458:5;5474:9;;;;;;;;;;;5467:16;;5400:86;:::o;6422:206::-;6510:4;6518:13;6534:12;:10;:12::i;:::-;6518:28;;6548:64;6557:5;6564:7;6601:10;6573:25;6583:5;6590:7;6573:9;:25::i;:::-;:38;;;;:::i;:::-;6548:8;:64::i;:::-;6621:4;6614:11;;;6422:206;;;;:::o;10306:28::-;;;;;;;;;;;;;:::o;20961:409::-;21013:12;21062:1;21042:10;:16;21053:4;21042:16;;;;;;;;;;;;;;;;:21;21038:35;;21072:1;21065:8;;;;21038:35;21089:9;21101:6;;21089:18;;21084:260;21113:11;:18;;;;21109:1;:22;21084:260;;;21153:13;21169:11;21181:1;21169:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21153:30;;21219:1;21202:19;;:5;:19;;;21198:33;;21223:8;;;21198:33;21246:7;;;;;:::i;:::-;;;;21281:4;21272:13;;:5;:13;;;21268:65;;21306:11;;;;21268:65;21138:206;21084:260;21133:3;;;;;:::i;:::-;;;;21084:260;;;;21361:1;21354:8;;20961:409;;;;:::o;11027:45::-;;;;;;;;;;;;;;;;;:::o;13418:149::-;4101:13;:11;:13::i;:::-;13537:22:::1;13513:21;:46;;;;13418:149:::0;:::o;10274:25::-;;;;;;;;;;;;;:::o;13916:318::-;4101:13;:11;:13::i;:::-;14013:1:::1;13995:20;;:6;:20;;::::0;13991:235:::1;;14017:85;14048:7;:5;:7::i;:::-;14067:1;14057:6;:11;:44;;14095:6;14057:44;;;14071:21;14057:44;14017:30;:85::i;:::-;13991:235;;;14118:108;14146:6;14154:7;:5;:7::i;:::-;14173:1;14163:6;:11;:62;;14219:6;14163:62;;;14184:6;14177:24;;;14210:4;14177:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14163:62;14118:27;:108::i;:::-;13991:235;13916:318:::0;;:::o;11491:25::-;;;;;;;;;;;;;:::o;5592:113::-;5666:7;5684:9;:18;5694:7;5684:18;;;;;;;;;;;;;;;;5677:25;;5592:113;;;:::o;4329:89::-;4101:13;:11;:13::i;:::-;4385:30:::1;4412:1;4385:18;:30::i;:::-;4329:89::o:0;10343:23::-;;;;;;;;;;;;;:::o;4126:73::-;4172:7;4190:6;;;;;;;;;;;4183:13;;4126:73;:::o;21378:619::-;21442:16;21460;21489:26;21532:6;21518:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21489:50;;21550:29;21596:6;21582:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21550:53;;21614:11;21645:9;21657:6;;21645:18;;21640:307;21669:11;:18;;;;21665:1;:22;21640:307;;;21709:13;21725:11;21737:1;21725:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21709:30;;21775:1;21758:19;;:5;:19;;;21754:33;;21779:8;;;21754:33;21822:5;21802:12;21815:3;21802:17;;;;;;;;:::i;:::-;;;;;;;:25;;;;;;;;;;;21859:16;21869:5;21859:9;:16::i;:::-;21842:9;21852:3;21842:14;;;;;;;;:::i;:::-;;;;;;;:33;;;;;21890:6;;;;;:::i;:::-;;;;21922;21915:3;:13;21911:24;;21930:5;;;21911:24;21694:253;21640:307;21689:3;;;;;:::i;:::-;;;;21640:307;;;;21965:12;21979:9;21957:32;;;;;;;21378:619;;;:::o;11276:30::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5304:90::-;5360:13;5384:7;5377:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5304:90;:::o;13575:311::-;4101:13;:11;:13::i;:::-;13745:19:::1;13724:18;:40;;;;13804:27;13775:26;:56;;;;13861:17;13842:16;:36;;;;13575:311:::0;;;:::o;6634:412::-;6727:4;6744:13;6760:12;:10;:12::i;:::-;6744:28;;6783:24;6810:25;6820:5;6827:7;6810:9;:25::i;:::-;6783:52;;6874:15;6854:16;:35;;6846:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6954:60;6963:5;6970:7;6998:15;6979:16;:34;6954:8;:60::i;:::-;7034:4;7027:11;;;;6634:412;;;;:::o;10701:43::-;;;;:::o;5711:161::-;5790:4;5798:13;5814:12;:10;:12::i;:::-;5798:28;;5828;5838:5;5845:2;5849:6;5828:9;:28::i;:::-;5865:4;5858:11;;;5711:161;;;;:::o;10636:35::-;;;;:::o;12805:218::-;4101:13;:11;:13::i;:::-;12905:9:::1;12900:116;12924:8;:15;12920:1;:19;12900:116;;;12996:8;12961:19;:32;12981:8;12990:1;12981:11;;;;;;;;:::i;:::-;;;;;;;;12961:32;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;12941:3;;;;;:::i;:::-;;;;12900:116;;;;12805:218:::0;;:::o;10222:19::-;;;;;;;;;;;;;:::o;10248:17::-;;;;;;;;;;;;;:::o;11315:30::-;;;;;;;;;;;;;:::o;13281:129::-;4101:13;:11;:13::i;:::-;13385:17:::1;13366:16;:36;;;;13281:129:::0;:::o;13031:117::-;4101:13;:11;:13::i;:::-;13126:14:::1;13110:13;;:30;;;;;;;;;;;;;;;;;;13031:117:::0;:::o;10898:44::-;;;;:::o;10798:53::-;;;;:::o;5878:137::-;5967:7;5985:11;:18;5997:5;5985:18;;;;;;;;;;;;;;;:27;6004:7;5985:27;;;;;;;;;;;;;;;;5978:34;;5878:137;;;;:::o;10459:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;10992:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11352:34::-;;;;:::o;11536:25::-;;;;;;;;;;;;;:::o;4424:178::-;4101:13;:11;:13::i;:::-;4524:1:::1;4504:22;;:8;:22;;::::0;4496:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;4571:28;4590:8;4571:18;:28::i;:::-;4424:178:::0;:::o;11393:33::-;;;;:::o;13156:117::-;4101:13;:11;:13::i;:::-;13251:14:::1;13235:13;:30;;;;13156:117:::0;:::o;4205:118::-;4271:12;:10;:12::i;:::-;4260:23;;:7;:5;:7::i;:::-;:23;;;4252:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4205:118::o;3674:84::-;3727:7;3745:10;3738:17;;3674:84;:::o;8627:344::-;8746:1;8729:19;;:5;:19;;;8721:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8827:1;8808:21;;:7;:21;;;8800:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8909:6;8879:11;:18;8891:5;8879:18;;;;;;;;;;;;;;;:27;8898:7;8879:27;;;;;;;;;;;;;;;:36;;;;8947:7;8931:32;;8940:5;8931:32;;;8956:6;8931:32;;;;;;:::i;:::-;;;;;;;;8627:344;;;:::o;8977:389::-;9078:24;9105:25;9115:5;9122:7;9105:9;:25::i;:::-;9078:52;;9165:17;9145:16;:37;9141:218;;9227:6;9207:16;:26;;9199:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9294:51;9303:5;9310:7;9338:6;9319:16;:25;9294:8;:51::i;:::-;9141:218;9067:299;8977:389;;;:::o;14242:1587::-;14356:1;14340:18;;:4;:18;;;;:38;;;;;14376:1;14362:16;;:2;:16;;;;14340:38;:53;;;;;14392:1;14382:6;:11;;14340:53;14332:62;;;;;;14421:2;14413:10;;:4;:10;;;14405:19;;;;;;14467:5;14443:29;;:14;:20;14458:4;14443:20;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;14435:38;;;;;;14490:9;;;;;;;;;;;:38;;;;14503:19;:25;14523:4;14503:25;;;;;;;;;;;;;;;;;;;;;;;;;14490:38;:65;;;;14532:19;:23;14552:2;14532:23;;;;;;;;;;;;;;;;;;;;;;;;;14490:65;14486:152;;;14572:33;14588:4;14594:2;14598:6;14572:15;:33::i;:::-;14620:7;;14486:152;14658:8;;;;;;;;;;;14650:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;14704:14;14727:2;;;;;;;;;;;14721:8;;:2;:8;;;14704:25;;14740:17;14760:25;14780:4;14760:15;14771:3;14760:6;:10;;:15;;;;:::i;:::-;:19;;:25;;;;:::i;:::-;14740:45;;14834:21;14845:9;14834:6;:10;;:21;;;;:::i;:::-;14825:30;;14868:10;:8;:10::i;:::-;14918;:8;:10::i;:::-;14972:24;14987:4;14993:2;14972:14;:24::i;:::-;15007:23;15021:4;15027:2;15007:13;:23::i;:::-;15043:47;15059:4;15073;15080:9;15043:15;:47::i;:::-;15103:28;15134:24;15152:4;15134:9;:24::i;:::-;15103:55;;15173:9;:50;;;;;15210:13;;15186:20;:37;;15173:50;15169:607;;;15240:18;15261:20;15240:41;;15316:1;15300:13;;:17;:51;;;;;15338:13;;15334:1;:17;;;;:::i;:::-;15321:10;:30;15300:51;15296:87;;;15370:13;;15366:1;:17;;;;:::i;:::-;15353:30;;15296:87;15412:17;15432:43;15449:10;15469:4;15432:16;:43::i;:::-;15412:63;;15490:60;15521:13;;;;;;;;;;;15548:1;15536:9;:13;;;;:::i;:::-;15490:30;:60::i;:::-;15585:66;15624:10;;;;;;;;;;;15649:1;15637:9;:13;;;;:::i;:::-;15585:30;:66::i;:::-;15225:551;;15169:607;15788:33;15804:4;15810:2;15814:6;15788:15;:33::i;:::-;14321:1508;;;14242:1587;;;;:::o;1385:194::-;1449:12;1467:2;:7;;1482:5;1499:1;1489:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1467:35;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1448:54;;;1512:7;1504:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;1446:133;1385:194;;:::o;769:288::-;845:12;859:17;880:5;:10;;914;926:2;930:5;891:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;880:57;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;844:93;;;;947:7;:57;;;;;974:1;959:4;:11;:16;:44;;;;990:4;979:24;;;;;;;;;;;;:::i;:::-;959:44;947:57;939:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;842:215;;769:288;;;:::o;4608:159::-;4673:16;4692:6;;;;;;;;;;;4673:25;;4709:8;4700:6;;:17;;;;;;;;;;;;;;;;;;4755:8;4724:40;;4745:8;4724:40;;;;;;;;;;;;4671:96;4608:159;:::o;7052:598::-;7165:1;7149:18;;:4;:18;;;7141:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7242:1;7228:16;;:2;:16;;;7220:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7295:38;7316:4;7322:2;7326:6;7295:20;:38::i;:::-;7344:19;7366:9;:15;7376:4;7366:15;;;;;;;;;;;;;;;;7344:37;;7415:6;7400:11;:21;;7392:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;7519:6;7505:11;:20;7487:9;:15;7497:4;7487:15;;;;;;;;;;;;;;;:38;;;;7544:6;7527:9;:13;7537:2;7527:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;7583:2;7568:26;;7577:4;7568:26;;;7587:6;7568:26;;;;;;:::i;:::-;;;;;;;;7605:37;7625:4;7631:2;7635:6;7605:19;:37::i;:::-;7130:520;7052:598;;;:::o;267:84::-;325:7;347:1;343;:5;;;;:::i;:::-;336:12;;267:84;;;;:::o;357:::-;415:7;437:1;433;:5;;;;:::i;:::-;426:12;;357:84;;;;:::o;177:::-;235:7;257:1;253;:5;;;;:::i;:::-;246:12;;177:84;;;;:::o;19010:650::-;19081:1;19054:29;;:15;;;;;;;;;;;:29;;;19050:42;19085:7;19050:42;19152:15;19128:21;;19106:19;;:43;;;;:::i;:::-;:61;19182:7;19102:87;19260:13;19306:1;19284:10;;;;;;;;;;;19276:27;;;:31;;;;:::i;:::-;19260:47;;19345:34;19353:15;;;;;;;;;;;19370:1;19373:5;19345:7;:34::i;:::-;19444:1;19418:15;;:28;;;;;;;;;;;;;;;;;;19483:1;19461:19;:23;;;;19520:1;19499:18;:22;;;;19536:10;;;;;;;;;;;:17;;;19554:15;;;;;;;;;;;19571:5;19536:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19605:15;;;;;;;;;;;19597:44;;;19622:18;;19597:44;;;;;;:::i;:::-;;;;;;;;19201:452;19010:650;:::o;19668:1285::-;19742:18;;19720:10;;;;;;;;;;;19712:27;;;:48;19762:7;19708:61;19828:24;19869:16;;19855:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19828:58;;19897:11;19928:9;19940:6;;19928:18;;19923:331;19952:11;:18;;;;19948:1;:22;19923:331;;;19992:13;20008:11;20020:1;20008:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19992:30;;20058:1;20041:19;;:5;:19;;;20037:33;;20062:8;;;20037:33;20100:5;20085:7;20093:3;20085:12;;;;;;;;:::i;:::-;;;;;;;:20;;;;;;;;;;;20120:6;;;;;:::i;:::-;;;;20152:16;;20145:3;:23;20141:102;;20202:1;20198;:5;;;;:::i;:::-;20189:6;:14;;;;20222:5;;;20141:102;19977:277;19923:331;19972:3;;;;;:::i;:::-;;;;19923:331;;;;20277:16;;20270:3;:23;20266:680;;20310:13;20347:16;;20326:18;;:37;;;;:::i;:::-;20310:53;;20383:9;20378:413;20402:16;;20398:1;:20;20378:413;;;20444:14;20461:7;20469:1;20461:10;;;;;;;;:::i;:::-;;;;;;;;20444:27;;20503:6;20495:22;;;20511:5;20495:22;;;;;;:::i;:::-;;;;;;;;20561:4;20536:14;:22;20551:6;20536:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;20634:4;20614:9;:17;20624:6;20614:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;20657:45;20688:6;20696:5;20657:30;:45::i;:::-;20750:25;20758:6;20766:1;20769:5;20750:7;:25::i;:::-;20425:366;20420:3;;;;;:::i;:::-;;;;20378:413;;;;20847:1;20838:5;;:10;;;;;;;:::i;:::-;;;;;;;;20884:50;20907:26;;20884:18;;:22;;:50;;;;:::i;:::-;20863:18;:71;;;;20295:651;20266:680;19697:1256;;19668:1285;:::o;17095:739::-;17226:15;;;;;;;;;;;17218:23;;:4;:23;;;17214:180;;17284:1;17258:15;;:28;;;;;;;;;;;;;;;;;;17323:1;17301:19;:23;;;;17360:1;17339:18;:22;;;;17376:7;;17214:180;17451:13;17475:2;;;;;;;;;;;17467:10;;:4;:10;;;17451:26;;17519:8;:27;;;;;17537:9;17531:15;;:2;:15;;;17519:27;17515:312;;;17563:17;17583:15;:13;:15::i;:::-;17563:35;;17629:18;;17617:9;:30;17613:203;;;17686:9;17668:15;;:27;;;;;;;;;;;;;;;;;;17736:15;17714:19;:37;;;;17791:9;17770:18;:30;;;;17613:203;17548:279;17515:312;17154:680;17095:739;;;:::o;17842:1160::-;17911:13;17935:2;;;;;;;;;;;17927:10;;:4;:10;;;17911:26;;17975:11;17995:2;;;;;;;;;;;17989:8;;:2;:8;;;17975:22;;18037:11;18081:8;:27;;;;;18099:9;18093:15;;:2;:15;;;18081:27;:51;;;;;18127:5;18112:20;;:7;:11;18120:2;18112:11;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;18081:51;:69;;;;;18137:9;:13;18147:2;18137:13;;;;;;;;;;;;;;;;;;;;;;;;;18136:14;18081:69;18077:342;;;18173:10;:14;18184:2;18173:14;;;;;;;;;;;;;;;;18167:20;;18213:1;18206:3;:8;:47;;;;;18237:16;;18218:15;:13;:15::i;:::-;:35;;18206:47;18202:206;;;18318:11;18335:2;18318:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18374:11;:18;;;;18357:10;:14;18368:2;18357:14;;;;;;;;;;;;;;;:35;;;;18202:206;18077:342;18452:6;:36;;;;;18483:5;18462:26;;:17;18474:4;18462:11;:17::i;:::-;:26;;;18452:36;18448:265;;;18511:10;:16;18522:4;18511:16;;;;;;;;;;;;;;;;18505:22;;18553:1;18546:3;:8;18542:160;;18606:1;18575:11;18593:1;18587:3;:7;;;;:::i;:::-;18575:20;;;;;;;;:::i;:::-;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;18646:1;18627:10;:16;18638:4;18627:16;;;;;;;;;;;;;;;:20;;;;18682:4;18666:7;:13;18674:4;18666:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;18542:160;18448:265;18751:6;18750:7;:20;;;;;18762:8;18761:9;18750:20;18746:249;;;18793:10;:16;18804:4;18793:16;;;;;;;;;;;;;;;;18787:22;;18835:1;18828:3;:8;18824:160;;18888:1;18857:11;18875:1;18869:3;:7;;;;:::i;:::-;18857:20;;;;;;;;:::i;:::-;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;18928:1;18909:10;:16;18920:4;18909:16;;;;;;;;;;;;;;;:20;;;;18964:4;18948:7;:13;18956:4;18948:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;18824:160;18746:249;17900:1102;;;17842:1160;;:::o;15837:509::-;15918:17;11617:4;11605:9;;:16;;;;;;;;;;;;;;;;;;15968:2:::1;15960:19;;;15948:31;;15990:21;16028:1;16014:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15990:40;;16059:4;16041;16046:1;16041:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;16085:4;;;;;;;;;;;16075;16080:1;16075:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;16108:10;;;;;;;;;;;16100:70;;;16185:6;16206:1;16222:4;16241:2;16258:15;16100:184;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16329:9;16315:2;16307:19;;;:31;;;;:::i;:::-;16295:43;;15937:409;11638:5:::0;11626:9;;:17;;;;;;;;;;;;;;;;;;15837:509;;;;:::o;9372:91::-;;;;:::o;9469:90::-;;;;:::o;16806:281::-;16889:23;;:::i;:::-;16937:5;16923:6;:11;;:19;;;;;16967:6;16953;:11;;:20;;;;;;;;;;;17000:5;16984:6;:13;;:21;;;;;17018:11;17035:6;17018:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17075:4;17055:9;:17;17065:6;17055:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;16878:209;16806:281;;;:::o;87:84::-;145:7;167:1;163;:5;;;;:::i;:::-;156:12;;87:84;;;;:::o;16551:247::-;16599:7;16620:19;16651:2;;;;;;;;;;;16645:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16619:49;;;;16679:14;16703:4;;;;;;;;;;;16696:22;;;16719:2;;;;;;;;;;;16696:26;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16679:43;;16749:11;16740:20;;:6;:20;:50;;16789:1;16740:50;;;16763:23;16774:11;16763:23;;:6;:10;;:23;;;;:::i;:::-;16740:50;16733:57;;;;16551:247;:::o;16354:189::-;16411:4;16428:12;16495:3;16483:16;16475:24;;16534:1;16527:4;:8;16520:15;;;16354:189;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1784:75::-;1817:6;1850:2;1844:9;1834:19;;1784:75;:::o;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:141::-;4852:6;4886:5;4880:12;4870:22;;4758:141;;;:::o;4905:211::-;5031:11;5065:6;5060:3;5053:19;5105:4;5100:3;5096:14;5081:29;;4905:211;;;;:::o;5122:159::-;5216:4;5239:3;5231:11;;5269:4;5264:3;5260:14;5252:22;;5122:159;;;:::o;5287:108::-;5364:24;5382:5;5364:24;:::i;:::-;5359:3;5352:37;5287:108;;:::o;5401:::-;5478:24;5496:5;5478:24;:::i;:::-;5473:3;5466:37;5401:108;;:::o;5571:677::-;5712:4;5707:3;5703:14;5799:4;5792:5;5788:16;5782:23;5818:63;5875:4;5870:3;5866:14;5852:12;5818:63;:::i;:::-;5727:164;5973:4;5966:5;5962:16;5956:23;5992:63;6049:4;6044:3;6040:14;6026:12;5992:63;:::i;:::-;5901:164;6149:4;6142:5;6138:16;6132:23;6168:63;6225:4;6220:3;6216:14;6202:12;6168:63;:::i;:::-;6075:166;5681:567;5571:677;;:::o;6254:287::-;6377:10;6398:100;6494:3;6486:6;6398:100;:::i;:::-;6530:4;6525:3;6521:14;6507:28;;6254:287;;;;:::o;6547:140::-;6644:4;6676;6671:3;6667:14;6659:22;;6547:140;;;:::o;6753:948::-;6926:3;6955:81;7030:5;6955:81;:::i;:::-;7052:113;7158:6;7153:3;7052:113;:::i;:::-;7045:120;;7189:83;7266:5;7189:83;:::i;:::-;7295:7;7326:1;7311:365;7336:6;7333:1;7330:13;7311:365;;;7412:6;7406:13;7439:117;7552:3;7537:13;7439:117;:::i;:::-;7432:124;;7579:87;7659:6;7579:87;:::i;:::-;7569:97;;7371:305;7358:1;7355;7351:9;7346:14;;7311:365;;;7315:14;7692:3;7685:10;;6931:770;;;6753:948;;;;:::o;7707:481::-;7904:4;7942:2;7931:9;7927:18;7919:26;;7991:9;7985:4;7981:20;7977:1;7966:9;7962:17;7955:47;8019:162;8176:4;8167:6;8019:162;:::i;:::-;8011:170;;7707:481;;;;:::o;8194:86::-;8229:7;8269:4;8262:5;8258:16;8247:27;;8194:86;;;:::o;8286:112::-;8369:22;8385:5;8369:22;:::i;:::-;8364:3;8357:35;8286:112;;:::o;8404:214::-;8493:4;8531:2;8520:9;8516:18;8508:26;;8544:67;8608:1;8597:9;8593:17;8584:6;8544:67;:::i;:::-;8404:214;;;;:::o;8624:118::-;8711:24;8729:5;8711:24;:::i;:::-;8706:3;8699:37;8624:118;;:::o;8748:222::-;8841:4;8879:2;8868:9;8864:18;8856:26;;8892:71;8960:1;8949:9;8945:17;8936:6;8892:71;:::i;:::-;8748:222;;;;:::o;8976:329::-;9035:6;9084:2;9072:9;9063:7;9059:23;9055:32;9052:119;;;9090:79;;:::i;:::-;9052:119;9210:1;9235:53;9280:7;9271:6;9260:9;9256:22;9235:53;:::i;:::-;9225:63;;9181:117;8976:329;;;;:::o;9311:114::-;9378:6;9412:5;9406:12;9396:22;;9311:114;;;:::o;9431:184::-;9530:11;9564:6;9559:3;9552:19;9604:4;9599:3;9595:14;9580:29;;9431:184;;;;:::o;9621:132::-;9688:4;9711:3;9703:11;;9741:4;9736:3;9732:14;9724:22;;9621:132;;;:::o;9759:179::-;9828:10;9849:46;9891:3;9883:6;9849:46;:::i;:::-;9927:4;9922:3;9918:14;9904:28;;9759:179;;;;:::o;9944:113::-;10014:4;10046;10041:3;10037:14;10029:22;;9944:113;;;:::o;10093:732::-;10212:3;10241:54;10289:5;10241:54;:::i;:::-;10311:86;10390:6;10385:3;10311:86;:::i;:::-;10304:93;;10421:56;10471:5;10421:56;:::i;:::-;10500:7;10531:1;10516:284;10541:6;10538:1;10535:13;10516:284;;;10617:6;10611:13;10644:63;10703:3;10688:13;10644:63;:::i;:::-;10637:70;;10730:60;10783:6;10730:60;:::i;:::-;10720:70;;10576:224;10563:1;10560;10556:9;10551:14;;10516:284;;;10520:14;10816:3;10809:10;;10217:608;;;10093:732;;;;:::o;10831:114::-;10898:6;10932:5;10926:12;10916:22;;10831:114;;;:::o;10951:184::-;11050:11;11084:6;11079:3;11072:19;11124:4;11119:3;11115:14;11100:29;;10951:184;;;;:::o;11141:132::-;11208:4;11231:3;11223:11;;11261:4;11256:3;11252:14;11244:22;;11141:132;;;:::o;11279:179::-;11348:10;11369:46;11411:3;11403:6;11369:46;:::i;:::-;11447:4;11442:3;11438:14;11424:28;;11279:179;;;;:::o;11464:113::-;11534:4;11566;11561:3;11557:14;11549:22;;11464:113;;;:::o;11613:732::-;11732:3;11761:54;11809:5;11761:54;:::i;:::-;11831:86;11910:6;11905:3;11831:86;:::i;:::-;11824:93;;11941:56;11991:5;11941:56;:::i;:::-;12020:7;12051:1;12036:284;12061:6;12058:1;12055:13;12036:284;;;12137:6;12131:13;12164:63;12223:3;12208:13;12164:63;:::i;:::-;12157:70;;12250:60;12303:6;12250:60;:::i;:::-;12240:70;;12096:224;12083:1;12080;12076:9;12071:14;;12036:284;;;12040:14;12336:3;12329:10;;11737:608;;;11613:732;;;;:::o;12351:634::-;12572:4;12610:2;12599:9;12595:18;12587:26;;12659:9;12653:4;12649:20;12645:1;12634:9;12630:17;12623:47;12687:108;12790:4;12781:6;12687:108;:::i;:::-;12679:116;;12842:9;12836:4;12832:20;12827:2;12816:9;12812:18;12805:48;12870:108;12973:4;12964:6;12870:108;:::i;:::-;12862:116;;12351:634;;;;;:::o;12991:442::-;13140:4;13178:2;13167:9;13163:18;13155:26;;13191:71;13259:1;13248:9;13244:17;13235:6;13191:71;:::i;:::-;13272:72;13340:2;13329:9;13325:18;13316:6;13272:72;:::i;:::-;13354;13422:2;13411:9;13407:18;13398:6;13354:72;:::i;:::-;12991:442;;;;;;:::o;13439:619::-;13516:6;13524;13532;13581:2;13569:9;13560:7;13556:23;13552:32;13549:119;;;13587:79;;:::i;:::-;13549:119;13707:1;13732:53;13777:7;13768:6;13757:9;13753:22;13732:53;:::i;:::-;13722:63;;13678:117;13834:2;13860:53;13905:7;13896:6;13885:9;13881:22;13860:53;:::i;:::-;13850:63;;13805:118;13962:2;13988:53;14033:7;14024:6;14013:9;14009:22;13988:53;:::i;:::-;13978:63;;13933:118;13439:619;;;;;:::o;14064:117::-;14173:1;14170;14163:12;14187:180;14235:77;14232:1;14225:88;14332:4;14329:1;14322:15;14356:4;14353:1;14346:15;14373:281;14456:27;14478:4;14456:27;:::i;:::-;14448:6;14444:40;14586:6;14574:10;14571:22;14550:18;14538:10;14535:34;14532:62;14529:88;;;14597:18;;:::i;:::-;14529:88;14637:10;14633:2;14626:22;14416:238;14373:281;;:::o;14660:129::-;14694:6;14721:20;;:::i;:::-;14711:30;;14750:33;14778:4;14770:6;14750:33;:::i;:::-;14660:129;;;:::o;14795:311::-;14872:4;14962:18;14954:6;14951:30;14948:56;;;14984:18;;:::i;:::-;14948:56;15034:4;15026:6;15022:17;15014:25;;15094:4;15088;15084:15;15076:23;;14795:311;;;:::o;15112:117::-;15221:1;15218;15211:12;15252:710;15348:5;15373:81;15389:64;15446:6;15389:64;:::i;:::-;15373:81;:::i;:::-;15364:90;;15474:5;15503:6;15496:5;15489:21;15537:4;15530:5;15526:16;15519:23;;15590:4;15582:6;15578:17;15570:6;15566:30;15619:3;15611:6;15608:15;15605:122;;;15638:79;;:::i;:::-;15605:122;15753:6;15736:220;15770:6;15765:3;15762:15;15736:220;;;15845:3;15874:37;15907:3;15895:10;15874:37;:::i;:::-;15869:3;15862:50;15941:4;15936:3;15932:14;15925:21;;15812:144;15796:4;15791:3;15787:14;15780:21;;15736:220;;;15740:21;15354:608;;15252:710;;;;;:::o;15985:370::-;16056:5;16105:3;16098:4;16090:6;16086:17;16082:27;16072:122;;16113:79;;:::i;:::-;16072:122;16230:6;16217:20;16255:94;16345:3;16337:6;16330:4;16322:6;16318:17;16255:94;:::i;:::-;16246:103;;16062:293;15985:370;;;;:::o;16361:116::-;16431:21;16446:5;16431:21;:::i;:::-;16424:5;16421:32;16411:60;;16467:1;16464;16457:12;16411:60;16361:116;:::o;16483:133::-;16526:5;16564:6;16551:20;16542:29;;16580:30;16604:5;16580:30;:::i;:::-;16483:133;;;;:::o;16622:678::-;16712:6;16720;16769:2;16757:9;16748:7;16744:23;16740:32;16737:119;;;16775:79;;:::i;:::-;16737:119;16923:1;16912:9;16908:17;16895:31;16953:18;16945:6;16942:30;16939:117;;;16975:79;;:::i;:::-;16939:117;17080:78;17150:7;17141:6;17130:9;17126:22;17080:78;:::i;:::-;17070:88;;16866:302;17207:2;17233:50;17275:7;17266:6;17255:9;17251:22;17233:50;:::i;:::-;17223:60;;17178:115;16622:678;;;;;:::o;17306:474::-;17374:6;17382;17431:2;17419:9;17410:7;17406:23;17402:32;17399:119;;;17437:79;;:::i;:::-;17399:119;17557:1;17582:53;17627:7;17618:6;17607:9;17603:22;17582:53;:::i;:::-;17572:63;;17528:117;17684:2;17710:53;17755:7;17746:6;17735:9;17731:22;17710:53;:::i;:::-;17700:63;;17655:118;17306:474;;;;;:::o;17786:60::-;17814:3;17835:5;17828:12;;17786:60;;;:::o;17852:142::-;17902:9;17935:53;17953:34;17962:24;17980:5;17962:24;:::i;:::-;17953:34;:::i;:::-;17935:53;:::i;:::-;17922:66;;17852:142;;;:::o;18000:134::-;18058:9;18091:37;18122:5;18091:37;:::i;:::-;18078:50;;18000:134;;;:::o;18140:158::-;18214:9;18247:45;18286:5;18247:45;:::i;:::-;18234:58;;18140:158;;;:::o;18304:179::-;18415:61;18470:5;18415:61;:::i;:::-;18410:3;18403:74;18304:179;;:::o;18489:270::-;18606:4;18644:2;18633:9;18629:18;18621:26;;18657:95;18749:1;18738:9;18734:17;18725:6;18657:95;:::i;:::-;18489:270;;;;:::o;18765:143::-;18822:5;18853:6;18847:13;18838:22;;18869:33;18896:5;18869:33;:::i;:::-;18765:143;;;;:::o;18914:351::-;18984:6;19033:2;19021:9;19012:7;19008:23;19004:32;19001:119;;;19039:79;;:::i;:::-;19001:119;19159:1;19184:64;19240:7;19231:6;19220:9;19216:22;19184:64;:::i;:::-;19174:74;;19130:128;18914:351;;;;:::o;19271:332::-;19392:4;19430:2;19419:9;19415:18;19407:26;;19443:71;19511:1;19500:9;19496:17;19487:6;19443:71;:::i;:::-;19524:72;19592:2;19581:9;19577:18;19568:6;19524:72;:::i;:::-;19271:332;;;;;:::o;19609:180::-;19657:77;19654:1;19647:88;19754:4;19751:1;19744:15;19778:4;19775:1;19768:15;19795:320;19839:6;19876:1;19870:4;19866:12;19856:22;;19923:1;19917:4;19913:12;19944:18;19934:81;;20000:4;19992:6;19988:17;19978:27;;19934:81;20062:2;20054:6;20051:14;20031:18;20028:38;20025:84;;20081:18;;:::i;:::-;20025:84;19846:269;19795:320;;;:::o;20121:180::-;20169:77;20166:1;20159:88;20266:4;20263:1;20256:15;20290:4;20287:1;20280:15;20307:191;20347:3;20366:20;20384:1;20366:20;:::i;:::-;20361:25;;20400:20;20418:1;20400:20;:::i;:::-;20395:25;;20443:1;20440;20436:9;20429:16;;20464:3;20461:1;20458:10;20455:36;;;20471:18;;:::i;:::-;20455:36;20307:191;;;;:::o;20504:180::-;20552:77;20549:1;20542:88;20649:4;20646:1;20639:15;20673:4;20670:1;20663:15;20690:233;20729:3;20752:24;20770:5;20752:24;:::i;:::-;20743:33;;20798:66;20791:5;20788:77;20785:103;;20868:18;;:::i;:::-;20785:103;20915:1;20908:5;20904:13;20897:20;;20690:233;;;:::o;20929:143::-;20986:5;21017:6;21011:13;21002:22;;21033:33;21060:5;21033:33;:::i;:::-;20929:143;;;;:::o;21078:351::-;21148:6;21197:2;21185:9;21176:7;21172:23;21168:32;21165:119;;;21203:79;;:::i;:::-;21165:119;21323:1;21348:64;21404:7;21395:6;21384:9;21380:22;21348:64;:::i;:::-;21338:74;;21294:128;21078:351;;;;:::o;21435:224::-;21575:34;21571:1;21563:6;21559:14;21552:58;21644:7;21639:2;21631:6;21627:15;21620:32;21435:224;:::o;21665:366::-;21807:3;21828:67;21892:2;21887:3;21828:67;:::i;:::-;21821:74;;21904:93;21993:3;21904:93;:::i;:::-;22022:2;22017:3;22013:12;22006:19;;21665:366;;;:::o;22037:419::-;22203:4;22241:2;22230:9;22226:18;22218:26;;22290:9;22284:4;22280:20;22276:1;22265:9;22261:17;22254:47;22318:131;22444:4;22318:131;:::i;:::-;22310:139;;22037:419;;;:::o;22462:225::-;22602:34;22598:1;22590:6;22586:14;22579:58;22671:8;22666:2;22658:6;22654:15;22647:33;22462:225;:::o;22693:366::-;22835:3;22856:67;22920:2;22915:3;22856:67;:::i;:::-;22849:74;;22932:93;23021:3;22932:93;:::i;:::-;23050:2;23045:3;23041:12;23034:19;;22693:366;;;:::o;23065:419::-;23231:4;23269:2;23258:9;23254:18;23246:26;;23318:9;23312:4;23308:20;23304:1;23293:9;23289:17;23282:47;23346:131;23472:4;23346:131;:::i;:::-;23338:139;;23065:419;;;:::o;23490:182::-;23630:34;23626:1;23618:6;23614:14;23607:58;23490:182;:::o;23678:366::-;23820:3;23841:67;23905:2;23900:3;23841:67;:::i;:::-;23834:74;;23917:93;24006:3;23917:93;:::i;:::-;24035:2;24030:3;24026:12;24019:19;;23678:366;;;:::o;24050:419::-;24216:4;24254:2;24243:9;24239:18;24231:26;;24303:9;24297:4;24293:20;24289:1;24278:9;24274:17;24267:47;24331:131;24457:4;24331:131;:::i;:::-;24323:139;;24050:419;;;:::o;24475:223::-;24615:34;24611:1;24603:6;24599:14;24592:58;24684:6;24679:2;24671:6;24667:15;24660:31;24475:223;:::o;24704:366::-;24846:3;24867:67;24931:2;24926:3;24867:67;:::i;:::-;24860:74;;24943:93;25032:3;24943:93;:::i;:::-;25061:2;25056:3;25052:12;25045:19;;24704:366;;;:::o;25076:419::-;25242:4;25280:2;25269:9;25265:18;25257:26;;25329:9;25323:4;25319:20;25315:1;25304:9;25300:17;25293:47;25357:131;25483:4;25357:131;:::i;:::-;25349:139;;25076:419;;;:::o;25501:221::-;25641:34;25637:1;25629:6;25625:14;25618:58;25710:4;25705:2;25697:6;25693:15;25686:29;25501:221;:::o;25728:366::-;25870:3;25891:67;25955:2;25950:3;25891:67;:::i;:::-;25884:74;;25967:93;26056:3;25967:93;:::i;:::-;26085:2;26080:3;26076:12;26069:19;;25728:366;;;:::o;26100:419::-;26266:4;26304:2;26293:9;26289:18;26281:26;;26353:9;26347:4;26343:20;26339:1;26328:9;26324:17;26317:47;26381:131;26507:4;26381:131;:::i;:::-;26373:139;;26100:419;;;:::o;26525:179::-;26665:31;26661:1;26653:6;26649:14;26642:55;26525:179;:::o;26710:366::-;26852:3;26873:67;26937:2;26932:3;26873:67;:::i;:::-;26866:74;;26949:93;27038:3;26949:93;:::i;:::-;27067:2;27062:3;27058:12;27051:19;;26710:366;;;:::o;27082:419::-;27248:4;27286:2;27275:9;27271:18;27263:26;;27335:9;27329:4;27325:20;27321:1;27310:9;27306:17;27299:47;27363:131;27489:4;27363:131;:::i;:::-;27355:139;;27082:419;;;:::o;27507:162::-;27647:14;27643:1;27635:6;27631:14;27624:38;27507:162;:::o;27675:366::-;27817:3;27838:67;27902:2;27897:3;27838:67;:::i;:::-;27831:74;;27914:93;28003:3;27914:93;:::i;:::-;28032:2;28027:3;28023:12;28016:19;;27675:366;;;:::o;28047:419::-;28213:4;28251:2;28240:9;28236:18;28228:26;;28300:9;28294:4;28290:20;28286:1;28275:9;28271:17;28264:47;28328:131;28454:4;28328:131;:::i;:::-;28320:139;;28047:419;;;:::o;28472:348::-;28512:7;28535:20;28553:1;28535:20;:::i;:::-;28530:25;;28569:20;28587:1;28569:20;:::i;:::-;28564:25;;28757:1;28689:66;28685:74;28682:1;28679:81;28674:1;28667:9;28660:17;28656:105;28653:131;;;28764:18;;:::i;:::-;28653:131;28812:1;28809;28805:9;28794:20;;28472:348;;;;:::o;28826:180::-;28874:77;28871:1;28864:88;28971:4;28968:1;28961:15;28995:4;28992:1;28985:15;29012:185;29052:1;29069:20;29087:1;29069:20;:::i;:::-;29064:25;;29103:20;29121:1;29103:20;:::i;:::-;29098:25;;29142:1;29132:35;;29147:18;;:::i;:::-;29132:35;29189:1;29186;29182:9;29177:14;;29012:185;;;;:::o;29203:98::-;29254:6;29288:5;29282:12;29272:22;;29203:98;;;:::o;29307:147::-;29408:11;29445:3;29430:18;;29307:147;;;;:::o;29460:386::-;29564:3;29592:38;29624:5;29592:38;:::i;:::-;29646:88;29727:6;29722:3;29646:88;:::i;:::-;29639:95;;29743:65;29801:6;29796:3;29789:4;29782:5;29778:16;29743:65;:::i;:::-;29833:6;29828:3;29824:16;29817:23;;29568:278;29460:386;;;;:::o;29852:271::-;29982:3;30004:93;30093:3;30084:6;30004:93;:::i;:::-;29997:100;;30114:3;30107:10;;29852:271;;;;:::o;30129:239::-;30269:34;30265:1;30257:6;30253:14;30246:58;30338:22;30333:2;30325:6;30321:15;30314:47;30129:239;:::o;30374:366::-;30516:3;30537:67;30601:2;30596:3;30537:67;:::i;:::-;30530:74;;30613:93;30702:3;30613:93;:::i;:::-;30731:2;30726:3;30722:12;30715:19;;30374:366;;;:::o;30746:419::-;30912:4;30950:2;30939:9;30935:18;30927:26;;30999:9;30993:4;30989:20;30985:1;30974:9;30970:17;30963:47;31027:131;31153:4;31027:131;:::i;:::-;31019:139;;30746:419;;;:::o;31171:332::-;31292:4;31330:2;31319:9;31315:18;31307:26;;31343:71;31411:1;31400:9;31396:17;31387:6;31343:71;:::i;:::-;31424:72;31492:2;31481:9;31477:18;31468:6;31424:72;:::i;:::-;31171:332;;;;;:::o;31509:137::-;31563:5;31594:6;31588:13;31579:22;;31610:30;31634:5;31610:30;:::i;:::-;31509:137;;;;:::o;31652:345::-;31719:6;31768:2;31756:9;31747:7;31743:23;31739:32;31736:119;;;31774:79;;:::i;:::-;31736:119;31894:1;31919:61;31972:7;31963:6;31952:9;31948:22;31919:61;:::i;:::-;31909:71;;31865:125;31652:345;;;;:::o;32003:232::-;32143:34;32139:1;32131:6;32127:14;32120:58;32212:15;32207:2;32199:6;32195:15;32188:40;32003:232;:::o;32241:366::-;32383:3;32404:67;32468:2;32463:3;32404:67;:::i;:::-;32397:74;;32480:93;32569:3;32480:93;:::i;:::-;32598:2;32593:3;32589:12;32582:19;;32241:366;;;:::o;32613:419::-;32779:4;32817:2;32806:9;32802:18;32794:26;;32866:9;32860:4;32856:20;32852:1;32841:9;32837:17;32830:47;32894:131;33020:4;32894:131;:::i;:::-;32886:139;;32613:419;;;:::o;33038:224::-;33178:34;33174:1;33166:6;33162:14;33155:58;33247:7;33242:2;33234:6;33230:15;33223:32;33038:224;:::o;33268:366::-;33410:3;33431:67;33495:2;33490:3;33431:67;:::i;:::-;33424:74;;33507:93;33596:3;33507:93;:::i;:::-;33625:2;33620:3;33616:12;33609:19;;33268:366;;;:::o;33640:419::-;33806:4;33844:2;33833:9;33829:18;33821:26;;33893:9;33887:4;33883:20;33879:1;33868:9;33864:17;33857:47;33921:131;34047:4;33921:131;:::i;:::-;33913:139;;33640:419;;;:::o;34065:222::-;34205:34;34201:1;34193:6;34189:14;34182:58;34274:5;34269:2;34261:6;34257:15;34250:30;34065:222;:::o;34293:366::-;34435:3;34456:67;34520:2;34515:3;34456:67;:::i;:::-;34449:74;;34532:93;34621:3;34532:93;:::i;:::-;34650:2;34645:3;34641:12;34634:19;;34293:366;;;:::o;34665:419::-;34831:4;34869:2;34858:9;34854:18;34846:26;;34918:9;34912:4;34908:20;34904:1;34893:9;34889:17;34882:47;34946:131;35072:4;34946:131;:::i;:::-;34938:139;;34665:419;;;:::o;35090:225::-;35230:34;35226:1;35218:6;35214:14;35207:58;35299:8;35294:2;35286:6;35282:15;35275:33;35090:225;:::o;35321:366::-;35463:3;35484:67;35548:2;35543:3;35484:67;:::i;:::-;35477:74;;35560:93;35649:3;35560:93;:::i;:::-;35678:2;35673:3;35669:12;35662:19;;35321:366;;;:::o;35693:419::-;35859:4;35897:2;35886:9;35882:18;35874:26;;35946:9;35940:4;35936:20;35932:1;35921:9;35917:17;35910:47;35974:131;36100:4;35974:131;:::i;:::-;35966:139;;35693:419;;;:::o;36118:194::-;36158:4;36178:20;36196:1;36178:20;:::i;:::-;36173:25;;36212:20;36230:1;36212:20;:::i;:::-;36207:25;;36256:1;36253;36249:9;36241:17;;36280:1;36274:4;36271:11;36268:37;;;36285:18;;:::i;:::-;36268:37;36118:194;;;;:::o;36318:85::-;36363:7;36392:5;36381:16;;36318:85;;;:::o;36409:158::-;36467:9;36500:61;36518:42;36527:32;36553:5;36527:32;:::i;:::-;36518:42;:::i;:::-;36500:61;:::i;:::-;36487:74;;36409:158;;;:::o;36573:147::-;36668:45;36707:5;36668:45;:::i;:::-;36663:3;36656:58;36573:147;;:::o;36726:831::-;36989:4;37027:3;37016:9;37012:19;37004:27;;37041:71;37109:1;37098:9;37094:17;37085:6;37041:71;:::i;:::-;37122:80;37198:2;37187:9;37183:18;37174:6;37122:80;:::i;:::-;37249:9;37243:4;37239:20;37234:2;37223:9;37219:18;37212:48;37277:108;37380:4;37371:6;37277:108;:::i;:::-;37269:116;;37395:72;37463:2;37452:9;37448:18;37439:6;37395:72;:::i;:::-;37477:73;37545:3;37534:9;37530:19;37521:6;37477:73;:::i;:::-;36726:831;;;;;;;;:::o;37563:114::-;37600:7;37640:30;37633:5;37629:42;37618:53;;37563:114;;;:::o;37683:122::-;37756:24;37774:5;37756:24;:::i;:::-;37749:5;37746:35;37736:63;;37795:1;37792;37785:12;37736:63;37683:122;:::o;37811:143::-;37868:5;37899:6;37893:13;37884:22;;37915:33;37942:5;37915:33;:::i;:::-;37811:143;;;;:::o;37960:93::-;37996:7;38036:10;38029:5;38025:22;38014:33;;37960:93;;;:::o;38059:120::-;38131:23;38148:5;38131:23;:::i;:::-;38124:5;38121:34;38111:62;;38169:1;38166;38159:12;38111:62;38059:120;:::o;38185:141::-;38241:5;38272:6;38266:13;38257:22;;38288:32;38314:5;38288:32;:::i;:::-;38185:141;;;;:::o;38332:661::-;38419:6;38427;38435;38484:2;38472:9;38463:7;38459:23;38455:32;38452:119;;;38490:79;;:::i;:::-;38452:119;38610:1;38635:64;38691:7;38682:6;38671:9;38667:22;38635:64;:::i;:::-;38625:74;;38581:128;38748:2;38774:64;38830:7;38821:6;38810:9;38806:22;38774:64;:::i;:::-;38764:74;;38719:129;38887:2;38913:63;38968:7;38959:6;38948:9;38944:22;38913:63;:::i;:::-;38903:73;;38858:128;38332:661;;;;;:::o

Swarm Source

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