ETH Price: $3,441.90 (+3.37%)

Token

Origin3D (O3D)
 

Overview

Max Total Supply

1,000,000,000 O3D

Holders

372

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
23,903.944503224859117743 O3D

Value
$0.00
0xaac6a0603509ac97b85399368a0003b859e4cf9e
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:
Origin3D

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

//SPDX-License-Identifier: UNLICENSED

// Origin3D - Unleashing the Future of AI-Powered Creativity
// W: https://origin3d.app
// T: https://t.me/origin3d_app
// X: https://x.com/Origin3d_app

pragma solidity 0.8.19;

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

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    )
        external
        payable
        returns (uint amountToken, uint amountETH, uint liquidity);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

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 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

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

        (bool success, ) = recipient.call{value: amount}("");
        return success; // always proceeds
    }
}

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _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 transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: transfer amount exceeds allowance"
            );
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, 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"
        );
        unchecked {
            _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");

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

        emit Transfer(sender, recipient, amount);
    }

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

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }

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

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

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    mapping(address => bool) private _isExcludedFromFees;

    address public marketingFeeReceiver;
    uint256 public tradingEnabledTime;

    bool private inSwapAndLiquify;
    bool public swapEnabled;
    bool public tradingEnabled;

    uint256 public marketingFee;
    uint256 public maxSwapThreshold;
    uint256 public maxWalletSize;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SwapAndSendFee(uint256 tokensSwapped, uint256 bnbSend);
    event MarketingFeeReceiverChanged(address marketingFeeReceiver);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 bnbReceived,
        uint256 tokensIntoLiqudity
    );
    event ToggleSwapping(bool swapEnabled);
    event FeesLowered(uint256 _new);
    event MaxWalletSizeRaised(uint256 _new);
    event MaxSwapThresholdUpdated(uint256 _new);

    constructor(address _router, address _feeReceiver, uint256 _initalLiquidity) payable ERC20("Origin3D", "O3D") { //uniswapv2router address, feereceiving wallet, Tokenname, symbol
        
        marketingFee = 25;

        marketingFeeReceiver = _feeReceiver;
        uniswapV2Router = IUniswapV2Router02(_router);

        //Excluding wallets from fees
        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(0xdead)] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[marketingFeeReceiver] = true;

        uint256 ownerSupply = 1000000000 * 10**decimals() - _initalLiquidity;

        _mint(owner(), ownerSupply);
        _mint(address(this), _initalLiquidity);

        maxWalletSize = 10000000*10**decimals();
        maxSwapThreshold = 10000000*10**decimals();
        
        swapEnabled = false;
        tradingEnabled = false;

    }

    receive() external payable {}

    function claimStuckTokens(address token) external onlyOwner {
        require(
            token != address(this),
            "Owner cannot claim contract's balance of its own tokens"
        );
        if (token == address(0x0)) {
            payable(msg.sender).sendValue(address(this).balance);
            return;
        }

        IERC20(token).transfer(
            msg.sender,
            IERC20(token).balanceOf(address(this))
        );
    }

    function excludeFromFees(
        address account,
        bool excluded
    ) external onlyOwner {
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    function changeFeeReceiver(
        address _marketingFeeReceiver
    ) external onlyOwner {
        require(
            _marketingFeeReceiver != address(0) &&
            _marketingFeeReceiver != address(0xdead),
            "Marketing Fee receiver cannot be the zero or dead address"
        );
        marketingFeeReceiver = _marketingFeeReceiver;

        emit MarketingFeeReceiverChanged(marketingFeeReceiver);
    }

    event TradingEnabled(bool tradingEnabled, uint256 tradingEnabledTime);

    function enableTrading() external onlyOwner {
        require(tradingEnabled == false, "O3D: trading already enabled!");
        _approve(address(this), address(uniswapV2Router), type(uint256).max);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        tradingEnabled = true;
        swapEnabled = true;
        tradingEnabledTime = block.timestamp;
        _isExcludedFromFees[uniswapV2Pair] = true;

        emit TradingEnabled(tradingEnabled, tradingEnabledTime);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "Transfer from the zero address");
        require(to != address(0), "Transfer to the zero address");
        require(tradingEnabled 
                || _isExcludedFromFees[from] 
                || _isExcludedFromFees[to],
            "Trading not yet enabled!"
        );

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        uint256 _totalFees;
        if (_isExcludedFromFees[from] && _isExcludedFromFees[to] && inSwapAndLiquify) {
            _totalFees = 0;
        } else if (from == uniswapV2Pair || to == uniswapV2Pair && tradingEnabled) {
            _totalFees = marketingFee;
        } else {
            _totalFees = 0;
        }

        if (_totalFees > 0) {
            uint256 fees = (amount * _totalFees) / 100;
            amount = amount - fees;
            super._transfer(from, address(this), fees);
        }

        if(to == uniswapV2Pair) {
            if (contractTokenBalance > maxSwapThreshold && !inSwapAndLiquify && swapEnabled) {
                inSwapAndLiquify = true;

                _swapAndSendMarketing(maxSwapThreshold);
                
                inSwapAndLiquify = false;
            }
        }

        if(tradingEnabled && !_isExcludedFromFees[to] && !inSwapAndLiquify) {
            uint256 toWalletSize = balanceOf(to);
            require(toWalletSize + amount <= maxWalletSize, "Maximum wallet size exceeded!");
        }

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

    function toggleSwapping(bool _swapEnabled) external onlyOwner {
        require(swapEnabled != _swapEnabled, "Currently at the same stage");
        swapEnabled = _swapEnabled;
        emit ToggleSwapping(swapEnabled);
    }

    function _swapAndSendMarketing(uint256 tokenAmount) private {
        uint256 initialBalance = address(this).balance;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 newBalance = address(this).balance - initialBalance;

        payable(marketingFeeReceiver).sendValue(newBalance);

        emit SwapAndSendFee(tokenAmount, newBalance);
    }

    function sellFees() public onlyOwner() {
        uint256 contractBalance = balanceOf(address(this));
        _swapAndSendMarketing(contractBalance);
    }

    function lowerFees(uint256 _newFee) public onlyOwner() {
        require(_newFee < marketingFee, "O3D: New fee must be lower than old fee!");

        marketingFee = _newFee;

        emit FeesLowered(_newFee);
    }

    function raiseMaxLimit(uint256 _newLimit) public onlyOwner() {
        require(_newLimit > maxWalletSize, "O3D: New limit must be higher than older!");

        maxWalletSize = _newLimit;

        emit MaxWalletSizeRaised(_newLimit);
    }

    function setSwapThreshold(uint256 _newThreshold) public onlyOwner {
        maxSwapThreshold = _newThreshold;

        emit MaxSwapThresholdUpdated(_newThreshold);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_router","type":"address"},{"internalType":"address","name":"_feeReceiver","type":"address"},{"internalType":"uint256","name":"_initalLiquidity","type":"uint256"}],"stateMutability":"payable","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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_new","type":"uint256"}],"name":"FeesLowered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingFeeReceiver","type":"address"}],"name":"MarketingFeeReceiverChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_new","type":"uint256"}],"name":"MaxSwapThresholdUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_new","type":"uint256"}],"name":"MaxWalletSizeRaised","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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbSend","type":"uint256"}],"name":"SwapAndSendFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"swapEnabled","type":"bool"}],"name":"ToggleSwapping","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"tradingEnabled","type":"bool"},{"indexed":false,"internalType":"uint256","name":"tradingEnabledTime","type":"uint256"}],"name":"TradingEnabled","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":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"changeFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","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":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"lowerFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":[{"internalType":"uint256","name":"_newLimit","type":"uint256"}],"name":"raiseMaxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newThreshold","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwapping","outputs":[],"stateMutability":"nonpayable","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":[],"name":"tradingEnabledTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052604051620050fb380380620050fb8339818101604052810190620000299190620006d4565b6040518060400160405280600881526020017f4f726967696e33440000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4f334400000000000000000000000000000000000000000000000000000000008152508160039081620000a69190620009a0565b508060049081620000b89190620009a0565b5050506000620000cd620004a460201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506019600c8190555081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860006200020c620004ac60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000816200039c620004d660201b60201c565b600a620003aa919062000c17565b633b9aca00620003bb919062000c68565b620003c7919062000cb3565b9050620003ea620003dd620004ac60201b60201c565b82620004df60201b60201c565b620003fc3083620004df60201b60201c565b6200040c620004d660201b60201c565b600a6200041a919062000c17565b629896806200042a919062000c68565b600e8190555062000440620004d660201b60201c565b600a6200044e919062000c17565b629896806200045e919062000c68565b600d819055506000600b60016101000a81548160ff0219169083151502179055506000600b60026101000a81548160ff0219169083151502179055505050505062000dda565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000551576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005489062000d4f565b60405180910390fd5b806002600082825462000565919062000d71565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620005bc919062000d71565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000623919062000dbd565b60405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620006618262000634565b9050919050565b620006738162000654565b81146200067f57600080fd5b50565b600081519050620006938162000668565b92915050565b6000819050919050565b620006ae8162000699565b8114620006ba57600080fd5b50565b600081519050620006ce81620006a3565b92915050565b600080600060608486031215620006f057620006ef6200062f565b5b6000620007008682870162000682565b9350506020620007138682870162000682565b92505060406200072686828701620006bd565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007b257607f821691505b602082108103620007c857620007c76200076a565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008327fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007f3565b6200083e8683620007f3565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620008816200087b620008758462000699565b62000856565b62000699565b9050919050565b6000819050919050565b6200089d8362000860565b620008b5620008ac8262000888565b84845462000800565b825550505050565b600090565b620008cc620008bd565b620008d981848462000892565b505050565b5b818110156200090157620008f5600082620008c2565b600181019050620008df565b5050565b601f82111562000950576200091a81620007ce565b6200092584620007e3565b8101602085101562000935578190505b6200094d6200094485620007e3565b830182620008de565b50505b505050565b600082821c905092915050565b6000620009756000198460080262000955565b1980831691505092915050565b600062000990838362000962565b9150826002028217905092915050565b620009ab8262000730565b67ffffffffffffffff811115620009c757620009c66200073b565b5b620009d3825462000799565b620009e082828562000905565b600060209050601f83116001811462000a18576000841562000a03578287015190505b62000a0f858262000982565b86555062000a7f565b601f19841662000a2886620007ce565b60005b8281101562000a525784890151825560018201915060208501945060208101905062000a2b565b8683101562000a72578489015162000a6e601f89168262000962565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000b155780860481111562000aed5762000aec62000a87565b5b600185161562000afd5780820291505b808102905062000b0d8562000ab6565b945062000acd565b94509492505050565b60008262000b30576001905062000c03565b8162000b40576000905062000c03565b816001811462000b59576002811462000b645762000b9a565b600191505062000c03565b60ff84111562000b795762000b7862000a87565b5b8360020a91508482111562000b935762000b9262000a87565b5b5062000c03565b5060208310610133831016604e8410600b841016171562000bd45782820a90508381111562000bce5762000bcd62000a87565b5b62000c03565b62000be3848484600162000ac3565b9250905081840481111562000bfd5762000bfc62000a87565b5b81810290505b9392505050565b600060ff82169050919050565b600062000c248262000699565b915062000c318362000c0a565b925062000c607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b1e565b905092915050565b600062000c758262000699565b915062000c828362000699565b925082820262000c928162000699565b9150828204841483151762000cac5762000cab62000a87565b5b5092915050565b600062000cc08262000699565b915062000ccd8362000699565b925082820390508181111562000ce85762000ce762000a87565b5b92915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000d37601f8362000cee565b915062000d448262000cff565b602082019050919050565b6000602082019050818103600083015262000d6a8162000d28565b9050919050565b600062000d7e8262000699565b915062000d8b8362000699565b925082820190508082111562000da65762000da562000a87565b5b92915050565b62000db78162000699565b82525050565b600060208201905062000dd4600083018462000dac565b92915050565b6143118062000dea6000396000f3fe6080604052600436106101f25760003560e01c8063715018a61161010d578063a9059cbb116100a0578063e0f3ccf51161006f578063e0f3ccf514610710578063e3b24c8014610727578063e96fada214610750578063f2fde38b1461077b578063f9d0831a146107a4576101f9565b8063a9059cbb14610642578063acef1a441461067f578063c0246668146106aa578063dd62ed3e146106d3576101f9565b80638f3fa860116100dc5780638f3fa8601461058657806395d89b41146105b15780639d0014b1146105dc578063a457c2d714610605576101f9565b8063715018a6146105045780637c08b9641461051b5780638a8c523c146105445780638da5cb5b1461055b576101f9565b806339509351116101855780636b67c4df116101545780636b67c4df146104465780636ddd1713146104715780636fd8fb7a1461049c57806370a08231146104c7576101f9565b8063395093511461037657806349bd5a5e146103b35780634ada218b146103de5780634fbee19314610409576101f9565b806318160ddd116101c157806318160ddd146102ba578063239be29a146102e557806323b872dd1461030e578063313ce5671461034b576101f9565b806306fdde03146101fe578063095ea7b3146102295780630f198ee8146102665780631694505e1461028f576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b506102136107cd565b6040516102209190612f39565b60405180910390f35b34801561023557600080fd5b50610250600480360381019061024b9190612ff4565b61085f565b60405161025d919061304f565b60405180910390f35b34801561027257600080fd5b5061028d6004803603810190610288919061306a565b61087d565b005b34801561029b57600080fd5b506102a4610999565b6040516102b191906130f6565b60405180910390f35b3480156102c657600080fd5b506102cf6109bf565b6040516102dc9190613120565b60405180910390f35b3480156102f157600080fd5b5061030c60048036038101906103079190613167565b6109c9565b005b34801561031a57600080fd5b5061033560048036038101906103309190613194565b610b18565b604051610342919061304f565b60405180910390f35b34801561035757600080fd5b50610360610c37565b60405161036d9190613203565b60405180910390f35b34801561038257600080fd5b5061039d60048036038101906103989190612ff4565b610c40565b6040516103aa919061304f565b60405180910390f35b3480156103bf57600080fd5b506103c8610cec565b6040516103d5919061322d565b60405180910390f35b3480156103ea57600080fd5b506103f3610d12565b604051610400919061304f565b60405180910390f35b34801561041557600080fd5b50610430600480360381019061042b9190613248565b610d25565b60405161043d919061304f565b60405180910390f35b34801561045257600080fd5b5061045b610d7b565b6040516104689190613120565b60405180910390f35b34801561047d57600080fd5b50610486610d81565b604051610493919061304f565b60405180910390f35b3480156104a857600080fd5b506104b1610d94565b6040516104be9190613120565b60405180910390f35b3480156104d357600080fd5b506104ee60048036038101906104e99190613248565b610d9a565b6040516104fb9190613120565b60405180910390f35b34801561051057600080fd5b50610519610de2565b005b34801561052757600080fd5b50610542600480360381019061053d9190613248565b610f3a565b005b34801561055057600080fd5b50610559611118565b005b34801561056757600080fd5b506105706116d2565b60405161057d919061322d565b60405180910390f35b34801561059257600080fd5b5061059b6116fc565b6040516105a89190613120565b60405180910390f35b3480156105bd57600080fd5b506105c6611702565b6040516105d39190612f39565b60405180910390f35b3480156105e857600080fd5b5061060360048036038101906105fe919061306a565b611794565b005b34801561061157600080fd5b5061062c60048036038101906106279190612ff4565b61186c565b604051610639919061304f565b60405180910390f35b34801561064e57600080fd5b5061066960048036038101906106649190612ff4565b611957565b604051610676919061304f565b60405180910390f35b34801561068b57600080fd5b50610694611975565b6040516106a19190613120565b60405180910390f35b3480156106b657600080fd5b506106d160048036038101906106cc9190613275565b61197b565b005b3480156106df57600080fd5b506106fa60048036038101906106f591906132b5565b611abb565b6040516107079190613120565b60405180910390f35b34801561071c57600080fd5b50610725611b42565b005b34801561073357600080fd5b5061074e6004803603810190610749919061306a565b611bf2565b005b34801561075c57600080fd5b50610765611d0e565b604051610772919061322d565b60405180910390f35b34801561078757600080fd5b506107a2600480360381019061079d9190613248565b611d34565b005b3480156107b057600080fd5b506107cb60048036038101906107c69190613248565b611efa565b005b6060600380546107dc90613324565b80601f016020809104026020016040519081016040528092919081815260200182805461080890613324565b80156108555780601f1061082a57610100808354040283529160200191610855565b820191906000526020600020905b81548152906001019060200180831161083857829003601f168201915b5050505050905090565b600061087361086c61215e565b8484612166565b6001905092915050565b61088561215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610914576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090b906133a1565b60405180910390fd5b600c548110610958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094f90613433565b60405180910390fd5b80600c819055507f521fe74e1c24ea5dc1327c29145ebc90bae09bc5a6f6bea118b4ad87793327a58160405161098e9190613120565b60405180910390a150565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6109d161215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a57906133a1565b60405180910390fd5b801515600b60019054906101000a900460ff16151503610ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aac9061349f565b60405180910390fd5b80600b60016101000a81548160ff0219169083151502179055507f0b24deddd077e0149099adf20869b94ebb4b0898a1068e9af5e30529f596e532600b60019054906101000a900460ff16604051610b0d919061304f565b60405180910390a150565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b6461215e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610c205782811015610c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0290613531565b60405180910390fd5b610c1f85610c1761215e565b858403612166565b5b610c2b85858561232f565b60019150509392505050565b60006012905090565b6000610ce2610c4d61215e565b848460016000610c5b61215e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610cdd9190613580565b612166565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60029054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600c5481565b600b60019054906101000a900460ff1681565b600a5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dea61215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e70906133a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610f4261215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc8906133a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561103c575061dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b61107b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107290613626565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fce24358e1d81b90be8bb8786b891404133aa63ffde0e56b69ccf25a5e3c4df06600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161110d919061322d565b60405180910390a150565b61112061215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a6906133a1565b60405180910390fd5b60001515600b60029054906101000a900460ff16151514611205576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fc90613692565b60405180910390fd5b61125230600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612166565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e391906136c7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561136c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139091906136c7565b6040518363ffffffff1660e01b81526004016113ad9291906136f4565b6020604051808303816000875af11580156113cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f091906136c7565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061147930610d9a565b6000806114846116d2565b426040518863ffffffff1660e01b81526004016114a696959493929190613758565b60606040518083038185885af11580156114c4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114e991906137ce565b505050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161158b929190613821565b6020604051808303816000875af11580156115aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ce919061385f565b506001600b60026101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff02191690831515021790555042600a81905550600160086000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f3eb2d65e1de77434db1b2cb0645de0085059e6e514d7b9641fdc2978d8e40c40600b60029054906101000a900460ff16600a546040516116c892919061388c565b60405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e5481565b60606004805461171190613324565b80601f016020809104026020016040519081016040528092919081815260200182805461173d90613324565b801561178a5780601f1061175f5761010080835404028352916020019161178a565b820191906000526020600020905b81548152906001019060200180831161176d57829003601f168201915b5050505050905090565b61179c61215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461182b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611822906133a1565b60405180910390fd5b80600d819055507fb090ae518da13bb076e9fad6694791d1d427db3284f7ac7321fbeafac08c7b27816040516118619190613120565b60405180910390a150565b6000806001600061187b61215e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192f90613927565b60405180910390fd5b61194c61194361215e565b85858403612166565b600191505092915050565b600061196b61196461215e565b848461232f565b6001905092915050565b600d5481565b61198361215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a09906133a1565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611aaf919061304f565b60405180910390a25050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611b4a61215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd0906133a1565b60405180910390fd5b6000611be430610d9a565b9050611bef816128d3565b50565b611bfa61215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c80906133a1565b60405180910390fd5b600e548111611ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc4906139b9565b60405180910390fd5b80600e819055507f69626ae9392dcbdfaecc4d3af4d6c00e0bb3888f512459d89551c2762e406c4181604051611d039190613120565b60405180910390a150565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d3c61215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc2906133a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3190613a4b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611f0261215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f88906133a1565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611fff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff690613add565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120625761205c473373ffffffffffffffffffffffffffffffffffffffff16612b8590919063ffffffff16565b5061215b565b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016120b8919061322d565b602060405180830381865afa1580156120d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f99190613afd565b6040518363ffffffff1660e01b8152600401612116929190613821565b6020604051808303816000875af1158015612135573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612159919061385f565b505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cc90613b9c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223b90613c2e565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123229190613120565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361239e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239590613c9a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361240d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240490613d06565b60405180910390fd5b600b60029054906101000a900460ff16806124715750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806124c55750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124fb90613d72565b60405180910390fd5b6000810361251d5761251883836000612c40565b6128ce565b600061252830610d9a565b90506000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125ce5750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156125e65750600b60009054906101000a900460ff165b156125f457600090506126ca565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806126b55750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156126b45750600b60029054906101000a900460ff165b5b156126c457600c5490506126c9565b600090505b5b600081111561270a576000606482856126e39190613d92565b6126ed9190613e03565b905080846126fb9190613e34565b9350612708863083612c40565b505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036127dd57600d548211801561277d5750600b60009054906101000a900460ff16155b80156127955750600b60019054906101000a900460ff165b156127dc576001600b60006101000a81548160ff0219169083151502179055506127c0600d546128d3565b6000600b60006101000a81548160ff0219169083151502179055505b5b600b60029054906101000a900460ff1680156128435750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561285c5750600b60009054906101000a900460ff16155b156128c057600061286c85610d9a565b9050600e54848261287d9190613580565b11156128be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b590613eb4565b60405180910390fd5b505b6128cb858585612c40565b50505b505050565b60004790506000600267ffffffffffffffff8111156128f5576128f4613ed4565b5b6040519080825280602002602001820160405280156129235781602001602082028036833780820191505090505b509050308160008151811061293b5761293a613f03565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0691906136c7565b81600181518110612a1a57612a19613f03565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b8152600401612ab8959493929190613ff0565b600060405180830381600087803b158015612ad257600080fd5b505af1158015612ae6573d6000803e3d6000fd5b5050505060008247612af89190613e34565b9050612b4581600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612b8590919063ffffffff16565b507f54c5e193a68e36b996e0c85b164c5953625d951c488fbad0e67aa32e1c45307b8482604051612b7792919061404a565b60405180910390a150505050565b600081471015612bca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc1906140bf565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1683604051612bf090614110565b60006040518083038185875af1925050503d8060008114612c2d576040519150601f19603f3d011682016040523d82523d6000602084013e612c32565b606091505b505090508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca690614197565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1590614229565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9b906142bb565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612e379190613580565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612e9b9190613120565b60405180910390a350505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ee3578082015181840152602081019050612ec8565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f0b82612ea9565b612f158185612eb4565b9350612f25818560208601612ec5565b612f2e81612eef565b840191505092915050565b60006020820190508181036000830152612f538184612f00565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f8b82612f60565b9050919050565b612f9b81612f80565b8114612fa657600080fd5b50565b600081359050612fb881612f92565b92915050565b6000819050919050565b612fd181612fbe565b8114612fdc57600080fd5b50565b600081359050612fee81612fc8565b92915050565b6000806040838503121561300b5761300a612f5b565b5b600061301985828601612fa9565b925050602061302a85828601612fdf565b9150509250929050565b60008115159050919050565b61304981613034565b82525050565b60006020820190506130646000830184613040565b92915050565b6000602082840312156130805761307f612f5b565b5b600061308e84828501612fdf565b91505092915050565b6000819050919050565b60006130bc6130b76130b284612f60565b613097565b612f60565b9050919050565b60006130ce826130a1565b9050919050565b60006130e0826130c3565b9050919050565b6130f0816130d5565b82525050565b600060208201905061310b60008301846130e7565b92915050565b61311a81612fbe565b82525050565b60006020820190506131356000830184613111565b92915050565b61314481613034565b811461314f57600080fd5b50565b6000813590506131618161313b565b92915050565b60006020828403121561317d5761317c612f5b565b5b600061318b84828501613152565b91505092915050565b6000806000606084860312156131ad576131ac612f5b565b5b60006131bb86828701612fa9565b93505060206131cc86828701612fa9565b92505060406131dd86828701612fdf565b9150509250925092565b600060ff82169050919050565b6131fd816131e7565b82525050565b600060208201905061321860008301846131f4565b92915050565b61322781612f80565b82525050565b6000602082019050613242600083018461321e565b92915050565b60006020828403121561325e5761325d612f5b565b5b600061326c84828501612fa9565b91505092915050565b6000806040838503121561328c5761328b612f5b565b5b600061329a85828601612fa9565b92505060206132ab85828601613152565b9150509250929050565b600080604083850312156132cc576132cb612f5b565b5b60006132da85828601612fa9565b92505060206132eb85828601612fa9565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061333c57607f821691505b60208210810361334f5761334e6132f5565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061338b602083612eb4565b915061339682613355565b602082019050919050565b600060208201905081810360008301526133ba8161337e565b9050919050565b7f4f33443a204e657720666565206d757374206265206c6f776572207468616e2060008201527f6f6c642066656521000000000000000000000000000000000000000000000000602082015250565b600061341d602883612eb4565b9150613428826133c1565b604082019050919050565b6000602082019050818103600083015261344c81613410565b9050919050565b7f43757272656e746c79206174207468652073616d652073746167650000000000600082015250565b6000613489601b83612eb4565b915061349482613453565b602082019050919050565b600060208201905081810360008301526134b88161347c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061351b602883612eb4565b9150613526826134bf565b604082019050919050565b6000602082019050818103600083015261354a8161350e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061358b82612fbe565b915061359683612fbe565b92508282019050808211156135ae576135ad613551565b5b92915050565b7f4d61726b6574696e67204665652072656365697665722063616e6e6f7420626560008201527f20746865207a65726f206f722064656164206164647265737300000000000000602082015250565b6000613610603983612eb4565b915061361b826135b4565b604082019050919050565b6000602082019050818103600083015261363f81613603565b9050919050565b7f4f33443a2074726164696e6720616c726561647920656e61626c656421000000600082015250565b600061367c601d83612eb4565b915061368782613646565b602082019050919050565b600060208201905081810360008301526136ab8161366f565b9050919050565b6000815190506136c181612f92565b92915050565b6000602082840312156136dd576136dc612f5b565b5b60006136eb848285016136b2565b91505092915050565b6000604082019050613709600083018561321e565b613716602083018461321e565b9392505050565b6000819050919050565b600061374261373d6137388461371d565b613097565b612fbe565b9050919050565b61375281613727565b82525050565b600060c08201905061376d600083018961321e565b61377a6020830188613111565b6137876040830187613749565b6137946060830186613749565b6137a1608083018561321e565b6137ae60a0830184613111565b979650505050505050565b6000815190506137c881612fc8565b92915050565b6000806000606084860312156137e7576137e6612f5b565b5b60006137f5868287016137b9565b9350506020613806868287016137b9565b9250506040613817868287016137b9565b9150509250925092565b6000604082019050613836600083018561321e565b6138436020830184613111565b9392505050565b6000815190506138598161313b565b92915050565b60006020828403121561387557613874612f5b565b5b60006138838482850161384a565b91505092915050565b60006040820190506138a16000830185613040565b6138ae6020830184613111565b9392505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613911602583612eb4565b915061391c826138b5565b604082019050919050565b6000602082019050818103600083015261394081613904565b9050919050565b7f4f33443a204e6577206c696d6974206d7573742062652068696768657220746860008201527f616e206f6c646572210000000000000000000000000000000000000000000000602082015250565b60006139a3602983612eb4565b91506139ae82613947565b604082019050919050565b600060208201905081810360008301526139d281613996565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a35602683612eb4565b9150613a40826139d9565b604082019050919050565b60006020820190508181036000830152613a6481613a28565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b6000613ac7603783612eb4565b9150613ad282613a6b565b604082019050919050565b60006020820190508181036000830152613af681613aba565b9050919050565b600060208284031215613b1357613b12612f5b565b5b6000613b21848285016137b9565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613b86602483612eb4565b9150613b9182613b2a565b604082019050919050565b60006020820190508181036000830152613bb581613b79565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c18602283612eb4565b9150613c2382613bbc565b604082019050919050565b60006020820190508181036000830152613c4781613c0b565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b6000613c84601e83612eb4565b9150613c8f82613c4e565b602082019050919050565b60006020820190508181036000830152613cb381613c77565b9050919050565b7f5472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b6000613cf0601c83612eb4565b9150613cfb82613cba565b602082019050919050565b60006020820190508181036000830152613d1f81613ce3565b9050919050565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b6000613d5c601883612eb4565b9150613d6782613d26565b602082019050919050565b60006020820190508181036000830152613d8b81613d4f565b9050919050565b6000613d9d82612fbe565b9150613da883612fbe565b9250828202613db681612fbe565b91508282048414831517613dcd57613dcc613551565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613e0e82612fbe565b9150613e1983612fbe565b925082613e2957613e28613dd4565b5b828204905092915050565b6000613e3f82612fbe565b9150613e4a83612fbe565b9250828203905081811115613e6257613e61613551565b5b92915050565b7f4d6178696d756d2077616c6c65742073697a6520657863656564656421000000600082015250565b6000613e9e601d83612eb4565b9150613ea982613e68565b602082019050919050565b60006020820190508181036000830152613ecd81613e91565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613f6781612f80565b82525050565b6000613f798383613f5e565b60208301905092915050565b6000602082019050919050565b6000613f9d82613f32565b613fa78185613f3d565b9350613fb283613f4e565b8060005b83811015613fe3578151613fca8882613f6d565b9750613fd583613f85565b925050600181019050613fb6565b5085935050505092915050565b600060a0820190506140056000830188613111565b6140126020830187613749565b81810360408301526140248186613f92565b9050614033606083018561321e565b6140406080830184613111565b9695505050505050565b600060408201905061405f6000830185613111565b61406c6020830184613111565b9392505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006140a9601d83612eb4565b91506140b482614073565b602082019050919050565b600060208201905081810360008301526140d88161409c565b9050919050565b600081905092915050565b50565b60006140fa6000836140df565b9150614105826140ea565b600082019050919050565b600061411b826140ed565b9150819050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614181602583612eb4565b915061418c82614125565b604082019050919050565b600060208201905081810360008301526141b081614174565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614213602383612eb4565b915061421e826141b7565b604082019050919050565b6000602082019050818103600083015261424281614206565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006142a5602683612eb4565b91506142b082614249565b604082019050919050565b600060208201905081810360008301526142d481614298565b905091905056fea264697066735822122030838ffbe8989c89be3af73f18e5cb2fb6f8d8e46e7c28d4a1ea63e96c40264264736f6c634300081300330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d00000000000000000000000011013c4c59d12b5f49a2d56bab166158c232c643000000000000000000000000000000000000000002e87669c308736a04000000

