ETH Price: $2,349.86 (+0.29%)

Token

Evangelistpepe ($EVP)
 

Overview

Max Total Supply

100,000,000 $EVP

Holders

78

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
200,000 $EVP

Value
$0.00
0x73b4d14160db626b58385b320cdc6eb9733b12cf
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:
Evangelistpepe

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity 0.8.18;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

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

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);
}

interface IERC20Metadata is IERC20 {

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

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 to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

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

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

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

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

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

        _afterTokenTransfer(address(0), account, amount);
    }

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

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

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

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

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

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

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}


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

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

contract Evangelistpepe is ERC20, Ownable{
    using Address for address payable;
        
    mapping (address user => bool status) public isExcludedFromFees;
    mapping (address user => bool status) public isBlacklisted;
    mapping (address user => uint256 timestamp) public lastTrade;
    
    IRouter public router;
    address public pair;
    address public marketingWallet = 0xD1D4afad33dA1ac270DAF86Ccf590B32EAe68a54;

    bool private swapping;
    bool public swapEnabled;
    bool public tradingEnabled;
    
    uint256 public swapThreshold = 500000 * 10**9;
    uint256 public maxWallet = 100000000 * 10**9;
    uint256 public maxTx = 100000000 * 10**9;
    uint256 public delay;
    
    struct Taxes {
        uint256 buy;
        uint256 sell;
        uint256 transfer;
    }

    Taxes public taxes = Taxes(10,30,0);

    modifier mutexLock() {
        if (!swapping) {
            swapping = true;
            _;
            swapping = false;
        }
    }
  
    constructor(address _router) ERC20("Evangelistpepe", "$EVP") {
        _mint(msg.sender, 100000000 * 10 ** 9);

        router = IRouter(_router);
        pair = IFactory(router.factory()).createPair(address(this), router.WETH());


        isExcludedFromFees[address(this)] = true;
        isExcludedFromFees[msg.sender] = true;
        isExcludedFromFees[marketingWallet] = true;

        _approve(address(this), address(router), type(uint256).max);
    }

    function decimals() public view virtual override returns (uint8) {
        return 9;
    }

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

        if (swapping || isExcludedFromFees[sender] || isExcludedFromFees[recipient]) {
            super._transfer(sender, recipient, amount);
            return;
        }

        else{
            require(tradingEnabled, "Trading not enabled");
            require(!isBlacklisted[sender] && !isBlacklisted[recipient], "Blacklisted address");
            if(sender != pair) {
                require(lastTrade[sender] + delay <= block.timestamp, "WAIT PLEASE");
                lastTrade[sender] = block.timestamp;
            }
            if(recipient != pair){
                require(balanceOf(recipient) + amount <= maxWallet, "Wallet limit exceeded");
                require(lastTrade[recipient] + delay <= block.timestamp, "WAIT PLEASE");
                lastTrade[recipient] = block.timestamp;
            }
        }
        
        uint256 fees;

        if(recipient == pair) fees = amount * taxes.sell / 100;
        else if(sender == pair) fees = amount * taxes.buy / 100;
        else fees = amount * taxes.transfer / 100; 

        if (swapEnabled && sender != pair && !swapping) swapFees();

        super._transfer(sender, recipient, amount - fees);
        if(fees > 0){
            super._transfer(sender, address(this), fees);
        }
    }

