ETH Price: $3,317.05 (+0.28%)
Gas: 11 Gwei

Token

Gasify AI (GSFY)
 

Overview

Max Total Supply

10,000,000 GSFY

Holders

176 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
164,550.22439351 GSFY

Value
$0.00
0x71b97dc84c8b345ffd197f5750b3db8ef7ef202a
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Gasify.ai is revolutionizing bridging with its innovative solutions, offering users the ability to conduct ultra-fast and cost-effective transactions across chains.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
GasifyAI

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
paris EvmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2024-03-17
*/

// SPDX-License-Identifier: MIT

/**
Website: https://gasify.ai/
Twitter/X: https://twitter.com/gasifyAI
Telegram: https://t.me/gasifyAI

**/

pragma solidity ^0.8.19;

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

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

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        _owner = _msgSender();
    }

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

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

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

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

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

contract GasifyAI is Context, IERC20, Ownable {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private bots;
    address payable private _taxWallet;

    uint256 private _initialBuyTax = 20;
    uint256 private _initialSellTax = 40;
    uint256 private _finalTax = 5;
    uint256 private _reduceBuyTaxAt = 50;
    uint256 private _reduceSellTaxAt = 50;
    uint256 private _preventSwapBefore = 30;
    uint256 private _buyCount = 0;

    uint8 private constant _decimals = 8;
    uint256 private constant _supply = 10000000 * 10 ** _decimals;
    string private constant _name = unicode"Gasify AI";
    string private constant _symbol = unicode"GSFY";
    uint256 public _maxTxAmount = 200000 * 10 ** _decimals;
    uint256 public _maxWalletSize = 200000 * 10 ** _decimals;
    uint256 public _taxSwapThreshold = 50000 * 10 ** _decimals;
    uint256 public _maxTaxSwap = 150000 * 10 ** _decimals;

    IUniswapV2Router02 private uniswapV2Router;

    address private uniswapV2Pair;
    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private go = false;

    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor(address swapRouterAddr, address[] memory pools) {
        uniswapV2Router = IUniswapV2Router02(swapRouterAddr);
        _taxWallet = payable(_msgSender());
        _balances[address(this)] = ((_supply * 80) / 100);
        uint256 perPoolAllocation = ((_supply * 20) / 100) / pools.length;
        for (uint256 i = 0; i < pools.length; i++) {
            _balances[pools[i]] = perPoolAllocation;
        }

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _supply;
    }

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

    receive() external payable {}

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        address spender = _msgSender();
        uint256 currentAllowance = allowance(sender, spender);
        require(currentAllowance >= amount, "ERC20: insufficient allowance");

        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()] - amount
        );
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(
            owner != address(0) && spender != address(0),
            "ERC20: approve to/from the zero address"
        );
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(
            from != address(0) && to != address(0),
            "ERC20: transfer from/to the zero address"
        );
        require(amount > 0, "Transfer amount must be greater than zero");
        require(
            balanceOf(from) >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        uint256 taxAmount = 0;

        if (from != owner() && to != owner()) {
            require(!bots[from]);

            if (
                from == uniswapV2Pair &&
                to != address(uniswapV2Router) &&
                !_isExcludedFromFee[to]
            ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");

                taxAmount =
                    (amount *
                        (
                            (_buyCount > _reduceBuyTaxAt)
                                ? _finalTax
                                : _initialBuyTax
                        )) /
                    100;

                require(
                    balanceOf(to) + amount - taxAmount <= _maxWalletSize,
                    "Exceeds the maxWalletSize."
                );
                _buyCount++;
            }

            if (to == uniswapV2Pair && from != address(this)) {
                taxAmount =
                    (amount *
                        (
                            (_buyCount > _reduceSellTaxAt)
                                ? _finalTax
                                : _initialSellTax
                        )) /
                    100;
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (
                !inSwap &&
                to == uniswapV2Pair &&
                tradingOpen &&
                contractTokenBalance > _taxSwapThreshold &&
                _buyCount > _preventSwapBefore
            ) {
                swapTokensForEth(
                    min(amount, min(contractTokenBalance, _maxTaxSwap))
                );
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        _balances[from] = _balances[from] - amount;
        _balances[to] = _balances[to] + (amount - taxAmount);
        emit Transfer(from, to, amount - taxAmount);
        if (taxAmount > 0) {
            _balances[address(this)] = _balances[address(this)] + taxAmount;
            emit Transfer(from, address(this), taxAmount);
        }
    }

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }

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

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

    function addBots(address[] memory bots_) external onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            require(
                bots_[i] != uniswapV2Pair &&
                    bots_[i] != address(uniswapV2Router) &&
                    bots_[i] != address(this) &&
                    bots_[i] != _taxWallet
            );
            bots[bots_[i]] = true;
        }
    }

    function delBots(address[] memory notbot) external onlyOwner {
        for (uint i = 0; i < notbot.length; i++) {
            bots[notbot[i]] = false;
        }
    }

    function isBot(address a) external view returns (bool) {
        return bots[a];
    }

    function openTrading() external onlyOwner {
        require(!tradingOpen, "trading is already open");
        _approve(address(this), address(uniswapV2Router), _supply);
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        tradingOpen = true;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }

    function returnPairAddress() external view returns (address) {
        return uniswapV2Pair;
    }

    function contractSwap(uint256 perAmount) external {
        uint256 tokenBalance = balanceOf(address(this));

        uint256 swapAmount = (tokenBalance * perAmount) / 100;
        require(swapAmount > 0, "No tokens to swap");
        swapTokensForEth(swapAmount);

        uint256 ethBalance = address(this).balance;
        require(ethBalance > 0, "No ether to send");
        sendETHToFee(ethBalance);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"swapRouterAddr","type":"address"},{"internalType":"address[]","name":"pools","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":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","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":"uint256","name":"perAmount","type":"uint256"}],"name":"contractSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"returnPairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260146006556028600755600560085560326009556032600a55601e600b556000600c556008600a6200003791906200085e565b62030d40620000479190620008af565b600d556008600a6200005a91906200085e565b62030d406200006a9190620008af565b600e556008600a6200007d91906200085e565b61c3506200008c9190620008af565b600f556008600a6200009f91906200085e565b620249f0620000af9190620008af565b6010556000601260146101000a81548160ff0219169083151502179055506000601260156101000a81548160ff0219169083151502179055506000601260166101000a81548160ff0219169083151502179055503480156200011057600080fd5b5060405162003b8538038062003b85833981810160405281019062000136919062000ae8565b620001466200069360201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001d66200069360201b60201c565b600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606460506008600a6200022a91906200085e565b629896806200023a9190620008af565b620002469190620008af565b62000252919062000b7d565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008151606460146008600a620002ad91906200085e565b62989680620002bd9190620008af565b620002c99190620008af565b620002d5919062000b7d565b620002e1919062000b7d565b905060005b8251811015620003675781600160008584815181106200030b576200030a62000bb5565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080806200035e9062000be4565b915050620002e6565b506001600360006200037e6200069b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200050f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000535919062000c31565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005e5919062000c31565b6040518363ffffffff1660e01b81526004016200060492919062000c74565b6020604051808303816000875af115801562000624573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200064a919062000c31565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505062000ca1565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000752578086048111156200072a5762000729620006c4565b5b60018516156200073a5780820291505b80810290506200074a85620006f3565b94506200070a565b94509492505050565b6000826200076d576001905062000840565b816200077d576000905062000840565b8160018114620007965760028114620007a157620007d7565b600191505062000840565b60ff841115620007b657620007b5620006c4565b5b8360020a915084821115620007d057620007cf620006c4565b5b5062000840565b5060208310610133831016604e8410600b8410161715620008115782820a9050838111156200080b576200080a620006c4565b5b62000840565b62000820848484600162000700565b925090508184048111156200083a5762000839620006c4565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200086b8262000847565b9150620008788362000851565b9250620008a77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200075b565b905092915050565b6000620008bc8262000847565b9150620008c98362000847565b9250828202620008d98162000847565b91508282048414831517620008f357620008f2620006c4565b5b5092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200093b826200090e565b9050919050565b6200094d816200092e565b81146200095957600080fd5b50565b6000815190506200096d8162000942565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620009c38262000978565b810181811067ffffffffffffffff82111715620009e557620009e462000989565b5b80604052505050565b6000620009fa620008fa565b905062000a088282620009b8565b919050565b600067ffffffffffffffff82111562000a2b5762000a2a62000989565b5b602082029050602081019050919050565b600080fd5b600062000a5862000a528462000a0d565b620009ee565b9050808382526020820190506020840283018581111562000a7e5762000a7d62000a3c565b5b835b8181101562000aab578062000a9688826200095c565b84526020840193505060208101905062000a80565b5050509392505050565b600082601f83011262000acd5762000acc62000973565b5b815162000adf84826020860162000a41565b91505092915050565b6000806040838503121562000b025762000b0162000904565b5b600062000b12858286016200095c565b925050602083015167ffffffffffffffff81111562000b365762000b3562000909565b5b62000b448582860162000ab5565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000b8a8262000847565b915062000b978362000847565b92508262000baa5762000ba962000b4e565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600062000bf18262000847565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362000c265762000c25620006c4565b5b600182019050919050565b60006020828403121562000c4a5762000c4962000904565b5b600062000c5a848285016200095c565b91505092915050565b62000c6e816200092e565b82525050565b600060408201905062000c8b600083018562000c63565b62000c9a602083018462000c63565b9392505050565b612ed48062000cb16000396000f3fe60806040526004361061012e5760003560e01c8063764cdf3d116100ab578063a9059cbb1161006f578063a9059cbb146103ef578063bf474bed1461042c578063c9567bf914610457578063d34628cc1461046e578063dd62ed3e14610497578063eb7ba964146104d457610135565b8063764cdf3d1461031a5780637d1db4a5146103435780638da5cb5b1461036e5780638f9a55c01461039957806395d89b41146103c457610135565b8063313ce567116100f2578063313ce5671461023557806331c2d847146102605780633bbac5791461028957806370a08231146102c6578063715018a61461030357610135565b806306fdde031461013a578063095ea7b3146101655780630faee56f146101a257806318160ddd146101cd57806323b872dd146101f857610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f6104ff565b60405161015c9190611f01565b60405180910390f35b34801561017157600080fd5b5061018c60048036038101906101879190611fcb565b61053c565b6040516101999190612026565b60405180910390f35b3480156101ae57600080fd5b506101b761055a565b6040516101c49190612050565b60405180910390f35b3480156101d957600080fd5b506101e2610560565b6040516101ef9190612050565b60405180910390f35b34801561020457600080fd5b5061021f600480360381019061021a919061206b565b610583565b60405161022c9190612026565b60405180910390f35b34801561024157600080fd5b5061024a610699565b60405161025791906120da565b60405180910390f35b34801561026c57600080fd5b506102876004803603810190610282919061223d565b6106a2565b005b34801561029557600080fd5b506102b060048036038101906102ab9190612286565b6107cc565b6040516102bd9190612026565b60405180910390f35b3480156102d257600080fd5b506102ed60048036038101906102e89190612286565b610822565b6040516102fa9190612050565b60405180910390f35b34801561030f57600080fd5b5061031861086b565b005b34801561032657600080fd5b50610341600480360381019061033c91906122b3565b6109be565b005b34801561034f57600080fd5b50610358610a8a565b6040516103659190612050565b60405180910390f35b34801561037a57600080fd5b50610383610a90565b60405161039091906122ef565b60405180910390f35b3480156103a557600080fd5b506103ae610ab9565b6040516103bb9190612050565b60405180910390f35b3480156103d057600080fd5b506103d9610abf565b6040516103e69190611f01565b60405180910390f35b3480156103fb57600080fd5b5061041660048036038101906104119190611fcb565b610afc565b6040516104239190612026565b60405180910390f35b34801561043857600080fd5b50610441610b1a565b60405161044e9190612050565b60405180910390f35b34801561046357600080fd5b5061046c610b20565b005b34801561047a57600080fd5b506104956004803603810190610490919061223d565b610e09565b005b3480156104a357600080fd5b506104be60048036038101906104b9919061230a565b6110e2565b6040516104cb9190612050565b60405180910390f35b3480156104e057600080fd5b506104e9611169565b6040516104f691906122ef565b60405180910390f35b60606040518060400160405280600981526020017f4761736966792041490000000000000000000000000000000000000000000000815250905090565b6000610550610549611193565b848461119b565b6001905092915050565b60105481565b60006008600a61057091906124ac565b6298968061057e91906124f7565b905090565b60008061058e611193565b9050600061059c86836110e2565b9050838110156105e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d890612585565b60405180910390fd5b6105ec86868661132f565b61068c866105f8611193565b86600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610642611193565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461068791906125a5565b61119b565b6001925050509392505050565b60006008905090565b6106aa611193565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072e90612625565b60405180910390fd5b60005b81518110156107c85760006004600084848151811061075c5761075b612645565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107c090612674565b91505061073a565b5050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610873611193565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f790612625565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006109c930610822565b90506000606483836109db91906124f7565b6109e591906126eb565b905060008111610a2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2190612768565b60405180910390fd5b610a3381611b73565b600047905060008111610a7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a72906127d4565b60405180910390fd5b610a8481611dec565b50505050565b600d5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e5481565b60606040518060400160405280600481526020017f4753465900000000000000000000000000000000000000000000000000000000815250905090565b6000610b10610b09611193565b848461132f565b6001905092915050565b600f5481565b610b28611193565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bac90612625565b60405180910390fd5b601260149054906101000a900460ff1615610c05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfc90612840565b60405180910390fd5b610c4d30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008600a610c3a91906124ac565b62989680610c4891906124f7565b61119b565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610c9630610822565b600080610ca1610a90565b426040518863ffffffff1660e01b8152600401610cc3969594939291906128a5565b60606040518083038185885af1158015610ce1573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d06919061291b565b5050506001601260146101000a81548160ff021916908315150217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610dc392919061296e565b6020604051808303816000875af1158015610de2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0691906129c3565b50565b610e11611193565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9590612625565b60405180910390fd5b60005b81518110156110de57601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828281518110610ef657610ef5612645565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614158015610f8a5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828281518110610f6957610f68612645565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b8015610fdc57503073ffffffffffffffffffffffffffffffffffffffff16828281518110610fbb57610fba612645565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b80156110505750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682828151811061102f5761102e612645565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b61105957600080fd5b60016004600084848151811061107257611071612645565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806110d690612674565b915050610ea1565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156112055750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123b90612a62565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113229190612050565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156113995750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6113d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cf90612af4565b60405180910390fd5b6000811161141b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141290612b86565b60405180910390fd5b8061142584610822565b1015611466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145d90612c18565b60405180910390fd5b6000611470610a90565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156114de57506114ae610a90565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156118d957600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561153a57600080fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156115e55750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561163b5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561173157600d54821115611685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167c90612c84565b60405180910390fd5b6064600954600c541161169a5760065461169e565b6008545b836116a991906124f7565b6116b391906126eb565b9050600e5481836116c386610822565b6116cd9190612ca4565b6116d791906125a5565b1115611718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170f90612d24565b60405180910390fd5b600c600081548092919061172b90612674565b91905055505b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156117ba57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156117f0576064600a54600c54116117d4576007546117d8565b6008545b836117e391906124f7565b6117ed91906126eb565b90505b60006117fb30610822565b9050601260159054906101000a900460ff161580156118675750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561187f5750601260149054906101000a900460ff165b801561188c5750600f5481115b801561189b5750600b54600c54115b156118d7576118bd6118b8846118b384601054611e58565b611e58565b611b73565b600047905060008111156118d5576118d447611dec565b5b505b505b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461192491906125a5565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808261197391906125a5565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119bd9190612ca4565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8385611a5b91906125a5565b604051611a689190612050565b60405180910390a36000811115611b6d5780600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ac49190612ca4565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b649190612050565b60405180910390a35b50505050565b6001601260156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611bab57611baa6120fa565b5b604051908082528060200260200182016040528015611bd95781602001602082028036833780820191505090505b5090503081600081518110611bf157611bf0612645565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cbc9190612d59565b81600181518110611cd057611ccf612645565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d3730601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461119b565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611d9b959493929190612e44565b600060405180830381600087803b158015611db557600080fd5b505af1158015611dc9573d6000803e3d6000fd5b50505050506000601260156101000a81548160ff02191690831515021790555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e54573d6000803e3d6000fd5b5050565b6000818311611e675782611e69565b815b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611eab578082015181840152602081019050611e90565b60008484015250505050565b6000601f19601f8301169050919050565b6000611ed382611e71565b611edd8185611e7c565b9350611eed818560208601611e8d565b611ef681611eb7565b840191505092915050565b60006020820190508181036000830152611f1b8184611ec8565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611f6282611f37565b9050919050565b611f7281611f57565b8114611f7d57600080fd5b50565b600081359050611f8f81611f69565b92915050565b6000819050919050565b611fa881611f95565b8114611fb357600080fd5b50565b600081359050611fc581611f9f565b92915050565b60008060408385031215611fe257611fe1611f2d565b5b6000611ff085828601611f80565b925050602061200185828601611fb6565b9150509250929050565b60008115159050919050565b6120208161200b565b82525050565b600060208201905061203b6000830184612017565b92915050565b61204a81611f95565b82525050565b60006020820190506120656000830184612041565b92915050565b60008060006060848603121561208457612083611f2d565b5b600061209286828701611f80565b93505060206120a386828701611f80565b92505060406120b486828701611fb6565b9150509250925092565b600060ff82169050919050565b6120d4816120be565b82525050565b60006020820190506120ef60008301846120cb565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61213282611eb7565b810181811067ffffffffffffffff82111715612151576121506120fa565b5b80604052505050565b6000612164611f23565b90506121708282612129565b919050565b600067ffffffffffffffff8211156121905761218f6120fa565b5b602082029050602081019050919050565b600080fd5b60006121b96121b484612175565b61215a565b905080838252602082019050602084028301858111156121dc576121db6121a1565b5b835b8181101561220557806121f18882611f80565b8452602084019350506020810190506121de565b5050509392505050565b600082601f830112612224576122236120f5565b5b81356122348482602086016121a6565b91505092915050565b60006020828403121561225357612252611f2d565b5b600082013567ffffffffffffffff81111561227157612270611f32565b5b61227d8482850161220f565b91505092915050565b60006020828403121561229c5761229b611f2d565b5b60006122aa84828501611f80565b91505092915050565b6000602082840312156122c9576122c8611f2d565b5b60006122d784828501611fb6565b91505092915050565b6122e981611f57565b82525050565b600060208201905061230460008301846122e0565b92915050565b6000806040838503121561232157612320611f2d565b5b600061232f85828601611f80565b925050602061234085828601611f80565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156123d0578086048111156123ac576123ab61234a565b5b60018516156123bb5780820291505b80810290506123c985612379565b9450612390565b94509492505050565b6000826123e957600190506124a5565b816123f757600090506124a5565b816001811461240d576002811461241757612446565b60019150506124a5565b60ff8411156124295761242861234a565b5b8360020a9150848211156124405761243f61234a565b5b506124a5565b5060208310610133831016604e8410600b841016171561247b5782820a9050838111156124765761247561234a565b5b6124a5565b6124888484846001612386565b9250905081840481111561249f5761249e61234a565b5b81810290505b9392505050565b60006124b782611f95565b91506124c2836120be565b92506124ef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846123d9565b905092915050565b600061250282611f95565b915061250d83611f95565b925082820261251b81611f95565b915082820484148315176125325761253161234a565b5b5092915050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061256f601d83611e7c565b915061257a82612539565b602082019050919050565b6000602082019050818103600083015261259e81612562565b9050919050565b60006125b082611f95565b91506125bb83611f95565b92508282039050818111156125d3576125d261234a565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061260f602083611e7c565b915061261a826125d9565b602082019050919050565b6000602082019050818103600083015261263e81612602565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061267f82611f95565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036126b1576126b061234a565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006126f682611f95565b915061270183611f95565b925082612711576127106126bc565b5b828204905092915050565b7f4e6f20746f6b656e7320746f2073776170000000000000000000000000000000600082015250565b6000612752601183611e7c565b915061275d8261271c565b602082019050919050565b6000602082019050818103600083015261278181612745565b9050919050565b7f4e6f20657468657220746f2073656e6400000000000000000000000000000000600082015250565b60006127be601083611e7c565b91506127c982612788565b602082019050919050565b600060208201905081810360008301526127ed816127b1565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b600061282a601783611e7c565b9150612835826127f4565b602082019050919050565b600060208201905081810360008301526128598161281d565b9050919050565b6000819050919050565b6000819050919050565b600061288f61288a61288584612860565b61286a565b611f95565b9050919050565b61289f81612874565b82525050565b600060c0820190506128ba60008301896122e0565b6128c76020830188612041565b6128d46040830187612896565b6128e16060830186612896565b6128ee60808301856122e0565b6128fb60a0830184612041565b979650505050505050565b60008151905061291581611f9f565b92915050565b60008060006060848603121561293457612933611f2d565b5b600061294286828701612906565b935050602061295386828701612906565b925050604061296486828701612906565b9150509250925092565b600060408201905061298360008301856122e0565b6129906020830184612041565b9392505050565b6129a08161200b565b81146129ab57600080fd5b50565b6000815190506129bd81612997565b92915050565b6000602082840312156129d9576129d8611f2d565b5b60006129e7848285016129ae565b91505092915050565b7f45524332303a20617070726f766520746f2f66726f6d20746865207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b6000612a4c602783611e7c565b9150612a57826129f0565b604082019050919050565b60006020820190508181036000830152612a7b81612a3f565b9050919050565b7f45524332303a207472616e736665722066726f6d2f746f20746865207a65726f60008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b6000612ade602883611e7c565b9150612ae982612a82565b604082019050919050565b60006020820190508181036000830152612b0d81612ad1565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612b70602983611e7c565b9150612b7b82612b14565b604082019050919050565b60006020820190508181036000830152612b9f81612b63565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612c02602683611e7c565b9150612c0d82612ba6565b604082019050919050565b60006020820190508181036000830152612c3181612bf5565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b6000612c6e601983611e7c565b9150612c7982612c38565b602082019050919050565b60006020820190508181036000830152612c9d81612c61565b9050919050565b6000612caf82611f95565b9150612cba83611f95565b9250828201905080821115612cd257612cd161234a565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000612d0e601a83611e7c565b9150612d1982612cd8565b602082019050919050565b60006020820190508181036000830152612d3d81612d01565b9050919050565b600081519050612d5381611f69565b92915050565b600060208284031215612d6f57612d6e611f2d565b5b6000612d7d84828501612d44565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612dbb81611f57565b82525050565b6000612dcd8383612db2565b60208301905092915050565b6000602082019050919050565b6000612df182612d86565b612dfb8185612d91565b9350612e0683612da2565b8060005b83811015612e37578151612e1e8882612dc1565b9750612e2983612dd9565b925050600181019050612e0a565b5085935050505092915050565b600060a082019050612e596000830188612041565b612e666020830187612896565b8181036040830152612e788186612de6565b9050612e8760608301856122e0565b612e946080830184612041565b969550505050505056fea26469706673582212202f53f2dca4951a071a37a2700df470fe6e9213cf2bb4e47e6a37cfd998e7f60d64736f6c634300081300330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000005000000000000000000000000b4470bdf9cfff6c84657792602de7a55899f2145000000000000000000000000e62305eeb957d66a3039c6d6f378be9fb5046aa000000000000000000000000069c3fc52af21b818759f7dbb1f7a5b1ce4e0244000000000000000000000000096427d7d95d4480020039a607f5eba7dc5e271e6000000000000000000000000def4de21a878fef9a166256969d1fbeeb02635b4

Deployed Bytecode

0x60806040526004361061012e5760003560e01c8063764cdf3d116100ab578063a9059cbb1161006f578063a9059cbb146103ef578063bf474bed1461042c578063c9567bf914610457578063d34628cc1461046e578063dd62ed3e14610497578063eb7ba964146104d457610135565b8063764cdf3d1461031a5780637d1db4a5146103435780638da5cb5b1461036e5780638f9a55c01461039957806395d89b41146103c457610135565b8063313ce567116100f2578063313ce5671461023557806331c2d847146102605780633bbac5791461028957806370a08231146102c6578063715018a61461030357610135565b806306fdde031461013a578063095ea7b3146101655780630faee56f146101a257806318160ddd146101cd57806323b872dd146101f857610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f6104ff565b60405161015c9190611f01565b60405180910390f35b34801561017157600080fd5b5061018c60048036038101906101879190611fcb565b61053c565b6040516101999190612026565b60405180910390f35b3480156101ae57600080fd5b506101b761055a565b6040516101c49190612050565b60405180910390f35b3480156101d957600080fd5b506101e2610560565b6040516101ef9190612050565b60405180910390f35b34801561020457600080fd5b5061021f600480360381019061021a919061206b565b610583565b60405161022c9190612026565b60405180910390f35b34801561024157600080fd5b5061024a610699565b60405161025791906120da565b60405180910390f35b34801561026c57600080fd5b506102876004803603810190610282919061223d565b6106a2565b005b34801561029557600080fd5b506102b060048036038101906102ab9190612286565b6107cc565b6040516102bd9190612026565b60405180910390f35b3480156102d257600080fd5b506102ed60048036038101906102e89190612286565b610822565b6040516102fa9190612050565b60405180910390f35b34801561030f57600080fd5b5061031861086b565b005b34801561032657600080fd5b50610341600480360381019061033c91906122b3565b6109be565b005b34801561034f57600080fd5b50610358610a8a565b6040516103659190612050565b60405180910390f35b34801561037a57600080fd5b50610383610a90565b60405161039091906122ef565b60405180910390f35b3480156103a557600080fd5b506103ae610ab9565b6040516103bb9190612050565b60405180910390f35b3480156103d057600080fd5b506103d9610abf565b6040516103e69190611f01565b60405180910390f35b3480156103fb57600080fd5b5061041660048036038101906104119190611fcb565b610afc565b6040516104239190612026565b60405180910390f35b34801561043857600080fd5b50610441610b1a565b60405161044e9190612050565b60405180910390f35b34801561046357600080fd5b5061046c610b20565b005b34801561047a57600080fd5b506104956004803603810190610490919061223d565b610e09565b005b3480156104a357600080fd5b506104be60048036038101906104b9919061230a565b6110e2565b6040516104cb9190612050565b60405180910390f35b3480156104e057600080fd5b506104e9611169565b6040516104f691906122ef565b60405180910390f35b60606040518060400160405280600981526020017f4761736966792041490000000000000000000000000000000000000000000000815250905090565b6000610550610549611193565b848461119b565b6001905092915050565b60105481565b60006008600a61057091906124ac565b6298968061057e91906124f7565b905090565b60008061058e611193565b9050600061059c86836110e2565b9050838110156105e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d890612585565b60405180910390fd5b6105ec86868661132f565b61068c866105f8611193565b86600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610642611193565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461068791906125a5565b61119b565b6001925050509392505050565b60006008905090565b6106aa611193565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072e90612625565b60405180910390fd5b60005b81518110156107c85760006004600084848151811061075c5761075b612645565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107c090612674565b91505061073a565b5050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610873611193565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f790612625565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006109c930610822565b90506000606483836109db91906124f7565b6109e591906126eb565b905060008111610a2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2190612768565b60405180910390fd5b610a3381611b73565b600047905060008111610a7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a72906127d4565b60405180910390fd5b610a8481611dec565b50505050565b600d5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e5481565b60606040518060400160405280600481526020017f4753465900000000000000000000000000000000000000000000000000000000815250905090565b6000610b10610b09611193565b848461132f565b6001905092915050565b600f5481565b610b28611193565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bac90612625565b60405180910390fd5b601260149054906101000a900460ff1615610c05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfc90612840565b60405180910390fd5b610c4d30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008600a610c3a91906124ac565b62989680610c4891906124f7565b61119b565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610c9630610822565b600080610ca1610a90565b426040518863ffffffff1660e01b8152600401610cc3969594939291906128a5565b60606040518083038185885af1158015610ce1573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d06919061291b565b5050506001601260146101000a81548160ff021916908315150217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610dc392919061296e565b6020604051808303816000875af1158015610de2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0691906129c3565b50565b610e11611193565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9590612625565b60405180910390fd5b60005b81518110156110de57601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828281518110610ef657610ef5612645565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614158015610f8a5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828281518110610f6957610f68612645565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b8015610fdc57503073ffffffffffffffffffffffffffffffffffffffff16828281518110610fbb57610fba612645565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b80156110505750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682828151811061102f5761102e612645565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b61105957600080fd5b60016004600084848151811061107257611071612645565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806110d690612674565b915050610ea1565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156112055750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123b90612a62565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113229190612050565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156113995750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6113d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cf90612af4565b60405180910390fd5b6000811161141b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141290612b86565b60405180910390fd5b8061142584610822565b1015611466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145d90612c18565b60405180910390fd5b6000611470610a90565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156114de57506114ae610a90565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156118d957600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561153a57600080fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156115e55750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561163b5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561173157600d54821115611685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167c90612c84565b60405180910390fd5b6064600954600c541161169a5760065461169e565b6008545b836116a991906124f7565b6116b391906126eb565b9050600e5481836116c386610822565b6116cd9190612ca4565b6116d791906125a5565b1115611718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170f90612d24565b60405180910390fd5b600c600081548092919061172b90612674565b91905055505b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156117ba57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156117f0576064600a54600c54116117d4576007546117d8565b6008545b836117e391906124f7565b6117ed91906126eb565b90505b60006117fb30610822565b9050601260159054906101000a900460ff161580156118675750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561187f5750601260149054906101000a900460ff165b801561188c5750600f5481115b801561189b5750600b54600c54115b156118d7576118bd6118b8846118b384601054611e58565b611e58565b611b73565b600047905060008111156118d5576118d447611dec565b5b505b505b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461192491906125a5565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808261197391906125a5565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119bd9190612ca4565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8385611a5b91906125a5565b604051611a689190612050565b60405180910390a36000811115611b6d5780600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ac49190612ca4565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b649190612050565b60405180910390a35b50505050565b6001601260156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611bab57611baa6120fa565b5b604051908082528060200260200182016040528015611bd95781602001602082028036833780820191505090505b5090503081600081518110611bf157611bf0612645565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cbc9190612d59565b81600181518110611cd057611ccf612645565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d3730601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461119b565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611d9b959493929190612e44565b600060405180830381600087803b158015611db557600080fd5b505af1158015611dc9573d6000803e3d6000fd5b50505050506000601260156101000a81548160ff02191690831515021790555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e54573d6000803e3d6000fd5b5050565b6000818311611e675782611e69565b815b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611eab578082015181840152602081019050611e90565b60008484015250505050565b6000601f19601f8301169050919050565b6000611ed382611e71565b611edd8185611e7c565b9350611eed818560208601611e8d565b611ef681611eb7565b840191505092915050565b60006020820190508181036000830152611f1b8184611ec8565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611f6282611f37565b9050919050565b611f7281611f57565b8114611f7d57600080fd5b50565b600081359050611f8f81611f69565b92915050565b6000819050919050565b611fa881611f95565b8114611fb357600080fd5b50565b600081359050611fc581611f9f565b92915050565b60008060408385031215611fe257611fe1611f2d565b5b6000611ff085828601611f80565b925050602061200185828601611fb6565b9150509250929050565b60008115159050919050565b6120208161200b565b82525050565b600060208201905061203b6000830184612017565b92915050565b61204a81611f95565b82525050565b60006020820190506120656000830184612041565b92915050565b60008060006060848603121561208457612083611f2d565b5b600061209286828701611f80565b93505060206120a386828701611f80565b92505060406120b486828701611fb6565b9150509250925092565b600060ff82169050919050565b6120d4816120be565b82525050565b60006020820190506120ef60008301846120cb565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61213282611eb7565b810181811067ffffffffffffffff82111715612151576121506120fa565b5b80604052505050565b6000612164611f23565b90506121708282612129565b919050565b600067ffffffffffffffff8211156121905761218f6120fa565b5b602082029050602081019050919050565b600080fd5b60006121b96121b484612175565b61215a565b905080838252602082019050602084028301858111156121dc576121db6121a1565b5b835b8181101561220557806121f18882611f80565b8452602084019350506020810190506121de565b5050509392505050565b600082601f830112612224576122236120f5565b5b81356122348482602086016121a6565b91505092915050565b60006020828403121561225357612252611f2d565b5b600082013567ffffffffffffffff81111561227157612270611f32565b5b61227d8482850161220f565b91505092915050565b60006020828403121561229c5761229b611f2d565b5b60006122aa84828501611f80565b91505092915050565b6000602082840312156122c9576122c8611f2d565b5b60006122d784828501611fb6565b91505092915050565b6122e981611f57565b82525050565b600060208201905061230460008301846122e0565b92915050565b6000806040838503121561232157612320611f2d565b5b600061232f85828601611f80565b925050602061234085828601611f80565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156123d0578086048111156123ac576123ab61234a565b5b60018516156123bb5780820291505b80810290506123c985612379565b9450612390565b94509492505050565b6000826123e957600190506124a5565b816123f757600090506124a5565b816001811461240d576002811461241757612446565b60019150506124a5565b60ff8411156124295761242861234a565b5b8360020a9150848211156124405761243f61234a565b5b506124a5565b5060208310610133831016604e8410600b841016171561247b5782820a9050838111156124765761247561234a565b5b6124a5565b6124888484846001612386565b9250905081840481111561249f5761249e61234a565b5b81810290505b9392505050565b60006124b782611f95565b91506124c2836120be565b92506124ef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846123d9565b905092915050565b600061250282611f95565b915061250d83611f95565b925082820261251b81611f95565b915082820484148315176125325761253161234a565b5b5092915050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061256f601d83611e7c565b915061257a82612539565b602082019050919050565b6000602082019050818103600083015261259e81612562565b9050919050565b60006125b082611f95565b91506125bb83611f95565b92508282039050818111156125d3576125d261234a565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061260f602083611e7c565b915061261a826125d9565b602082019050919050565b6000602082019050818103600083015261263e81612602565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061267f82611f95565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036126b1576126b061234a565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006126f682611f95565b915061270183611f95565b925082612711576127106126bc565b5b828204905092915050565b7f4e6f20746f6b656e7320746f2073776170000000000000000000000000000000600082015250565b6000612752601183611e7c565b915061275d8261271c565b602082019050919050565b6000602082019050818103600083015261278181612745565b9050919050565b7f4e6f20657468657220746f2073656e6400000000000000000000000000000000600082015250565b60006127be601083611e7c565b91506127c982612788565b602082019050919050565b600060208201905081810360008301526127ed816127b1565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b600061282a601783611e7c565b9150612835826127f4565b602082019050919050565b600060208201905081810360008301526128598161281d565b9050919050565b6000819050919050565b6000819050919050565b600061288f61288a61288584612860565b61286a565b611f95565b9050919050565b61289f81612874565b82525050565b600060c0820190506128ba60008301896122e0565b6128c76020830188612041565b6128d46040830187612896565b6128e16060830186612896565b6128ee60808301856122e0565b6128fb60a0830184612041565b979650505050505050565b60008151905061291581611f9f565b92915050565b60008060006060848603121561293457612933611f2d565b5b600061294286828701612906565b935050602061295386828701612906565b925050604061296486828701612906565b9150509250925092565b600060408201905061298360008301856122e0565b6129906020830184612041565b9392505050565b6129a08161200b565b81146129ab57600080fd5b50565b6000815190506129bd81612997565b92915050565b6000602082840312156129d9576129d8611f2d565b5b60006129e7848285016129ae565b91505092915050565b7f45524332303a20617070726f766520746f2f66726f6d20746865207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b6000612a4c602783611e7c565b9150612a57826129f0565b604082019050919050565b60006020820190508181036000830152612a7b81612a3f565b9050919050565b7f45524332303a207472616e736665722066726f6d2f746f20746865207a65726f60008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b6000612ade602883611e7c565b9150612ae982612a82565b604082019050919050565b60006020820190508181036000830152612b0d81612ad1565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612b70602983611e7c565b9150612b7b82612b14565b604082019050919050565b60006020820190508181036000830152612b9f81612b63565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612c02602683611e7c565b9150612c0d82612ba6565b604082019050919050565b60006020820190508181036000830152612c3181612bf5565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b6000612c6e601983611e7c565b9150612c7982612c38565b602082019050919050565b60006020820190508181036000830152612c9d81612c61565b9050919050565b6000612caf82611f95565b9150612cba83611f95565b9250828201905080821115612cd257612cd161234a565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000612d0e601a83611e7c565b9150612d1982612cd8565b602082019050919050565b60006020820190508181036000830152612d3d81612d01565b9050919050565b600081519050612d5381611f69565b92915050565b600060208284031215612d6f57612d6e611f2d565b5b6000612d7d84828501612d44565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612dbb81611f57565b82525050565b6000612dcd8383612db2565b60208301905092915050565b6000602082019050919050565b6000612df182612d86565b612dfb8185612d91565b9350612e0683612da2565b8060005b83811015612e37578151612e1e8882612dc1565b9750612e2983612dd9565b925050600181019050612e0a565b5085935050505092915050565b600060a082019050612e596000830188612041565b612e666020830187612896565b8181036040830152612e788186612de6565b9050612e8760608301856122e0565b612e946080830184612041565b969550505050505056fea26469706673582212202f53f2dca4951a071a37a2700df470fe6e9213cf2bb4e47e6a37cfd998e7f60d64736f6c63430008130033

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

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000005000000000000000000000000b4470bdf9cfff6c84657792602de7a55899f2145000000000000000000000000e62305eeb957d66a3039c6d6f378be9fb5046aa000000000000000000000000069c3fc52af21b818759f7dbb1f7a5b1ce4e0244000000000000000000000000096427d7d95d4480020039a607f5eba7dc5e271e6000000000000000000000000def4de21a878fef9a166256969d1fbeeb02635b4

-----Decoded View---------------
Arg [0] : swapRouterAddr (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : pools (address[]): 0xB4470Bdf9cFfF6C84657792602DE7A55899f2145,0xE62305EeB957d66a3039c6D6f378Be9Fb5046aA0,0x69c3fc52af21B818759F7DBB1F7A5b1cE4E02440,0x96427D7d95d4480020039A607F5eBA7DC5E271e6,0xdEF4dE21a878FEF9A166256969D1fbEEb02635b4

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [3] : 000000000000000000000000b4470bdf9cfff6c84657792602de7a55899f2145
Arg [4] : 000000000000000000000000e62305eeb957d66a3039c6d6f378be9fb5046aa0
Arg [5] : 00000000000000000000000069c3fc52af21b818759f7dbb1f7a5b1ce4e02440
Arg [6] : 00000000000000000000000096427d7d95d4480020039a607f5eba7dc5e271e6
Arg [7] : 000000000000000000000000def4de21a878fef9a166256969d1fbeeb02635b4


Deployed Bytecode Sourcemap

2539:9271:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4665:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5585:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3566:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4942:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5779:536;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4851:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10474:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10652:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5045:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1570:148;;;;;;;;;;;;;:::i;:::-;;11387:420;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3377:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1356:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3438:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4756:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5209:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3501:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10748:523;;;;;;;;;;;;;:::i;:::-;;10061:405;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5409:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11279:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4665:83;4702:13;4735:5;;;;;;;;;;;;;;;;;4728:12;;4665:83;:::o;5585:186::-;5685:4;5702:39;5711:12;:10;:12::i;:::-;5725:7;5734:6;5702:8;:39::i;:::-;5759:4;5752:11;;5585:186;;;;:::o;3566:53::-;;;;:::o;4942:95::-;4995:7;3190:1;3244:2;:15;;;;:::i;:::-;3233:8;:26;;;;:::i;:::-;5015:14;;4942:95;:::o;5779:536::-;5911:4;5928:15;5946:12;:10;:12::i;:::-;5928:30;;5969:24;5996:26;6006:6;6014:7;5996:9;:26::i;:::-;5969:53;;6061:6;6041:16;:26;;6033:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6114:36;6124:6;6132:9;6143:6;6114:9;:36::i;:::-;6161:124;6184:6;6205:12;:10;:12::i;:::-;6268:6;6232:11;:19;6244:6;6232:19;;;;;;;;;;;;;;;:33;6252:12;:10;:12::i;:::-;6232:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;6161:8;:124::i;:::-;6303:4;6296:11;;;;5779:536;;;;;:::o;4851:83::-;4892:5;3190:1;4910:16;;4851:83;:::o;10474:170::-;1493:12;:10;:12::i;:::-;1483:22;;:6;;;;;;;;;;:22;;;1475:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10551:6:::1;10546:91;10567:6;:13;10563:1;:17;10546:91;;;10620:5;10602:4;:15;10607:6;10614:1;10607:9;;;;;;;;:::i;:::-;;;;;;;;10602:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;10582:3;;;;;:::i;:::-;;;;10546:91;;;;10474:170:::0;:::o;10652:88::-;10701:4;10725;:7;10730:1;10725:7;;;;;;;;;;;;;;;;;;;;;;;;;10718:14;;10652:88;;;:::o;5045:119::-;5111:7;5138:9;:18;5148:7;5138:18;;;;;;;;;;;;;;;;5131:25;;5045:119;;;:::o;1570:148::-;1493:12;:10;:12::i;:::-;1483:22;;:6;;;;;;;;;;:22;;;1475:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1677:1:::1;1640:40;;1661:6;::::0;::::1;;;;;;;;1640:40;;;;;;;;;;;;1708:1;1691:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1570:148::o:0;11387:420::-;11448:20;11471:24;11489:4;11471:9;:24::i;:::-;11448:47;;11508:18;11558:3;11545:9;11530:12;:24;;;;:::i;:::-;11529:32;;;;:::i;:::-;11508:53;;11593:1;11580:10;:14;11572:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;11627:28;11644:10;11627:16;:28::i;:::-;11668:18;11689:21;11668:42;;11742:1;11729:10;:14;11721:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;11775:24;11788:10;11775:12;:24::i;:::-;11437:370;;;11387:420;:::o;3377:54::-;;;;:::o;1356:79::-;1394:7;1421:6;;;;;;;;;;;1414:13;;1356:79;:::o;3438:56::-;;;;:::o;4756:87::-;4795:13;4828:7;;;;;;;;;;;;;;;;;4821:14;;4756:87;:::o;5209:192::-;5312:4;5329:42;5339:12;:10;:12::i;:::-;5353:9;5364:6;5329:9;:42::i;:::-;5389:4;5382:11;;5209:192;;;;:::o;3501:58::-;;;;:::o;10748:523::-;1493:12;:10;:12::i;:::-;1483:22;;:6;;;;;;;;;;:22;;;1475:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10810:11:::1;;;;;;;;;;;10809:12;10801:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;10860:58;10877:4;10892:15;;;;;;;;;;;3190:1;3244:2;:15;;;;:::i;:::-;3233:8;:26;;;;:::i;:::-;10860:8;:58::i;:::-;10929:15;;;;;;;;;;;:31;;;10968:21;11013:4;11033:24;11051:4;11033:9;:24::i;:::-;11072:1;11088::::0;11104:7:::1;:5;:7::i;:::-;11126:15;10929:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11177:4;11163:11;;:18;;;;;;;;;;;;;;;;;;11199:13;;;;;;;;;;;11192:29;;;11230:15;;;;;;;;;;;11248:14;11192:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10748:523::o:0;10061:405::-;1493:12;:10;:12::i;:::-;1483:22;;:6;;;;;;;;;;:22;;;1475:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10137:6:::1;10132:327;10153:5;:12;10149:1;:16;10132:327;;;10225:13;;;;;;;;;;;10213:25;;:5;10219:1;10213:8;;;;;;;;:::i;:::-;;;;;;;;:25;;;;:86;;;;;10283:15;;;;;;;;;;;10263:36;;:5;10269:1;10263:8;;;;;;;;:::i;:::-;;;;;;;;:36;;;;10213:86;:136;;;;;10344:4;10324:25;;:5;10330:1;10324:8;;;;;;;;:::i;:::-;;;;;;;;:25;;;;10213:136;:183;;;;;10386:10;;;;;;;;;;;10374:22;;:5;10380:1;10374:8;;;;;;;;:::i;:::-;;;;;;;;:22;;;;10213:183;10187:224;;;::::0;::::1;;10443:4;10426;:14;10431:5;10437:1;10431:8;;;;;;;;:::i;:::-;;;;;;;;10426:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;10167:3;;;;;:::i;:::-;;;;10132:327;;;;10061:405:::0;:::o;5409:168::-;5515:7;5542:11;:18;5554:5;5542:18;;;;;;;;;;;;;;;:27;5561:7;5542:27;;;;;;;;;;;;;;;;5535:34;;5409:168;;;;:::o;11279:100::-;11331:7;11358:13;;;;;;;;;;;11351:20;;11279:100;:::o;213:98::-;266:7;293:10;286:17;;213:98;:::o;6323:321::-;6447:1;6430:19;;:5;:19;;;;:44;;;;;6472:1;6453:21;;:7;:21;;;;6430:44;6408:133;;;;;;;;;;;;:::i;:::-;;;;;;;;;6582:6;6552:11;:18;6564:5;6552:18;;;;;;;;;;;;;;;:27;6571:7;6552:27;;;;;;;;;;;;;;;:36;;;;6620:7;6604:32;;6613:5;6604:32;;;6629:6;6604:32;;;;;;:::i;:::-;;;;;;;;6323:321;;;:::o;6652:2695::-;6770:1;6754:18;;:4;:18;;;;:38;;;;;6790:1;6776:16;;:2;:16;;;;6754:38;6732:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;6888:1;6879:6;:10;6871:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;6987:6;6968:15;6978:4;6968:9;:15::i;:::-;:25;;6946:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;7070:17;7116:7;:5;:7::i;:::-;7108:15;;:4;:15;;;;:32;;;;;7133:7;:5;:7::i;:::-;7127:13;;:2;:13;;;;7108:32;7104:1885;;;7166:4;:10;7171:4;7166:10;;;;;;;;;;;;;;;;;;;;;;;;;7165:11;7157:20;;;;;;7224:13;;;;;;;;;;;7216:21;;:4;:21;;;:72;;;;;7272:15;;;;;;;;;;;7258:30;;:2;:30;;;;7216:72;:116;;;;;7310:18;:22;7329:2;7310:22;;;;;;;;;;;;;;;;;;;;;;;;;7309:23;7216:116;7194:751;;;7385:12;;7375:6;:22;;7367:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;7723:3;7560:15;;7548:9;;:27;7547:124;;7657:14;;7547:124;;;7612:9;;7547:124;7482:6;:216;;;;:::i;:::-;7481:245;;;;:::i;:::-;7448:278;;7815:14;;7802:9;7793:6;7777:13;7787:2;7777:9;:13::i;:::-;:22;;;;:::i;:::-;:34;;;;:::i;:::-;:52;;7747:152;;;;;;;;;;;;:::i;:::-;;;;;;;;;7918:9;;:11;;;;;;;;;:::i;:::-;;;;;;7194:751;7971:13;;;;;;;;;;;7965:19;;:2;:19;;;:44;;;;;8004:4;7988:21;;:4;:21;;;;7965:44;7961:365;;;8307:3;8142:16;;8130:9;;:28;8129:126;;8240:15;;8129:126;;;8195:9;;8129:126;8064:6;:218;;;;:::i;:::-;8063:247;;;;:::i;:::-;8030:280;;7961:365;8342:28;8373:24;8391:4;8373:9;:24::i;:::-;8342:55;;8435:6;;;;;;;;;;;8434:7;:47;;;;;8468:13;;;;;;;;;;;8462:19;;:2;:19;;;8434:47;:79;;;;;8502:11;;;;;;;;;;;8434:79;:140;;;;;8557:17;;8534:20;:40;8434:140;:191;;;;;8607:18;;8595:9;;:30;8434:191;8412:566;;;8660:109;8699:51;8703:6;8711:38;8715:20;8737:11;;8711:3;:38::i;:::-;8699:3;:51::i;:::-;8660:16;:109::i;:::-;8788:26;8817:21;8788:50;;8882:1;8861:18;:22;8857:106;;;8908:35;8921:21;8908:12;:35::i;:::-;8857:106;8641:337;8412:566;7142:1847;7104:1885;9037:6;9019:9;:15;9029:4;9019:15;;;;;;;;;;;;;;;;:24;;;;:::i;:::-;9001:9;:15;9011:4;9001:15;;;;;;;;;;;;;;;:42;;;;9096:9;9087:6;:18;;;;:::i;:::-;9070:9;:13;9080:2;9070:13;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;9054:9;:13;9064:2;9054:13;;;;;;;;;;;;;;;:52;;;;9137:2;9122:38;;9131:4;9122:38;;;9150:9;9141:6;:18;;;;:::i;:::-;9122:38;;;;;;:::i;:::-;;;;;;;;9187:1;9175:9;:13;9171:169;;;9259:9;9232;:24;9250:4;9232:24;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;9205:9;:24;9223:4;9205:24;;;;;;;;;;;;;;;:63;;;;9311:4;9288:40;;9297:4;9288:40;;;9318:9;9288:40;;;;;;:::i;:::-;;;;;;;;9171:169;6721:2626;6652:2695;;;:::o;9470:483::-;3863:4;3854:6;;:13;;;;;;;;;;;;;;;;;;9548:21:::1;9586:1;9572:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9548:40;;9617:4;9599;9604:1;9599:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9643:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9633:4;9638:1;9633:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;9676:62;9693:4;9708:15;;;;;;;;;;;9726:11;9676:8;:62::i;:::-;9749:15;;;;;;;;;;;:66;;;9830:11;9856:1;9872:4;9899;9919:15;9749:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9537:416;3899:5:::0;3890:6;;:14;;;;;;;;;;;;;;;;;;9470:483;:::o;9961:92::-;10018:10;;;;;;;;;;;:19;;:27;10038:6;10018:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9961:92;:::o;9355:107::-;9412:7;9444:1;9440;:5;9439:15;;9453:1;9439:15;;;9449:1;9439:15;9432:22;;9355:107;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:117::-;4962:1;4959;4952:12;4976:180;5024:77;5021:1;5014:88;5121:4;5118:1;5111:15;5145:4;5142:1;5135:15;5162:281;5245:27;5267:4;5245:27;:::i;:::-;5237:6;5233:40;5375:6;5363:10;5360:22;5339:18;5327:10;5324:34;5321:62;5318:88;;;5386:18;;:::i;:::-;5318:88;5426:10;5422:2;5415:22;5205:238;5162:281;;:::o;5449:129::-;5483:6;5510:20;;:::i;:::-;5500:30;;5539:33;5567:4;5559:6;5539:33;:::i;:::-;5449:129;;;:::o;5584:311::-;5661:4;5751:18;5743:6;5740:30;5737:56;;;5773:18;;:::i;:::-;5737:56;5823:4;5815:6;5811:17;5803:25;;5883:4;5877;5873:15;5865:23;;5584:311;;;:::o;5901:117::-;6010:1;6007;6000:12;6041:710;6137:5;6162:81;6178:64;6235:6;6178:64;:::i;:::-;6162:81;:::i;:::-;6153:90;;6263:5;6292:6;6285:5;6278:21;6326:4;6319:5;6315:16;6308:23;;6379:4;6371:6;6367:17;6359:6;6355:30;6408:3;6400:6;6397:15;6394:122;;;6427:79;;:::i;:::-;6394:122;6542:6;6525:220;6559:6;6554:3;6551:15;6525:220;;;6634:3;6663:37;6696:3;6684:10;6663:37;:::i;:::-;6658:3;6651:50;6730:4;6725:3;6721:14;6714:21;;6601:144;6585:4;6580:3;6576:14;6569:21;;6525:220;;;6529:21;6143:608;;6041:710;;;;;:::o;6774:370::-;6845:5;6894:3;6887:4;6879:6;6875:17;6871:27;6861:122;;6902:79;;:::i;:::-;6861:122;7019:6;7006:20;7044:94;7134:3;7126:6;7119:4;7111:6;7107:17;7044:94;:::i;:::-;7035:103;;6851:293;6774:370;;;;:::o;7150:539::-;7234:6;7283:2;7271:9;7262:7;7258:23;7254:32;7251:119;;;7289:79;;:::i;:::-;7251:119;7437:1;7426:9;7422:17;7409:31;7467:18;7459:6;7456:30;7453:117;;;7489:79;;:::i;:::-;7453:117;7594:78;7664:7;7655:6;7644:9;7640:22;7594:78;:::i;:::-;7584:88;;7380:302;7150:539;;;;:::o;7695:329::-;7754:6;7803:2;7791:9;7782:7;7778:23;7774:32;7771:119;;;7809:79;;:::i;:::-;7771:119;7929:1;7954:53;7999:7;7990:6;7979:9;7975:22;7954:53;:::i;:::-;7944:63;;7900:117;7695:329;;;;:::o;8030:::-;8089:6;8138:2;8126:9;8117:7;8113:23;8109:32;8106:119;;;8144:79;;:::i;:::-;8106:119;8264:1;8289:53;8334:7;8325:6;8314:9;8310:22;8289:53;:::i;:::-;8279:63;;8235:117;8030:329;;;;:::o;8365:118::-;8452:24;8470:5;8452:24;:::i;:::-;8447:3;8440:37;8365:118;;:::o;8489:222::-;8582:4;8620:2;8609:9;8605:18;8597:26;;8633:71;8701:1;8690:9;8686:17;8677:6;8633:71;:::i;:::-;8489:222;;;;:::o;8717:474::-;8785:6;8793;8842:2;8830:9;8821:7;8817:23;8813:32;8810:119;;;8848:79;;:::i;:::-;8810:119;8968:1;8993:53;9038:7;9029:6;9018:9;9014:22;8993:53;:::i;:::-;8983:63;;8939:117;9095:2;9121:53;9166:7;9157:6;9146:9;9142:22;9121:53;:::i;:::-;9111:63;;9066:118;8717:474;;;;;:::o;9197:180::-;9245:77;9242:1;9235:88;9342:4;9339:1;9332:15;9366:4;9363:1;9356:15;9383:102;9425:8;9472:5;9469:1;9465:13;9444:34;;9383:102;;;:::o;9491:848::-;9552:5;9559:4;9583:6;9574:15;;9607:5;9598:14;;9621:712;9642:1;9632:8;9629:15;9621:712;;;9737:4;9732:3;9728:14;9722:4;9719:24;9716:50;;;9746:18;;:::i;:::-;9716:50;9796:1;9786:8;9782:16;9779:451;;;10211:4;10204:5;10200:16;10191:25;;9779:451;10261:4;10255;10251:15;10243:23;;10291:32;10314:8;10291:32;:::i;:::-;10279:44;;9621:712;;;9491:848;;;;;;;:::o;10345:1073::-;10399:5;10590:8;10580:40;;10611:1;10602:10;;10613:5;;10580:40;10639:4;10629:36;;10656:1;10647:10;;10658:5;;10629:36;10725:4;10773:1;10768:27;;;;10809:1;10804:191;;;;10718:277;;10768:27;10786:1;10777:10;;10788:5;;;10804:191;10849:3;10839:8;10836:17;10833:43;;;10856:18;;:::i;:::-;10833:43;10905:8;10902:1;10898:16;10889:25;;10940:3;10933:5;10930:14;10927:40;;;10947:18;;:::i;:::-;10927:40;10980:5;;;10718:277;;11104:2;11094:8;11091:16;11085:3;11079:4;11076:13;11072:36;11054:2;11044:8;11041:16;11036:2;11030:4;11027:12;11023:35;11007:111;11004:246;;;11160:8;11154:4;11150:19;11141:28;;11195:3;11188:5;11185:14;11182:40;;;11202:18;;:::i;:::-;11182:40;11235:5;;11004:246;11275:42;11313:3;11303:8;11297:4;11294:1;11275:42;:::i;:::-;11260:57;;;;11349:4;11344:3;11340:14;11333:5;11330:25;11327:51;;;11358:18;;:::i;:::-;11327:51;11407:4;11400:5;11396:16;11387:25;;10345:1073;;;;;;:::o;11424:281::-;11482:5;11506:23;11524:4;11506:23;:::i;:::-;11498:31;;11550:25;11566:8;11550:25;:::i;:::-;11538:37;;11594:104;11631:66;11621:8;11615:4;11594:104;:::i;:::-;11585:113;;11424:281;;;;:::o;11711:410::-;11751:7;11774:20;11792:1;11774:20;:::i;:::-;11769:25;;11808:20;11826:1;11808:20;:::i;:::-;11803:25;;11863:1;11860;11856:9;11885:30;11903:11;11885:30;:::i;:::-;11874:41;;12064:1;12055:7;12051:15;12048:1;12045:22;12025:1;12018:9;11998:83;11975:139;;12094:18;;:::i;:::-;11975:139;11759:362;11711:410;;;;:::o;12127:179::-;12267:31;12263:1;12255:6;12251:14;12244:55;12127:179;:::o;12312:366::-;12454:3;12475:67;12539:2;12534:3;12475:67;:::i;:::-;12468:74;;12551:93;12640:3;12551:93;:::i;:::-;12669:2;12664:3;12660:12;12653:19;;12312:366;;;:::o;12684:419::-;12850:4;12888:2;12877:9;12873:18;12865:26;;12937:9;12931:4;12927:20;12923:1;12912:9;12908:17;12901:47;12965:131;13091:4;12965:131;:::i;:::-;12957:139;;12684:419;;;:::o;13109:194::-;13149:4;13169:20;13187:1;13169:20;:::i;:::-;13164:25;;13203:20;13221:1;13203:20;:::i;:::-;13198:25;;13247:1;13244;13240:9;13232:17;;13271:1;13265:4;13262:11;13259:37;;;13276:18;;:::i;:::-;13259:37;13109:194;;;;:::o;13309:182::-;13449:34;13445:1;13437:6;13433:14;13426:58;13309:182;:::o;13497:366::-;13639:3;13660:67;13724:2;13719:3;13660:67;:::i;:::-;13653:74;;13736:93;13825:3;13736:93;:::i;:::-;13854:2;13849:3;13845:12;13838:19;;13497:366;;;:::o;13869:419::-;14035:4;14073:2;14062:9;14058:18;14050:26;;14122:9;14116:4;14112:20;14108:1;14097:9;14093:17;14086:47;14150:131;14276:4;14150:131;:::i;:::-;14142:139;;13869:419;;;:::o;14294:180::-;14342:77;14339:1;14332:88;14439:4;14436:1;14429:15;14463:4;14460:1;14453:15;14480:233;14519:3;14542:24;14560:5;14542:24;:::i;:::-;14533:33;;14588:66;14581:5;14578:77;14575:103;;14658:18;;:::i;:::-;14575:103;14705:1;14698:5;14694:13;14687:20;;14480:233;;;:::o;14719:180::-;14767:77;14764:1;14757:88;14864:4;14861:1;14854:15;14888:4;14885:1;14878:15;14905:185;14945:1;14962:20;14980:1;14962:20;:::i;:::-;14957:25;;14996:20;15014:1;14996:20;:::i;:::-;14991:25;;15035:1;15025:35;;15040:18;;:::i;:::-;15025:35;15082:1;15079;15075:9;15070:14;;14905:185;;;;:::o;15096:167::-;15236:19;15232:1;15224:6;15220:14;15213:43;15096:167;:::o;15269:366::-;15411:3;15432:67;15496:2;15491:3;15432:67;:::i;:::-;15425:74;;15508:93;15597:3;15508:93;:::i;:::-;15626:2;15621:3;15617:12;15610:19;;15269:366;;;:::o;15641:419::-;15807:4;15845:2;15834:9;15830:18;15822:26;;15894:9;15888:4;15884:20;15880:1;15869:9;15865:17;15858:47;15922:131;16048:4;15922:131;:::i;:::-;15914:139;;15641:419;;;:::o;16066:166::-;16206:18;16202:1;16194:6;16190:14;16183:42;16066:166;:::o;16238:366::-;16380:3;16401:67;16465:2;16460:3;16401:67;:::i;:::-;16394:74;;16477:93;16566:3;16477:93;:::i;:::-;16595:2;16590:3;16586:12;16579:19;;16238:366;;;:::o;16610:419::-;16776:4;16814:2;16803:9;16799:18;16791:26;;16863:9;16857:4;16853:20;16849:1;16838:9;16834:17;16827:47;16891:131;17017:4;16891:131;:::i;:::-;16883:139;;16610:419;;;:::o;17035:173::-;17175:25;17171:1;17163:6;17159:14;17152:49;17035:173;:::o;17214:366::-;17356:3;17377:67;17441:2;17436:3;17377:67;:::i;:::-;17370:74;;17453:93;17542:3;17453:93;:::i;:::-;17571:2;17566:3;17562:12;17555:19;;17214:366;;;:::o;17586:419::-;17752:4;17790:2;17779:9;17775:18;17767:26;;17839:9;17833:4;17829:20;17825:1;17814:9;17810:17;17803:47;17867:131;17993:4;17867:131;:::i;:::-;17859:139;;17586:419;;;:::o;18011:85::-;18056:7;18085:5;18074:16;;18011:85;;;:::o;18102:60::-;18130:3;18151:5;18144:12;;18102:60;;;:::o;18168:158::-;18226:9;18259:61;18277:42;18286:32;18312:5;18286:32;:::i;:::-;18277:42;:::i;:::-;18259:61;:::i;:::-;18246:74;;18168:158;;;:::o;18332:147::-;18427:45;18466:5;18427:45;:::i;:::-;18422:3;18415:58;18332:147;;:::o;18485:807::-;18734:4;18772:3;18761:9;18757:19;18749:27;;18786:71;18854:1;18843:9;18839:17;18830:6;18786:71;:::i;:::-;18867:72;18935:2;18924:9;18920:18;18911:6;18867:72;:::i;:::-;18949:80;19025:2;19014:9;19010:18;19001:6;18949:80;:::i;:::-;19039;19115:2;19104:9;19100:18;19091:6;19039:80;:::i;:::-;19129:73;19197:3;19186:9;19182:19;19173:6;19129:73;:::i;:::-;19212;19280:3;19269:9;19265:19;19256:6;19212:73;:::i;:::-;18485:807;;;;;;;;;:::o;19298:143::-;19355:5;19386:6;19380:13;19371:22;;19402:33;19429:5;19402:33;:::i;:::-;19298:143;;;;:::o;19447:663::-;19535:6;19543;19551;19600:2;19588:9;19579:7;19575:23;19571:32;19568:119;;;19606:79;;:::i;:::-;19568:119;19726:1;19751:64;19807:7;19798:6;19787:9;19783:22;19751:64;:::i;:::-;19741:74;;19697:128;19864:2;19890:64;19946:7;19937:6;19926:9;19922:22;19890:64;:::i;:::-;19880:74;;19835:129;20003:2;20029:64;20085:7;20076:6;20065:9;20061:22;20029:64;:::i;:::-;20019:74;;19974:129;19447:663;;;;;:::o;20116:332::-;20237:4;20275:2;20264:9;20260:18;20252:26;;20288:71;20356:1;20345:9;20341:17;20332:6;20288:71;:::i;:::-;20369:72;20437:2;20426:9;20422:18;20413:6;20369:72;:::i;:::-;20116:332;;;;;:::o;20454:116::-;20524:21;20539:5;20524:21;:::i;:::-;20517:5;20514:32;20504:60;;20560:1;20557;20550:12;20504:60;20454:116;:::o;20576:137::-;20630:5;20661:6;20655:13;20646:22;;20677:30;20701:5;20677:30;:::i;:::-;20576:137;;;;:::o;20719:345::-;20786:6;20835:2;20823:9;20814:7;20810:23;20806:32;20803:119;;;20841:79;;:::i;:::-;20803:119;20961:1;20986:61;21039:7;21030:6;21019:9;21015:22;20986:61;:::i;:::-;20976:71;;20932:125;20719:345;;;;:::o;21070:226::-;21210:34;21206:1;21198:6;21194:14;21187:58;21279:9;21274:2;21266:6;21262:15;21255:34;21070:226;:::o;21302:366::-;21444:3;21465:67;21529:2;21524:3;21465:67;:::i;:::-;21458:74;;21541:93;21630:3;21541:93;:::i;:::-;21659:2;21654:3;21650:12;21643:19;;21302:366;;;:::o;21674:419::-;21840:4;21878:2;21867:9;21863:18;21855:26;;21927:9;21921:4;21917:20;21913:1;21902:9;21898:17;21891:47;21955:131;22081:4;21955:131;:::i;:::-;21947:139;;21674:419;;;:::o;22099:227::-;22239:34;22235:1;22227:6;22223:14;22216:58;22308:10;22303:2;22295:6;22291:15;22284:35;22099:227;:::o;22332:366::-;22474:3;22495:67;22559:2;22554:3;22495:67;:::i;:::-;22488:74;;22571:93;22660:3;22571:93;:::i;:::-;22689:2;22684:3;22680:12;22673:19;;22332:366;;;:::o;22704:419::-;22870:4;22908:2;22897:9;22893:18;22885:26;;22957:9;22951:4;22947:20;22943:1;22932:9;22928:17;22921:47;22985:131;23111:4;22985:131;:::i;:::-;22977:139;;22704:419;;;:::o;23129:228::-;23269:34;23265:1;23257:6;23253:14;23246:58;23338:11;23333:2;23325:6;23321:15;23314:36;23129:228;:::o;23363:366::-;23505:3;23526:67;23590:2;23585:3;23526:67;:::i;:::-;23519:74;;23602:93;23691:3;23602:93;:::i;:::-;23720:2;23715:3;23711:12;23704:19;;23363:366;;;:::o;23735:419::-;23901:4;23939:2;23928:9;23924:18;23916:26;;23988:9;23982:4;23978:20;23974:1;23963:9;23959:17;23952:47;24016:131;24142:4;24016:131;:::i;:::-;24008:139;;23735:419;;;:::o;24160:225::-;24300:34;24296:1;24288:6;24284:14;24277:58;24369:8;24364:2;24356:6;24352:15;24345:33;24160:225;:::o;24391:366::-;24533:3;24554:67;24618:2;24613:3;24554:67;:::i;:::-;24547:74;;24630:93;24719:3;24630:93;:::i;:::-;24748:2;24743:3;24739:12;24732:19;;24391:366;;;:::o;24763:419::-;24929:4;24967:2;24956:9;24952:18;24944:26;;25016:9;25010:4;25006:20;25002:1;24991:9;24987:17;24980:47;25044:131;25170:4;25044:131;:::i;:::-;25036:139;;24763:419;;;:::o;25188:175::-;25328:27;25324:1;25316:6;25312:14;25305:51;25188:175;:::o;25369:366::-;25511:3;25532:67;25596:2;25591:3;25532:67;:::i;:::-;25525:74;;25608:93;25697:3;25608:93;:::i;:::-;25726:2;25721:3;25717:12;25710:19;;25369:366;;;:::o;25741:419::-;25907:4;25945:2;25934:9;25930:18;25922:26;;25994:9;25988:4;25984:20;25980:1;25969:9;25965:17;25958:47;26022:131;26148:4;26022:131;:::i;:::-;26014:139;;25741:419;;;:::o;26166:191::-;26206:3;26225:20;26243:1;26225:20;:::i;:::-;26220:25;;26259:20;26277:1;26259:20;:::i;:::-;26254:25;;26302:1;26299;26295:9;26288:16;;26323:3;26320:1;26317:10;26314:36;;;26330:18;;:::i;:::-;26314:36;26166:191;;;;:::o;26363:176::-;26503:28;26499:1;26491:6;26487:14;26480:52;26363:176;:::o;26545:366::-;26687:3;26708:67;26772:2;26767:3;26708:67;:::i;:::-;26701:74;;26784:93;26873:3;26784:93;:::i;:::-;26902:2;26897:3;26893:12;26886:19;;26545:366;;;:::o;26917:419::-;27083:4;27121:2;27110:9;27106:18;27098:26;;27170:9;27164:4;27160:20;27156:1;27145:9;27141:17;27134:47;27198:131;27324:4;27198:131;:::i;:::-;27190:139;;26917:419;;;:::o;27342:143::-;27399:5;27430:6;27424:13;27415:22;;27446:33;27473:5;27446:33;:::i;:::-;27342:143;;;;:::o;27491:351::-;27561:6;27610:2;27598:9;27589:7;27585:23;27581:32;27578:119;;;27616:79;;:::i;:::-;27578:119;27736:1;27761:64;27817:7;27808:6;27797:9;27793:22;27761:64;:::i;:::-;27751:74;;27707:128;27491:351;;;;:::o;27848:114::-;27915:6;27949:5;27943:12;27933:22;;27848:114;;;:::o;27968:184::-;28067:11;28101:6;28096:3;28089:19;28141:4;28136:3;28132:14;28117:29;;27968:184;;;;:::o;28158:132::-;28225:4;28248:3;28240:11;;28278:4;28273:3;28269:14;28261:22;;28158:132;;;:::o;28296:108::-;28373:24;28391:5;28373:24;:::i;:::-;28368:3;28361:37;28296:108;;:::o;28410:179::-;28479:10;28500:46;28542:3;28534:6;28500:46;:::i;:::-;28578:4;28573:3;28569:14;28555:28;;28410:179;;;;:::o;28595:113::-;28665:4;28697;28692:3;28688:14;28680:22;;28595:113;;;:::o;28744:732::-;28863:3;28892:54;28940:5;28892:54;:::i;:::-;28962:86;29041:6;29036:3;28962:86;:::i;:::-;28955:93;;29072:56;29122:5;29072:56;:::i;:::-;29151:7;29182:1;29167:284;29192:6;29189:1;29186:13;29167:284;;;29268:6;29262:13;29295:63;29354:3;29339:13;29295:63;:::i;:::-;29288:70;;29381:60;29434:6;29381:60;:::i;:::-;29371:70;;29227:224;29214:1;29211;29207:9;29202:14;;29167:284;;;29171:14;29467:3;29460:10;;28868:608;;;28744:732;;;;:::o;29482:831::-;29745:4;29783:3;29772:9;29768:19;29760:27;;29797:71;29865:1;29854:9;29850:17;29841:6;29797:71;:::i;:::-;29878:80;29954:2;29943:9;29939:18;29930:6;29878:80;:::i;:::-;30005:9;29999:4;29995:20;29990:2;29979:9;29975:18;29968:48;30033:108;30136:4;30127:6;30033:108;:::i;:::-;30025:116;;30151:72;30219:2;30208:9;30204:18;30195:6;30151:72;:::i;:::-;30233:73;30301:3;30290:9;30286:19;30277:6;30233:73;:::i;:::-;29482:831;;;;;;;;:::o

Swarm Source

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