Deployed Bytecode

0x6080604052600436106101f25760003560e01c8063715018a61161010d578063a9059cbb116100a0578063e0f3ccf51161006f578063e0f3ccf514610710578063e3b24c8014610727578063e96fada214610750578063f2fde38b1461077b578063f9d0831a146107a4576101f9565b8063a9059cbb14610642578063acef1a441461067f578063c0246668146106aa578063dd62ed3e146106d3576101f9565b80638f3fa860116100dc5780638f3fa8601461058657806395d89b41146105b15780639d0014b1146105dc578063a457c2d714610605576101f9565b8063715018a6146105045780637c08b9641461051b5780638a8c523c146105445780638da5cb5b1461055b576101f9565b806339509351116101855780636b67c4df116101545780636b67c4df146104465780636ddd1713146104715780636fd8fb7a1461049c57806370a08231146104c7576101f9565b8063395093511461037657806349bd5a5e146103b35780634ada218b146103de5780634fbee19314610409576101f9565b806318160ddd116101c157806318160ddd146102ba578063239be29a146102e557806323b872dd1461030e578063313ce5671461034b576101f9565b806306fdde03146101fe578063095ea7b3146102295780630f198ee8146102665780631694505e1461028f576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b506102136107cd565b6040516102209190612f39565b60405180910390f35b34801561023557600080fd5b50610250600480360381019061024b9190612ff4565b61085f565b60405161025d919061304f565b60405180910390f35b34801561027257600080fd5b5061028d6004803603810190610288919061306a565b61087d565b005b34801561029b57600080fd5b506102a4610999565b6040516102b191906130f6565b60405180910390f35b3480156102c657600080fd5b506102cf6109bf565b6040516102dc9190613120565b60405180910390f35b3480156102f157600080fd5b5061030c60048036038101906103079190613167565b6109c9565b005b34801561031a57600080fd5b5061033560048036038101906103309190613194565b610b18565b604051610342919061304f565b60405180910390f35b34801561035757600080fd5b50610360610c37565b60405161036d9190613203565b60405180910390f35b34801561038257600080fd5b5061039d60048036038101906103989190612ff4565b610c40565b6040516103aa919061304f565b60405180910390f35b3480156103bf57600080fd5b506103c8610cec565b6040516103d5919061322d565b60405180910390f35b3480156103ea57600080fd5b506103f3610d12565b604051610400919061304f565b60405180910390f35b34801561041557600080fd5b50610430600480360381019061042b9190613248565b610d25565b60405161043d919061304f565b60405180910390f35b34801561045257600080fd5b5061045b610d7b565b6040516104689190613120565b60405180910390f35b34801561047d57600080fd5b50610486610d81565b604051610493919061304f565b60405180910390f35b3480156104a857600080fd5b506104b1610d94565b6040516104be9190613120565b60405180910390f35b3480156104d357600080fd5b506104ee60048036038101906104e99190613248565b610d9a565b6040516104fb9190613120565b60405180910390f35b34801561051057600080fd5b50610519610de2565b005b34801561052757600080fd5b50610542600480360381019061053d9190613248565b610f3a565b005b34801561055057600080fd5b50610559611118565b005b34801561056757600080fd5b506105706116d2565b60405161057d919061322d565b60405180910390f35b34801561059257600080fd5b5061059b6116fc565b6040516105a89190613120565b60405180910390f35b3480156105bd57600080fd5b506105c6611702565b6040516105d39190612f39565b60405180910390f35b3480156105e857600080fd5b5061060360048036038101906105fe919061306a565b611794565b005b34801561061157600080fd5b5061062c60048036038101906106279190612ff4565b61186c565b604051610639919061304f565b60405180910390f35b34801561064e57600080fd5b5061066960048036038101906106649190612ff4565b611957565b604051610676919061304f565b60405180910390f35b34801561068b57600080fd5b50610694611975565b6040516106a19190613120565b60405180910390f35b3480156106b657600080fd5b506106d160048036038101906106cc9190613275565b61197b565b005b3480156106df57600080fd5b506106fa60048036038101906106f591906132b5565b611abb565b6040516107079190613120565b60405180910390f35b34801561071c57600080fd5b50610725611b42565b005b34801561073357600080fd5b5061074e6004803603810190610749919061306a565b611bf2565b005b34801561075c57600080fd5b50610765611d0e565b604051610772919061322d565b60405180910390f35b34801561078757600080fd5b506107a2600480360381019061079d9190613248565b611d34565b005b3480156107b057600080fd5b506107cb60048036038101906107c69190613248565b611efa565b005b6060600380546107dc90613324565b80601f016020809104026020016040519081016040528092919081815260200182805461080890613324565b80156108555780601f1061082a57610100808354040283529160200191610855565b820191906000526020600020905b81548152906001019060200180831161083857829003601f168201915b5050505050905090565b600061087361086c61215e565b8484612166565b6001905092915050565b61088561215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610914576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090b906133a1565b60405180910390fd5b600c548110610958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094f90613433565b60405180910390fd5b80600c819055507f521fe74e1c24ea5dc1327c29145ebc90bae09bc5a6f6bea118b4ad87793327a58160405161098e9190613120565b60405180910390a150565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6109d161215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a57906133a1565b60405180910390fd5b801515600b60019054906101000a900460ff16151503610ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aac9061349f565b60405180910390fd5b80600b60016101000a81548160ff0219169083151502179055507f0b24deddd077e0149099adf20869b94ebb4b0898a1068e9af5e30529f596e532600b60019054906101000a900460ff16604051610b0d919061304f565b60405180910390a150565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b6461215e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610c205782811015610c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0290613531565b60405180910390fd5b610c1f85610c1761215e565b858403612166565b5b610c2b85858561232f565b60019150509392505050565b60006012905090565b6000610ce2610c4d61215e565b848460016000610c5b61215e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610cdd9190613580565b612166565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60029054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600c5481565b600b60019054906101000a900460ff1681565b600a5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dea61215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e70906133a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610f4261215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc8906133a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561103c575061dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b61107b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107290613626565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fce24358e1d81b90be8bb8786b891404133aa63ffde0e56b69ccf25a5e3c4df06600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161110d919061322d565b60405180910390a150565b61112061215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a6906133a1565b60405180910390fd5b60001515600b60029054906101000a900460ff16151514611205576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fc90613692565b60405180910390fd5b61125230600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612166565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e391906136c7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561136c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139091906136c7565b6040518363ffffffff1660e01b81526004016113ad9291906136f4565b6020604051808303816000875af11580156113cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f091906136c7565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061147930610d9a565b6000806114846116d2565b426040518863ffffffff1660e01b81526004016114a696959493929190613758565b60606040518083038185885af11580156114c4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114e991906137ce565b505050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161158b929190613821565b6020604051808303816000875af11580156115aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ce919061385f565b506001600b60026101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff02191690831515021790555042600a81905550600160086000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f3eb2d65e1de77434db1b2cb0645de0085059e6e514d7b9641fdc2978d8e40c40600b60029054906101000a900460ff16600a546040516116c892919061388c565b60405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e5481565b60606004805461171190613324565b80601f016020809104026020016040519081016040528092919081815260200182805461173d90613324565b801561178a5780601f1061175f5761010080835404028352916020019161178a565b820191906000526020600020905b81548152906001019060200180831161176d57829003601f168201915b5050505050905090565b61179c61215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461182b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611822906133a1565b60405180910390fd5b80600d819055507fb090ae518da13bb076e9fad6694791d1d427db3284f7ac7321fbeafac08c7b27816040516118619190613120565b60405180910390a150565b6000806001600061187b61215e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192f90613927565b60405180910390fd5b61194c61194361215e565b85858403612166565b600191505092915050565b600061196b61196461215e565b848461232f565b6001905092915050565b600d5481565b61198361215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a09906133a1565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611aaf919061304f565b60405180910390a25050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611b4a61215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd0906133a1565b60405180910390fd5b6000611be430610d9a565b9050611bef816128d3565b50565b611bfa61215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c80906133a1565b60405180910390fd5b600e548111611ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc4906139b9565b60405180910390fd5b80600e819055507f69626ae9392dcbdfaecc4d3af4d6c00e0bb3888f512459d89551c2762e406c4181604051611d039190613120565b60405180910390a150565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d3c61215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc2906133a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3190613a4b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611f0261215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f88906133a1565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611fff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff690613add565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120625761205c473373ffffffffffffffffffffffffffffffffffffffff16612b8590919063ffffffff16565b5061215b565b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016120b8919061322d565b602060405180830381865afa1580156120d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f99190613afd565b6040518363ffffffff1660e01b8152600401612116929190613821565b6020604051808303816000875af1158015612135573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612159919061385f565b505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cc90613b9c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223b90613c2e565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123229190613120565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361239e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239590613c9a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361240d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240490613d06565b60405180910390fd5b600b60029054906101000a900460ff16806124715750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806124c55750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124fb90613d72565b60405180910390fd5b6000810361251d5761251883836000612c40565b6128ce565b600061252830610d9a565b90506000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125ce5750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156125e65750600b60009054906101000a900460ff165b156125f457600090506126ca565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806126b55750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156126b45750600b60029054906101000a900460ff165b5b156126c457600c5490506126c9565b600090505b5b600081111561270a576000606482856126e39190613d92565b6126ed9190613e03565b905080846126fb9190613e34565b9350612708863083612c40565b505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036127dd57600d548211801561277d5750600b60009054906101000a900460ff16155b80156127955750600b60019054906101000a900460ff165b156127dc576001600b60006101000a81548160ff0219169083151502179055506127c0600d546128d3565b6000600b60006101000a81548160ff0219169083151502179055505b5b600b60029054906101000a900460ff1680156128435750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561285c5750600b60009054906101000a900460ff16155b156128c057600061286c85610d9a565b9050600e54848261287d9190613580565b11156128be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b590613eb4565b60405180910390fd5b505b6128cb858585612c40565b50505b505050565b60004790506000600267ffffffffffffffff8111156128f5576128f4613ed4565b5b6040519080825280602002602001820160405280156129235781602001602082028036833780820191505090505b509050308160008151811061293b5761293a613f03565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0691906136c7565b81600181518110612a1a57612a19613f03565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b8152600401612ab8959493929190613ff0565b600060405180830381600087803b158015612ad257600080fd5b505af1158015612ae6573d6000803e3d6000fd5b5050505060008247612af89190613e34565b9050612b4581600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612b8590919063ffffffff16565b507f54c5e193a68e36b996e0c85b164c5953625d951c488fbad0e67aa32e1c45307b8482604051612b7792919061404a565b60405180910390a150505050565b600081471015612bca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc1906140bf565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1683604051612bf090614110565b60006040518083038185875af1925050503d8060008114612c2d576040519150601f19603f3d011682016040523d82523d6000602084013e612c32565b606091505b505090508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca690614197565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1590614229565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9b906142bb565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612e379190613580565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612e9b9190613120565b60405180910390a350505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ee3578082015181840152602081019050612ec8565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f0b82612ea9565b612f158185612eb4565b9350612f25818560208601612ec5565b612f2e81612eef565b840191505092915050565b60006020820190508181036000830152612f538184612f00565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f8b82612f60565b9050919050565b612f9b81612f80565b8114612fa657600080fd5b50565b600081359050612fb881612f92565b92915050565b6000819050919050565b612fd181612fbe565b8114612fdc57600080fd5b50565b600081359050612fee81612fc8565b92915050565b6000806040838503121561300b5761300a612f5b565b5b600061301985828601612fa9565b925050602061302a85828601612fdf565b9150509250929050565b60008115159050919050565b61304981613034565b82525050565b60006020820190506130646000830184613040565b92915050565b6000602082840312156130805761307f612f5b565b5b600061308e84828501612fdf565b91505092915050565b6000819050919050565b60006130bc6130b76130b284612f60565b613097565b612f60565b9050919050565b60006130ce826130a1565b9050919050565b60006130e0826130c3565b9050919050565b6130f0816130d5565b82525050565b600060208201905061310b60008301846130e7565b92915050565b61311a81612fbe565b82525050565b60006020820190506131356000830184613111565b92915050565b61314481613034565b811461314f57600080fd5b50565b6000813590506131618161313b565b92915050565b60006020828403121561317d5761317c612f5b565b5b600061318b84828501613152565b91505092915050565b6000806000606084860312156131ad576131ac612f5b565b5b60006131bb86828701612fa9565b93505060206131cc86828701612fa9565b92505060406131dd86828701612fdf565b9150509250925092565b600060ff82169050919050565b6131fd816131e7565b82525050565b600060208201905061321860008301846131f4565b92915050565b61322781612f80565b82525050565b6000602082019050613242600083018461321e565b92915050565b60006020828403121561325e5761325d612f5b565b5b600061326c84828501612fa9565b91505092915050565b6000806040838503121561328c5761328b612f5b565b5b600061329a85828601612fa9565b92505060206132ab85828601613152565b9150509250929050565b600080604083850312156132cc576132cb612f5b565b5b60006132da85828601612fa9565b92505060206132eb85828601612fa9565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061333c57607f821691505b60208210810361334f5761334e6132f5565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061338b602083612eb4565b915061339682613355565b602082019050919050565b600060208201905081810360008301526133ba8161337e565b9050919050565b7f4f33443a204e657720666565206d757374206265206c6f776572207468616e2060008201527f6f6c642066656521000000000000000000000000000000000000000000000000602082015250565b600061341d602883612eb4565b9150613428826133c1565b604082019050919050565b6000602082019050818103600083015261344c81613410565b9050919050565b7f43757272656e746c79206174207468652073616d652073746167650000000000600082015250565b6000613489601b83612eb4565b915061349482613453565b602082019050919050565b600060208201905081810360008301526134b88161347c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061351b602883612eb4565b9150613526826134bf565b604082019050919050565b6000602082019050818103600083015261354a8161350e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061358b82612fbe565b915061359683612fbe565b92508282019050808211156135ae576135ad613551565b5b92915050565b7f4d61726b6574696e67204665652072656365697665722063616e6e6f7420626560008201527f20746865207a65726f206f722064656164206164647265737300000000000000602082015250565b6000613610603983612eb4565b915061361b826135b4565b604082019050919050565b6000602082019050818103600083015261363f81613603565b9050919050565b7f4f33443a2074726164696e6720616c726561647920656e61626c656421000000600082015250565b600061367c601d83612eb4565b915061368782613646565b602082019050919050565b600060208201905081810360008301526136ab8161366f565b9050919050565b6000815190506136c181612f92565b92915050565b6000602082840312156136dd576136dc612f5b565b5b60006136eb848285016136b2565b91505092915050565b6000604082019050613709600083018561321e565b613716602083018461321e565b9392505050565b6000819050919050565b600061374261373d6137388461371d565b613097565b612fbe565b9050919050565b61375281613727565b82525050565b600060c08201905061376d600083018961321e565b61377a6020830188613111565b6137876040830187613749565b6137946060830186613749565b6137a1608083018561321e565b6137ae60a0830184613111565b979650505050505050565b6000815190506137c881612fc8565b92915050565b6000806000606084860312156137e7576137e6612f5b565b5b60006137f5868287016137b9565b9350506020613806868287016137b9565b9250506040613817868287016137b9565b9150509250925092565b6000604082019050613836600083018561321e565b6138436020830184613111565b9392505050565b6000815190506138598161313b565b92915050565b60006020828403121561387557613874612f5b565b5b60006138838482850161384a565b91505092915050565b60006040820190506138a16000830185613040565b6138ae6020830184613111565b9392505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613911602583612eb4565b915061391c826138b5565b604082019050919050565b6000602082019050818103600083015261394081613904565b9050919050565b7f4f33443a204e6577206c696d6974206d7573742062652068696768657220746860008201527f616e206f6c646572210000000000000000000000000000000000000000000000602082015250565b60006139a3602983612eb4565b91506139ae82613947565b604082019050919050565b600060208201905081810360008301526139d281613996565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a35602683612eb4565b9150613a40826139d9565b604082019050919050565b60006020820190508181036000830152613a6481613a28565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b6000613ac7603783612eb4565b9150613ad282613a6b565b604082019050919050565b60006020820190508181036000830152613af681613aba565b9050919050565b600060208284031215613b1357613b12612f5b565b5b6000613b21848285016137b9565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613b86602483612eb4565b9150613b9182613b2a565b604082019050919050565b60006020820190508181036000830152613bb581613b79565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c18602283612eb4565b9150613c2382613bbc565b604082019050919050565b60006020820190508181036000830152613c4781613c0b565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b6000613c84601e83612eb4565b9150613c8f82613c4e565b602082019050919050565b60006020820190508181036000830152613cb381613c77565b9050919050565b7f5472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b6000613cf0601c83612eb4565b9150613cfb82613cba565b602082019050919050565b60006020820190508181036000830152613d1f81613ce3565b9050919050565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b6000613d5c601883612eb4565b9150613d6782613d26565b602082019050919050565b60006020820190508181036000830152613d8b81613d4f565b9050919050565b6000613d9d82612fbe565b9150613da883612fbe565b9250828202613db681612fbe565b91508282048414831517613dcd57613dcc613551565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613e0e82612fbe565b9150613e1983612fbe565b925082613e2957613e28613dd4565b5b828204905092915050565b6000613e3f82612fbe565b9150613e4a83612fbe565b9250828203905081811115613e6257613e61613551565b5b92915050565b7f4d6178696d756d2077616c6c65742073697a6520657863656564656421000000600082015250565b6000613e9e601d83612eb4565b9150613ea982613e68565b602082019050919050565b60006020820190508181036000830152613ecd81613e91565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613f6781612f80565b82525050565b6000613f798383613f5e565b60208301905092915050565b6000602082019050919050565b6000613f9d82613f32565b613fa78185613f3d565b9350613fb283613f4e565b8060005b83811015613fe3578151613fca8882613f6d565b9750613fd583613f85565b925050600181019050613fb6565b5085935050505092915050565b600060a0820190506140056000830188613111565b6140126020830187613749565b81810360408301526140248186613f92565b9050614033606083018561321e565b6140406080830184613111565b9695505050505050565b600060408201905061405f6000830185613111565b61406c6020830184613111565b9392505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006140a9601d83612eb4565b91506140b482614073565b602082019050919050565b600060208201905081810360008301526140d88161409c565b9050919050565b600081905092915050565b50565b60006140fa6000836140df565b9150614105826140ea565b600082019050919050565b600061411b826140ed565b9150819050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614181602583612eb4565b915061418c82614125565b604082019050919050565b600060208201905081810360008301526141b081614174565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614213602383612eb4565b915061421e826141b7565b604082019050919050565b6000602082019050818103600083015261424281614206565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006142a5602683612eb4565b91506142b082614249565b604082019050919050565b600060208201905081810360008301526142d481614298565b905091905056fea264697066735822122030838ffbe8989c89be3af73f18e5cb2fb6f8d8e46e7c28d4a1ea63e96c40264264736f6c63430008130033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d00000000000000000000000011013c4c59d12b5f49a2d56bab166158c232c643000000000000000000000000000000000000000002e87669c308736a04000000