function swapFees() private mutexLock {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= swapThreshold) {
            uint256 initialBalance = address(this).balance;
            swapTokensForEth(swapThreshold);
            uint256 deltaBalance = address(this).balance - initialBalance;
            payable(marketingWallet).sendValue(deltaBalance);
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

    function setSwapEnabled(bool status) external onlyOwner {
        swapEnabled = status;
    }

    function setSwapTreshhold(uint256 amount) external onlyOwner {
        swapThreshold = amount * 10**9;
    }
    
    function setTaxes(uint256 _buyTax, uint256 _sellTax, uint256 _transferTax) external onlyOwner {
        require(_buyTax <= 69 && _sellTax <= 69 && _transferTax <= 69, "Taxes too high");
        taxes = Taxes (_buyTax, _sellTax, _transferTax); 
    }
    
    function setRouterAndPair(address newRouter, address newPair) external onlyOwner{
        router = IRouter(newRouter);
        pair = newPair;
        _approve(address(this), address(newRouter), type(uint256).max);
    }
    
    function GTPepeGo() external onlyOwner{
        tradingEnabled = true;
        swapEnabled = true;
        taxes.transfer = 69;
    }
 
    function removeLimits() external onlyOwner{
        maxTx = totalSupply();
        maxWallet = totalSupply();
        taxes.transfer = 0;
    }

    function setDelay(uint256 time) external onlyOwner{
        delay = time;
    }

    function setLimits(uint256 _maxTx, uint256 _maxWallet) external onlyOwner{
        maxTx = _maxTx * 10**9;
        maxWallet = _maxWallet * 10**9;
    }
    
    function setMarketingWallet(address newWallet) external onlyOwner{
        marketingWallet = newWallet;
    }

    function setIsExcludedFromFees(address _address, bool state) external onlyOwner {
        isExcludedFromFees[_address] = state;
    }
    
    function bulkIsExcludedFromFees(address[] memory accounts, bool state) external onlyOwner{
        for(uint256 i = 0; i < accounts.length; i++){
            isExcludedFromFees[accounts[i]] = state;
        }
    }

    function setBlacklist(address[] memory accounts, bool status) external onlyOwner{
        for(uint256 i = 0; i < accounts.length; i++){
            isBlacklisted[accounts[i]] = status;
        }
    }

    function rescueETH(uint256 weiAmount) external{
        payable(marketingWallet).sendValue(weiAmount);
    }
    
    function rescueERC20(address tokenAdd, uint256 amount) external{
        IERC20(tokenAdd).transfer(marketingWallet, amount);
    }

    // fallbacks
    receive() external payable {}

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"GTPepeGo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkIsExcludedFromFees","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":"delay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"status","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"status","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"lastTrade","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"setDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"setIsExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTx","type":"uint256"},{"internalType":"uint256","name":"_maxWallet","type":"uint256"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"setRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyTax","type":"uint256"},{"internalType":"uint256","name":"_sellTax","type":"uint256"},{"internalType":"uint256","name":"_transferTax","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"},{"internalType":"uint256","name":"transfer","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273d1d4afad33da1ac270daf86ccf590b32eae68a54600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506601c6bf52634000600c5567016345785d8a0000600d5567016345785d8a0000600e556040518060600160405280600a8152602001601e8152602001600081525060106000820151816000015560208201518160010155604082015181600201555050348015620000c957600080fd5b506040516200489c3803806200489c8339818101604052810190620000ef9190620009eb565b6040518060400160405280600e81526020017f4576616e67656c697374706570650000000000000000000000000000000000008152506040518060400160405280600481526020017f244556500000000000000000000000000000000000000000000000000000000081525081600390816200016c919062000c97565b5080600490816200017e919062000c97565b505050620001a1620001956200056b60201b60201c565b6200057360201b60201c565b620001bb3367016345785d8a00006200063960201b60201c565b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002909190620009eb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003409190620009eb565b6040518363ffffffff1660e01b81526004016200035f92919062000d8f565b6020604051808303816000875af11580156200037f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a59190620009eb565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200056430600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620007a660201b60201c565b5062001007565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620006ab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006a29062000e1d565b60405180910390fd5b620006bf600083836200097760201b60201c565b8060026000828254620006d3919062000e6e565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000786919062000eba565b60405180910390a3620007a2600083836200097c60201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000818576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200080f9062000f4d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200088a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008819062000fe5565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516200096a919062000eba565b60405180910390a3505050565b505050565b505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009b38262000986565b9050919050565b620009c581620009a6565b8114620009d157600080fd5b50565b600081519050620009e581620009ba565b92915050565b60006020828403121562000a045762000a0362000981565b5b600062000a1484828501620009d4565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a9f57607f821691505b60208210810362000ab55762000ab462000a57565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b1f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000ae0565b62000b2b868362000ae0565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b7862000b7262000b6c8462000b43565b62000b4d565b62000b43565b9050919050565b6000819050919050565b62000b948362000b57565b62000bac62000ba38262000b7f565b84845462000aed565b825550505050565b600090565b62000bc362000bb4565b62000bd081848462000b89565b505050565b5b8181101562000bf85762000bec60008262000bb9565b60018101905062000bd6565b5050565b601f82111562000c475762000c118162000abb565b62000c1c8462000ad0565b8101602085101562000c2c578190505b62000c4462000c3b8562000ad0565b83018262000bd5565b50505b505050565b600082821c905092915050565b600062000c6c6000198460080262000c4c565b1980831691505092915050565b600062000c87838362000c59565b9150826002028217905092915050565b62000ca28262000a1d565b67ffffffffffffffff81111562000cbe5762000cbd62000a28565b5b62000cca825462000a86565b62000cd782828562000bfc565b600060209050601f83116001811462000d0f576000841562000cfa578287015190505b62000d06858262000c79565b86555062000d76565b601f19841662000d1f8662000abb565b60005b8281101562000d495784890151825560018201915060208501945060208101905062000d22565b8683101562000d69578489015162000d65601f89168262000c59565b8355505b6001600288020188555050505b505050505050565b62000d8981620009a6565b82525050565b600060408201905062000da6600083018562000d7e565b62000db5602083018462000d7e565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000e05601f8362000dbc565b915062000e128262000dcd565b602082019050919050565b6000602082019050818103600083015262000e388162000df6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000e7b8262000b43565b915062000e888362000b43565b925082820190508082111562000ea35762000ea262000e3f565b5b92915050565b62000eb48162000b43565b82525050565b600060208201905062000ed1600083018462000ea9565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600062000f3560248362000dbc565b915062000f428262000ed7565b604082019050919050565b6000602082019050818103600083015262000f688162000f26565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600062000fcd60228362000dbc565b915062000fda8262000f6f565b604082019050919050565b60006020820190508181036000830152620010008162000fbe565b9050919050565b61388580620010176000396000f3fe60806040526004361061024a5760003560e01c806375f0a87411610139578063b5d7ab9a116100b6578063e177246e1161007a578063e177246e1461088b578063e9dae5ed146108b4578063f2fde38b146108dd578063f887ea4014610906578063f8b45b0514610931578063fe575a871461095c57610251565b8063b5d7ab9a14610796578063c26d7be0146107bf578063c4590d3f146107fc578063dd62ed3e14610825578063e01af92c1461086257610251565b8063a457c2d7116100fd578063a457c2d71461069f578063a8aa1b31146106dc578063a8f43a6014610707578063a9059cbb14610730578063adf186931461076d57610251565b806375f0a874146105cc5780638cd4426d146105f75780638da5cb5b1461062057806395d89b411461064b5780639e252f001461067657610251565b80634ada218b116101c757806370a082311161018b57806370a0823114610509578063715018a614610546578063728f8eea1461055d5780637437681e1461058a578063751039fc146105b557610251565b80634ada218b146104225780634fbee1931461044d5780635d098b381461048a5780636a42b8f8146104b35780636ddd1713146104de57610251565b806323b872dd1161020e57806323b872dd1461033d578063255f40b61461037a578063313ce567146103a357806339509351146103ce57806344a64aec1461040b57610251565b80630445b6671461025657806306fdde0314610281578063095ea7b3146102ac5780630e85d1e3146102e957806318160ddd1461031257610251565b3661025157005b600080fd5b34801561026257600080fd5b5061026b610999565b60405161027891906124c7565b60405180910390f35b34801561028d57600080fd5b5061029661099f565b6040516102a39190612572565b60405180910390f35b3480156102b857600080fd5b506102d360048036038101906102ce9190612632565b610a31565b6040516102e0919061268d565b60405180910390f35b3480156102f557600080fd5b50610310600480360381019061030b919061281c565b610a54565b005b34801561031e57600080fd5b50610327610af1565b60405161033491906124c7565b60405180910390f35b34801561034957600080fd5b50610364600480360381019061035f9190612878565b610afb565b604051610371919061268d565b60405180910390f35b34801561038657600080fd5b506103a1600480360381019061039c91906128cb565b610b2a565b005b3480156103af57600080fd5b506103b8610be3565b6040516103c59190612927565b60405180910390f35b3480156103da57600080fd5b506103f560048036038101906103f09190612632565b610bec565b604051610402919061268d565b60405180910390f35b34801561041757600080fd5b50610420610c23565b005b34801561042e57600080fd5b50610437610c6e565b604051610444919061268d565b60405180910390f35b34801561045957600080fd5b50610474600480360381019061046f9190612942565b610c81565b604051610481919061268d565b60405180910390f35b34801561049657600080fd5b506104b160048036038101906104ac9190612942565b610ca1565b005b3480156104bf57600080fd5b506104c8610ced565b6040516104d591906124c7565b60405180910390f35b3480156104ea57600080fd5b506104f3610cf3565b604051610500919061268d565b60405180910390f35b34801561051557600080fd5b50610530600480360381019061052b9190612942565b610d06565b60405161053d91906124c7565b60405180910390f35b34801561055257600080fd5b5061055b610d4e565b005b34801561056957600080fd5b50610572610d62565b6040516105819392919061296f565b60405180910390f35b34801561059657600080fd5b5061059f610d7a565b6040516105ac91906124c7565b60405180910390f35b3480156105c157600080fd5b506105ca610d80565b005b3480156105d857600080fd5b506105e1610db1565b6040516105ee91906129b5565b60405180910390f35b34801561060357600080fd5b5061061e60048036038101906106199190612632565b610dd7565b005b34801561062c57600080fd5b50610635610e7c565b60405161064291906129b5565b60405180910390f35b34801561065757600080fd5b50610660610ea6565b60405161066d9190612572565b60405180910390f35b34801561068257600080fd5b5061069d600480360381019061069891906129d0565b610f38565b005b3480156106ab57600080fd5b506106c660048036038101906106c19190612632565b610f86565b6040516106d3919061268d565b60405180910390f35b3480156106e857600080fd5b506106f1610ffd565b6040516106fe91906129b5565b60405180910390f35b34801561071357600080fd5b5061072e6004803603810190610729919061281c565b611023565b005b34801561073c57600080fd5b5061075760048036038101906107529190612632565b6110c0565b604051610764919061268d565b60405180910390f35b34801561077957600080fd5b50610794600480360381019061078f91906129fd565b6110e3565b005b3480156107a257600080fd5b506107bd60048036038101906107b891906129d0565b611146565b005b3480156107cb57600080fd5b506107e660048036038101906107e19190612942565b611167565b6040516107f391906124c7565b60405180910390f35b34801561080857600080fd5b50610823600480360381019061081e9190612a3d565b61117f565b005b34801561083157600080fd5b5061084c600480360381019061084791906128cb565b6111b7565b60405161085991906124c7565b60405180910390f35b34801561086e57600080fd5b5061088960048036038101906108849190612a7d565b61123e565b005b34801561089757600080fd5b506108b260048036038101906108ad91906129d0565b611263565b005b3480156108c057600080fd5b506108db60048036038101906108d69190612aaa565b611275565b005b3480156108e957600080fd5b5061090460048036038101906108ff9190612942565b61131e565b005b34801561091257600080fd5b5061091b6113a1565b6040516109289190612b5c565b60405180910390f35b34801561093d57600080fd5b506109466113c7565b60405161095391906124c7565b60405180910390f35b34801561096857600080fd5b50610983600480360381019061097e9190612942565b6113cd565b604051610990919061268d565b60405180910390f35b600c5481565b6060600380546109ae90612ba6565b80601f01602080910402602001604051908101604052809291908181526020018280546109da90612ba6565b8015610a275780601f106109fc57610100808354040283529160200191610a27565b820191906000526020600020905b815481529060010190602001808311610a0a57829003601f168201915b5050505050905090565b600080610a3c6113ed565b9050610a498185856113f5565b600191505092915050565b610a5c6115be565b60005b8251811015610aec578160076000858481518110610a8057610a7f612bd7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ae490612c35565b915050610a5f565b505050565b6000600254905090565b600080610b066113ed565b9050610b1385828561163c565b610b1e8585856116c8565b60019150509392505050565b610b326115be565b81600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610bdf30837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6113f5565b5050565b60006009905090565b600080610bf76113ed565b9050610c18818585610c0985896111b7565b610c139190612c7d565b6113f5565b600191505092915050565b610c2b6115be565b6001600b60166101000a81548160ff0219169083151502179055506001600b60156101000a81548160ff0219169083151502179055506045601060020181905550565b600b60169054906101000a900460ff1681565b60066020528060005260406000206000915054906101000a900460ff1681565b610ca96115be565b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b600b60159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d566115be565b610d606000611d8c565b565b60108060000154908060010154908060020154905083565b600e5481565b610d886115be565b610d90610af1565b600e81905550610d9e610af1565b600d819055506000601060020181905550565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610e34929190612cb1565b6020604051808303816000875af1158015610e53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e779190612cef565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610eb590612ba6565b80601f0160208091040260200160405190810160405280929190818152602001828054610ee190612ba6565b8015610f2e5780601f10610f0357610100808354040283529160200191610f2e565b820191906000526020600020905b815481529060010190602001808311610f1157829003601f168201915b5050505050905090565b610f8381600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611e5290919063ffffffff16565b50565b600080610f916113ed565b90506000610f9f82866111b7565b905083811015610fe4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdb90612d8e565b60405180910390fd5b610ff182868684036113f5565b60019250505092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61102b6115be565b60005b82518110156110bb57816006600085848151811061104f5761104e612bd7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806110b390612c35565b91505061102e565b505050565b6000806110cb6113ed565b90506110d88185856116c8565b600191505092915050565b6110eb6115be565b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61114e6115be565b633b9aca008161115e9190612dae565b600c8190555050565b60086020528060005260406000206000915090505481565b6111876115be565b633b9aca00826111979190612dae565b600e81905550633b9aca00816111ad9190612dae565b600d819055505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112466115be565b80600b60156101000a81548160ff02191690831515021790555050565b61126b6115be565b80600f8190555050565b61127d6115be565b6045831115801561128f575060458211155b801561129c575060458111155b6112db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d290612e3c565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506010600082015181600001556020820151816001015560408201518160020155905050505050565b6113266115be565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138c90612ece565b60405180910390fd5b61139e81611d8c565b50565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b60076020528060005260406000206000915054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145b90612f60565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ca90612ff2565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115b191906124c7565b60405180910390a3505050565b6115c66113ed565b73ffffffffffffffffffffffffffffffffffffffff166115e4610e7c565b73ffffffffffffffffffffffffffffffffffffffff161461163a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116319061305e565b60405180910390fd5b565b600061164884846111b7565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146116c257818110156116b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ab906130ca565b60405180910390fd5b6116c184848484036113f5565b5b50505050565b6000811161170b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117029061315c565b60405180910390fd5b600b60149054906101000a900460ff168061176f5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806117c35750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156117d8576117d3838383611f46565b611d87565b600b60169054906101000a900460ff16611827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181e906131c8565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118cb5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61190a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190190613234565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a335742600f54600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119ad9190612c7d565b11156119ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e5906132a0565b60405180910390fd5b42600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611bb457600d5481611a9584610d06565b611a9f9190612c7d565b1115611ae0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad79061330c565b60405180910390fd5b42600f54600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2e9190612c7d565b1115611b6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b66906132a0565b60405180910390fd5b42600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c2f57606460106001015483611c1e9190612dae565b611c28919061335b565b9050611cc9565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611ca857606460106000015483611c979190612dae565b611ca1919061335b565b9050611cc8565b606460106002015483611cbb9190612dae565b611cc5919061335b565b90505b5b600b60159054906101000a900460ff168015611d335750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611d4c5750600b60149054906101000a900460ff16155b15611d5a57611d596121bc565b5b611d7084848385611d6b919061338c565b611f46565b6000811115611d8557611d84843083611f46565b5b505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80471015611e95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8c9061340c565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051611ebb9061345d565b60006040518083038185875af1925050503d8060008114611ef8576040519150601f19603f3d011682016040523d82523d6000602084013e611efd565b606091505b5050905080611f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f38906134e4565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fac90613576565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201b90613608565b60405180910390fd5b61202f83838361228e565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156120b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ac9061369a565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121a391906124c7565b60405180910390a36121b6848484612293565b50505050565b600b60149054906101000a900460ff1661228c576001600b60146101000a81548160ff02191690831515021790555060006121f630610d06565b9050600c54811061226f576000479050612211600c54612298565b6000814761221f919061338c565b905061226c81600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611e5290919063ffffffff16565b50505b506000600b60146101000a81548160ff0219169083151502179055505b565b505050565b505050565b6000600267ffffffffffffffff8111156122b5576122b46126ad565b5b6040519080825280602002602001820160405280156122e35781602001602082028036833780820191505090505b50905030816000815181106122fb576122fa612bd7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c691906136cf565b816001815181106123da576123d9612bd7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124789594939291906137f5565b600060405180830381600087803b15801561249257600080fd5b505af11580156124a6573d6000803e3d6000fd5b505050505050565b6000819050919050565b6124c1816124ae565b82525050565b60006020820190506124dc60008301846124b8565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561251c578082015181840152602081019050612501565b60008484015250505050565b6000601f19601f8301169050919050565b6000612544826124e2565b61254e81856124ed565b935061255e8185602086016124fe565b61256781612528565b840191505092915050565b6000602082019050818103600083015261258c8184612539565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125d3826125a8565b9050919050565b6125e3816125c8565b81146125ee57600080fd5b50565b600081359050612600816125da565b92915050565b61260f816124ae565b811461261a57600080fd5b50565b60008135905061262c81612606565b92915050565b600080604083850312156126495761264861259e565b5b6000612657858286016125f1565b92505060206126688582860161261d565b9150509250929050565b60008115159050919050565b61268781612672565b82525050565b60006020820190506126a2600083018461267e565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6126e582612528565b810181811067ffffffffffffffff82111715612704576127036126ad565b5b80604052505050565b6000612717612594565b905061272382826126dc565b919050565b600067ffffffffffffffff821115612743576127426126ad565b5b602082029050602081019050919050565b600080fd5b600061276c61276784612728565b61270d565b9050808382526020820190506020840283018581111561278f5761278e612754565b5b835b818110156127b857806127a488826125f1565b845260208401935050602081019050612791565b5050509392505050565b600082601f8301126127d7576127d66126a8565b5b81356127e7848260208601612759565b91505092915050565b6127f981612672565b811461280457600080fd5b50565b600081359050612816816127f0565b92915050565b600080604083850312156128335761283261259e565b5b600083013567ffffffffffffffff811115612851576128506125a3565b5b61285d858286016127c2565b925050602061286e85828601612807565b9150509250929050565b6000806000606084860312156128915761289061259e565b5b600061289f868287016125f1565b93505060206128b0868287016125f1565b92505060406128c18682870161261d565b9150509250925092565b600080604083850312156128e2576128e161259e565b5b60006128f0858286016125f1565b9250506020612901858286016125f1565b9150509250929050565b600060ff82169050919050565b6129218161290b565b82525050565b600060208201905061293c6000830184612918565b92915050565b6000602082840312156129585761295761259e565b5b6000612966848285016125f1565b91505092915050565b600060608201905061298460008301866124b8565b61299160208301856124b8565b61299e60408301846124b8565b949350505050565b6129af816125c8565b82525050565b60006020820190506129ca60008301846129a6565b92915050565b6000602082840312156129e6576129e561259e565b5b60006129f48482850161261d565b91505092915050565b60008060408385031215612a1457612a1361259e565b5b6000612a22858286016125f1565b9250506020612a3385828601612807565b9150509250929050565b60008060408385031215612a5457612a5361259e565b5b6000612a628582860161261d565b9250506020612a738582860161261d565b9150509250929050565b600060208284031215612a9357612a9261259e565b5b6000612aa184828501612807565b91505092915050565b600080600060608486031215612ac357612ac261259e565b5b6000612ad18682870161261d565b9350506020612ae28682870161261d565b9250506040612af38682870161261d565b9150509250925092565b6000819050919050565b6000612b22612b1d612b18846125a8565b612afd565b6125a8565b9050919050565b6000612b3482612b07565b9050919050565b6000612b4682612b29565b9050919050565b612b5681612b3b565b82525050565b6000602082019050612b716000830184612b4d565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612bbe57607f821691505b602082108103612bd157612bd0612b77565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c40826124ae565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c7257612c71612c06565b5b600182019050919050565b6000612c88826124ae565b9150612c93836124ae565b9250828201905080821115612cab57612caa612c06565b5b92915050565b6000604082019050612cc660008301856129a6565b612cd360208301846124b8565b9392505050565b600081519050612ce9816127f0565b92915050565b600060208284031215612d0557612d0461259e565b5b6000612d1384828501612cda565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612d786025836124ed565b9150612d8382612d1c565b604082019050919050565b60006020820190508181036000830152612da781612d6b565b9050919050565b6000612db9826124ae565b9150612dc4836124ae565b9250828202612dd2816124ae565b91508282048414831517612de957612de8612c06565b5b5092915050565b7f546178657320746f6f2068696768000000000000000000000000000000000000600082015250565b6000612e26600e836124ed565b9150612e3182612df0565b602082019050919050565b60006020820190508181036000830152612e5581612e19565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612eb86026836124ed565b9150612ec382612e5c565b604082019050919050565b60006020820190508181036000830152612ee781612eab565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612f4a6024836124ed565b9150612f5582612eee565b604082019050919050565b60006020820190508181036000830152612f7981612f3d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612fdc6022836124ed565b9150612fe782612f80565b604082019050919050565b6000602082019050818103600083015261300b81612fcf565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006130486020836124ed565b915061305382613012565b602082019050919050565b600060208201905081810360008301526130778161303b565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006130b4601d836124ed565b91506130bf8261307e565b602082019050919050565b600060208201905081810360008301526130e3816130a7565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006131466029836124ed565b9150613151826130ea565b604082019050919050565b6000602082019050818103600083015261317581613139565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b60006131b26013836124ed565b91506131bd8261317c565b602082019050919050565b600060208201905081810360008301526131e1816131a5565b9050919050565b7f426c61636b6c6973746564206164647265737300000000000000000000000000600082015250565b600061321e6013836124ed565b9150613229826131e8565b602082019050919050565b6000602082019050818103600083015261324d81613211565b9050919050565b7f5741495420504c45415345000000000000000000000000000000000000000000600082015250565b600061328a600b836124ed565b915061329582613254565b602082019050919050565b600060208201905081810360008301526132b98161327d565b9050919050565b7f57616c6c6574206c696d69742065786365656465640000000000000000000000600082015250565b60006132f66015836124ed565b9150613301826132c0565b602082019050919050565b60006020820190508181036000830152613325816132e9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613366826124ae565b9150613371836124ae565b9250826133815761338061332c565b5b828204905092915050565b6000613397826124ae565b91506133a2836124ae565b92508282039050818111156133ba576133b9612c06565b5b92915050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006133f6601d836124ed565b9150613401826133c0565b602082019050919050565b60006020820190508181036000830152613425816133e9565b9050919050565b600081905092915050565b50565b600061344760008361342c565b915061345282613437565b600082019050919050565b60006134688261343a565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b60006134ce603a836124ed565b91506134d982613472565b604082019050919050565b600060208201905081810360008301526134fd816134c1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006135606025836124ed565b915061356b82613504565b604082019050919050565b6000602082019050818103600083015261358f81613553565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006135f26023836124ed565b91506135fd82613596565b604082019050919050565b60006020820190508181036000830152613621816135e5565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006136846026836124ed565b915061368f82613628565b604082019050919050565b600060208201905081810360008301526136b381613677565b9050919050565b6000815190506136c9816125da565b92915050565b6000602082840312156136e5576136e461259e565b5b60006136f3848285016136ba565b91505092915050565b6000819050919050565b600061372161371c613717846136fc565b612afd565b6124ae565b9050919050565b61373181613706565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61376c816125c8565b82525050565b600061377e8383613763565b60208301905092915050565b6000602082019050919050565b60006137a282613737565b6137ac8185613742565b93506137b783613753565b8060005b838110156137e85781516137cf8882613772565b97506137da8361378a565b9250506001810190506137bb565b5085935050505092915050565b600060a08201905061380a60008301886124b8565b6138176020830187613728565b81810360408301526138298186613797565b905061383860608301856129a6565b61384560808301846124b8565b969550505050505056fea264697066735822122094ed224c2f6acef335b327afa44da24ee6614757998e0272db3b4f8c1b9aad2964736f6c634300081200330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x60806040526004361061024a5760003560e01c806375f0a87411610139578063b5d7ab9a116100b6578063e177246e1161007a578063e177246e1461088b578063e9dae5ed146108b4578063f2fde38b146108dd578063f887ea4014610906578063f8b45b0514610931578063fe575a871461095c57610251565b8063b5d7ab9a14610796578063c26d7be0146107bf578063c4590d3f146107fc578063dd62ed3e14610825578063e01af92c1461086257610251565b8063a457c2d7116100fd578063a457c2d71461069f578063a8aa1b31146106dc578063a8f43a6014610707578063a9059cbb14610730578063adf186931461076d57610251565b806375f0a874146105cc5780638cd4426d146105f75780638da5cb5b1461062057806395d89b411461064b5780639e252f001461067657610251565b80634ada218b116101c757806370a082311161018b57806370a0823114610509578063715018a614610546578063728f8eea1461055d5780637437681e1461058a578063751039fc146105b557610251565b80634ada218b146104225780634fbee1931461044d5780635d098b381461048a5780636a42b8f8146104b35780636ddd1713146104de57610251565b806323b872dd1161020e57806323b872dd1461033d578063255f40b61461037a578063313ce567146103a357806339509351146103ce57806344a64aec1461040b57610251565b80630445b6671461025657806306fdde0314610281578063095ea7b3146102ac5780630e85d1e3146102e957806318160ddd1461031257610251565b3661025157005b600080fd5b34801561026257600080fd5b5061026b610999565b60405161027891906124c7565b60405180910390f35b34801561028d57600080fd5b5061029661099f565b6040516102a39190612572565b60405180910390f35b3480156102b857600080fd5b506102d360048036038101906102ce9190612632565b610a31565b6040516102e0919061268d565b60405180910390f35b3480156102f557600080fd5b50610310600480360381019061030b919061281c565b610a54565b005b34801561031e57600080fd5b50610327610af1565b60405161033491906124c7565b60405180910390f35b34801561034957600080fd5b50610364600480360381019061035f9190612878565b610afb565b604051610371919061268d565b60405180910390f35b34801561038657600080fd5b506103a1600480360381019061039c91906128cb565b610b2a565b005b3480156103af57600080fd5b506103b8610be3565b6040516103c59190612927565b60405180910390f35b3480156103da57600080fd5b506103f560048036038101906103f09190612632565b610bec565b604051610402919061268d565b60405180910390f35b34801561041757600080fd5b50610420610c23565b005b34801561042e57600080fd5b50610437610c6e565b604051610444919061268d565b60405180910390f35b34801561045957600080fd5b50610474600480360381019061046f9190612942565b610c81565b604051610481919061268d565b60405180910390f35b34801561049657600080fd5b506104b160048036038101906104ac9190612942565b610ca1565b005b3480156104bf57600080fd5b506104c8610ced565b6040516104d591906124c7565b60405180910390f35b3480156104ea57600080fd5b506104f3610cf3565b604051610500919061268d565b60405180910390f35b34801561051557600080fd5b50610530600480360381019061052b9190612942565b610d06565b60405161053d91906124c7565b60405180910390f35b34801561055257600080fd5b5061055b610d4e565b005b34801561056957600080fd5b50610572610d62565b6040516105819392919061296f565b60405180910390f35b34801561059657600080fd5b5061059f610d7a565b6040516105ac91906124c7565b60405180910390f35b3480156105c157600080fd5b506105ca610d80565b005b3480156105d857600080fd5b506105e1610db1565b6040516105ee91906129b5565b60405180910390f35b34801561060357600080fd5b5061061e60048036038101906106199190612632565b610dd7565b005b34801561062c57600080fd5b50610635610e7c565b60405161064291906129b5565b60405180910390f35b34801561065757600080fd5b50610660610ea6565b60405161066d9190612572565b60405180910390f35b34801561068257600080fd5b5061069d600480360381019061069891906129d0565b610f38565b005b3480156106ab57600080fd5b506106c660048036038101906106c19190612632565b610f86565b6040516106d3919061268d565b60405180910390f35b3480156106e857600080fd5b506106f1610ffd565b6040516106fe91906129b5565b60405180910390f35b34801561071357600080fd5b5061072e6004803603810190610729919061281c565b611023565b005b34801561073c57600080fd5b5061075760048036038101906107529190612632565b6110c0565b604051610764919061268d565b60405180910390f35b34801561077957600080fd5b50610794600480360381019061078f91906129fd565b6110e3565b005b3480156107a257600080fd5b506107bd60048036038101906107b891906129d0565b611146565b005b3480156107cb57600080fd5b506107e660048036038101906107e19190612942565b611167565b6040516107f391906124c7565b60405180910390f35b34801561080857600080fd5b50610823600480360381019061081e9190612a3d565b61117f565b005b34801561083157600080fd5b5061084c600480360381019061084791906128cb565b6111b7565b60405161085991906124c7565b60405180910390f35b34801561086e57600080fd5b5061088960048036038101906108849190612a7d565b61123e565b005b34801561089757600080fd5b506108b260048036038101906108ad91906129d0565b611263565b005b3480156108c057600080fd5b506108db60048036038101906108d69190612aaa565b611275565b005b3480156108e957600080fd5b5061090460048036038101906108ff9190612942565b61131e565b005b34801561091257600080fd5b5061091b6113a1565b6040516109289190612b5c565b60405180910390f35b34801561093d57600080fd5b506109466113c7565b60405161095391906124c7565b60405180910390f35b34801561096857600080fd5b50610983600480360381019061097e9190612942565b6113cd565b604051610990919061268d565b60405180910390f35b600c5481565b6060600380546109ae90612ba6565b80601f01602080910402602001604051908101604052809291908181526020018280546109da90612ba6565b8015610a275780601f106109fc57610100808354040283529160200191610a27565b820191906000526020600020905b815481529060010190602001808311610a0a57829003601f168201915b5050505050905090565b600080610a3c6113ed565b9050610a498185856113f5565b600191505092915050565b610a5c6115be565b60005b8251811015610aec578160076000858481518110610a8057610a7f612bd7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ae490612c35565b915050610a5f565b505050565b6000600254905090565b600080610b066113ed565b9050610b1385828561163c565b610b1e8585856116c8565b60019150509392505050565b610b326115be565b81600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610bdf30837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6113f5565b5050565b60006009905090565b600080610bf76113ed565b9050610c18818585610c0985896111b7565b610c139190612c7d565b6113f5565b600191505092915050565b610c2b6115be565b6001600b60166101000a81548160ff0219169083151502179055506001600b60156101000a81548160ff0219169083151502179055506045601060020181905550565b600b60169054906101000a900460ff1681565b60066020528060005260406000206000915054906101000a900460ff1681565b610ca96115be565b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b600b60159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d566115be565b610d606000611d8c565b565b60108060000154908060010154908060020154905083565b600e5481565b610d886115be565b610d90610af1565b600e81905550610d9e610af1565b600d819055506000601060020181905550565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610e34929190612cb1565b6020604051808303816000875af1158015610e53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e779190612cef565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610eb590612ba6565b80601f0160208091040260200160405190810160405280929190818152602001828054610ee190612ba6565b8015610f2e5780601f10610f0357610100808354040283529160200191610f2e565b820191906000526020600020905b815481529060010190602001808311610f1157829003601f168201915b5050505050905090565b610f8381600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611e5290919063ffffffff16565b50565b600080610f916113ed565b90506000610f9f82866111b7565b905083811015610fe4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdb90612d8e565b60405180910390fd5b610ff182868684036113f5565b60019250505092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61102b6115be565b60005b82518110156110bb57816006600085848151811061104f5761104e612bd7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806110b390612c35565b91505061102e565b505050565b6000806110cb6113ed565b90506110d88185856116c8565b600191505092915050565b6110eb6115be565b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61114e6115be565b633b9aca008161115e9190612dae565b600c8190555050565b60086020528060005260406000206000915090505481565b6111876115be565b633b9aca00826111979190612dae565b600e81905550633b9aca00816111ad9190612dae565b600d819055505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112466115be565b80600b60156101000a81548160ff02191690831515021790555050565b61126b6115be565b80600f8190555050565b61127d6115be565b6045831115801561128f575060458211155b801561129c575060458111155b6112db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d290612e3c565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506010600082015181600001556020820151816001015560408201518160020155905050505050565b6113266115be565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138c90612ece565b60405180910390fd5b61139e81611d8c565b50565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b60076020528060005260406000206000915054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145b90612f60565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ca90612ff2565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115b191906124c7565b60405180910390a3505050565b6115c66113ed565b73ffffffffffffffffffffffffffffffffffffffff166115e4610e7c565b73ffffffffffffffffffffffffffffffffffffffff161461163a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116319061305e565b60405180910390fd5b565b600061164884846111b7565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146116c257818110156116b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ab906130ca565b60405180910390fd5b6116c184848484036113f5565b5b50505050565b6000811161170b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117029061315c565b60405180910390fd5b600b60149054906101000a900460ff168061176f5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806117c35750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156117d8576117d3838383611f46565b611d87565b600b60169054906101000a900460ff16611827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181e906131c8565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118cb5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61190a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190190613234565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a335742600f54600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119ad9190612c7d565b11156119ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e5906132a0565b60405180910390fd5b42600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611bb457600d5481611a9584610d06565b611a9f9190612c7d565b1115611ae0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad79061330c565b60405180910390fd5b42600f54600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2e9190612c7d565b1115611b6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b66906132a0565b60405180910390fd5b42600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c2f57606460106001015483611c1e9190612dae565b611c28919061335b565b9050611cc9565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611ca857606460106000015483611c979190612dae565b611ca1919061335b565b9050611cc8565b606460106002015483611cbb9190612dae565b611cc5919061335b565b90505b5b600b60159054906101000a900460ff168015611d335750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611d4c5750600b60149054906101000a900460ff16155b15611d5a57611d596121bc565b5b611d7084848385611d6b919061338c565b611f46565b6000811115611d8557611d84843083611f46565b5b505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80471015611e95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8c9061340c565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051611ebb9061345d565b60006040518083038185875af1925050503d8060008114611ef8576040519150601f19603f3d011682016040523d82523d6000602084013e611efd565b606091505b5050905080611f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f38906134e4565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fac90613576565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201b90613608565b60405180910390fd5b61202f83838361228e565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156120b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ac9061369a565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121a391906124c7565b60405180910390a36121b6848484612293565b50505050565b600b60149054906101000a900460ff1661228c576001600b60146101000a81548160ff02191690831515021790555060006121f630610d06565b9050600c54811061226f576000479050612211600c54612298565b6000814761221f919061338c565b905061226c81600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611e5290919063ffffffff16565b50505b506000600b60146101000a81548160ff0219169083151502179055505b565b505050565b505050565b6000600267ffffffffffffffff8111156122b5576122b46126ad565b5b6040519080825280602002602001820160405280156122e35781602001602082028036833780820191505090505b50905030816000815181106122fb576122fa612bd7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c691906136cf565b816001815181106123da576123d9612bd7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124789594939291906137f5565b600060405180830381600087803b15801561249257600080fd5b505af11580156124a6573d6000803e3d6000fd5b505050505050565b6000819050919050565b6124c1816124ae565b82525050565b60006020820190506124dc60008301846124b8565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561251c578082015181840152602081019050612501565b60008484015250505050565b6000601f19601f8301169050919050565b6000612544826124e2565b61254e81856124ed565b935061255e8185602086016124fe565b61256781612528565b840191505092915050565b6000602082019050818103600083015261258c8184612539565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125d3826125a8565b9050919050565b6125e3816125c8565b81146125ee57600080fd5b50565b600081359050612600816125da565b92915050565b61260f816124ae565b811461261a57600080fd5b50565b60008135905061262c81612606565b92915050565b600080604083850312156126495761264861259e565b5b6000612657858286016125f1565b92505060206126688582860161261d565b9150509250929050565b60008115159050919050565b61268781612672565b82525050565b60006020820190506126a2600083018461267e565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6126e582612528565b810181811067ffffffffffffffff82111715612704576127036126ad565b5b80604052505050565b6000612717612594565b905061272382826126dc565b919050565b600067ffffffffffffffff821115612743576127426126ad565b5b602082029050602081019050919050565b600080fd5b600061276c61276784612728565b61270d565b9050808382526020820190506020840283018581111561278f5761278e612754565b5b835b818110156127b857806127a488826125f1565b845260208401935050602081019050612791565b5050509392505050565b600082601f8301126127d7576127d66126a8565b5b81356127e7848260208601612759565b91505092915050565b6127f981612672565b811461280457600080fd5b50565b600081359050612816816127f0565b92915050565b600080604083850312156128335761283261259e565b5b600083013567ffffffffffffffff811115612851576128506125a3565b5b61285d858286016127c2565b925050602061286e85828601612807565b9150509250929050565b6000806000606084860312156128915761289061259e565b5b600061289f868287016125f1565b93505060206128b0868287016125f1565b92505060406128c18682870161261d565b9150509250925092565b600080604083850312156128e2576128e161259e565b5b60006128f0858286016125f1565b9250506020612901858286016125f1565b9150509250929050565b600060ff82169050919050565b6129218161290b565b82525050565b600060208201905061293c6000830184612918565b92915050565b6000602082840312156129585761295761259e565b5b6000612966848285016125f1565b91505092915050565b600060608201905061298460008301866124b8565b61299160208301856124b8565b61299e60408301846124b8565b949350505050565b6129af816125c8565b82525050565b60006020820190506129ca60008301846129a6565b92915050565b6000602082840312156129e6576129e561259e565b5b60006129f48482850161261d565b91505092915050565b60008060408385031215612a1457612a1361259e565b5b6000612a22858286016125f1565b9250506020612a3385828601612807565b9150509250929050565b60008060408385031215612a5457612a5361259e565b5b6000612a628582860161261d565b9250506020612a738582860161261d565b9150509250929050565b600060208284031215612a9357612a9261259e565b5b6000612aa184828501612807565b91505092915050565b600080600060608486031215612ac357612ac261259e565b5b6000612ad18682870161261d565b9350506020612ae28682870161261d565b9250506040612af38682870161261d565b9150509250925092565b6000819050919050565b6000612b22612b1d612b18846125a8565b612afd565b6125a8565b9050919050565b6000612b3482612b07565b9050919050565b6000612b4682612b29565b9050919050565b612b5681612b3b565b82525050565b6000602082019050612b716000830184612b4d565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612bbe57607f821691505b602082108103612bd157612bd0612b77565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c40826124ae565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c7257612c71612c06565b5b600182019050919050565b6000612c88826124ae565b9150612c93836124ae565b9250828201905080821115612cab57612caa612c06565b5b92915050565b6000604082019050612cc660008301856129a6565b612cd360208301846124b8565b9392505050565b600081519050612ce9816127f0565b92915050565b600060208284031215612d0557612d0461259e565b5b6000612d1384828501612cda565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612d786025836124ed565b9150612d8382612d1c565b604082019050919050565b60006020820190508181036000830152612da781612d6b565b9050919050565b6000612db9826124ae565b9150612dc4836124ae565b9250828202612dd2816124ae565b91508282048414831517612de957612de8612c06565b5b5092915050565b7f546178657320746f6f2068696768000000000000000000000000000000000000600082015250565b6000612e26600e836124ed565b9150612e3182612df0565b602082019050919050565b60006020820190508181036000830152612e5581612e19565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612eb86026836124ed565b9150612ec382612e5c565b604082019050919050565b60006020820190508181036000830152612ee781612eab565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612f4a6024836124ed565b9150612f5582612eee565b604082019050919050565b60006020820190508181036000830152612f7981612f3d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612fdc6022836124ed565b9150612fe782612f80565b604082019050919050565b6000602082019050818103600083015261300b81612fcf565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006130486020836124ed565b915061305382613012565b602082019050919050565b600060208201905081810360008301526130778161303b565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006130b4601d836124ed565b91506130bf8261307e565b602082019050919050565b600060208201905081810360008301526130e3816130a7565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006131466029836124ed565b9150613151826130ea565b604082019050919050565b6000602082019050818103600083015261317581613139565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b60006131b26013836124ed565b91506131bd8261317c565b602082019050919050565b600060208201905081810360008301526131e1816131a5565b9050919050565b7f426c61636b6c6973746564206164647265737300000000000000000000000000600082015250565b600061321e6013836124ed565b9150613229826131e8565b602082019050919050565b6000602082019050818103600083015261324d81613211565b9050919050565b7f5741495420504c45415345000000000000000000000000000000000000000000600082015250565b600061328a600b836124ed565b915061329582613254565b602082019050919050565b600060208201905081810360008301526132b98161327d565b9050919050565b7f57616c6c6574206c696d69742065786365656465640000000000000000000000600082015250565b60006132f66015836124ed565b9150613301826132c0565b602082019050919050565b60006020820190508181036000830152613325816132e9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613366826124ae565b9150613371836124ae565b9250826133815761338061332c565b5b828204905092915050565b6000613397826124ae565b91506133a2836124ae565b92508282039050818111156133ba576133b9612c06565b5b92915050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006133f6601d836124ed565b9150613401826133c0565b602082019050919050565b60006020820190508181036000830152613425816133e9565b9050919050565b600081905092915050565b50565b600061344760008361342c565b915061345282613437565b600082019050919050565b60006134688261343a565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b60006134ce603a836124ed565b91506134d982613472565b604082019050919050565b600060208201905081810360008301526134fd816134c1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006135606025836124ed565b915061356b82613504565b604082019050919050565b6000602082019050818103600083015261358f81613553565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006135f26023836124ed565b91506135fd82613596565b604082019050919050565b60006020820190508181036000830152613621816135e5565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006136846026836124ed565b915061368f82613628565b604082019050919050565b600060208201905081810360008301526136b381613677565b9050919050565b6000815190506136c9816125da565b92915050565b6000602082840312156136e5576136e461259e565b5b60006136f3848285016136ba565b91505092915050565b6000819050919050565b600061372161371c613717846136fc565b612afd565b6124ae565b9050919050565b61373181613706565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61376c816125c8565b82525050565b600061377e8383613763565b60208301905092915050565b6000602082019050919050565b60006137a282613737565b6137ac8185613742565b93506137b783613753565b8060005b838110156137e85781516137cf8882613772565b97506137da8361378a565b9250506001810190506137bb565b5085935050505092915050565b600060a08201905061380a60008301886124b8565b6138176020830187613728565b81810360408301526138298186613797565b905061383860608301856129a6565b61384560808301846124b8565b969550505050505056fea264697066735822122094ed224c2f6acef335b327afa44da24ee6614757998e0272db3b4f8c1b9aad2964736f6c63430008120033

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

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

-----Decoded View---------------
Arg [0] : _router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d


Deployed Bytecode Sourcemap

8487:6102:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9028:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2701:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3633:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14063:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3022:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3842:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12779:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9986:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4145:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13015:137;;;;;;;;;;;;;:::i;:::-;;8989:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8585:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13572:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9178:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8959:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3138:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;857:103;;;;;;;;;;;;;:::i;:::-;;9312:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;9131:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13161:147;;;;;;;;;;;;;:::i;:::-;;8847:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14397:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;622:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2809:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14275:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4391:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8821:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13838:217;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3273:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13691:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12393:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8720:60;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13405:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3474:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12290:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13316:81;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12515:252;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;968:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8793:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9080:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8655:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9028:45;;;;:::o;2701:100::-;2755:13;2788:5;2781:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2701:100;:::o;3633:201::-;3716:4;3733:13;3749:12;:10;:12::i;:::-;3733:28;;3772:32;3781:5;3788:7;3797:6;3772:8;:32::i;:::-;3822:4;3815:11;;;3633:201;;;;:::o;14063:204::-;581:13;:11;:13::i;:::-;14158:9:::1;14154:106;14177:8;:15;14173:1;:19;14154:106;;;14242:6;14213:13;:26;14227:8;14236:1;14227:11;;;;;;;;:::i;:::-;;;;;;;;14213:26;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;14194:3;;;;;:::i;:::-;;;;14154:106;;;;14063:204:::0;;:::o;3022:108::-;3083:7;3110:12;;3103:19;;3022:108;:::o;3842:295::-;3973:4;3990:15;4008:12;:10;:12::i;:::-;3990:30;;4031:38;4047:4;4053:7;4062:6;4031:15;:38::i;:::-;4080:27;4090:4;4096:2;4100:6;4080:9;:27::i;:::-;4125:4;4118:11;;;3842:295;;;;;:::o;12779:224::-;581:13;:11;:13::i;:::-;12887:9:::1;12870:6;;:27;;;;;;;;;;;;;;;;;;12915:7;12908:4;;:14;;;;;;;;;;;;;;;;;;12933:62;12950:4;12965:9;12977:17;12933:8;:62::i;:::-;12779:224:::0;;:::o;9986:92::-;10044:5;10069:1;10062:8;;9986:92;:::o;4145:238::-;4233:4;4250:13;4266:12;:10;:12::i;:::-;4250:28;;4289:64;4298:5;4305:7;4342:10;4314:25;4324:5;4331:7;4314:9;:25::i;:::-;:38;;;;:::i;:::-;4289:8;:64::i;:::-;4371:4;4364:11;;;4145:238;;;;:::o;13015:137::-;581:13;:11;:13::i;:::-;13081:4:::1;13064:14;;:21;;;;;;;;;;;;;;;;;;13110:4;13096:11;;:18;;;;;;;;;;;;;;;;;;13142:2;13125:5;:14;;:19;;;;13015:137::o:0;8989:26::-;;;;;;;;;;;;;:::o;8585:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;13572:111::-;581:13;:11;:13::i;:::-;13666:9:::1;13648:15;;:27;;;;;;;;;;;;;;;;;;13572:111:::0;:::o;9178:20::-;;;;:::o;8959:23::-;;;;;;;;;;;;;:::o;3138:127::-;3212:7;3239:9;:18;3249:7;3239:18;;;;;;;;;;;;;;;;3232:25;;3138:127;;;:::o;857:103::-;581:13;:11;:13::i;:::-;922:30:::1;949:1;922:18;:30::i;:::-;857:103::o:0;9312:35::-;;;;;;;;;;;;;;;;;;;:::o;9131:40::-;;;;:::o;13161:147::-;581:13;:11;:13::i;:::-;13222::::1;:11;:13::i;:::-;13214:5;:21;;;;13258:13;:11;:13::i;:::-;13246:9;:25;;;;13299:1;13282:5;:14;;:18;;;;13161:147::o:0;8847:75::-;;;;;;;;;;;;;:::o;14397:132::-;14478:8;14471:25;;;14497:15;;;;;;;;;;;14514:6;14471:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14397:132;;:::o;622:87::-;668:7;695:6;;;;;;;;;;;688:13;;622:87;:::o;2809:104::-;2865:13;2898:7;2891:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2809:104;:::o;14275:110::-;14332:45;14367:9;14340:15;;;;;;;;;;;14332:34;;;;:45;;;;:::i;:::-;14275:110;:::o;4391:436::-;4484:4;4501:13;4517:12;:10;:12::i;:::-;4501:28;;4540:24;4567:25;4577:5;4584:7;4567:9;:25::i;:::-;4540:52;;4631:15;4611:16;:35;;4603:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4724:60;4733:5;4740:7;4768:15;4749:16;:34;4724:8;:60::i;:::-;4815:4;4808:11;;;;4391:436;;;;:::o;8821:19::-;;;;;;;;;;;;;:::o;13838:217::-;581:13;:11;:13::i;:::-;13942:9:::1;13938:110;13961:8;:15;13957:1;:19;13938:110;;;14031:5;13997:18;:31;14016:8;14025:1;14016:11;;;;;;;;:::i;:::-;;;;;;;;13997:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;13978:3;;;;;:::i;:::-;;;;13938:110;;;;13838:217:::0;;:::o;3273:193::-;3352:4;3369:13;3385:12;:10;:12::i;:::-;3369:28;;3408;3418:5;3425:2;3429:6;3408:9;:28::i;:::-;3454:4;3447:11;;;3273:193;;;;:::o;13691:135::-;581:13;:11;:13::i;:::-;13813:5:::1;13782:18;:28;13801:8;13782:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;13691:135:::0;;:::o;12393:110::-;581:13;:11;:13::i;:::-;12490:5:::1;12481:6;:14;;;;:::i;:::-;12465:13;:30;;;;12393:110:::0;:::o;8720:60::-;;;;;;;;;;;;;;;;;:::o;13405:155::-;581:13;:11;:13::i;:::-;13506:5:::1;13497:6;:14;;;;:::i;:::-;13489:5;:22;;;;13547:5;13534:10;:18;;;;:::i;:::-;13522:9;:30;;;;13405:155:::0;;:::o;3474:151::-;3563:7;3590:11;:18;3602:5;3590:18;;;;;;;;;;;;;;;:27;3609:7;3590:27;;;;;;;;;;;;;;;;3583:34;;3474:151;;;;:::o;12290:95::-;581:13;:11;:13::i;:::-;12371:6:::1;12357:11;;:20;;;;;;;;;;;;;;;;;;12290:95:::0;:::o;13316:81::-;581:13;:11;:13::i;:::-;13385:4:::1;13377:5;:12;;;;13316:81:::0;:::o;12515:252::-;581:13;:11;:13::i;:::-;12639:2:::1;12628:7;:13;;:31;;;;;12657:2;12645:8;:14;;12628:31;:53;;;;;12679:2;12663:12;:18;;12628:53;12620:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;12719:39;;;;;;;;12726:7;12719:39;;;;12735:8;12719:39;;;;12745:12;12719:39;;::::0;12711:5:::1;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;12515:252:::0;;;:::o;968:201::-;581:13;:11;:13::i;:::-;1077:1:::1;1057:22;;:8;:22;;::::0;1049:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1133:28;1152:8;1133:18;:28::i;:::-;968:201:::0;:::o;8793:21::-;;;;;;;;;;;;;:::o;9080:44::-;;;;:::o;8655:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;95:98::-;148:7;175:10;168:17;;95:98;:::o;6564:380::-;6717:1;6700:19;;:5;:19;;;6692:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6798:1;6779:21;;:7;:21;;;6771:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6882:6;6852:11;:18;6864:5;6852:18;;;;;;;;;;;;;;;:27;6871:7;6852:27;;;;;;;;;;;;;;;:36;;;;6920:7;6904:32;;6913:5;6904:32;;;6929:6;6904:32;;;;;;:::i;:::-;;;;;;;;6564:380;;;:::o;717:132::-;792:12;:10;:12::i;:::-;781:23;;:7;:5;:7::i;:::-;:23;;;773:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;717:132::o;6952:453::-;7087:24;7114:25;7124:5;7131:7;7114:9;:25::i;:::-;7087:52;;7174:17;7154:16;:37;7150:248;;7236:6;7216:16;:26;;7208:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7320:51;7329:5;7336:7;7364:6;7345:16;:25;7320:8;:51::i;:::-;7150:248;7076:329;6952:453;;;:::o;10086:1465::-;10202:1;10193:6;:10;10185:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10266:8;;;;;;;;;;;:38;;;;10278:18;:26;10297:6;10278:26;;;;;;;;;;;;;;;;;;;;;;;;;10266:38;:71;;;;10308:18;:29;10327:9;10308:29;;;;;;;;;;;;;;;;;;;;;;;;;10266:71;10262:837;;;10354:42;10370:6;10378:9;10389:6;10354:15;:42::i;:::-;10411:7;;10262:837;10468:14;;;;;;;;;;;10460:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;10530:13;:21;10544:6;10530:21;;;;;;;;;;;;;;;;;;;;;;;;;10529:22;:51;;;;;10556:13;:24;10570:9;10556:24;;;;;;;;;;;;;;;;;;;;;;;;;10555:25;10529:51;10521:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;10632:4;;;;;;;;;;;10622:14;;:6;:14;;;10619:176;;10694:15;10685:5;;10665:9;:17;10675:6;10665:17;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;:44;;10657:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10764:15;10744:9;:17;10754:6;10744:17;;;;;;;;;;;;;;;:35;;;;10619:176;10825:4;;;;;;;;;;;10812:17;;:9;:17;;;10809:279;;10890:9;;10880:6;10857:20;10867:9;10857;:20::i;:::-;:29;;;;:::i;:::-;:42;;10849:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;10984:15;10975:5;;10952:9;:20;10962:9;10952:20;;;;;;;;;;;;;;;;:28;;;;:::i;:::-;:47;;10944:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11057:15;11034:9;:20;11044:9;11034:20;;;;;;;;;;;;;;;:38;;;;10809:279;11119:12;11160:4;;;;;;;;;;;11147:17;;:9;:17;;;11144:172;;11195:3;11182:5;:10;;;11173:6;:19;;;;:::i;:::-;:25;;;;:::i;:::-;11166:32;;11144:172;;;11227:4;;;;;;;;;;;11217:14;;:6;:14;;;11214:102;;11261:3;11249:5;:9;;;11240:6;:18;;;;:::i;:::-;:24;;;;:::i;:::-;11233:31;;11214:102;;;11313:3;11296:5;:14;;;11287:6;:23;;;;:::i;:::-;:29;;;;:::i;:::-;11280:36;;11214:102;11144:172;11334:11;;;;;;;;;;;:29;;;;;11359:4;;;;;;;;;;;11349:14;;:6;:14;;;;11334:29;:42;;;;;11368:8;;;;;;;;;;;11367:9;11334:42;11330:58;;;11378:10;:8;:10::i;:::-;11330:58;11401:49;11417:6;11425:9;11445:4;11436:6;:13;;;;:::i;:::-;11401:15;:49::i;:::-;11471:1;11464:4;:8;11461:83;;;11488:44;11504:6;11520:4;11527;11488:15;:44::i;:::-;11461:83;10174:1377;10086:1465;;;;:::o;1177:191::-;1251:16;1270:6;;;;;;;;;;;1251:25;;1296:8;1287:6;;:17;;;;;;;;;;;;;;;;;;1351:8;1320:40;;1341:8;1320:40;;;;;;;;;;;;1240:128;1177:191;:::o;8163:317::-;8278:6;8253:21;:31;;8245:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8332:12;8350:9;:14;;8372:6;8350:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8331:52;;;8402:7;8394:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;8234:246;8163:317;;:::o;4835:675::-;4982:1;4966:18;;:4;:18;;;4958:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5059:1;5045:16;;:2;:16;;;5037:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;5114:38;5135:4;5141:2;5145:6;5114:20;:38::i;:::-;5165:19;5187:9;:15;5197:4;5187:15;;;;;;;;;;;;;;;;5165:37;;5236:6;5221:11;:21;;5213:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;5353:6;5339:11;:20;5321:9;:15;5331:4;5321:15;;;;;;;;;;;;;;;:38;;;;5391:6;5374:9;:13;5384:2;5374:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;5441:2;5426:26;;5435:4;5426:26;;;5445:6;5426:26;;;;;;:::i;:::-;;;;;;;;5465:37;5485:4;5491:2;5495:6;5465:19;:37::i;:::-;4947:563;4835:675;;;:::o;11555:413::-;9393:8;;;;;;;;;;;9388:104;;9429:4;9418:8;;:15;;;;;;;;;;;;;;;;;;11604:23:::1;11630:24;11648:4;11630:9;:24::i;:::-;11604:50;;11688:13;;11669:15;:32;11665:296;;11718:22;11743:21;11718:46;;11779:31;11796:13;;11779:16;:31::i;:::-;11825:20;11872:14;11848:21;:38;;;;:::i;:::-;11825:61;;11901:48;11936:12;11909:15;;;;;;;;;;;11901:34;;;;:48;;;;:::i;:::-;11703:258;;11665:296;11593:375;9475:5:::0;9464:8;;:16;;;;;;;;;;;;;;;;;;9388:104;11555:413::o;7413:125::-;;;;:::o;7544:124::-;;;;:::o;11976:306::-;12042:21;12080:1;12066:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12042:40;;12111:4;12093;12098:1;12093:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12137:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12127:4;12132:1;12127:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12163:6;;;;;;;;;;;:57;;;12221:11;12234:1;12237:4;12251;12258:15;12163:111;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12031:251;11976:306;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1784:75::-;1817:6;1850:2;1844:9;1834:19;;1784:75;:::o;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:117::-;3907:1;3904;3897:12;3921:180;3969:77;3966:1;3959:88;4066:4;4063:1;4056:15;4090:4;4087:1;4080:15;4107:281;4190:27;4212:4;4190:27;:::i;:::-;4182:6;4178:40;4320:6;4308:10;4305:22;4284:18;4272:10;4269:34;4266:62;4263:88;;;4331:18;;:::i;:::-;4263:88;4371:10;4367:2;4360:22;4150:238;4107:281;;:::o;4394:129::-;4428:6;4455:20;;:::i;:::-;4445:30;;4484:33;4512:4;4504:6;4484:33;:::i;:::-;4394:129;;;:::o;4529:311::-;4606:4;4696:18;4688:6;4685:30;4682:56;;;4718:18;;:::i;:::-;4682:56;4768:4;4760:6;4756:17;4748:25;;4828:4;4822;4818:15;4810:23;;4529:311;;;:::o;4846:117::-;4955:1;4952;4945:12;4986:710;5082:5;5107:81;5123:64;5180:6;5123:64;:::i;:::-;5107:81;:::i;:::-;5098:90;;5208:5;5237:6;5230:5;5223:21;5271:4;5264:5;5260:16;5253:23;;5324:4;5316:6;5312:17;5304:6;5300:30;5353:3;5345:6;5342:15;5339:122;;;5372:79;;:::i;:::-;5339:122;5487:6;5470:220;5504:6;5499:3;5496:15;5470:220;;;5579:3;5608:37;5641:3;5629:10;5608:37;:::i;:::-;5603:3;5596:50;5675:4;5670:3;5666:14;5659:21;;5546:144;5530:4;5525:3;5521:14;5514:21;;5470:220;;;5474:21;5088:608;;4986:710;;;;;:::o;5719:370::-;5790:5;5839:3;5832:4;5824:6;5820:17;5816:27;5806:122;;5847:79;;:::i;:::-;5806:122;5964:6;5951:20;5989:94;6079:3;6071:6;6064:4;6056:6;6052:17;5989:94;:::i;:::-;5980:103;;5796:293;5719:370;;;;:::o;6095:116::-;6165:21;6180:5;6165:21;:::i;:::-;6158:5;6155:32;6145:60;;6201:1;6198;6191:12;6145:60;6095:116;:::o;6217:133::-;6260:5;6298:6;6285:20;6276:29;;6314:30;6338:5;6314:30;:::i;:::-;6217:133;;;;:::o;6356:678::-;6446:6;6454;6503:2;6491:9;6482:7;6478:23;6474:32;6471:119;;;6509:79;;:::i;:::-;6471:119;6657:1;6646:9;6642:17;6629:31;6687:18;6679:6;6676:30;6673:117;;;6709:79;;:::i;:::-;6673:117;6814:78;6884:7;6875:6;6864:9;6860:22;6814:78;:::i;:::-;6804:88;;6600:302;6941:2;6967:50;7009:7;7000:6;6989:9;6985:22;6967:50;:::i;:::-;6957:60;;6912:115;6356:678;;;;;:::o;7040:619::-;7117:6;7125;7133;7182:2;7170:9;7161:7;7157:23;7153:32;7150:119;;;7188:79;;:::i;:::-;7150:119;7308:1;7333:53;7378:7;7369:6;7358:9;7354:22;7333:53;:::i;:::-;7323:63;;7279:117;7435:2;7461:53;7506:7;7497:6;7486:9;7482:22;7461:53;:::i;:::-;7451:63;;7406:118;7563:2;7589:53;7634:7;7625:6;7614:9;7610:22;7589:53;:::i;:::-;7579:63;;7534:118;7040:619;;;;;:::o;7665:474::-;7733:6;7741;7790:2;7778:9;7769:7;7765:23;7761:32;7758:119;;;7796:79;;:::i;:::-;7758:119;7916:1;7941:53;7986:7;7977:6;7966:9;7962:22;7941:53;:::i;:::-;7931:63;;7887:117;8043:2;8069:53;8114:7;8105:6;8094:9;8090:22;8069:53;:::i;:::-;8059:63;;8014:118;7665:474;;;;;:::o;8145:86::-;8180:7;8220:4;8213:5;8209:16;8198:27;;8145:86;;;:::o;8237:112::-;8320:22;8336:5;8320:22;:::i;:::-;8315:3;8308:35;8237:112;;:::o;8355:214::-;8444:4;8482:2;8471:9;8467:18;8459:26;;8495:67;8559:1;8548:9;8544:17;8535:6;8495:67;:::i;:::-;8355:214;;;;:::o;8575:329::-;8634:6;8683:2;8671:9;8662:7;8658:23;8654:32;8651:119;;;8689:79;;:::i;:::-;8651:119;8809:1;8834:53;8879:7;8870:6;8859:9;8855:22;8834:53;:::i;:::-;8824:63;;8780:117;8575:329;;;;:::o;8910:442::-;9059:4;9097:2;9086:9;9082:18;9074:26;;9110:71;9178:1;9167:9;9163:17;9154:6;9110:71;:::i;:::-;9191:72;9259:2;9248:9;9244:18;9235:6;9191:72;:::i;:::-;9273;9341:2;9330:9;9326:18;9317:6;9273:72;:::i;:::-;8910:442;;;;;;:::o;9358:118::-;9445:24;9463:5;9445:24;:::i;:::-;9440:3;9433:37;9358:118;;:::o;9482:222::-;9575:4;9613:2;9602:9;9598:18;9590:26;;9626:71;9694:1;9683:9;9679:17;9670:6;9626:71;:::i;:::-;9482:222;;;;:::o;9710:329::-;9769:6;9818:2;9806:9;9797:7;9793:23;9789:32;9786:119;;;9824:79;;:::i;:::-;9786:119;9944:1;9969:53;10014:7;10005:6;9994:9;9990:22;9969:53;:::i;:::-;9959:63;;9915:117;9710:329;;;;:::o;10045:468::-;10110:6;10118;10167:2;10155:9;10146:7;10142:23;10138:32;10135:119;;;10173:79;;:::i;:::-;10135:119;10293:1;10318:53;10363:7;10354:6;10343:9;10339:22;10318:53;:::i;:::-;10308:63;;10264:117;10420:2;10446:50;10488:7;10479:6;10468:9;10464:22;10446:50;:::i;:::-;10436:60;;10391:115;10045:468;;;;;:::o;10519:474::-;10587:6;10595;10644:2;10632:9;10623:7;10619:23;10615:32;10612:119;;;10650:79;;:::i;:::-;10612:119;10770:1;10795:53;10840:7;10831:6;10820:9;10816:22;10795:53;:::i;:::-;10785:63;;10741:117;10897:2;10923:53;10968:7;10959:6;10948:9;10944:22;10923:53;:::i;:::-;10913:63;;10868:118;10519:474;;;;;:::o;10999:323::-;11055:6;11104:2;11092:9;11083:7;11079:23;11075:32;11072:119;;;11110:79;;:::i;:::-;11072:119;11230:1;11255:50;11297:7;11288:6;11277:9;11273:22;11255:50;:::i;:::-;11245:60;;11201:114;10999:323;;;;:::o;11328:619::-;11405:6;11413;11421;11470:2;11458:9;11449:7;11445:23;11441:32;11438:119;;;11476:79;;:::i;:::-;11438:119;11596:1;11621:53;11666:7;11657:6;11646:9;11642:22;11621:53;:::i;:::-;11611:63;;11567:117;11723:2;11749:53;11794:7;11785:6;11774:9;11770:22;11749:53;:::i;:::-;11739:63;;11694:118;11851:2;11877:53;11922:7;11913:6;11902:9;11898:22;11877:53;:::i;:::-;11867:63;;11822:118;11328:619;;;;;:::o;11953:60::-;11981:3;12002:5;11995:12;;11953:60;;;:::o;12019:142::-;12069:9;12102:53;12120:34;12129:24;12147:5;12129:24;:::i;:::-;12120:34;:::i;:::-;12102:53;:::i;:::-;12089:66;;12019:142;;;:::o;12167:126::-;12217:9;12250:37;12281:5;12250:37;:::i;:::-;12237:50;;12167:126;;;:::o;12299:141::-;12364:9;12397:37;12428:5;12397:37;:::i;:::-;12384:50;;12299:141;;;:::o;12446:161::-;12548:52;12594:5;12548:52;:::i;:::-;12543:3;12536:65;12446:161;;:::o;12613:252::-;12721:4;12759:2;12748:9;12744:18;12736:26;;12772:86;12855:1;12844:9;12840:17;12831:6;12772:86;:::i;:::-;12613:252;;;;:::o;12871:180::-;12919:77;12916:1;12909:88;13016:4;13013:1;13006:15;13040:4;13037:1;13030:15;13057:320;13101:6;13138:1;13132:4;13128:12;13118:22;;13185:1;13179:4;13175:12;13206:18;13196:81;;13262:4;13254:6;13250:17;13240:27;;13196:81;13324:2;13316:6;13313:14;13293:18;13290:38;13287:84;;13343:18;;:::i;:::-;13287:84;13108:269;13057:320;;;:::o;13383:180::-;13431:77;13428:1;13421:88;13528:4;13525:1;13518:15;13552:4;13549:1;13542:15;13569:180;13617:77;13614:1;13607:88;13714:4;13711:1;13704:15;13738:4;13735:1;13728:15;13755:233;13794:3;13817:24;13835:5;13817:24;:::i;:::-;13808:33;;13863:66;13856:5;13853:77;13850:103;;13933:18;;:::i;:::-;13850:103;13980:1;13973:5;13969:13;13962:20;;13755:233;;;:::o;13994:191::-;14034:3;14053:20;14071:1;14053:20;:::i;:::-;14048:25;;14087:20;14105:1;14087:20;:::i;:::-;14082:25;;14130:1;14127;14123:9;14116:16;;14151:3;14148:1;14145:10;14142:36;;;14158:18;;:::i;:::-;14142:36;13994:191;;;;:::o;14191:332::-;14312:4;14350:2;14339:9;14335:18;14327:26;;14363:71;14431:1;14420:9;14416:17;14407:6;14363:71;:::i;:::-;14444:72;14512:2;14501:9;14497:18;14488:6;14444:72;:::i;:::-;14191:332;;;;;:::o;14529:137::-;14583:5;14614:6;14608:13;14599:22;;14630:30;14654:5;14630:30;:::i;:::-;14529:137;;;;:::o;14672:345::-;14739:6;14788:2;14776:9;14767:7;14763:23;14759:32;14756:119;;;14794:79;;:::i;:::-;14756:119;14914:1;14939:61;14992:7;14983:6;14972:9;14968:22;14939:61;:::i;:::-;14929:71;;14885:125;14672:345;;;;:::o;15023:224::-;15163:34;15159:1;15151:6;15147:14;15140:58;15232:7;15227:2;15219:6;15215:15;15208:32;15023:224;:::o;15253:366::-;15395:3;15416:67;15480:2;15475:3;15416:67;:::i;:::-;15409:74;;15492:93;15581:3;15492:93;:::i;:::-;15610:2;15605:3;15601:12;15594:19;;15253:366;;;:::o;15625:419::-;15791:4;15829:2;15818:9;15814:18;15806:26;;15878:9;15872:4;15868:20;15864:1;15853:9;15849:17;15842:47;15906:131;16032:4;15906:131;:::i;:::-;15898:139;;15625:419;;;:::o;16050:410::-;16090:7;16113:20;16131:1;16113:20;:::i;:::-;16108:25;;16147:20;16165:1;16147:20;:::i;:::-;16142:25;;16202:1;16199;16195:9;16224:30;16242:11;16224:30;:::i;:::-;16213:41;;16403:1;16394:7;16390:15;16387:1;16384:22;16364:1;16357:9;16337:83;16314:139;;16433:18;;:::i;:::-;16314:139;16098:362;16050:410;;;;:::o;16466:164::-;16606:16;16602:1;16594:6;16590:14;16583:40;16466:164;:::o;16636:366::-;16778:3;16799:67;16863:2;16858:3;16799:67;:::i;:::-;16792:74;;16875:93;16964:3;16875:93;:::i;:::-;16993:2;16988:3;16984:12;16977:19;;16636:366;;;:::o;17008:419::-;17174:4;17212:2;17201:9;17197:18;17189:26;;17261:9;17255:4;17251:20;17247:1;17236:9;17232:17;17225:47;17289:131;17415:4;17289:131;:::i;:::-;17281:139;;17008:419;;;:::o;17433:225::-;17573:34;17569:1;17561:6;17557:14;17550:58;17642:8;17637:2;17629:6;17625:15;17618:33;17433:225;:::o;17664:366::-;17806:3;17827:67;17891:2;17886:3;17827:67;:::i;:::-;17820:74;;17903:93;17992:3;17903:93;:::i;:::-;18021:2;18016:3;18012:12;18005:19;;17664:366;;;:::o;18036:419::-;18202:4;18240:2;18229:9;18225:18;18217:26;;18289:9;18283:4;18279:20;18275:1;18264:9;18260:17;18253:47;18317:131;18443:4;18317:131;:::i;:::-;18309:139;;18036:419;;;:::o;18461:223::-;18601:34;18597:1;18589:6;18585:14;18578:58;18670:6;18665:2;18657:6;18653:15;18646:31;18461:223;:::o;18690:366::-;18832:3;18853:67;18917:2;18912:3;18853:67;:::i;:::-;18846:74;;18929:93;19018:3;18929:93;:::i;:::-;19047:2;19042:3;19038:12;19031:19;;18690:366;;;:::o;19062:419::-;19228:4;19266:2;19255:9;19251:18;19243:26;;19315:9;19309:4;19305:20;19301:1;19290:9;19286:17;19279:47;19343:131;19469:4;19343:131;:::i;:::-;19335:139;;19062:419;;;:::o;19487:221::-;19627:34;19623:1;19615:6;19611:14;19604:58;19696:4;19691:2;19683:6;19679:15;19672:29;19487:221;:::o;19714:366::-;19856:3;19877:67;19941:2;19936:3;19877:67;:::i;:::-;19870:74;;19953:93;20042:3;19953:93;:::i;:::-;20071:2;20066:3;20062:12;20055:19;;19714:366;;;:::o;20086:419::-;20252:4;20290:2;20279:9;20275:18;20267:26;;20339:9;20333:4;20329:20;20325:1;20314:9;20310:17;20303:47;20367:131;20493:4;20367:131;:::i;:::-;20359:139;;20086:419;;;:::o;20511:182::-;20651:34;20647:1;20639:6;20635:14;20628:58;20511:182;:::o;20699:366::-;20841:3;20862:67;20926:2;20921:3;20862:67;:::i;:::-;20855:74;;20938:93;21027:3;20938:93;:::i;:::-;21056:2;21051:3;21047:12;21040:19;;20699:366;;;:::o;21071:419::-;21237:4;21275:2;21264:9;21260:18;21252:26;;21324:9;21318:4;21314:20;21310:1;21299:9;21295:17;21288:47;21352:131;21478:4;21352:131;:::i;:::-;21344:139;;21071:419;;;:::o;21496:179::-;21636:31;21632:1;21624:6;21620:14;21613:55;21496:179;:::o;21681:366::-;21823:3;21844:67;21908:2;21903:3;21844:67;:::i;:::-;21837:74;;21920:93;22009:3;21920:93;:::i;:::-;22038:2;22033:3;22029:12;22022:19;;21681:366;;;:::o;22053:419::-;22219:4;22257:2;22246:9;22242:18;22234:26;;22306:9;22300:4;22296:20;22292:1;22281:9;22277:17;22270:47;22334:131;22460:4;22334:131;:::i;:::-;22326:139;;22053:419;;;:::o;22478:228::-;22618:34;22614:1;22606:6;22602:14;22595:58;22687:11;22682:2;22674:6;22670:15;22663:36;22478:228;:::o;22712:366::-;22854:3;22875:67;22939:2;22934:3;22875:67;:::i;:::-;22868:74;;22951:93;23040:3;22951:93;:::i;:::-;23069:2;23064:3;23060:12;23053:19;;22712:366;;;:::o;23084:419::-;23250:4;23288:2;23277:9;23273:18;23265:26;;23337:9;23331:4;23327:20;23323:1;23312:9;23308:17;23301:47;23365:131;23491:4;23365:131;:::i;:::-;23357:139;;23084:419;;;:::o;23509:169::-;23649:21;23645:1;23637:6;23633:14;23626:45;23509:169;:::o;23684:366::-;23826:3;23847:67;23911:2;23906:3;23847:67;:::i;:::-;23840:74;;23923:93;24012:3;23923:93;:::i;:::-;24041:2;24036:3;24032:12;24025:19;;23684:366;;;:::o;24056:419::-;24222:4;24260:2;24249:9;24245:18;24237:26;;24309:9;24303:4;24299:20;24295:1;24284:9;24280:17;24273:47;24337:131;24463:4;24337:131;:::i;:::-;24329:139;;24056:419;;;:::o;24481:169::-;24621:21;24617:1;24609:6;24605:14;24598:45;24481:169;:::o;24656:366::-;24798:3;24819:67;24883:2;24878:3;24819:67;:::i;:::-;24812:74;;24895:93;24984:3;24895:93;:::i;:::-;25013:2;25008:3;25004:12;24997:19;;24656:366;;;:::o;25028:419::-;25194:4;25232:2;25221:9;25217:18;25209:26;;25281:9;25275:4;25271:20;25267:1;25256:9;25252:17;25245:47;25309:131;25435:4;25309:131;:::i;:::-;25301:139;;25028:419;;;:::o;25453:161::-;25593:13;25589:1;25581:6;25577:14;25570:37;25453:161;:::o;25620:366::-;25762:3;25783:67;25847:2;25842:3;25783:67;:::i;:::-;25776:74;;25859:93;25948:3;25859:93;:::i;:::-;25977:2;25972:3;25968:12;25961:19;;25620:366;;;:::o;25992:419::-;26158:4;26196:2;26185:9;26181:18;26173:26;;26245:9;26239:4;26235:20;26231:1;26220:9;26216:17;26209:47;26273:131;26399:4;26273:131;:::i;:::-;26265:139;;25992:419;;;:::o;26417:171::-;26557:23;26553:1;26545:6;26541:14;26534:47;26417:171;:::o;26594:366::-;26736:3;26757:67;26821:2;26816:3;26757:67;:::i;:::-;26750:74;;26833:93;26922:3;26833:93;:::i;:::-;26951:2;26946:3;26942:12;26935:19;;26594:366;;;:::o;26966:419::-;27132:4;27170:2;27159:9;27155:18;27147:26;;27219:9;27213:4;27209:20;27205:1;27194:9;27190:17;27183:47;27247:131;27373:4;27247:131;:::i;:::-;27239:139;;26966:419;;;:::o;27391:180::-;27439:77;27436:1;27429:88;27536:4;27533:1;27526:15;27560:4;27557:1;27550:15;27577:185;27617:1;27634:20;27652:1;27634:20;:::i;:::-;27629:25;;27668:20;27686:1;27668:20;:::i;:::-;27663:25;;27707:1;27697:35;;27712:18;;:::i;:::-;27697:35;27754:1;27751;27747:9;27742:14;;27577:185;;;;:::o;27768:194::-;27808:4;27828:20;27846:1;27828:20;:::i;:::-;27823:25;;27862:20;27880:1;27862:20;:::i;:::-;27857:25;;27906:1;27903;27899:9;27891:17;;27930:1;27924:4;27921:11;27918:37;;;27935:18;;:::i;:::-;27918:37;27768:194;;;;:::o;27968:179::-;28108:31;28104:1;28096:6;28092:14;28085:55;27968:179;:::o;28153:366::-;28295:3;28316:67;28380:2;28375:3;28316:67;:::i;:::-;28309:74;;28392:93;28481:3;28392:93;:::i;:::-;28510:2;28505:3;28501:12;28494:19;;28153:366;;;:::o;28525:419::-;28691:4;28729:2;28718:9;28714:18;28706:26;;28778:9;28772:4;28768:20;28764:1;28753:9;28749:17;28742:47;28806:131;28932:4;28806:131;:::i;:::-;28798:139;;28525:419;;;:::o;28950:147::-;29051:11;29088:3;29073:18;;28950:147;;;;:::o;29103:114::-;;:::o;29223:398::-;29382:3;29403:83;29484:1;29479:3;29403:83;:::i;:::-;29396:90;;29495:93;29584:3;29495:93;:::i;:::-;29613:1;29608:3;29604:11;29597:18;;29223:398;;;:::o;29627:379::-;29811:3;29833:147;29976:3;29833:147;:::i;:::-;29826:154;;29997:3;29990:10;;29627:379;;;:::o;30012:245::-;30152:34;30148:1;30140:6;30136:14;30129:58;30221:28;30216:2;30208:6;30204:15;30197:53;30012:245;:::o;30263:366::-;30405:3;30426:67;30490:2;30485:3;30426:67;:::i;:::-;30419:74;;30502:93;30591:3;30502:93;:::i;:::-;30620:2;30615:3;30611:12;30604:19;;30263:366;;;:::o;30635:419::-;30801:4;30839:2;30828:9;30824:18;30816:26;;30888:9;30882:4;30878:20;30874:1;30863:9;30859:17;30852:47;30916:131;31042:4;30916:131;:::i;:::-;30908:139;;30635:419;;;:::o;31060:224::-;31200:34;31196:1;31188:6;31184:14;31177:58;31269:7;31264:2;31256:6;31252:15;31245:32;31060:224;:::o;31290:366::-;31432:3;31453:67;31517:2;31512:3;31453:67;:::i;:::-;31446:74;;31529:93;31618:3;31529:93;:::i;:::-;31647:2;31642:3;31638:12;31631:19;;31290:366;;;:::o;31662:419::-;31828:4;31866:2;31855:9;31851:18;31843:26;;31915:9;31909:4;31905:20;31901:1;31890:9;31886:17;31879:47;31943:131;32069:4;31943:131;:::i;:::-;31935:139;;31662:419;;;:::o;32087:222::-;32227:34;32223:1;32215:6;32211:14;32204:58;32296:5;32291:2;32283:6;32279:15;32272:30;32087:222;:::o;32315:366::-;32457:3;32478:67;32542:2;32537:3;32478:67;:::i;:::-;32471:74;;32554:93;32643:3;32554:93;:::i;:::-;32672:2;32667:3;32663:12;32656:19;;32315:366;;;:::o;32687:419::-;32853:4;32891:2;32880:9;32876:18;32868:26;;32940:9;32934:4;32930:20;32926:1;32915:9;32911:17;32904:47;32968:131;33094:4;32968:131;:::i;:::-;32960:139;;32687:419;;;:::o;33112:225::-;33252:34;33248:1;33240:6;33236:14;33229:58;33321:8;33316:2;33308:6;33304:15;33297:33;33112:225;:::o;33343:366::-;33485:3;33506:67;33570:2;33565:3;33506:67;:::i;:::-;33499:74;;33582:93;33671:3;33582:93;:::i;:::-;33700:2;33695:3;33691:12;33684:19;;33343:366;;;:::o;33715:419::-;33881:4;33919:2;33908:9;33904:18;33896:26;;33968:9;33962:4;33958:20;33954:1;33943:9;33939:17;33932:47;33996:131;34122:4;33996:131;:::i;:::-;33988:139;;33715:419;;;:::o;34140:143::-;34197:5;34228:6;34222:13;34213:22;;34244:33;34271:5;34244:33;:::i;:::-;34140:143;;;;:::o;34289:351::-;34359:6;34408:2;34396:9;34387:7;34383:23;34379:32;34376:119;;;34414:79;;:::i;:::-;34376:119;34534:1;34559:64;34615:7;34606:6;34595:9;34591:22;34559:64;:::i;:::-;34549:74;;34505:128;34289:351;;;;:::o;34646:85::-;34691:7;34720:5;34709:16;;34646:85;;;:::o;34737:158::-;34795:9;34828:61;34846:42;34855:32;34881:5;34855:32;:::i;:::-;34846:42;:::i;:::-;34828:61;:::i;:::-;34815:74;;34737:158;;;:::o;34901:147::-;34996:45;35035:5;34996:45;:::i;:::-;34991:3;34984:58;34901:147;;:::o;35054:114::-;35121:6;35155:5;35149:12;35139:22;;35054:114;;;:::o;35174:184::-;35273:11;35307:6;35302:3;35295:19;35347:4;35342:3;35338:14;35323:29;;35174:184;;;;:::o;35364:132::-;35431:4;35454:3;35446:11;;35484:4;35479:3;35475:14;35467:22;;35364:132;;;:::o;35502:108::-;35579:24;35597:5;35579:24;:::i;:::-;35574:3;35567:37;35502:108;;:::o;35616:179::-;35685:10;35706:46;35748:3;35740:6;35706:46;:::i;:::-;35784:4;35779:3;35775:14;35761:28;;35616:179;;;;:::o;35801:113::-;35871:4;35903;35898:3;35894:14;35886:22;;35801:113;;;:::o;35950:732::-;36069:3;36098:54;36146:5;36098:54;:::i;:::-;36168:86;36247:6;36242:3;36168:86;:::i;:::-;36161:93;;36278:56;36328:5;36278:56;:::i;:::-;36357:7;36388:1;36373:284;36398:6;36395:1;36392:13;36373:284;;;36474:6;36468:13;36501:63;36560:3;36545:13;36501:63;:::i;:::-;36494:70;;36587:60;36640:6;36587:60;:::i;:::-;36577:70;;36433:224;36420:1;36417;36413:9;36408:14;;36373:284;;;36377:14;36673:3;36666:10;;36074:608;;;35950:732;;;;:::o;36688:831::-;36951:4;36989:3;36978:9;36974:19;36966:27;;37003:71;37071:1;37060:9;37056:17;37047:6;37003:71;:::i;:::-;37084:80;37160:2;37149:9;37145:18;37136:6;37084:80;:::i;:::-;37211:9;37205:4;37201:20;37196:2;37185:9;37181:18;37174:48;37239:108;37342:4;37333:6;37239:108;:::i;:::-;37231:116;;37357:72;37425:2;37414:9;37410:18;37401:6;37357:72;:::i;:::-;37439:73;37507:3;37496:9;37492:19;37483:6;37439:73;:::i;:::-;36688:831;;;;;;;;:::o

Swarm Source

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