-----Decoded View---------------
Arg [0] : _router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : _feeReceiver (address): 0x11013c4C59d12b5f49A2d56bAB166158C232C643
Arg [2] : _initalLiquidity (uint256): 900000000000000000000000000

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [1] : 00000000000000000000000011013c4c59d12b5f49a2d56bab166158c232c643
Arg [2] : 000000000000000000000000000000000000000002e87669c308736a04000000


Deployed Bytecode Sourcemap

8445:7630:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4050:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5026:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15416:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8530:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4367:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14350:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5228:622;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4270:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5858:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8578:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8826:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11158:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8861:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8796:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8718:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4483:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3202:148;;;;;;;;;;;;;:::i;:::-;;11292:433;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11811:778;;;;;;;;;;;;;:::i;:::-;;2988:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8933:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4158:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15899:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6156:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4634:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8895:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10939:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4842:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15251:157;;;;;;;;;;;;;:::i;:::-;;15646:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8676:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3358:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10464:467;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4050:100;4104:13;4137:5;4130:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4050:100;:::o;5026:194::-;5134:4;5151:39;5160:12;:10;:12::i;:::-;5174:7;5183:6;5151:8;:39::i;:::-;5208:4;5201:11;;5026:194;;;;:::o;15416:222::-;3125:12;:10;:12::i;:::-;3115:22;;:6;;;;;;;;;;;:22;;;3107:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15500:12:::1;;15490:7;:22;15482:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;15585:7;15570:12;:22;;;;15610:20;15622:7;15610:20;;;;;;:::i;:::-;;;;;;;;15416:222:::0;:::o;8530:41::-;;;;;;;;;;;;;:::o;4367:108::-;4428:7;4455:12;;4448:19;;4367:108;:::o;14350:228::-;3125:12;:10;:12::i;:::-;3115:22;;:6;;;;;;;;;;;:22;;;3107:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14446:12:::1;14431:27;;:11;;;;;;;;;;;:27;;::::0;14423:67:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14515:12;14501:11;;:26;;;;;;;;;;;;;;;;;;14543:27;14558:11;;;;;;;;;;;14543:27;;;;;;:::i;:::-;;;;;;;;14350:228:::0;:::o;5228:622::-;5368:4;5385:24;5412:11;:19;5424:6;5412:19;;;;;;;;;;;;;;;:33;5432:12;:10;:12::i;:::-;5412:33;;;;;;;;;;;;;;;;5385:60;;5480:17;5460:16;:37;5456:314;;5560:6;5540:16;:26;;5514:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;5686:57;5695:6;5703:12;:10;:12::i;:::-;5736:6;5717:16;:25;5686:8;:57::i;:::-;5456:314;5782:36;5792:6;5800:9;5811:6;5782:9;:36::i;:::-;5838:4;5831:11;;;5228:622;;;;;:::o;4270:93::-;4328:5;4353:2;4346:9;;4270:93;:::o;5858:290::-;5971:4;5988:130;6011:12;:10;:12::i;:::-;6038:7;6097:10;6060:11;:25;6072:12;:10;:12::i;:::-;6060:25;;;;;;;;;;;;;;;:34;6086:7;6060:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5988:8;:130::i;:::-;6136:4;6129:11;;5858:290;;;;:::o;8578:28::-;;;;;;;;;;;;;:::o;8826:26::-;;;;;;;;;;;;;:::o;11158:126::-;11224:4;11248:19;:28;11268:7;11248:28;;;;;;;;;;;;;;;;;;;;;;;;;11241:35;;11158:126;;;:::o;8861:27::-;;;;:::o;8796:23::-;;;;;;;;;;;;;:::o;8718:33::-;;;;:::o;4483:143::-;4573:7;4600:9;:18;4610:7;4600:18;;;;;;;;;;;;;;;;4593:25;;4483:143;;;:::o;3202:148::-;3125:12;:10;:12::i;:::-;3115:22;;:6;;;;;;;;;;;:22;;;3107:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3309:1:::1;3272:40;;3293:6;;;;;;;;;;;3272:40;;;;;;;;;;;;3340:1;3323:6;;:19;;;;;;;;;;;;;;;;;;3202:148::o:0;11292:433::-;3125:12;:10;:12::i;:::-;3115:22;;:6;;;;;;;;;;;:22;;;3107:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11451:1:::1;11418:35;;:21;:35;;;;:92;;;;;11503:6;11470:40;;:21;:40;;;;11418:92;11396:199;;;;;;;;;;;;:::i;:::-;;;;;;;;;11629:21;11606:20;;:44;;;;;;;;;;;;;;;;;;11668:49;11696:20;;;;;;;;;;;11668:49;;;;;;:::i;:::-;;;;;;;;11292:433:::0;:::o;11811:778::-;3125:12;:10;:12::i;:::-;3115:22;;:6;;;;;;;;;;;:22;;;3107:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11892:5:::1;11874:23;;:14;;;;;;;;;;;:23;;;11866:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;11942:68;11959:4;11974:15;;;;;;;;;;;11992:17;11942:8;:68::i;:::-;12055:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12037:55;;;12101:4;12108:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12037:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12021:13;;:110;;;;;;;;;;;;;;;;;;12142:15;;;;;;;;;;;:31;;;12181:21;12212:4;12218:24;12236:4;12218:9;:24::i;:::-;12243:1;12245::::0;12247:7:::1;:5;:7::i;:::-;12255:15;12142:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12289:13;;;;;;;;;;;12282:29;;;12320:15;;;;;;;;;;;12338:14;12282:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12381:4;12364:14;;:21;;;;;;;;;;;;;;;;;;12410:4;12396:11;;:18;;;;;;;;;;;;;;;;;;12446:15;12425:18;:36;;;;12509:4;12472:19;:34;12492:13;;;;;;;;;;;12472:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;12531:50;12546:14;;;;;;;;;;;12562:18;;12531:50;;;;;;;:::i;:::-;;;;;;;;11811:778::o:0;2988:79::-;3026:7;3053:6;;;;;;;;;;;3046:13;;2988:79;:::o;8933:28::-;;;;:::o;4158:104::-;4214:13;4247:7;4240:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4158:104;:::o;15899:173::-;3125:12;:10;:12::i;:::-;3115:22;;:6;;;;;;;;;;;:22;;;3107:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15995:13:::1;15976:16;:32;;;;16026:38;16050:13;16026:38;;;;;;:::i;:::-;;;;;;;;15899:173:::0;:::o;6156:475::-;6274:4;6291:24;6318:11;:25;6330:12;:10;:12::i;:::-;6318:25;;;;;;;;;;;;;;;:34;6344:7;6318:34;;;;;;;;;;;;;;;;6291:61;;6405:15;6385:16;:35;;6363:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;6521:67;6530:12;:10;:12::i;:::-;6544:7;6572:15;6553:16;:34;6521:8;:67::i;:::-;6619:4;6612:11;;;6156:475;;;;:::o;4634:200::-;4745:4;4762:42;4772:12;:10;:12::i;:::-;4786:9;4797:6;4762:9;:42::i;:::-;4822:4;4815:11;;4634:200;;;;:::o;8895:31::-;;;;:::o;10939:211::-;3125:12;:10;:12::i;:::-;3115:22;;:6;;;;;;;;;;;:22;;;3107:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11082:8:::1;11051:19;:28;11071:7;11051:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;11124:7;11108:34;;;11133:8;11108:34;;;;;;:::i;:::-;;;;;;;;10939:211:::0;;:::o;4842:176::-;4956:7;4983:11;:18;4995:5;4983:18;;;;;;;;;;;;;;;:27;5002:7;4983:27;;;;;;;;;;;;;;;;4976:34;;4842:176;;;;:::o;15251:157::-;3125:12;:10;:12::i;:::-;3115:22;;:6;;;;;;;;;;;:22;;;3107:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15301:23:::1;15327:24;15345:4;15327:9;:24::i;:::-;15301:50;;15362:38;15384:15;15362:21;:38::i;:::-;15290:118;15251:157::o:0;15646:245::-;3125:12;:10;:12::i;:::-;3115:22;;:6;;;;;;;;;;;:22;;;3107:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15738:13:::1;;15726:9;:25;15718:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;15826:9;15810:13;:25;;;;15853:30;15873:9;15853:30;;;;;;:::i;:::-;;;;;;;;15646:245:::0;:::o;8676:35::-;;;;;;;;;;;;;:::o;3358:281::-;3125:12;:10;:12::i;:::-;3115:22;;:6;;;;;;;;;;;:22;;;3107:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3481:1:::1;3461:22;;:8;:22;;::::0;3439:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3594:8;3565:38;;3586:6;;;;;;;;;;;3565:38;;;;;;;;;;;;3623:8;3614:6;;:17;;;;;;;;;;;;;;;;;;3358:281:::0;:::o;10464:467::-;3125:12;:10;:12::i;:::-;3115:22;;:6;;;;;;;;;;;:22;;;3107:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10574:4:::1;10557:22;;:5;:22;;::::0;10535:127:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10694:3;10677:21;;:5;:21;;::::0;10673:127:::1;;10715:52;10745:21;10723:10;10715:29;;;;:52;;;;:::i;:::-;;10782:7;;10673:127;10819:5;10812:22;;;10849:10;10881:5;10874:23;;;10906:4;10874:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10812:111;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3185:1;10464:467:::0;:::o;2530:98::-;2583:7;2610:10;2603:17;;2530:98;:::o;8058:380::-;8211:1;8194:19;;:5;:19;;;8186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8292:1;8273:21;;:7;:21;;;8265:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8376:6;8346:11;:18;8358:5;8346:18;;;;;;;;;;;;;;;:27;8365:7;8346:27;;;;;;;;;;;;;;;:36;;;;8414:7;8398:32;;8407:5;8398:32;;;8423:6;8398:32;;;;;;:::i;:::-;;;;;;;;8058:380;;;:::o;12597:1745::-;12745:1;12729:18;;:4;:18;;;12721:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;12815:1;12801:16;;:2;:16;;;12793:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12869:14;;;;;;;;;;;:61;;;;12905:19;:25;12925:4;12905:25;;;;;;;;;;;;;;;;;;;;;;;;;12869:61;:106;;;;12952:19;:23;12972:2;12952:23;;;;;;;;;;;;;;;;;;;;;;;;;12869:106;12861:166;;;;;;;;;;;;:::i;:::-;;;;;;;;;13054:1;13044:6;:11;13040:93;;13072:28;13088:4;13094:2;13098:1;13072:15;:28::i;:::-;13115:7;;13040:93;13145:28;13176:24;13194:4;13176:9;:24::i;:::-;13145:55;;13213:18;13246:19;:25;13266:4;13246:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;;13275:19;:23;13295:2;13275:23;;;;;;;;;;;;;;;;;;;;;;;;;13246:52;:72;;;;;13302:16;;;;;;;;;;;13246:72;13242:292;;;13348:1;13335:14;;13242:292;;;13379:13;;;;;;;;;;;13371:21;;:4;:21;;;:62;;;;13402:13;;;;;;;;;;;13396:19;;:2;:19;;;:37;;;;;13419:14;;;;;;;;;;;13396:37;13371:62;13367:167;;;13463:12;;13450:25;;13367:167;;;13521:1;13508:14;;13367:167;13242:292;13563:1;13550:10;:14;13546:183;;;13581:12;13620:3;13606:10;13597:6;:19;;;;:::i;:::-;13596:27;;;;:::i;:::-;13581:42;;13656:4;13647:6;:13;;;;:::i;:::-;13638:22;;13675:42;13691:4;13705;13712;13675:15;:42::i;:::-;13566:163;13546:183;13750:13;;;;;;;;;;;13744:19;;:2;:19;;;13741:310;;13807:16;;13784:20;:39;:60;;;;;13828:16;;;;;;;;;;;13827:17;13784:60;:75;;;;;13848:11;;;;;;;;;;;13784:75;13780:260;;;13899:4;13880:16;;:23;;;;;;;;;;;;;;;;;;13924:39;13946:16;;13924:21;:39::i;:::-;14019:5;14000:16;;:24;;;;;;;;;;;;;;;;;;13780:260;13741:310;14066:14;;;;;;;;;;;:42;;;;;14085:19;:23;14105:2;14085:23;;;;;;;;;;;;;;;;;;;;;;;;;14084:24;14066:42;:63;;;;;14113:16;;;;;;;;;;;14112:17;14066:63;14063:226;;;14146:20;14169:13;14179:2;14169:9;:13::i;:::-;14146:36;;14230:13;;14220:6;14205:12;:21;;;;:::i;:::-;:38;;14197:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;14131:158;14063:226;14301:33;14317:4;14323:2;14327:6;14301:15;:33::i;:::-;12710:1632;;12597:1745;;;;:::o;14586:657::-;14657:22;14682:21;14657:46;;14716:21;14754:1;14740:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14716:40;;14785:4;14767;14772:1;14767:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;14811:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14801:4;14806:1;14801:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;14846:15;;;;;;;;;;;:66;;;14927:11;14953:1;14969:4;14996;15016:15;14846:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15055:18;15100:14;15076:21;:38;;;;:::i;:::-;15055:59;;15127:51;15167:10;15135:20;;;;;;;;;;;15127:39;;;;:51;;;;:::i;:::-;;15196:39;15211:11;15224:10;15196:39;;;;;;;:::i;:::-;;;;;;;;14646:597;;;14586:657;:::o;2141:349::-;2246:4;2310:6;2285:21;:31;;2263:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;2387:12;2405:9;:14;;2427:6;2405:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2386:52;;;2456:7;2449:14;;;2141:349;;;;:::o;6639:651::-;6797:1;6779:20;;:6;:20;;;6771:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6881:1;6860:23;;:9;:23;;;6852:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6936:21;6960:9;:17;6970:6;6960:17;;;;;;;;;;;;;;;;6936:41;;7027:6;7010:13;:23;;6988:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;7171:6;7155:13;:22;7135:9;:17;7145:6;7135:17;;;;;;;;;;;;;;;:42;;;;7223:6;7199:9;:20;7209:9;7199:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7264:9;7247:35;;7256:6;7247:35;;;7275:6;7247:35;;;;;;:::i;:::-;;;;;;;;6760:530;6639:651;;;:::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;1430:117::-;1539:1;1536;1529: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:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:151::-;4202:9;4235:37;4266:5;4235:37;:::i;:::-;4222:50;;4127:151;;;:::o;4284:181::-;4396:62;4452:5;4396:62;:::i;:::-;4391:3;4384:75;4284:181;;:::o;4471:272::-;4589:4;4627:2;4616:9;4612:18;4604:26;;4640:96;4733:1;4722:9;4718:17;4709:6;4640:96;:::i;:::-;4471:272;;;;:::o;4749:118::-;4836:24;4854:5;4836:24;:::i;:::-;4831:3;4824:37;4749:118;;:::o;4873:222::-;4966:4;5004:2;4993:9;4989:18;4981:26;;5017:71;5085:1;5074:9;5070:17;5061:6;5017:71;:::i;:::-;4873:222;;;;:::o;5101:116::-;5171:21;5186:5;5171:21;:::i;:::-;5164:5;5161:32;5151:60;;5207:1;5204;5197:12;5151:60;5101:116;:::o;5223:133::-;5266:5;5304:6;5291:20;5282:29;;5320:30;5344:5;5320:30;:::i;:::-;5223:133;;;;:::o;5362:323::-;5418:6;5467:2;5455:9;5446:7;5442:23;5438:32;5435:119;;;5473:79;;:::i;:::-;5435:119;5593:1;5618:50;5660:7;5651:6;5640:9;5636:22;5618:50;:::i;:::-;5608:60;;5564:114;5362:323;;;;:::o;5691:619::-;5768:6;5776;5784;5833:2;5821:9;5812:7;5808:23;5804:32;5801:119;;;5839:79;;:::i;:::-;5801:119;5959:1;5984:53;6029:7;6020:6;6009:9;6005:22;5984:53;:::i;:::-;5974:63;;5930:117;6086:2;6112:53;6157:7;6148:6;6137:9;6133:22;6112:53;:::i;:::-;6102:63;;6057:118;6214:2;6240:53;6285:7;6276:6;6265:9;6261:22;6240:53;:::i;:::-;6230:63;;6185:118;5691:619;;;;;:::o;6316:86::-;6351:7;6391:4;6384:5;6380:16;6369:27;;6316:86;;;:::o;6408:112::-;6491:22;6507:5;6491:22;:::i;:::-;6486:3;6479:35;6408:112;;:::o;6526:214::-;6615:4;6653:2;6642:9;6638:18;6630:26;;6666:67;6730:1;6719:9;6715:17;6706:6;6666:67;:::i;:::-;6526:214;;;;:::o;6746:118::-;6833:24;6851:5;6833:24;:::i;:::-;6828:3;6821:37;6746:118;;:::o;6870:222::-;6963:4;7001:2;6990:9;6986:18;6978:26;;7014:71;7082:1;7071:9;7067:17;7058:6;7014:71;:::i;:::-;6870:222;;;;:::o;7098:329::-;7157:6;7206:2;7194:9;7185:7;7181:23;7177:32;7174:119;;;7212:79;;:::i;:::-;7174:119;7332:1;7357:53;7402:7;7393:6;7382:9;7378:22;7357:53;:::i;:::-;7347:63;;7303:117;7098:329;;;;:::o;7433:468::-;7498:6;7506;7555:2;7543:9;7534:7;7530:23;7526:32;7523:119;;;7561:79;;:::i;:::-;7523:119;7681:1;7706:53;7751:7;7742:6;7731:9;7727:22;7706:53;:::i;:::-;7696:63;;7652:117;7808:2;7834:50;7876:7;7867:6;7856:9;7852:22;7834:50;:::i;:::-;7824:60;;7779:115;7433:468;;;;;:::o;7907:474::-;7975:6;7983;8032:2;8020:9;8011:7;8007:23;8003:32;8000:119;;;8038:79;;:::i;:::-;8000:119;8158:1;8183:53;8228:7;8219:6;8208:9;8204:22;8183:53;:::i;:::-;8173:63;;8129:117;8285:2;8311:53;8356:7;8347:6;8336:9;8332:22;8311:53;:::i;:::-;8301:63;;8256:118;7907:474;;;;;:::o;8387:180::-;8435:77;8432:1;8425:88;8532:4;8529:1;8522:15;8556:4;8553:1;8546:15;8573:320;8617:6;8654:1;8648:4;8644:12;8634:22;;8701:1;8695:4;8691:12;8722:18;8712:81;;8778:4;8770:6;8766:17;8756:27;;8712:81;8840:2;8832:6;8829:14;8809:18;8806:38;8803:84;;8859:18;;:::i;:::-;8803:84;8624:269;8573:320;;;:::o;8899:182::-;9039:34;9035:1;9027:6;9023:14;9016:58;8899:182;:::o;9087:366::-;9229:3;9250:67;9314:2;9309:3;9250:67;:::i;:::-;9243:74;;9326:93;9415:3;9326:93;:::i;:::-;9444:2;9439:3;9435:12;9428:19;;9087:366;;;:::o;9459:419::-;9625:4;9663:2;9652:9;9648:18;9640:26;;9712:9;9706:4;9702:20;9698:1;9687:9;9683:17;9676:47;9740:131;9866:4;9740:131;:::i;:::-;9732:139;;9459:419;;;:::o;9884:227::-;10024:34;10020:1;10012:6;10008:14;10001:58;10093:10;10088:2;10080:6;10076:15;10069:35;9884:227;:::o;10117:366::-;10259:3;10280:67;10344:2;10339:3;10280:67;:::i;:::-;10273:74;;10356:93;10445:3;10356:93;:::i;:::-;10474:2;10469:3;10465:12;10458:19;;10117:366;;;:::o;10489:419::-;10655:4;10693:2;10682:9;10678:18;10670:26;;10742:9;10736:4;10732:20;10728:1;10717:9;10713:17;10706:47;10770:131;10896:4;10770:131;:::i;:::-;10762:139;;10489:419;;;:::o;10914:177::-;11054:29;11050:1;11042:6;11038:14;11031:53;10914:177;:::o;11097:366::-;11239:3;11260:67;11324:2;11319:3;11260:67;:::i;:::-;11253:74;;11336:93;11425:3;11336:93;:::i;:::-;11454:2;11449:3;11445:12;11438:19;;11097:366;;;:::o;11469:419::-;11635:4;11673:2;11662:9;11658:18;11650:26;;11722:9;11716:4;11712:20;11708:1;11697:9;11693:17;11686:47;11750:131;11876:4;11750:131;:::i;:::-;11742:139;;11469:419;;;:::o;11894:227::-;12034:34;12030:1;12022:6;12018:14;12011:58;12103:10;12098:2;12090:6;12086:15;12079:35;11894:227;:::o;12127:366::-;12269:3;12290:67;12354:2;12349:3;12290:67;:::i;:::-;12283:74;;12366:93;12455:3;12366:93;:::i;:::-;12484:2;12479:3;12475:12;12468:19;;12127:366;;;:::o;12499:419::-;12665:4;12703:2;12692:9;12688:18;12680:26;;12752:9;12746:4;12742:20;12738:1;12727:9;12723:17;12716:47;12780:131;12906:4;12780:131;:::i;:::-;12772:139;;12499:419;;;:::o;12924:180::-;12972:77;12969:1;12962:88;13069:4;13066:1;13059:15;13093:4;13090:1;13083:15;13110:191;13150:3;13169:20;13187:1;13169:20;:::i;:::-;13164:25;;13203:20;13221:1;13203:20;:::i;:::-;13198:25;;13246:1;13243;13239:9;13232:16;;13267:3;13264:1;13261:10;13258:36;;;13274:18;;:::i;:::-;13258:36;13110:191;;;;:::o;13307:244::-;13447:34;13443:1;13435:6;13431:14;13424:58;13516:27;13511:2;13503:6;13499:15;13492:52;13307:244;:::o;13557:366::-;13699:3;13720:67;13784:2;13779:3;13720:67;:::i;:::-;13713:74;;13796:93;13885:3;13796:93;:::i;:::-;13914:2;13909:3;13905:12;13898:19;;13557:366;;;:::o;13929:419::-;14095:4;14133:2;14122:9;14118:18;14110:26;;14182:9;14176:4;14172:20;14168:1;14157:9;14153:17;14146:47;14210:131;14336:4;14210:131;:::i;:::-;14202:139;;13929:419;;;:::o;14354:179::-;14494:31;14490:1;14482:6;14478:14;14471:55;14354:179;:::o;14539:366::-;14681:3;14702:67;14766:2;14761:3;14702:67;:::i;:::-;14695:74;;14778:93;14867:3;14778:93;:::i;:::-;14896:2;14891:3;14887:12;14880:19;;14539:366;;;:::o;14911:419::-;15077:4;15115:2;15104:9;15100:18;15092:26;;15164:9;15158:4;15154:20;15150:1;15139:9;15135:17;15128:47;15192:131;15318:4;15192:131;:::i;:::-;15184:139;;14911:419;;;:::o;15336:143::-;15393:5;15424:6;15418:13;15409:22;;15440:33;15467:5;15440:33;:::i;:::-;15336:143;;;;:::o;15485:351::-;15555:6;15604:2;15592:9;15583:7;15579:23;15575:32;15572:119;;;15610:79;;:::i;:::-;15572:119;15730:1;15755:64;15811:7;15802:6;15791:9;15787:22;15755:64;:::i;:::-;15745:74;;15701:128;15485:351;;;;:::o;15842:332::-;15963:4;16001:2;15990:9;15986:18;15978:26;;16014:71;16082:1;16071:9;16067:17;16058:6;16014:71;:::i;:::-;16095:72;16163:2;16152:9;16148:18;16139:6;16095:72;:::i;:::-;15842:332;;;;;:::o;16180:85::-;16225:7;16254:5;16243:16;;16180:85;;;:::o;16271:158::-;16329:9;16362:61;16380:42;16389:32;16415:5;16389:32;:::i;:::-;16380:42;:::i;:::-;16362:61;:::i;:::-;16349:74;;16271:158;;;:::o;16435:147::-;16530:45;16569:5;16530:45;:::i;:::-;16525:3;16518:58;16435:147;;:::o;16588:807::-;16837:4;16875:3;16864:9;16860:19;16852:27;;16889:71;16957:1;16946:9;16942:17;16933:6;16889:71;:::i;:::-;16970:72;17038:2;17027:9;17023:18;17014:6;16970:72;:::i;:::-;17052:80;17128:2;17117:9;17113:18;17104:6;17052:80;:::i;:::-;17142;17218:2;17207:9;17203:18;17194:6;17142:80;:::i;:::-;17232:73;17300:3;17289:9;17285:19;17276:6;17232:73;:::i;:::-;17315;17383:3;17372:9;17368:19;17359:6;17315:73;:::i;:::-;16588:807;;;;;;;;;:::o;17401:143::-;17458:5;17489:6;17483:13;17474:22;;17505:33;17532:5;17505:33;:::i;:::-;17401:143;;;;:::o;17550:663::-;17638:6;17646;17654;17703:2;17691:9;17682:7;17678:23;17674:32;17671:119;;;17709:79;;:::i;:::-;17671:119;17829:1;17854:64;17910:7;17901:6;17890:9;17886:22;17854:64;:::i;:::-;17844:74;;17800:128;17967:2;17993:64;18049:7;18040:6;18029:9;18025:22;17993:64;:::i;:::-;17983:74;;17938:129;18106:2;18132:64;18188:7;18179:6;18168:9;18164:22;18132:64;:::i;:::-;18122:74;;18077:129;17550:663;;;;;:::o;18219:332::-;18340:4;18378:2;18367:9;18363:18;18355:26;;18391:71;18459:1;18448:9;18444:17;18435:6;18391:71;:::i;:::-;18472:72;18540:2;18529:9;18525:18;18516:6;18472:72;:::i;:::-;18219:332;;;;;:::o;18557:137::-;18611:5;18642:6;18636:13;18627:22;;18658:30;18682:5;18658:30;:::i;:::-;18557:137;;;;:::o;18700:345::-;18767:6;18816:2;18804:9;18795:7;18791:23;18787:32;18784:119;;;18822:79;;:::i;:::-;18784:119;18942:1;18967:61;19020:7;19011:6;19000:9;18996:22;18967:61;:::i;:::-;18957:71;;18913:125;18700:345;;;;:::o;19051:320::-;19166:4;19204:2;19193:9;19189:18;19181:26;;19217:65;19279:1;19268:9;19264:17;19255:6;19217:65;:::i;:::-;19292:72;19360:2;19349:9;19345:18;19336:6;19292:72;:::i;:::-;19051:320;;;;;:::o;19377:224::-;19517:34;19513:1;19505:6;19501:14;19494:58;19586:7;19581:2;19573:6;19569:15;19562:32;19377:224;:::o;19607:366::-;19749:3;19770:67;19834:2;19829:3;19770:67;:::i;:::-;19763:74;;19846:93;19935:3;19846:93;:::i;:::-;19964:2;19959:3;19955:12;19948:19;;19607:366;;;:::o;19979:419::-;20145:4;20183:2;20172:9;20168:18;20160:26;;20232:9;20226:4;20222:20;20218:1;20207:9;20203:17;20196:47;20260:131;20386:4;20260:131;:::i;:::-;20252:139;;19979:419;;;:::o;20404:228::-;20544:34;20540:1;20532:6;20528:14;20521:58;20613:11;20608:2;20600:6;20596:15;20589:36;20404:228;:::o;20638:366::-;20780:3;20801:67;20865:2;20860:3;20801:67;:::i;:::-;20794:74;;20877:93;20966:3;20877:93;:::i;:::-;20995:2;20990:3;20986:12;20979:19;;20638:366;;;:::o;21010:419::-;21176:4;21214:2;21203:9;21199:18;21191:26;;21263:9;21257:4;21253:20;21249:1;21238:9;21234:17;21227:47;21291:131;21417:4;21291:131;:::i;:::-;21283:139;;21010:419;;;:::o;21435:225::-;21575:34;21571:1;21563:6;21559:14;21552:58;21644:8;21639:2;21631:6;21627:15;21620:33;21435:225;:::o;21666:366::-;21808:3;21829:67;21893:2;21888:3;21829:67;:::i;:::-;21822:74;;21905:93;21994:3;21905:93;:::i;:::-;22023:2;22018:3;22014:12;22007:19;;21666:366;;;:::o;22038:419::-;22204:4;22242:2;22231:9;22227:18;22219:26;;22291:9;22285:4;22281:20;22277:1;22266:9;22262:17;22255:47;22319:131;22445:4;22319:131;:::i;:::-;22311:139;;22038:419;;;:::o;22463:242::-;22603:34;22599:1;22591:6;22587:14;22580:58;22672:25;22667:2;22659:6;22655:15;22648:50;22463:242;:::o;22711:366::-;22853:3;22874:67;22938:2;22933:3;22874:67;:::i;:::-;22867:74;;22950:93;23039:3;22950:93;:::i;:::-;23068:2;23063:3;23059:12;23052:19;;22711:366;;;:::o;23083:419::-;23249:4;23287:2;23276:9;23272:18;23264:26;;23336:9;23330:4;23326:20;23322:1;23311:9;23307:17;23300:47;23364:131;23490:4;23364:131;:::i;:::-;23356:139;;23083:419;;;:::o;23508:351::-;23578:6;23627:2;23615:9;23606:7;23602:23;23598:32;23595:119;;;23633:79;;:::i;:::-;23595:119;23753:1;23778:64;23834:7;23825:6;23814:9;23810:22;23778:64;:::i;:::-;23768:74;;23724:128;23508:351;;;;:::o;23865:223::-;24005:34;24001:1;23993:6;23989:14;23982:58;24074:6;24069:2;24061:6;24057:15;24050:31;23865:223;:::o;24094:366::-;24236:3;24257:67;24321:2;24316:3;24257:67;:::i;:::-;24250:74;;24333:93;24422:3;24333:93;:::i;:::-;24451:2;24446:3;24442:12;24435:19;;24094:366;;;:::o;24466:419::-;24632:4;24670:2;24659:9;24655:18;24647:26;;24719:9;24713:4;24709:20;24705:1;24694:9;24690:17;24683:47;24747:131;24873:4;24747:131;:::i;:::-;24739:139;;24466:419;;;:::o;24891:221::-;25031:34;25027:1;25019:6;25015:14;25008:58;25100:4;25095:2;25087:6;25083:15;25076:29;24891:221;:::o;25118:366::-;25260:3;25281:67;25345:2;25340:3;25281:67;:::i;:::-;25274:74;;25357:93;25446:3;25357:93;:::i;:::-;25475:2;25470:3;25466:12;25459:19;;25118:366;;;:::o;25490:419::-;25656:4;25694:2;25683:9;25679:18;25671:26;;25743:9;25737:4;25733:20;25729:1;25718:9;25714:17;25707:47;25771:131;25897:4;25771:131;:::i;:::-;25763:139;;25490:419;;;:::o;25915:180::-;26055:32;26051:1;26043:6;26039:14;26032:56;25915:180;:::o;26101:366::-;26243:3;26264:67;26328:2;26323:3;26264:67;:::i;:::-;26257:74;;26340:93;26429:3;26340:93;:::i;:::-;26458:2;26453:3;26449:12;26442:19;;26101:366;;;:::o;26473:419::-;26639:4;26677:2;26666:9;26662:18;26654:26;;26726:9;26720:4;26716:20;26712:1;26701:9;26697:17;26690:47;26754:131;26880:4;26754:131;:::i;:::-;26746:139;;26473:419;;;:::o;26898:178::-;27038:30;27034:1;27026:6;27022:14;27015:54;26898:178;:::o;27082:366::-;27224:3;27245:67;27309:2;27304:3;27245:67;:::i;:::-;27238:74;;27321:93;27410:3;27321:93;:::i;:::-;27439:2;27434:3;27430:12;27423:19;;27082:366;;;:::o;27454:419::-;27620:4;27658:2;27647:9;27643:18;27635:26;;27707:9;27701:4;27697:20;27693:1;27682:9;27678:17;27671:47;27735:131;27861:4;27735:131;:::i;:::-;27727:139;;27454:419;;;:::o;27879:174::-;28019:26;28015:1;28007:6;28003:14;27996:50;27879:174;:::o;28059:366::-;28201:3;28222:67;28286:2;28281:3;28222:67;:::i;:::-;28215:74;;28298:93;28387:3;28298:93;:::i;:::-;28416:2;28411:3;28407:12;28400:19;;28059:366;;;:::o;28431:419::-;28597:4;28635:2;28624:9;28620:18;28612:26;;28684:9;28678:4;28674:20;28670:1;28659:9;28655:17;28648:47;28712:131;28838:4;28712:131;:::i;:::-;28704:139;;28431:419;;;:::o;28856:410::-;28896:7;28919:20;28937:1;28919:20;:::i;:::-;28914:25;;28953:20;28971:1;28953:20;:::i;:::-;28948:25;;29008:1;29005;29001:9;29030:30;29048:11;29030:30;:::i;:::-;29019:41;;29209:1;29200:7;29196:15;29193:1;29190:22;29170:1;29163:9;29143:83;29120:139;;29239:18;;:::i;:::-;29120:139;28904:362;28856:410;;;;:::o;29272:180::-;29320:77;29317:1;29310:88;29417:4;29414:1;29407:15;29441:4;29438:1;29431:15;29458:185;29498:1;29515:20;29533:1;29515:20;:::i;:::-;29510:25;;29549:20;29567:1;29549:20;:::i;:::-;29544:25;;29588:1;29578:35;;29593:18;;:::i;:::-;29578:35;29635:1;29632;29628:9;29623:14;;29458:185;;;;:::o;29649:194::-;29689:4;29709:20;29727:1;29709:20;:::i;:::-;29704:25;;29743:20;29761:1;29743:20;:::i;:::-;29738:25;;29787:1;29784;29780:9;29772:17;;29811:1;29805:4;29802:11;29799:37;;;29816:18;;:::i;:::-;29799:37;29649:194;;;;:::o;29849:179::-;29989:31;29985:1;29977:6;29973:14;29966:55;29849:179;:::o;30034:366::-;30176:3;30197:67;30261:2;30256:3;30197:67;:::i;:::-;30190:74;;30273:93;30362:3;30273:93;:::i;:::-;30391:2;30386:3;30382:12;30375:19;;30034:366;;;:::o;30406:419::-;30572:4;30610:2;30599:9;30595:18;30587:26;;30659:9;30653:4;30649:20;30645:1;30634:9;30630:17;30623:47;30687:131;30813:4;30687:131;:::i;:::-;30679:139;;30406:419;;;:::o;30831:180::-;30879:77;30876:1;30869:88;30976:4;30973:1;30966:15;31000:4;30997:1;30990:15;31017:180;31065:77;31062:1;31055:88;31162:4;31159:1;31152:15;31186:4;31183:1;31176:15;31203:114;31270:6;31304:5;31298:12;31288:22;;31203:114;;;:::o;31323:184::-;31422:11;31456:6;31451:3;31444:19;31496:4;31491:3;31487:14;31472:29;;31323:184;;;;:::o;31513:132::-;31580:4;31603:3;31595:11;;31633:4;31628:3;31624:14;31616:22;;31513:132;;;:::o;31651:108::-;31728:24;31746:5;31728:24;:::i;:::-;31723:3;31716:37;31651:108;;:::o;31765:179::-;31834:10;31855:46;31897:3;31889:6;31855:46;:::i;:::-;31933:4;31928:3;31924:14;31910:28;;31765:179;;;;:::o;31950:113::-;32020:4;32052;32047:3;32043:14;32035:22;;31950:113;;;:::o;32099:732::-;32218:3;32247:54;32295:5;32247:54;:::i;:::-;32317:86;32396:6;32391:3;32317:86;:::i;:::-;32310:93;;32427:56;32477:5;32427:56;:::i;:::-;32506:7;32537:1;32522:284;32547:6;32544:1;32541:13;32522:284;;;32623:6;32617:13;32650:63;32709:3;32694:13;32650:63;:::i;:::-;32643:70;;32736:60;32789:6;32736:60;:::i;:::-;32726:70;;32582:224;32569:1;32566;32562:9;32557:14;;32522:284;;;32526:14;32822:3;32815:10;;32223:608;;;32099:732;;;;:::o;32837:831::-;33100:4;33138:3;33127:9;33123:19;33115:27;;33152:71;33220:1;33209:9;33205:17;33196:6;33152:71;:::i;:::-;33233:80;33309:2;33298:9;33294:18;33285:6;33233:80;:::i;:::-;33360:9;33354:4;33350:20;33345:2;33334:9;33330:18;33323:48;33388:108;33491:4;33482:6;33388:108;:::i;:::-;33380:116;;33506:72;33574:2;33563:9;33559:18;33550:6;33506:72;:::i;:::-;33588:73;33656:3;33645:9;33641:19;33632:6;33588:73;:::i;:::-;32837:831;;;;;;;;:::o;33674:332::-;33795:4;33833:2;33822:9;33818:18;33810:26;;33846:71;33914:1;33903:9;33899:17;33890:6;33846:71;:::i;:::-;33927:72;33995:2;33984:9;33980:18;33971:6;33927:72;:::i;:::-;33674:332;;;;;:::o;34012:179::-;34152:31;34148:1;34140:6;34136:14;34129:55;34012:179;:::o;34197:366::-;34339:3;34360:67;34424:2;34419:3;34360:67;:::i;:::-;34353:74;;34436:93;34525:3;34436:93;:::i;:::-;34554:2;34549:3;34545:12;34538:19;;34197:366;;;:::o;34569:419::-;34735:4;34773:2;34762:9;34758:18;34750:26;;34822:9;34816:4;34812:20;34808:1;34797:9;34793:17;34786:47;34850:131;34976:4;34850:131;:::i;:::-;34842:139;;34569:419;;;:::o;34994:147::-;35095:11;35132:3;35117:18;;34994:147;;;;:::o;35147:114::-;;:::o;35267:398::-;35426:3;35447:83;35528:1;35523:3;35447:83;:::i;:::-;35440:90;;35539:93;35628:3;35539:93;:::i;:::-;35657:1;35652:3;35648:11;35641:18;;35267:398;;;:::o;35671:379::-;35855:3;35877:147;36020:3;35877:147;:::i;:::-;35870:154;;36041:3;36034:10;;35671:379;;;:::o;36056:224::-;36196:34;36192:1;36184:6;36180:14;36173:58;36265:7;36260:2;36252:6;36248:15;36241:32;36056:224;:::o;36286:366::-;36428:3;36449:67;36513:2;36508:3;36449:67;:::i;:::-;36442:74;;36525:93;36614:3;36525:93;:::i;:::-;36643:2;36638:3;36634:12;36627:19;;36286:366;;;:::o;36658:419::-;36824:4;36862:2;36851:9;36847:18;36839:26;;36911:9;36905:4;36901:20;36897:1;36886:9;36882:17;36875:47;36939:131;37065:4;36939:131;:::i;:::-;36931:139;;36658:419;;;:::o;37083:222::-;37223:34;37219:1;37211:6;37207:14;37200:58;37292:5;37287:2;37279:6;37275:15;37268:30;37083:222;:::o;37311:366::-;37453:3;37474:67;37538:2;37533:3;37474:67;:::i;:::-;37467:74;;37550:93;37639:3;37550:93;:::i;:::-;37668:2;37663:3;37659:12;37652:19;;37311:366;;;:::o;37683:419::-;37849:4;37887:2;37876:9;37872:18;37864:26;;37936:9;37930:4;37926:20;37922:1;37911:9;37907:17;37900:47;37964:131;38090:4;37964:131;:::i;:::-;37956:139;;37683:419;;;:::o;38108:225::-;38248:34;38244:1;38236:6;38232:14;38225:58;38317:8;38312:2;38304:6;38300:15;38293:33;38108:225;:::o;38339:366::-;38481:3;38502:67;38566:2;38561:3;38502:67;:::i;:::-;38495:74;;38578:93;38667:3;38578:93;:::i;:::-;38696:2;38691:3;38687:12;38680:19;;38339:366;;;:::o;38711:419::-;38877:4;38915:2;38904:9;38900:18;38892:26;;38964:9;38958:4;38954:20;38950:1;38939:9;38935:17;38928:47;38992:131;39118:4;38992:131;:::i;:::-;38984:139;;38711:419;;;:::o

Swarm Source

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