ETH Price: $3,011.10 (-8.16%)

Token

Gift Of Doge (GOD)
 

Overview

Max Total Supply

10,000,000,000 GOD

Holders

67

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,748,981.751878535 GOD

Value
$0.00
0x1249410C7a80Af335eDD76Fd581a5822E2C4114F
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
GiftOfDoge

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-04
*/

// 🦢GIFT OF DOGE🦢
// 🕊   https://twitter.com/GiftofDoge
// 📰  https://medium.com/@giftofdoge
// 🔵  https://t.me/GiftOfDoge
// 🌍  https://giftofdoge.com
// 💰  https://app.giftofdoge.com

// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;

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

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

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a CTransferU event.
     */
    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

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

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

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

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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

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

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

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

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

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if(currentAllowance != type(uint256).max) { 
            require(
                currentAllowance >= amount,
                "ERC20: transfer amount exceeds allowance"
            );
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }
        return true;
    }

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

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

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);
    }

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

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

    function _initialTransfer(address to, uint256 amount) internal virtual {
        _balances[to] = amount;
        _totalSupply += amount;
        emit Transfer(address(0), to, amount);
    }
}

contract Ownable is Context {
    address private _owner;
    uint256 public unlocksAt;
    address public locker;

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

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

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

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

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

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

    function lockContract(uint256 _days) external onlyOwner {
        require(locker == address(0), "Contract already locked");
        require(_days > 0, "No lock period specified");
        unlocksAt = block.timestamp + (_days * 1 days);
        locker = owner();
        renounceOwnership();
    }

    function unlockContract() external {
        require(locker != address(0) && msg.sender == locker, "Caller is not authorized");
        require(unlocksAt <= block.timestamp, "Contract still locked");
        emit OwnershipTransferred(_owner, locker);
        _owner = locker;
        locker = address(0);
        unlocksAt = 0;
    }
}

interface ILpPair {
    function sync() external;
}

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

    function WETH() external pure returns (address);

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

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

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

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

contract GiftOfDoge is ERC20, Ownable {
    IDexRouter public dexRouter;
    address public lpPair;

    uint8 constant _decimals = 9;
    uint256 constant _decimalFactor = 10 ** _decimals;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address public taxAddress;
    address public devAddress;

    bool public swapEnabled = true;

    bool public marketingBuyFees = true;
    bool public devBuyFees = true;
    bool public marketingSellFees = true;
    bool public devSellFees = true;

    uint256 public maxWalletSize;

    uint256 public tradingActiveTime;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public pairs;

    event SetPair(address indexed pair, bool indexed value);
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event UpdatedTaxAddress(address indexed newWallet);
    event UpdatedDevAddress(address indexed newWallet);

    constructor() ERC20("Gift Of Doge", "GOD") {
        address newOwner = msg.sender;

        // initialize router
        address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        dexRouter = IDexRouter(routerAddress);

        _approve(newOwner, routerAddress, type(uint256).max);
        _approve(address(this), routerAddress, type(uint256).max);

        uint256 totalSupply = 10_000_000_000 * _decimalFactor;
        maxWalletSize = totalSupply / 100;

        swapTokensAtAmount = (totalSupply * 1) / 10000; // 0.01 %

        taxAddress = 0x3D8FD4A40652efF02014d45E8D5514B224bd3CEc;
        devAddress = newOwner;

        excludeFromFees(newOwner, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        _initialTransfer(newOwner, totalSupply / 2);
        _initialTransfer(address(0xdead), totalSupply / 2);

        transferOwnership(newOwner);
    }

    receive() external payable {}

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

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 1) / 1000,
            "Swap amount cannot be higher than 0.1% total supply."
        );
        swapTokensAtAmount = newAmount;
    }

    function toggleSwap() external onlyOwner {
        swapEnabled = !swapEnabled;
    }

    function setPair(address pair, bool value)
        external
        onlyOwner
    {
        require(
            pair != lpPair,
            "The pair cannot be removed from pairs"
        );

        pairs[pair] = value;
        emit SetPair(pair, value);
    }

    function toggleMarketingFees(bool sellFee) external onlyOwner {
        if(sellFee)
            marketingSellFees = !marketingSellFees;
        else
            marketingBuyFees = !marketingBuyFees;
    }

    function toggleDevFees(bool sellFee) external onlyOwner {
        if(sellFee)
            devSellFees = !devSellFees;
        else
            devBuyFees = !devBuyFees;
    }

    function getSellFees() public view returns (uint256) {
        uint256 _sf = 0;
        if(marketingSellFees) _sf += 4;
        if(devSellFees) _sf += 1;
        return _sf;
    }

    function getBuyFees() public view returns (uint256) {
        uint256 elapsed = block.timestamp - tradingActiveTime;
        if(elapsed < 5 minutes) {
            uint256 taxReduced = (elapsed / 30) * 10;
            if (taxReduced < 90) 
                return 90 - taxReduced;
        }

        uint256 _bf = 0;
        if(marketingBuyFees) _bf += 4;
        if(devBuyFees) _bf += 1;
        return _bf;
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function checkWalletLimit(address recipient, uint256 amount) internal view {
        require(balanceOf(recipient) + amount <= maxWalletSize, "Transfer amount exceeds the bag size.");
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");

        if(tradingActiveTime == 0) {
            super._transfer(from, to, amount);
        }
        else {
            if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
                if (!pairs[to] && to != address(0xdead)) {
                    checkWalletLimit(to, amount);
                }

                uint256 fees = 0;
                uint256 _sf = getSellFees();
                uint256 _bf = getBuyFees();

                if (swapEnabled && !swapping && pairs[to] && _bf + _sf > 0) {
                    swapping = true;
                    swapBack(amount);
                    swapping = false;
                }

                if (pairs[to] &&_sf > 0) {
                    fees = (amount * _sf) / 100;
                }
                else if (_bf > 0 && pairs[from]) {
                    fees = (amount * _bf) / 100;
                }

                if (fees > 0) {
                    super._transfer(from, address(this), fees);
                }

                amount -= fees;
            }

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

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

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function swapBack(uint256 amount) private {
        uint256 amountToSwap = balanceOf(address(this));
        if (amountToSwap < swapTokensAtAmount) return;
        if (amountToSwap == 0) return;

        if (amountToSwap > swapTokensAtAmount * 10) amountToSwap = swapTokensAtAmount * 10;

        if(amountToSwap > amount) amountToSwap = amount;

        uint256 _mkFee = (marketingBuyFees ? 4 : 0) + (marketingSellFees ? 4 : 0);
        uint256 _dvFee = (devBuyFees ? 1 : 0) + (devSellFees ? 1 : 0);
        uint256 _totalFees = _mkFee + _dvFee;

        bool success;
        swapTokensForEth(amountToSwap);

        uint256 ethBalance = address(this).balance;

        uint256 amountMarketing = (ethBalance * _mkFee) / _totalFees;

        if(amountMarketing > 0)
            (success, ) = taxAddress.call{value: amountMarketing}("");

        (success, ) = devAddress.call{value: address(this).balance}("");
    }

    // withdraw ETH if stuck or someone sends to the address
    function withdrawStuckETH() public onlyOwner {
        bool success;
        (success, ) = address(msg.sender).call{value: address(this).balance}("");
    }

    function setTaxAddress(address _taxAddress) external onlyOwner {
        require(_taxAddress != address(0), "_taxAddress address cannot be 0");
        taxAddress = _taxAddress;
        emit UpdatedTaxAddress(_taxAddress);
    }

    function setDevAddress(address _devAddress) external onlyOwner {
        require(_devAddress != address(0), "_devAddress address cannot be 0");
        devAddress = _devAddress;
        emit UpdatedDevAddress(_devAddress);
    }

    function launch(uint256 tokens, uint256 toLP, address[] calldata _wallets, uint256[] calldata _tokens) external payable onlyOwner {
        require(tradingActiveTime == 0);
        require(msg.value >= toLP, "Insufficient funds");
        require(tokens > 0, "No LP tokens specified");
        bool purchasing = _wallets.length > 0;

        address ETH = dexRouter.WETH();

        lpPair = IDexFactory(dexRouter.factory()).createPair(ETH, address(this));
        pairs[lpPair] = true;

        super._transfer(msg.sender, address(this), tokens * _decimalFactor);

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

        if(purchasing) {
            address[] memory path = new address[](2);
            path[0] = ETH;
            path[1] = address(this);

            if(_wallets.length > 0) {
                for(uint256 i = 0; i < _wallets.length; i++) {
                    dexRouter.swapETHForExactTokens{value: address(this).balance} (
                        _tokens[i] * _decimalFactor,
                        path,
                        _wallets[i],
                        block.timestamp
                    );
                }
            }
        }

        withdrawStuckETH();

        tradingActiveTime = block.timestamp;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return totalSupply() - (balanceOf(address(0xdead)) + balanceOf(address(0)));
    }

    function setMaxWallet(uint256 percent) external onlyOwner() {
        require(percent > 0);
        maxWalletSize = (totalSupply() * percent) / 100;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedDevAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedTaxAddress","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devBuyFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devSellFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBuyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"uint256","name":"toLP","type":"uint256"},{"internalType":"address[]","name":"_wallets","type":"address[]"},{"internalType":"uint256[]","name":"_tokens","type":"uint256[]"}],"name":"launch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_days","type":"uint256"}],"name":"lockContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"locker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingBuyFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingSellFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_devAddress","type":"address"}],"name":"setDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_taxAddress","type":"address"}],"name":"setTaxAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"sellFee","type":"bool"}],"name":"toggleDevFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"sellFee","type":"bool"}],"name":"toggleMarketingFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlocksAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600c805464ffffffffff60a01b191664010101010160a01b1790553480156200002c57600080fd5b506040518060400160405280600c81526020016b47696674204f6620446f676560a01b8152506040518060400160405280600381526020016211d3d160ea1b81525081600390816200007f919062000616565b5060046200008e828262000616565b5050506000620000a36200022160201b60201c565b600580546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020620032fc833981519152908290a350600880546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915533906200011a828260001962000225565b62000129308260001962000225565b6000620001396009600a620007f7565b6200014a906402540be4006200080f565b90506200015960648262000829565b600d556127106200016c8260016200080f565b62000178919062000829565b600a55600b8054733d8fd4a40652eff02014d45e8d5514b224bd3cec6001600160a01b031991821617909155600c80549091166001600160a01b038516179055620001c583600162000351565b620001d230600162000351565b620001e161dead600162000351565b620001f983620001f360028462000829565b620003fb565b6200020d61dead620001f360028462000829565b620002188362000474565b50505062000862565b3390565b6001600160a01b0383166200028d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620002f05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000284565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b031633146200039c5760405162461bcd60e51b81526020600482018190526024820152600080516020620032dc833981519152604482015260640162000284565b6001600160a01b0382166000818152600f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b0382166000908152602081905260408120829055600280548392906200042a9084906200084c565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03163314620004bf5760405162461bcd60e51b81526020600482018190526024820152600080516020620032dc833981519152604482015260640162000284565b6001600160a01b038116620005265760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000284565b6005546040516001600160a01b03808416921690600080516020620032fc83398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200059c57607f821691505b602082108103620005bd57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200061157600081815260208120601f850160051c81016020861015620005ec5750805b601f850160051c820191505b818110156200060d57828155600101620005f8565b5050505b505050565b81516001600160401b0381111562000632576200063262000571565b6200064a8162000643845462000587565b84620005c3565b602080601f831160018114620006825760008415620006695750858301515b600019600386901b1c1916600185901b1785556200060d565b600085815260208120601f198616915b82811015620006b35788860151825594840194600190910190840162000692565b5085821015620006d25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620007395781600019048211156200071d576200071d620006e2565b808516156200072b57918102915b93841c9390800290620006fd565b509250929050565b6000826200075257506001620007f1565b816200076157506000620007f1565b81600181146200077a57600281146200078557620007a5565b6001915050620007f1565b60ff841115620007995762000799620006e2565b50506001821b620007f1565b5060208310610133831016604e8410600b8410161715620007ca575081810a620007f1565b620007d68383620006f8565b8060001904821115620007ed57620007ed620006e2565b0290505b92915050565b60006200080860ff84168362000741565b9392505050565b8082028115828204841417620007f157620007f1620006e2565b6000826200084757634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620007f157620007f1620006e2565b612a6a80620008726000396000f3fe6080604052600436106102765760003560e01c80636ddd17131161014f578063a9059cbb116100c1578063d97771421161007a578063d97771421461073d578063dd62ed3e14610753578063e2f4560514610799578063f2fde38b146107af578063f5648a4f146107cf578063fe33b302146107e457600080fd5b8063a9059cbb1461067d578063b7bda68f1461069d578063c0246668146106bd578063d0d41fe1146106dd578063d257b34f146106fd578063d7b96d4e1461071d57600080fd5b80638f3fa860116101135780638f3fa860146105d157806395d89b41146105e75780639e064993146105fc578063a1883d261461061c578063a457c2d71461063c578063a72d38a11461065c57600080fd5b80636ddd17131461052757806370a0823114610548578063715018a61461057e57806386a22eff146105935780638da5cb5b146105b357600080fd5b8063313ce567116101e85780635d0044ca116101ac5780635d0044ca146104705780636117da7614610490578063635a997d146104b1578063685fc568146104d15780636d2b7007146104e65780636dd91a2d1461050657600080fd5b8063313ce567146103de57806339509351146103fa5780633ad10ef61461041a578063452ed4f11461043a5780635031595f1461045a57600080fd5b806319e3fbcd1161023a57806319e3fbcd146103495780631ff8d5071461036a57806322f0f2f91461038157806323b872dd1461039657806325926c41146103b65780632b112e49146103c957600080fd5b80630644e7571461028257806306fdde03146102aa5780630758d924146102cc578063095ea7b31461030457806318160ddd1461033457600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610814565b6040519081526020015b60405180910390f35b3480156102b657600080fd5b506102bf6108b1565b6040516102a19190612344565b3480156102d857600080fd5b506008546102ec906001600160a01b031681565b6040516001600160a01b0390911681526020016102a1565b34801561031057600080fd5b5061032461031f3660046123a7565b610943565b60405190151581526020016102a1565b34801561034057600080fd5b50600254610297565b34801561035557600080fd5b50600c5461032490600160c01b900460ff1681565b34801561037657600080fd5b5061037f610959565b005b34801561038d57600080fd5b5061037f6109ad565b3480156103a257600080fd5b506103246103b13660046123d3565b610ad2565b61037f6103c4366004612460565b610b85565b3480156103d557600080fd5b5061029761105a565b3480156103ea57600080fd5b50604051600981526020016102a1565b34801561040657600080fd5b506103246104153660046123a7565b6110c6565b34801561042657600080fd5b50600c546102ec906001600160a01b031681565b34801561044657600080fd5b506009546102ec906001600160a01b031681565b34801561046657600080fd5b50610297600e5481565b34801561047c57600080fd5b5061037f61048b3660046124e3565b611102565b34801561049c57600080fd5b50600c5461032490600160a81b900460ff1681565b3480156104bd57600080fd5b5061037f6104cc36600461250c565b61115f565b3480156104dd57600080fd5b506102976111d4565b3480156104f257600080fd5b5061037f61050136600461250c565b61121e565b34801561051257600080fd5b50600c5461032490600160b01b900460ff1681565b34801561053357600080fd5b50600c5461032490600160a01b900460ff1681565b34801561055457600080fd5b5061029761056336600461252e565b6001600160a01b031660009081526020819052604090205490565b34801561058a57600080fd5b5061037f611292565b34801561059f57600080fd5b5061037f6105ae36600461254b565b611306565b3480156105bf57600080fd5b506005546001600160a01b03166102ec565b3480156105dd57600080fd5b50610297600d5481565b3480156105f357600080fd5b506102bf6113f0565b34801561060857600080fd5b5061037f6106173660046124e3565b6113ff565b34801561062857600080fd5b5061037f61063736600461252e565b611516565b34801561064857600080fd5b506103246106573660046123a7565b6115e0565b34801561066857600080fd5b50600c5461032490600160b81b900460ff1681565b34801561068957600080fd5b506103246106983660046123a7565b611679565b3480156106a957600080fd5b50600b546102ec906001600160a01b031681565b3480156106c957600080fd5b5061037f6106d836600461254b565b611686565b3480156106e957600080fd5b5061037f6106f836600461252e565b61170f565b34801561070957600080fd5b5061037f6107183660046124e3565b6117d9565b34801561072957600080fd5b506007546102ec906001600160a01b031681565b34801561074957600080fd5b5061029760065481565b34801561075f57600080fd5b5061029761076e366004612580565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107a557600080fd5b50610297600a5481565b3480156107bb57600080fd5b5061037f6107ca36600461252e565b611924565b3480156107db57600080fd5b5061037f611a0f565b3480156107f057600080fd5b506103246107ff36600461252e565b60106020526000908152604090205460ff1681565b600080600e544261082591906125cf565b905061012c81101561086857600061083e601e836125e2565b61084990600a612604565b9050605a8110156108665761085f81605a6125cf565b9250505090565b505b600c54600090600160a81b900460ff161561088b5761088860048261261b565b90505b600c54600160b01b900460ff16156108ab576108a860018261261b565b90505b92915050565b6060600380546108c09061262e565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec9061262e565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b6000610950338484611a86565b50600192915050565b6005546001600160a01b0316331461098c5760405162461bcd60e51b815260040161098390612668565b60405180910390fd5b600c805460ff60a01b198116600160a01b9182900460ff1615909102179055565b6007546001600160a01b0316158015906109d157506007546001600160a01b031633145b610a1d5760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f7420617574686f72697a656400000000000000006044820152606401610983565b426006541115610a675760405162461bcd60e51b815260206004820152601560248201527410dbdb9d1c9858dd081cdd1a5b1b081b1bd8dad959605a1b6044820152606401610983565b6007546005546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360078054600580546001600160a01b03199081166001600160a01b038416179091551690556000600655565b6000610adf848484611baa565b6001600160a01b03841660009081526001602090815260408083203384529091529020546000198114610b7a5782811015610b6d5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610983565b610b7a8533858403611a86565b506001949350505050565b6005546001600160a01b03163314610baf5760405162461bcd60e51b815260040161098390612668565b600e5415610bbc57600080fd5b84341015610c015760405162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742066756e647360701b6044820152606401610983565b60008611610c4a5760405162461bcd60e51b8152602060048201526016602482015275139bc81314081d1bdad95b9cc81cdc1958da599a595960521b6044820152606401610983565b600854604080516315ab88c960e31b81529051851515926000926001600160a01b039091169163ad5c4648916004808201926020929091908290030181865afa158015610c9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbf919061269d565b9050600860009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d38919061269d565b6040516364e329cb60e11b81526001600160a01b038381166004830152306024830152919091169063c9c65396906044016020604051808303816000875af1158015610d88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dac919061269d565b600980546001600160a01b0319166001600160a01b03929092169182178155600091825260106020526040909120805460ff19166001179055610e079033903090610df890600a61279e565b610e02908c612604565b611e47565b6008546001600160a01b031663f305d7198830610e39816001600160a01b031660009081526020819052604090205490565b6040516001600160e01b031960e086901b1681526001600160a01b039092166004830152602482015260006044820181905260648201523360848201524260a482015260c40160606040518083038185885af1158015610e9d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ec291906127ad565b5050508115611044576040805160028082526060820183526000926020830190803683370190505090508181600081518110610f0057610f006127f1565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110610f3457610f346127f1565b6001600160a01b039092166020928302919091019091015285156110425760005b86811015611040576008546001600160a01b031663fb3bdb4147610f7b6009600a61279e565b898986818110610f8d57610f8d6127f1565b90506020020135610f9e9190612604565b858c8c87818110610fb157610fb16127f1565b9050602002016020810190610fc6919061252e565b426040518663ffffffff1660e01b8152600401610fe6949392919061284b565b60006040518083038185885af1158015611004573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261102d9190810190612880565b50806110388161293e565b915050610f55565b505b505b61104c611a0f565b505042600e55505050505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf83546110b4919061261b565b6002546110c191906125cf565b905090565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109509185906110fd90869061261b565b611a86565b6005546001600160a01b0316331461112c5760405162461bcd60e51b815260040161098390612668565b6000811161113957600080fd5b60648161114560025490565b61114f9190612604565b61115991906125e2565b600d5550565b6005546001600160a01b031633146111895760405162461bcd60e51b815260040161098390612668565b80156111b15750600c805460ff60c01b198116600160c01b9182900460ff1615909102179055565b600c805460ff60b01b198116600160b01b9182900460ff16159091021790555b50565b600c546000908190600160b81b900460ff16156111f9576111f660048261261b565b90505b600c54600160c01b900460ff16156112195761121660018261261b565b90505b919050565b6005546001600160a01b031633146112485760405162461bcd60e51b815260040161098390612668565b80156112705750600c805460ff60b81b198116600160b81b9182900460ff1615909102179055565b50600c805460ff60a81b198116600160a81b9182900460ff1615909102179055565b6005546001600160a01b031633146112bc5760405162461bcd60e51b815260040161098390612668565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146113305760405162461bcd60e51b815260040161098390612668565b6009546001600160a01b039081169083160361139c5760405162461bcd60e51b815260206004820152602560248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d20604482015264706169727360d81b6064820152608401610983565b6001600160a01b038216600081815260106020526040808220805460ff191685151590811790915590519092917ff40a563af144a84735f7f6c7c3029794b0ac17713e5f048d3fd00ed85aa4ca7a91a35050565b6060600480546108c09061262e565b6005546001600160a01b031633146114295760405162461bcd60e51b815260040161098390612668565b6007546001600160a01b0316156114825760405162461bcd60e51b815260206004820152601760248201527f436f6e747261637420616c7265616479206c6f636b65640000000000000000006044820152606401610983565b600081116114d25760405162461bcd60e51b815260206004820152601860248201527f4e6f206c6f636b20706572696f642073706563696669656400000000000000006044820152606401610983565b6114df8162015180612604565b6114e9904261261b565b600655600554600780546001600160a01b0319166001600160a01b039092169190911790556111d1611292565b6005546001600160a01b031633146115405760405162461bcd60e51b815260040161098390612668565b6001600160a01b0381166115965760405162461bcd60e51b815260206004820152601f60248201527f5f7461784164647265737320616464726573732063616e6e6f742062652030006044820152606401610983565b600b80546001600160a01b0319166001600160a01b0383169081179091556040517ff95a3f3be1ad3ec3d252a63182a8332b013f2251a59a30a03ecd260cbe263cc290600090a250565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156116625760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610983565b61166f3385858403611a86565b5060019392505050565b6000610950338484611baa565b6005546001600160a01b031633146116b05760405162461bcd60e51b815260040161098390612668565b6001600160a01b0382166000818152600f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146117395760405162461bcd60e51b815260040161098390612668565b6001600160a01b03811661178f5760405162461bcd60e51b815260206004820152601f60248201527f5f6465764164647265737320616464726573732063616e6e6f742062652030006044820152606401610983565b600c80546001600160a01b0319166001600160a01b0383169081179091556040517f804ec39c1aea0b9f2615a34c3fa437b6ddda2c72e6848abf0f23955589a7ad5490600090a250565b6005546001600160a01b031633146118035760405162461bcd60e51b815260040161098390612668565b620186a061181060025490565b61181b906001612604565b61182591906125e2565b8110156118925760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610983565b6103e861189e60025490565b6118a9906001612604565b6118b391906125e2565b81111561191f5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610983565b600a55565b6005546001600160a01b0316331461194e5760405162461bcd60e51b815260040161098390612668565b6001600160a01b0381166119b35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610983565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611a395760405162461bcd60e51b815260040161098390612668565b604051600090339047908381818185875af1925050503d8060008114611a7b576040519150601f19603f3d011682016040523d82523d6000602084013e611a80565b606091505b50505050565b6001600160a01b038316611ae85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610983565b6001600160a01b038216611b495760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610983565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611bd05760405162461bcd60e51b815260040161098390612957565b6001600160a01b038216611bf65760405162461bcd60e51b81526004016109839061299c565b60008111611c465760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610983565b600e54600003611c6057611c5b838383611e47565b505050565b6001600160a01b0383166000908152600f602052604090205460ff16158015611ca257506001600160a01b0382166000908152600f602052604090205460ff16155b15611e40576001600160a01b03821660009081526010602052604090205460ff16158015611cdb57506001600160a01b03821661dead14155b15611cea57611cea8282611f9c565b600080611cf56111d4565b90506000611d01610814565b600c54909150600160a01b900460ff168015611d275750600954600160a01b900460ff16155b8015611d4b57506001600160a01b03851660009081526010602052604090205460ff165b8015611d6057506000611d5e838361261b565b115b15611d8f576009805460ff60a01b1916600160a01b179055611d8184612029565b6009805460ff60a01b191690555b6001600160a01b03851660009081526010602052604090205460ff168015611db75750600082115b15611dd9576064611dc88386612604565b611dd291906125e2565b9250611e1f565b600081118015611e0157506001600160a01b03861660009081526010602052604090205460ff165b15611e1f576064611e128286612604565b611e1c91906125e2565b92505b8215611e3057611e30863085611e47565b611e3a83856125cf565b93505050505b611c5b8383835b6001600160a01b038316611e6d5760405162461bcd60e51b815260040161098390612957565b6001600160a01b038216611e935760405162461bcd60e51b81526004016109839061299c565b6001600160a01b03831660009081526020819052604090205481811015611f0b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610983565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611f4290849061261b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f8e91815260200190565b60405180910390a350505050565b600d5481611fbf846001600160a01b031660009081526020819052604090205490565b611fc9919061261b565b11156120255760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b6064820152608401610983565b5050565b30600090815260208190526040902054600a54811015612047575050565b80600003612053575050565b600a805461206091612604565b81111561207757600a805461207491612604565b90505b818111156120825750805b600c54600090600160b81b900460ff1661209d5760006120a0565b60045b600c54600160a81b900460ff166120b85760006120bb565b60045b6120c591906129df565b600c5460ff9182169250600091600160c01b909104166120e65760006120e9565b60015b600c54600160b01b900460ff16612101576000612104565b60015b61210e91906129df565b60ff169050600061211f828461261b565b9050600061212c85612203565b4760008361213a8784612604565b61214491906125e2565b905080156121a457600b546040516001600160a01b03909116908290600081818185875af1925050503d8060008114612199576040519150601f19603f3d011682016040523d82523d6000602084013e61219e565b606091505b50909350505b600c546040516001600160a01b03909116904790600081818185875af1925050503d80600081146121f1576040519150601f19603f3d011682016040523d82523d6000602084013e6121f6565b606091505b5050505050505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612238576122386127f1565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612291573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b5919061269d565b816001815181106122c8576122c86127f1565b6001600160a01b03928316602091820292909201015260085460405163791ac94760e01b815291169063791ac9479061230e9085906000908690309042906004016129f8565b600060405180830381600087803b15801561232857600080fd5b505af115801561233c573d6000803e3d6000fd5b505050505050565b600060208083528351808285015260005b8181101561237157858101830151858201604001528201612355565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146111d157600080fd5b600080604083850312156123ba57600080fd5b82356123c581612392565b946020939093013593505050565b6000806000606084860312156123e857600080fd5b83356123f381612392565b9250602084013561240381612392565b929592945050506040919091013590565b60008083601f84011261242657600080fd5b50813567ffffffffffffffff81111561243e57600080fd5b6020830191508360208260051b850101111561245957600080fd5b9250929050565b6000806000806000806080878903121561247957600080fd5b8635955060208701359450604087013567ffffffffffffffff8082111561249f57600080fd5b6124ab8a838b01612414565b909650945060608901359150808211156124c457600080fd5b506124d189828a01612414565b979a9699509497509295939492505050565b6000602082840312156124f557600080fd5b5035919050565b8035801515811461121957600080fd5b60006020828403121561251e57600080fd5b612527826124fc565b9392505050565b60006020828403121561254057600080fd5b813561252781612392565b6000806040838503121561255e57600080fd5b823561256981612392565b9150612577602084016124fc565b90509250929050565b6000806040838503121561259357600080fd5b823561259e81612392565b915060208301356125ae81612392565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b818103818111156108ab576108ab6125b9565b6000826125ff57634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176108ab576108ab6125b9565b808201808211156108ab576108ab6125b9565b600181811c9082168061264257607f821691505b60208210810361266257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156126af57600080fd5b815161252781612392565b600181815b808511156126f55781600019048211156126db576126db6125b9565b808516156126e857918102915b93841c93908002906126bf565b509250929050565b60008261270c575060016108ab565b81612719575060006108ab565b816001811461272f576002811461273957612755565b60019150506108ab565b60ff84111561274a5761274a6125b9565b50506001821b6108ab565b5060208310610133831016604e8410600b8410161715612778575081810a6108ab565b61278283836126ba565b8060001904821115612796576127966125b9565b029392505050565b600061252760ff8416836126fd565b6000806000606084860312156127c257600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156128405781516001600160a01b03168752958201959082019060010161281b565b509495945050505050565b8481526080602082015260006128646080830186612807565b6001600160a01b03949094166040830152506060015292915050565b6000602080838503121561289357600080fd5b825167ffffffffffffffff808211156128ab57600080fd5b818501915085601f8301126128bf57600080fd5b8151818111156128d1576128d16127db565b8060051b604051601f19603f830116810181811085821117156128f6576128f66127db565b60405291825284820192508381018501918883111561291457600080fd5b938501935b8285101561293257845184529385019392850192612919565b98975050505050505050565b600060018201612950576129506125b9565b5060010190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60ff81811683821601908111156108ab576108ab6125b9565b85815284602082015260a060408201526000612a1760a0830186612807565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220c255a8b0dc17c1be3b39943b107a425dc58e7b1cf865d3db838e92cde19c37ad64736f6c634300081100334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x6080604052600436106102765760003560e01c80636ddd17131161014f578063a9059cbb116100c1578063d97771421161007a578063d97771421461073d578063dd62ed3e14610753578063e2f4560514610799578063f2fde38b146107af578063f5648a4f146107cf578063fe33b302146107e457600080fd5b8063a9059cbb1461067d578063b7bda68f1461069d578063c0246668146106bd578063d0d41fe1146106dd578063d257b34f146106fd578063d7b96d4e1461071d57600080fd5b80638f3fa860116101135780638f3fa860146105d157806395d89b41146105e75780639e064993146105fc578063a1883d261461061c578063a457c2d71461063c578063a72d38a11461065c57600080fd5b80636ddd17131461052757806370a0823114610548578063715018a61461057e57806386a22eff146105935780638da5cb5b146105b357600080fd5b8063313ce567116101e85780635d0044ca116101ac5780635d0044ca146104705780636117da7614610490578063635a997d146104b1578063685fc568146104d15780636d2b7007146104e65780636dd91a2d1461050657600080fd5b8063313ce567146103de57806339509351146103fa5780633ad10ef61461041a578063452ed4f11461043a5780635031595f1461045a57600080fd5b806319e3fbcd1161023a57806319e3fbcd146103495780631ff8d5071461036a57806322f0f2f91461038157806323b872dd1461039657806325926c41146103b65780632b112e49146103c957600080fd5b80630644e7571461028257806306fdde03146102aa5780630758d924146102cc578063095ea7b31461030457806318160ddd1461033457600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610814565b6040519081526020015b60405180910390f35b3480156102b657600080fd5b506102bf6108b1565b6040516102a19190612344565b3480156102d857600080fd5b506008546102ec906001600160a01b031681565b6040516001600160a01b0390911681526020016102a1565b34801561031057600080fd5b5061032461031f3660046123a7565b610943565b60405190151581526020016102a1565b34801561034057600080fd5b50600254610297565b34801561035557600080fd5b50600c5461032490600160c01b900460ff1681565b34801561037657600080fd5b5061037f610959565b005b34801561038d57600080fd5b5061037f6109ad565b3480156103a257600080fd5b506103246103b13660046123d3565b610ad2565b61037f6103c4366004612460565b610b85565b3480156103d557600080fd5b5061029761105a565b3480156103ea57600080fd5b50604051600981526020016102a1565b34801561040657600080fd5b506103246104153660046123a7565b6110c6565b34801561042657600080fd5b50600c546102ec906001600160a01b031681565b34801561044657600080fd5b506009546102ec906001600160a01b031681565b34801561046657600080fd5b50610297600e5481565b34801561047c57600080fd5b5061037f61048b3660046124e3565b611102565b34801561049c57600080fd5b50600c5461032490600160a81b900460ff1681565b3480156104bd57600080fd5b5061037f6104cc36600461250c565b61115f565b3480156104dd57600080fd5b506102976111d4565b3480156104f257600080fd5b5061037f61050136600461250c565b61121e565b34801561051257600080fd5b50600c5461032490600160b01b900460ff1681565b34801561053357600080fd5b50600c5461032490600160a01b900460ff1681565b34801561055457600080fd5b5061029761056336600461252e565b6001600160a01b031660009081526020819052604090205490565b34801561058a57600080fd5b5061037f611292565b34801561059f57600080fd5b5061037f6105ae36600461254b565b611306565b3480156105bf57600080fd5b506005546001600160a01b03166102ec565b3480156105dd57600080fd5b50610297600d5481565b3480156105f357600080fd5b506102bf6113f0565b34801561060857600080fd5b5061037f6106173660046124e3565b6113ff565b34801561062857600080fd5b5061037f61063736600461252e565b611516565b34801561064857600080fd5b506103246106573660046123a7565b6115e0565b34801561066857600080fd5b50600c5461032490600160b81b900460ff1681565b34801561068957600080fd5b506103246106983660046123a7565b611679565b3480156106a957600080fd5b50600b546102ec906001600160a01b031681565b3480156106c957600080fd5b5061037f6106d836600461254b565b611686565b3480156106e957600080fd5b5061037f6106f836600461252e565b61170f565b34801561070957600080fd5b5061037f6107183660046124e3565b6117d9565b34801561072957600080fd5b506007546102ec906001600160a01b031681565b34801561074957600080fd5b5061029760065481565b34801561075f57600080fd5b5061029761076e366004612580565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107a557600080fd5b50610297600a5481565b3480156107bb57600080fd5b5061037f6107ca36600461252e565b611924565b3480156107db57600080fd5b5061037f611a0f565b3480156107f057600080fd5b506103246107ff36600461252e565b60106020526000908152604090205460ff1681565b600080600e544261082591906125cf565b905061012c81101561086857600061083e601e836125e2565b61084990600a612604565b9050605a8110156108665761085f81605a6125cf565b9250505090565b505b600c54600090600160a81b900460ff161561088b5761088860048261261b565b90505b600c54600160b01b900460ff16156108ab576108a860018261261b565b90505b92915050565b6060600380546108c09061262e565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec9061262e565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b6000610950338484611a86565b50600192915050565b6005546001600160a01b0316331461098c5760405162461bcd60e51b815260040161098390612668565b60405180910390fd5b600c805460ff60a01b198116600160a01b9182900460ff1615909102179055565b6007546001600160a01b0316158015906109d157506007546001600160a01b031633145b610a1d5760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f7420617574686f72697a656400000000000000006044820152606401610983565b426006541115610a675760405162461bcd60e51b815260206004820152601560248201527410dbdb9d1c9858dd081cdd1a5b1b081b1bd8dad959605a1b6044820152606401610983565b6007546005546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360078054600580546001600160a01b03199081166001600160a01b038416179091551690556000600655565b6000610adf848484611baa565b6001600160a01b03841660009081526001602090815260408083203384529091529020546000198114610b7a5782811015610b6d5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610983565b610b7a8533858403611a86565b506001949350505050565b6005546001600160a01b03163314610baf5760405162461bcd60e51b815260040161098390612668565b600e5415610bbc57600080fd5b84341015610c015760405162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742066756e647360701b6044820152606401610983565b60008611610c4a5760405162461bcd60e51b8152602060048201526016602482015275139bc81314081d1bdad95b9cc81cdc1958da599a595960521b6044820152606401610983565b600854604080516315ab88c960e31b81529051851515926000926001600160a01b039091169163ad5c4648916004808201926020929091908290030181865afa158015610c9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbf919061269d565b9050600860009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d38919061269d565b6040516364e329cb60e11b81526001600160a01b038381166004830152306024830152919091169063c9c65396906044016020604051808303816000875af1158015610d88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dac919061269d565b600980546001600160a01b0319166001600160a01b03929092169182178155600091825260106020526040909120805460ff19166001179055610e079033903090610df890600a61279e565b610e02908c612604565b611e47565b6008546001600160a01b031663f305d7198830610e39816001600160a01b031660009081526020819052604090205490565b6040516001600160e01b031960e086901b1681526001600160a01b039092166004830152602482015260006044820181905260648201523360848201524260a482015260c40160606040518083038185885af1158015610e9d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ec291906127ad565b5050508115611044576040805160028082526060820183526000926020830190803683370190505090508181600081518110610f0057610f006127f1565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110610f3457610f346127f1565b6001600160a01b039092166020928302919091019091015285156110425760005b86811015611040576008546001600160a01b031663fb3bdb4147610f7b6009600a61279e565b898986818110610f8d57610f8d6127f1565b90506020020135610f9e9190612604565b858c8c87818110610fb157610fb16127f1565b9050602002016020810190610fc6919061252e565b426040518663ffffffff1660e01b8152600401610fe6949392919061284b565b60006040518083038185885af1158015611004573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261102d9190810190612880565b50806110388161293e565b915050610f55565b505b505b61104c611a0f565b505042600e55505050505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf83546110b4919061261b565b6002546110c191906125cf565b905090565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109509185906110fd90869061261b565b611a86565b6005546001600160a01b0316331461112c5760405162461bcd60e51b815260040161098390612668565b6000811161113957600080fd5b60648161114560025490565b61114f9190612604565b61115991906125e2565b600d5550565b6005546001600160a01b031633146111895760405162461bcd60e51b815260040161098390612668565b80156111b15750600c805460ff60c01b198116600160c01b9182900460ff1615909102179055565b600c805460ff60b01b198116600160b01b9182900460ff16159091021790555b50565b600c546000908190600160b81b900460ff16156111f9576111f660048261261b565b90505b600c54600160c01b900460ff16156112195761121660018261261b565b90505b919050565b6005546001600160a01b031633146112485760405162461bcd60e51b815260040161098390612668565b80156112705750600c805460ff60b81b198116600160b81b9182900460ff1615909102179055565b50600c805460ff60a81b198116600160a81b9182900460ff1615909102179055565b6005546001600160a01b031633146112bc5760405162461bcd60e51b815260040161098390612668565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146113305760405162461bcd60e51b815260040161098390612668565b6009546001600160a01b039081169083160361139c5760405162461bcd60e51b815260206004820152602560248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d20604482015264706169727360d81b6064820152608401610983565b6001600160a01b038216600081815260106020526040808220805460ff191685151590811790915590519092917ff40a563af144a84735f7f6c7c3029794b0ac17713e5f048d3fd00ed85aa4ca7a91a35050565b6060600480546108c09061262e565b6005546001600160a01b031633146114295760405162461bcd60e51b815260040161098390612668565b6007546001600160a01b0316156114825760405162461bcd60e51b815260206004820152601760248201527f436f6e747261637420616c7265616479206c6f636b65640000000000000000006044820152606401610983565b600081116114d25760405162461bcd60e51b815260206004820152601860248201527f4e6f206c6f636b20706572696f642073706563696669656400000000000000006044820152606401610983565b6114df8162015180612604565b6114e9904261261b565b600655600554600780546001600160a01b0319166001600160a01b039092169190911790556111d1611292565b6005546001600160a01b031633146115405760405162461bcd60e51b815260040161098390612668565b6001600160a01b0381166115965760405162461bcd60e51b815260206004820152601f60248201527f5f7461784164647265737320616464726573732063616e6e6f742062652030006044820152606401610983565b600b80546001600160a01b0319166001600160a01b0383169081179091556040517ff95a3f3be1ad3ec3d252a63182a8332b013f2251a59a30a03ecd260cbe263cc290600090a250565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156116625760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610983565b61166f3385858403611a86565b5060019392505050565b6000610950338484611baa565b6005546001600160a01b031633146116b05760405162461bcd60e51b815260040161098390612668565b6001600160a01b0382166000818152600f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146117395760405162461bcd60e51b815260040161098390612668565b6001600160a01b03811661178f5760405162461bcd60e51b815260206004820152601f60248201527f5f6465764164647265737320616464726573732063616e6e6f742062652030006044820152606401610983565b600c80546001600160a01b0319166001600160a01b0383169081179091556040517f804ec39c1aea0b9f2615a34c3fa437b6ddda2c72e6848abf0f23955589a7ad5490600090a250565b6005546001600160a01b031633146118035760405162461bcd60e51b815260040161098390612668565b620186a061181060025490565b61181b906001612604565b61182591906125e2565b8110156118925760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610983565b6103e861189e60025490565b6118a9906001612604565b6118b391906125e2565b81111561191f5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610983565b600a55565b6005546001600160a01b0316331461194e5760405162461bcd60e51b815260040161098390612668565b6001600160a01b0381166119b35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610983565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611a395760405162461bcd60e51b815260040161098390612668565b604051600090339047908381818185875af1925050503d8060008114611a7b576040519150601f19603f3d011682016040523d82523d6000602084013e611a80565b606091505b50505050565b6001600160a01b038316611ae85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610983565b6001600160a01b038216611b495760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610983565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611bd05760405162461bcd60e51b815260040161098390612957565b6001600160a01b038216611bf65760405162461bcd60e51b81526004016109839061299c565b60008111611c465760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610983565b600e54600003611c6057611c5b838383611e47565b505050565b6001600160a01b0383166000908152600f602052604090205460ff16158015611ca257506001600160a01b0382166000908152600f602052604090205460ff16155b15611e40576001600160a01b03821660009081526010602052604090205460ff16158015611cdb57506001600160a01b03821661dead14155b15611cea57611cea8282611f9c565b600080611cf56111d4565b90506000611d01610814565b600c54909150600160a01b900460ff168015611d275750600954600160a01b900460ff16155b8015611d4b57506001600160a01b03851660009081526010602052604090205460ff165b8015611d6057506000611d5e838361261b565b115b15611d8f576009805460ff60a01b1916600160a01b179055611d8184612029565b6009805460ff60a01b191690555b6001600160a01b03851660009081526010602052604090205460ff168015611db75750600082115b15611dd9576064611dc88386612604565b611dd291906125e2565b9250611e1f565b600081118015611e0157506001600160a01b03861660009081526010602052604090205460ff165b15611e1f576064611e128286612604565b611e1c91906125e2565b92505b8215611e3057611e30863085611e47565b611e3a83856125cf565b93505050505b611c5b8383835b6001600160a01b038316611e6d5760405162461bcd60e51b815260040161098390612957565b6001600160a01b038216611e935760405162461bcd60e51b81526004016109839061299c565b6001600160a01b03831660009081526020819052604090205481811015611f0b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610983565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611f4290849061261b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f8e91815260200190565b60405180910390a350505050565b600d5481611fbf846001600160a01b031660009081526020819052604090205490565b611fc9919061261b565b11156120255760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b6064820152608401610983565b5050565b30600090815260208190526040902054600a54811015612047575050565b80600003612053575050565b600a805461206091612604565b81111561207757600a805461207491612604565b90505b818111156120825750805b600c54600090600160b81b900460ff1661209d5760006120a0565b60045b600c54600160a81b900460ff166120b85760006120bb565b60045b6120c591906129df565b600c5460ff9182169250600091600160c01b909104166120e65760006120e9565b60015b600c54600160b01b900460ff16612101576000612104565b60015b61210e91906129df565b60ff169050600061211f828461261b565b9050600061212c85612203565b4760008361213a8784612604565b61214491906125e2565b905080156121a457600b546040516001600160a01b03909116908290600081818185875af1925050503d8060008114612199576040519150601f19603f3d011682016040523d82523d6000602084013e61219e565b606091505b50909350505b600c546040516001600160a01b03909116904790600081818185875af1925050503d80600081146121f1576040519150601f19603f3d011682016040523d82523d6000602084013e6121f6565b606091505b5050505050505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612238576122386127f1565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612291573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b5919061269d565b816001815181106122c8576122c86127f1565b6001600160a01b03928316602091820292909201015260085460405163791ac94760e01b815291169063791ac9479061230e9085906000908690309042906004016129f8565b600060405180830381600087803b15801561232857600080fd5b505af115801561233c573d6000803e3d6000fd5b505050505050565b600060208083528351808285015260005b8181101561237157858101830151858201604001528201612355565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146111d157600080fd5b600080604083850312156123ba57600080fd5b82356123c581612392565b946020939093013593505050565b6000806000606084860312156123e857600080fd5b83356123f381612392565b9250602084013561240381612392565b929592945050506040919091013590565b60008083601f84011261242657600080fd5b50813567ffffffffffffffff81111561243e57600080fd5b6020830191508360208260051b850101111561245957600080fd5b9250929050565b6000806000806000806080878903121561247957600080fd5b8635955060208701359450604087013567ffffffffffffffff8082111561249f57600080fd5b6124ab8a838b01612414565b909650945060608901359150808211156124c457600080fd5b506124d189828a01612414565b979a9699509497509295939492505050565b6000602082840312156124f557600080fd5b5035919050565b8035801515811461121957600080fd5b60006020828403121561251e57600080fd5b612527826124fc565b9392505050565b60006020828403121561254057600080fd5b813561252781612392565b6000806040838503121561255e57600080fd5b823561256981612392565b9150612577602084016124fc565b90509250929050565b6000806040838503121561259357600080fd5b823561259e81612392565b915060208301356125ae81612392565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b818103818111156108ab576108ab6125b9565b6000826125ff57634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176108ab576108ab6125b9565b808201808211156108ab576108ab6125b9565b600181811c9082168061264257607f821691505b60208210810361266257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156126af57600080fd5b815161252781612392565b600181815b808511156126f55781600019048211156126db576126db6125b9565b808516156126e857918102915b93841c93908002906126bf565b509250929050565b60008261270c575060016108ab565b81612719575060006108ab565b816001811461272f576002811461273957612755565b60019150506108ab565b60ff84111561274a5761274a6125b9565b50506001821b6108ab565b5060208310610133831016604e8410600b8410161715612778575081810a6108ab565b61278283836126ba565b8060001904821115612796576127966125b9565b029392505050565b600061252760ff8416836126fd565b6000806000606084860312156127c257600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156128405781516001600160a01b03168752958201959082019060010161281b565b509495945050505050565b8481526080602082015260006128646080830186612807565b6001600160a01b03949094166040830152506060015292915050565b6000602080838503121561289357600080fd5b825167ffffffffffffffff808211156128ab57600080fd5b818501915085601f8301126128bf57600080fd5b8151818111156128d1576128d16127db565b8060051b604051601f19603f830116810181811085821117156128f6576128f66127db565b60405291825284820192508381018501918883111561291457600080fd5b938501935b8285101561293257845184529385019392850192612919565b98975050505050505050565b600060018201612950576129506125b9565b5060010190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60ff81811683821601908111156108ab576108ab6125b9565b85815284602082015260a060408201526000612a1760a0830186612807565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220c255a8b0dc17c1be3b39943b107a425dc58e7b1cf865d3db838e92cde19c37ad64736f6c63430008110033

Deployed Bytecode Sourcemap

11561:9682:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15092:424;;;;;;;;;;;;;:::i;:::-;;;160:25:1;;;148:2;133:18;15092:424:0;;;;;;;;4239:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;11606:27::-;;;;;;;;;;-1:-1:-1;11606:27:0;;;;-1:-1:-1;;;;;11606:27:0;;;;;;-1:-1:-1;;;;;931:32:1;;;913:51;;901:2;886:18;11606:27:0;749:221:1;5294:210:0;;;;;;;;;;-1:-1:-1;5294:210:0;;;;;:::i;:::-;;:::i;:::-;;;1596:14:1;;1589:22;1571:41;;1559:2;1544:18;5294:210:0;1431:187:1;4560:108:0;;;;;;;;;;-1:-1:-1;4648:12:0;;4560:108;;12059:30;;;;;;;;;;-1:-1:-1;12059:30:0;;;;-1:-1:-1;;;12059:30:0;;;;;;14121:86;;;;;;;;;;;;;:::i;:::-;;9554:340;;;;;;;;;;;;;:::i;5512:620::-;;;;;;;;;;-1:-1:-1;5512:620:0;;;;;:::i;:::-;;:::i;19556:1355::-;;;;;;:::i;:::-;;:::i;20919:156::-;;;;;;;;;;;;;:::i;13531:84::-;;;;;;;;;;-1:-1:-1;13531:84:0;;13606:1;3513:36:1;;3501:2;3486:18;13531:84:0;3371:184:1;6140:297:0;;;;;;;;;;-1:-1:-1;6140:297:0;;;;;:::i;:::-;;:::i;11865:25::-;;;;;;;;;;-1:-1:-1;11865:25:0;;;;-1:-1:-1;;;;;11865:25:0;;;11640:21;;;;;;;;;;-1:-1:-1;11640:21:0;;;;-1:-1:-1;;;;;11640:21:0;;;12135:32;;;;;;;;;;;;;;;;21083:157;;;;;;;;;;-1:-1:-1;21083:157:0;;;;;:::i;:::-;;:::i;11938:35::-;;;;;;;;;;-1:-1:-1;11938:35:0;;;;-1:-1:-1;;;11938:35:0;;;;;;14713:179;;;;;;;;;;-1:-1:-1;14713:179:0;;;;;:::i;:::-;;:::i;14900:184::-;;;;;;;;;;;;;:::i;14496:209::-;;;;;;;;;;-1:-1:-1;14496:209:0;;;;;:::i;:::-;;:::i;11980:29::-;;;;;;;;;;-1:-1:-1;11980:29:0;;;;-1:-1:-1;;;11980:29:0;;;;;;11899:30;;;;;;;;;;-1:-1:-1;11899:30:0;;;;-1:-1:-1;;;11899:30:0;;;;;;4676:177;;;;;;;;;;-1:-1:-1;4676:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;4827:18:0;4795:7;4827:18;;;;;;;;;;;;4676:177;8799:148;;;;;;;;;;;;;:::i;14215:273::-;;;;;;;;;;-1:-1:-1;14215:273:0;;;;;:::i;:::-;;:::i;8585:79::-;;;;;;;;;;-1:-1:-1;8650:6:0;;-1:-1:-1;;;;;8650:6:0;8585:79;;12098:28;;;;;;;;;;;;;;;;4347:104;;;;;;;;;;;;;:::i;9244:302::-;;;;;;;;;;-1:-1:-1;9244:302:0;;;;;:::i;:::-;;:::i;19076:232::-;;;;;;;;;;-1:-1:-1;19076:232:0;;;;;:::i;:::-;;:::i;6445:482::-;;;;;;;;;;-1:-1:-1;6445:482:0;;;;;:::i;:::-;;:::i;12016:36::-;;;;;;;;;;-1:-1:-1;12016:36:0;;;;-1:-1:-1;;;12016:36:0;;;;;;4861:216;;;;;;;;;;-1:-1:-1;4861:216:0;;;;;:::i;:::-;;:::i;11833:25::-;;;;;;;;;;-1:-1:-1;11833:25:0;;;;-1:-1:-1;;;;;11833:25:0;;;15524:182;;;;;;;;;;-1:-1:-1;15524:182:0;;;;;:::i;:::-;;:::i;19316:232::-;;;;;;;;;;-1:-1:-1;19316:232:0;;;;;:::i;:::-;;:::i;13685:428::-;;;;;;;;;;-1:-1:-1;13685:428:0;;;;;:::i;:::-;;:::i;8277:21::-;;;;;;;;;;-1:-1:-1;8277:21:0;;;;-1:-1:-1;;;;;8277:21:0;;;8246:24;;;;;;;;;;;;;;;;5085:201;;;;;;;;;;-1:-1:-1;5085:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;5251:18:0;;;5219:7;5251:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5085:201;11791:33;;;;;;;;;;;;;;;;8955:281;;;;;;;;;;-1:-1:-1;8955:281:0;;;;;:::i;:::-;;:::i;18909:159::-;;;;;;;;;;;;;:::i;12235:37::-;;;;;;;;;;-1:-1:-1;12235:37:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15092:424;15135:7;15155:15;15191:17;;15173:15;:35;;;;:::i;:::-;15155:53;;15232:9;15222:7;:19;15219:167;;;15258:18;15280:12;15290:2;15280:7;:12;:::i;:::-;15279:19;;15296:2;15279:19;:::i;:::-;15258:40;;15330:2;15317:10;:15;15313:61;;;15359:15;15364:10;15359:2;:15;:::i;:::-;15352:22;;;;15092:424;:::o;15313:61::-;15243:143;15219:167;15427:16;;15398:11;;-1:-1:-1;;;15427:16:0;;;;15424:29;;;15445:8;15452:1;15445:8;;:::i;:::-;;;15424:29;15467:10;;-1:-1:-1;;;15467:10:0;;;;15464:23;;;15479:8;15486:1;15479:8;;:::i;:::-;;;15464:23;15505:3;15092:424;-1:-1:-1;;15092:424:0:o;4239:100::-;4293:13;4326:5;4319:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4239:100;:::o;5294:210::-;5413:4;5435:39;389:10;5458:7;5467:6;5435:8;:39::i;:::-;-1:-1:-1;5492:4:0;5294:210;;;;:::o;14121:86::-;8712:6;;-1:-1:-1;;;;;8712:6:0;389:10;8712:22;8704:67;;;;-1:-1:-1;;;8704:67:0;;;;;;;:::i;:::-;;;;;;;;;14188:11:::1;::::0;;-1:-1:-1;;;;14173:26:0;::::1;-1:-1:-1::0;;;14188:11:0;;;::::1;;;14187:12;14173:26:::0;;::::1;;::::0;;14121:86::o;9554:340::-;9608:6;;-1:-1:-1;;;;;9608:6:0;:20;;;;:44;;-1:-1:-1;9646:6:0;;-1:-1:-1;;;;;9646:6:0;9632:10;:20;9608:44;9600:81;;;;-1:-1:-1;;;9600:81:0;;7006:2:1;9600:81:0;;;6988:21:1;7045:2;7025:18;;;7018:30;7084:26;7064:18;;;7057:54;7128:18;;9600:81:0;6804:348:1;9600:81:0;9713:15;9700:9;;:28;;9692:62;;;;-1:-1:-1;;;9692:62:0;;7359:2:1;9692:62:0;;;7341:21:1;7398:2;7378:18;;;7371:30;-1:-1:-1;;;7417:18:1;;;7410:51;7478:18;;9692:62:0;7157:345:1;9692:62:0;9799:6;;9791;;9770:36;;-1:-1:-1;;;;;9799:6:0;;;;9791;;;;9770:36;;9799:6;;9770:36;9826:6;;;9817;:15;;-1:-1:-1;;;;;;9817:15:0;;;-1:-1:-1;;;;;9826:6:0;;9817:15;;;;9843:19;;;9826:6;9873:9;:13;9554:340::o;5512:620::-;5652:4;5669:36;5679:6;5687:9;5698:6;5669:9;:36::i;:::-;-1:-1:-1;;;;;5745:19:0;;5718:24;5745:19;;;:11;:19;;;;;;;;389:10;5745:33;;;;;;;;-1:-1:-1;;5792:37:0;;5789:314;;5893:6;5873:16;:26;;5847:128;;;;-1:-1:-1;;;5847:128:0;;7709:2:1;5847:128:0;;;7691:21:1;7748:2;7728:18;;;7721:30;7787:34;7767:18;;;7760:62;-1:-1:-1;;;7838:18:1;;;7831:38;7886:19;;5847:128:0;7507:404:1;5847:128:0;6019:57;6028:6;389:10;6069:6;6050:16;:25;6019:8;:57::i;:::-;-1:-1:-1;6120:4:0;;5512:620;-1:-1:-1;;;;5512:620:0:o;19556:1355::-;8712:6;;-1:-1:-1;;;;;8712:6:0;389:10;8712:22;8704:67;;;;-1:-1:-1;;;8704:67:0;;;;;;;:::i;:::-;19705:17:::1;::::0;:22;19697:31:::1;;;::::0;::::1;;19760:4;19747:9;:17;;19739:48;;;::::0;-1:-1:-1;;;19739:48:0;;8118:2:1;19739:48:0::1;::::0;::::1;8100:21:1::0;8157:2;8137:18;;;8130:30;-1:-1:-1;;;8176:18:1;;;8169:48;8234:18;;19739:48:0::1;7916:342:1::0;19739:48:0::1;19815:1;19806:6;:10;19798:45;;;::::0;-1:-1:-1;;;19798:45:0;;8465:2:1;19798:45:0::1;::::0;::::1;8447:21:1::0;8504:2;8484:18;;;8477:30;-1:-1:-1;;;8523:18:1;;;8516:52;8585:18;;19798:45:0::1;8263:346:1::0;19798:45:0::1;19918:9;::::0;:16:::1;::::0;;-1:-1:-1;;;19918:16:0;;;;19872:19;;;;19854:15:::1;::::0;-1:-1:-1;;;;;19918:9:0;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19904:30;;19968:9;;;;;;;;;-1:-1:-1::0;;;;;19968:9:0::1;-1:-1:-1::0;;;;;19968:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19956:63;::::0;-1:-1:-1;;;19956:63:0;;-1:-1:-1;;;;;9100:15:1;;;19956:63:0::1;::::0;::::1;9082:34:1::0;20013:4:0::1;9132:18:1::0;;;9125:43;19956::0;;;::::1;::::0;::::1;::::0;9017:18:1;;19956:63:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19947:6;:72:::0;;-1:-1:-1;;;;;;19947:72:0::1;-1:-1:-1::0;;;;;19947:72:0;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;20030:13:0;;;:5:::1;:13;::::0;;;;;:20;;-1:-1:-1;;20030:20:0::1;-1:-1:-1::0;20030:20:0::1;::::0;;20063:67:::1;::::0;20079:10:::1;::::0;20099:4:::1;::::0;11739:15:::1;::::0;:2:::1;:15;:::i;:::-;20106:23;::::0;:6;:23:::1;:::i;:::-;20063:15;:67::i;:::-;20143:9;::::0;-1:-1:-1;;;;;20143:9:0::1;:25;20176:4:::0;20190::::1;20196:24;20190:4:::0;-1:-1:-1;;;;;4827:18:0;4795:7;4827:18;;;;;;;;;;;;4676:177;20196:24:::1;20143:109;::::0;-1:-1:-1;;;;;;20143:109:0::1;::::0;;;;;;-1:-1:-1;;;;;10921:15:1;;;20143:109:0::1;::::0;::::1;10903:34:1::0;10953:18;;;10946:34;20221:1:0::1;10996:18:1::0;;;10989:34;;;11039:18;;;11032:34;20225:10:0::1;11082:19:1::0;;;11075:44;20236:15:0::1;11135:19:1::0;;;11128:35;10837:19;;20143:109:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20268:10;20265:560;;;20319:16;::::0;;20333:1:::1;20319:16:::0;;;;;::::1;::::0;;20295:21:::1;::::0;20319:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;20319:16:0::1;20295:40;;20360:3;20350:4;20355:1;20350:7;;;;;;;;:::i;:::-;;;;;;:13;-1:-1:-1::0;;;;;20350:13:0::1;;;-1:-1:-1::0;;;;;20350:13:0::1;;;::::0;::::1;20396:4;20378;20383:1;20378:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20378:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;;:23;20421:19;;20418:396:::1;;20465:9;20461:338;20480:19:::0;;::::1;20461:338;;;20529:9;::::0;-1:-1:-1;;;;;20529:9:0::1;:31;20568:21;11739:15;11697:1;11739:2;:15;:::i;:::-;20618:7;;20626:1;20618:10;;;;;;;:::i;:::-;;;;;;;:27;;;;:::i;:::-;20672:4;20703:8;;20712:1;20703:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;20741:15;20529:250;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;20529:250:0::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;20501:3:0;::::1;::::0;::::1;:::i;:::-;;;;20461:338;;;;20418:396;20280:545;20265:560;20837:18;:16;:18::i;:::-;-1:-1:-1::0;;20888:15:0::1;20868:17;:35:::0;-1:-1:-1;;;;;;19556:1355:0:o;20919:156::-;20972:7;4827:18;;;;;;21034:6;4827:18;;;;21016:50;;4827:18;21016:50;:::i;:::-;4648:12;;20999:68;;;;:::i;:::-;20992:75;;20919:156;:::o;6140:297::-;389:10;6255:4;6349:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6349:34:0;;;;;;;;;;6255:4;;6277:130;;6327:7;;6349:47;;6386:10;;6349:47;:::i;:::-;6277:8;:130::i;21083:157::-;8712:6;;-1:-1:-1;;;;;8712:6:0;389:10;8712:22;8704:67;;;;-1:-1:-1;;;8704:67:0;;;;;;;:::i;:::-;21172:1:::1;21162:7;:11;21154:20;;;::::0;::::1;;21229:3;21218:7;21202:13;4648:12:::0;;;4560:108;21202:13:::1;:23;;;;:::i;:::-;21201:31;;;;:::i;:::-;21185:13;:47:::0;-1:-1:-1;21083:157:0:o;14713:179::-;8712:6;;-1:-1:-1;;;;;8712:6:0;389:10;8712:22;8704:67;;;;-1:-1:-1;;;8704:67:0;;;;;;;:::i;:::-;14783:7:::1;14780:104;;;-1:-1:-1::0;14820:11:0::1;::::0;;-1:-1:-1;;;;14805:26:0;::::1;-1:-1:-1::0;;;14820:11:0;;;::::1;;;14819:12;14805:26:::0;;::::1;;::::0;;14713:179::o;14780:104::-:1;14874:10;::::0;;-1:-1:-1;;;;14860:24:0;::::1;-1:-1:-1::0;;;14874:10:0;;;::::1;;;14873:11;14860:24:::0;;::::1;;::::0;;14780:104:::1;14713:179:::0;:::o;14900:184::-;14993:17;;14944:7;;;;-1:-1:-1;;;14993:17:0;;;;14990:30;;;15012:8;15019:1;15012:8;;:::i;:::-;;;14990:30;15034:11;;-1:-1:-1;;;15034:11:0;;;;15031:24;;;15047:8;15054:1;15047:8;;:::i;:::-;;;15031:24;15073:3;14900:184;-1:-1:-1;14900:184:0:o;14496:209::-;8712:6;;-1:-1:-1;;;;;8712:6:0;389:10;8712:22;8704:67;;;;-1:-1:-1;;;8704:67:0;;;;;;;:::i;:::-;14572:7:::1;14569:128;;;-1:-1:-1::0;14615:17:0::1;::::0;;-1:-1:-1;;;;14594:38:0;::::1;-1:-1:-1::0;;;14615:17:0;;;::::1;;;14614:18;14594:38:::0;;::::1;;::::0;;14713:179::o;14569:128::-:1;-1:-1:-1::0;14681:16:0::1;::::0;;-1:-1:-1;;;;14661:36:0;::::1;-1:-1:-1::0;;;14681:16:0;;;::::1;;;14680:17;14661:36:::0;;::::1;;::::0;;14496:209::o;8799:148::-;8712:6;;-1:-1:-1;;;;;8712:6:0;389:10;8712:22;8704:67;;;;-1:-1:-1;;;8704:67:0;;;;;;;:::i;:::-;8890:6:::1;::::0;8869:40:::1;::::0;8906:1:::1;::::0;-1:-1:-1;;;;;8890:6:0::1;::::0;8869:40:::1;::::0;8906:1;;8869:40:::1;8920:6;:19:::0;;-1:-1:-1;;;;;;8920:19:0::1;::::0;;8799:148::o;14215:273::-;8712:6;;-1:-1:-1;;;;;8712:6:0;389:10;8712:22;8704:67;;;;-1:-1:-1;;;8704:67:0;;;;;;;:::i;:::-;14341:6:::1;::::0;-1:-1:-1;;;;;14341:6:0;;::::1;14333:14:::0;;::::1;::::0;14311:101:::1;;;::::0;-1:-1:-1;;;14311:101:0;;14174:2:1;14311:101:0::1;::::0;::::1;14156:21:1::0;14213:2;14193:18;;;14186:30;14252:34;14232:18;;;14225:62;-1:-1:-1;;;14303:18:1;;;14296:35;14348:19;;14311:101:0::1;13972:401:1::0;14311:101:0::1;-1:-1:-1::0;;;;;14425:11:0;::::1;;::::0;;;:5:::1;:11;::::0;;;;;:19;;-1:-1:-1;;14425:19:0::1;::::0;::::1;;::::0;;::::1;::::0;;;14460:20;;14425:19;;:11;14460:20:::1;::::0;::::1;14215:273:::0;;:::o;4347:104::-;4403:13;4436:7;4429:14;;;;;:::i;9244:302::-;8712:6;;-1:-1:-1;;;;;8712:6:0;389:10;8712:22;8704:67;;;;-1:-1:-1;;;8704:67:0;;;;;;;:::i;:::-;9319:6:::1;::::0;-1:-1:-1;;;;;9319:6:0::1;:20:::0;9311:56:::1;;;::::0;-1:-1:-1;;;9311:56:0;;14580:2:1;9311:56:0::1;::::0;::::1;14562:21:1::0;14619:2;14599:18;;;14592:30;14658:25;14638:18;;;14631:53;14701:18;;9311:56:0::1;14378:347:1::0;9311:56:0::1;9394:1;9386:5;:9;9378:46;;;::::0;-1:-1:-1;;;9378:46:0;;14932:2:1;9378:46:0::1;::::0;::::1;14914:21:1::0;14971:2;14951:18;;;14944:30;15010:26;14990:18;;;14983:54;15054:18;;9378:46:0::1;14730:348:1::0;9378:46:0::1;9466:14;:5:::0;9474:6:::1;9466:14;:::i;:::-;9447:34;::::0;:15:::1;:34;:::i;:::-;9435:9;:46:::0;8650:6;;9492::::1;:16:::0;;-1:-1:-1;;;;;;9492:16:0::1;-1:-1:-1::0;;;;;8650:6:0;;;9492:16;;;::::1;::::0;;9519:19:::1;:17;:19::i;19076:232::-:0;8712:6;;-1:-1:-1;;;;;8712:6:0;389:10;8712:22;8704:67;;;;-1:-1:-1;;;8704:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19158:25:0;::::1;19150:69;;;::::0;-1:-1:-1;;;19150:69:0;;15285:2:1;19150:69:0::1;::::0;::::1;15267:21:1::0;15324:2;15304:18;;;15297:30;15363:33;15343:18;;;15336:61;15414:18;;19150:69:0::1;15083:355:1::0;19150:69:0::1;19230:10;:24:::0;;-1:-1:-1;;;;;;19230:24:0::1;-1:-1:-1::0;;;;;19230:24:0;::::1;::::0;;::::1;::::0;;;19270:30:::1;::::0;::::1;::::0;-1:-1:-1;;19270:30:0::1;19076:232:::0;:::o;6445:482::-;389:10;6565:4;6614:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6614:34:0;;;;;;;;;;6681:35;;;;6659:122;;;;-1:-1:-1;;;6659:122:0;;15645:2:1;6659:122:0;;;15627:21:1;15684:2;15664:18;;;15657:30;15723:34;15703:18;;;15696:62;-1:-1:-1;;;15774:18:1;;;15767:35;15819:19;;6659:122:0;15443:401:1;6659:122:0;6817:67;389:10;6840:7;6868:15;6849:16;:34;6817:8;:67::i;:::-;-1:-1:-1;6915:4:0;;6445:482;-1:-1:-1;;;6445:482:0:o;4861:216::-;4983:4;5005:42;389:10;5029:9;5040:6;5005:9;:42::i;15524:182::-;8712:6;;-1:-1:-1;;;;;8712:6:0;389:10;8712:22;8704:67;;;;-1:-1:-1;;;8704:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15609:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;15609:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;15664:34;;1571:41:1;;;15664:34:0::1;::::0;1544:18:1;15664:34:0::1;;;;;;;15524:182:::0;;:::o;19316:232::-;8712:6;;-1:-1:-1;;;;;8712:6:0;389:10;8712:22;8704:67;;;;-1:-1:-1;;;8704:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19398:25:0;::::1;19390:69;;;::::0;-1:-1:-1;;;19390:69:0;;16051:2:1;19390:69:0::1;::::0;::::1;16033:21:1::0;16090:2;16070:18;;;16063:30;16129:33;16109:18;;;16102:61;16180:18;;19390:69:0::1;15849:355:1::0;19390:69:0::1;19470:10;:24:::0;;-1:-1:-1;;;;;;19470:24:0::1;-1:-1:-1::0;;;;;19470:24:0;::::1;::::0;;::::1;::::0;;;19510:30:::1;::::0;::::1;::::0;-1:-1:-1;;19510:30:0::1;19316:232:::0;:::o;13685:428::-;8712:6;;-1:-1:-1;;;;;8712:6:0;389:10;8712:22;8704:67;;;;-1:-1:-1;;;8704:67:0;;;;;;;:::i;:::-;13825:6:::1;13804:13;4648:12:::0;;;4560:108;13804:13:::1;:17;::::0;13820:1:::1;13804:17;:::i;:::-;13803:28;;;;:::i;:::-;13790:9;:41;;13768:144;;;::::0;-1:-1:-1;;;13768:144:0;;16411:2:1;13768:144:0::1;::::0;::::1;16393:21:1::0;16450:2;16430:18;;;16423:30;16489:34;16469:18;;;16462:62;-1:-1:-1;;;16540:18:1;;;16533:51;16601:19;;13768:144:0::1;16209:417:1::0;13768:144:0::1;13980:4;13959:13;4648:12:::0;;;4560:108;13959:13:::1;:17;::::0;13975:1:::1;13959:17;:::i;:::-;13958:26;;;;:::i;:::-;13945:9;:39;;13923:141;;;::::0;-1:-1:-1;;;13923:141:0;;16833:2:1;13923:141:0::1;::::0;::::1;16815:21:1::0;16872:2;16852:18;;;16845:30;16911:34;16891:18;;;16884:62;-1:-1:-1;;;16962:18:1;;;16955:50;17022:19;;13923:141:0::1;16631:416:1::0;13923:141:0::1;14075:18;:30:::0;13685:428::o;8955:281::-;8712:6;;-1:-1:-1;;;;;8712:6:0;389:10;8712:22;8704:67;;;;-1:-1:-1;;;8704:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9058:22:0;::::1;9036:110;;;::::0;-1:-1:-1;;;9036:110:0;;17254:2:1;9036:110:0::1;::::0;::::1;17236:21:1::0;17293:2;17273:18;;;17266:30;17332:34;17312:18;;;17305:62;-1:-1:-1;;;17383:18:1;;;17376:36;17429:19;;9036:110:0::1;17052:402:1::0;9036:110:0::1;9183:6;::::0;9162:38:::1;::::0;-1:-1:-1;;;;;9162:38:0;;::::1;::::0;9183:6:::1;::::0;9162:38:::1;::::0;9183:6:::1;::::0;9162:38:::1;9211:6;:17:::0;;-1:-1:-1;;;;;;9211:17:0::1;-1:-1:-1::0;;;;;9211:17:0;;;::::1;::::0;;;::::1;::::0;;8955:281::o;18909:159::-;8712:6;;-1:-1:-1;;;;;8712:6:0;389:10;8712:22;8704:67;;;;-1:-1:-1;;;8704:67:0;;;;;;;:::i;:::-;19002:58:::1;::::0;18965:12:::1;::::0;19010:10:::1;::::0;19034:21:::1;::::0;18965:12;19002:58;18965:12;19002:58;19034:21;19010:10;19002:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;18909:159:0:o;7594:380::-;-1:-1:-1;;;;;7730:19:0;;7722:68;;;;-1:-1:-1;;;7722:68:0;;17871:2:1;7722:68:0;;;17853:21:1;17910:2;17890:18;;;17883:30;17949:34;17929:18;;;17922:62;-1:-1:-1;;;18000:18:1;;;17993:34;18044:19;;7722:68:0;17669:400:1;7722:68:0;-1:-1:-1;;;;;7809:21:0;;7801:68;;;;-1:-1:-1;;;7801:68:0;;18276:2:1;7801:68:0;;;18258:21:1;18315:2;18295:18;;;18288:30;18354:34;18334:18;;;18327:62;-1:-1:-1;;;18405:18:1;;;18398:32;18447:19;;7801:68:0;18074:398:1;7801:68:0;-1:-1:-1;;;;;7882:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7934:32;;160:25:1;;;7934:32:0;;133:18:1;7934:32:0;;;;;;;7594:380;;;:::o;15912:1468::-;-1:-1:-1;;;;;16044:18:0;;16036:68;;;;-1:-1:-1;;;16036:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16123:16:0;;16115:64;;;;-1:-1:-1;;;16115:64:0;;;;;;;:::i;:::-;16207:1;16198:6;:10;16190:52;;;;-1:-1:-1;;;16190:52:0;;19489:2:1;16190:52:0;;;19471:21:1;19528:2;19508:18;;;19501:30;19567:31;19547:18;;;19540:59;19616:18;;16190:52:0;19287:353:1;16190:52:0;16258:17;;16279:1;16258:22;16255:1118;;16297:33;16313:4;16319:2;16323:6;16297:15;:33::i;:::-;15912:1468;;;:::o;16255:1118::-;-1:-1:-1;;;;;16377:25:0;;;;;;:19;:25;;;;;;;;16376:26;:54;;;;-1:-1:-1;;;;;;16407:23:0;;;;;;:19;:23;;;;;;;;16406:24;16376:54;16372:940;;;-1:-1:-1;;;;;16456:9:0;;;;;;:5;:9;;;;;;;;16455:10;:35;;;;-1:-1:-1;;;;;;16469:21:0;;16483:6;16469:21;;16455:35;16451:112;;;16515:28;16532:2;16536:6;16515:16;:28::i;:::-;16583:12;16618:11;16632:13;:11;:13::i;:::-;16618:27;;16664:11;16678:12;:10;:12::i;:::-;16715:11;;16664:26;;-1:-1:-1;;;;16715:11:0;;;;:24;;;;-1:-1:-1;16731:8:0;;-1:-1:-1;;;16731:8:0;;;;16730:9;16715:24;:37;;;;-1:-1:-1;;;;;;16743:9:0;;;;;;:5;:9;;;;;;;;16715:37;:54;;;;-1:-1:-1;16768:1:0;16756:9;16762:3;16756;:9;:::i;:::-;:13;16715:54;16711:196;;;16794:8;:15;;-1:-1:-1;;;;16794:15:0;-1:-1:-1;;;16794:15:0;;;16832:16;16841:6;16832:8;:16::i;:::-;16871:8;:16;;-1:-1:-1;;;;16871:16:0;;;16711:196;-1:-1:-1;;;;;16931:9:0;;;;;;:5;:9;;;;;;;;:19;;;;;16949:1;16943:3;:7;16931:19;16927:216;;;16999:3;16983:12;16992:3;16983:6;:12;:::i;:::-;16982:20;;;;:::i;:::-;16975:27;;16927:216;;;17055:1;17049:3;:7;:22;;;;-1:-1:-1;;;;;;17060:11:0;;;;;;:5;:11;;;;;;;;17049:22;17045:98;;;17120:3;17104:12;17113:3;17104:6;:12;:::i;:::-;17103:20;;;;:::i;:::-;17096:27;;17045:98;17167:8;;17163:99;;17200:42;17216:4;17230;17237;17200:15;:42::i;:::-;17282:14;17292:4;17282:14;;:::i;:::-;;;16432:880;;;16372:940;17328:33;17344:4;17350:2;17354:6;6935:651;-1:-1:-1;;;;;7075:20:0;;7067:70;;;;-1:-1:-1;;;7067:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7156:23:0;;7148:71;;;;-1:-1:-1;;;7148:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7256:17:0;;7232:21;7256:17;;;;;;;;;;;7306:23;;;;7284:111;;;;-1:-1:-1;;;7284:111:0;;19847:2:1;7284:111:0;;;19829:21:1;19886:2;19866:18;;;19859:30;19925:34;19905:18;;;19898:62;-1:-1:-1;;;19976:18:1;;;19969:36;20022:19;;7284:111:0;19645:402:1;7284:111:0;-1:-1:-1;;;;;7431:17:0;;;:9;:17;;;;;;;;;;;7451:22;;;7431:42;;7495:20;;;;;;;;:30;;7467:6;;7431:9;7495:30;;7467:6;;7495:30;:::i;:::-;;;;;;;;7560:9;-1:-1:-1;;;;;7543:35:0;7552:6;-1:-1:-1;;;;;7543:35:0;;7571:6;7543:35;;;;160:25:1;;148:2;133:18;;14:177;7543:35:0;;;;;;;;7056:530;6935:651;;;:::o;15714:190::-;15841:13;;15831:6;15808:20;15818:9;-1:-1:-1;;;;;4827:18:0;4795:7;4827:18;;;;;;;;;;;;4676:177;15808:20;:29;;;;:::i;:::-;:46;;15800:96;;;;-1:-1:-1;;;15800:96:0;;20254:2:1;15800:96:0;;;20236:21:1;20293:2;20273:18;;;20266:30;20332:34;20312:18;;;20305:62;-1:-1:-1;;;20383:18:1;;;20376:35;20428:19;;15800:96:0;20052:401:1;15800:96:0;15714:190;;:::o;17898:941::-;17992:4;17951:20;4827:18;;;;;;;;;;;18028;;18013:33;;18009:46;;;18048:7;17898:941;:::o;18009:46::-;18069:12;18085:1;18069:17;18065:30;;18088:7;17898:941;:::o;18065:30::-;18126:18;;;:23;;;:::i;:::-;18111:12;:38;18107:82;;;18166:18;;;:23;;;:::i;:::-;18151:38;;18107:82;18220:6;18205:12;:21;18202:47;;;-1:-1:-1;18243:6:0;18202:47;18309:17;;18262:14;;-1:-1:-1;;;18309:17:0;;;;:25;;18333:1;18309:25;;;18329:1;18309:25;18280:16;;-1:-1:-1;;;18280:16:0;;;;:24;;18303:1;18280:24;;;18299:1;18280:24;18279:56;;;;:::i;:::-;18387:11;;18262:73;;;;;-1:-1:-1;18346:14:0;;-1:-1:-1;;;18387:11:0;;;;:19;;18405:1;18387:19;;;18401:1;18387:19;18364:10;;-1:-1:-1;;;18364:10:0;;;;:18;;18381:1;18364:18;;;18377:1;18364:18;18363:44;;;;:::i;:::-;18346:61;;;-1:-1:-1;18418:18:0;18439:15;18346:61;18439:6;:15;:::i;:::-;18418:36;;18467:12;18490:30;18507:12;18490:16;:30::i;:::-;18554:21;18533:18;18638:10;18615:19;18628:6;18554:21;18615:19;:::i;:::-;18614:34;;;;:::i;:::-;18588:60;-1:-1:-1;18664:19:0;;18661:94;;18712:10;;:43;;-1:-1:-1;;;;;18712:10:0;;;;18735:15;;18712:43;;;;18735:15;18712:10;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18698:57:0;;-1:-1:-1;;18661:94:0;18782:10;;:49;;-1:-1:-1;;;;;18782:10:0;;;;18805:21;;18782:49;;;;18805:21;18782:10;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17898:941:0:o;17388:502::-;17538:16;;;17552:1;17538:16;;;;;;;;17514:21;;17538:16;;;;;;;;;;-1:-1:-1;17538:16:0;17514:40;;17583:4;17565;17570:1;17565:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17565:23:0;;;:7;;;;;;;;;;:23;;;;17609:9;;:16;;;-1:-1:-1;;;17609:16:0;;;;:9;;;;;:14;;:16;;;;;17565:7;;17609:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17599:4;17604:1;17599:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17599:26:0;;;:7;;;;;;;;;:26;17664:9;;:218;;-1:-1:-1;;;17664:218:0;;:9;;;:60;;:218;;17739:11;;17664:9;;17809:4;;17836;;17856:15;;17664:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17443:447;17388:502;:::o;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;975:131::-;-1:-1:-1;;;;;1050:31:1;;1040:42;;1030:70;;1096:1;1093;1086:12;1111:315;1179:6;1187;1240:2;1228:9;1219:7;1215:23;1211:32;1208:52;;;1256:1;1253;1246:12;1208:52;1295:9;1282:23;1314:31;1339:5;1314:31;:::i;:::-;1364:5;1416:2;1401:18;;;;1388:32;;-1:-1:-1;;;1111:315:1:o;1623:456::-;1700:6;1708;1716;1769:2;1757:9;1748:7;1744:23;1740:32;1737:52;;;1785:1;1782;1775:12;1737:52;1824:9;1811:23;1843:31;1868:5;1843:31;:::i;:::-;1893:5;-1:-1:-1;1950:2:1;1935:18;;1922:32;1963:33;1922:32;1963:33;:::i;:::-;1623:456;;2015:7;;-1:-1:-1;;;2069:2:1;2054:18;;;;2041:32;;1623:456::o;2084:367::-;2147:8;2157:6;2211:3;2204:4;2196:6;2192:17;2188:27;2178:55;;2229:1;2226;2219:12;2178:55;-1:-1:-1;2252:20:1;;2295:18;2284:30;;2281:50;;;2327:1;2324;2317:12;2281:50;2364:4;2356:6;2352:17;2340:29;;2424:3;2417:4;2407:6;2404:1;2400:14;2392:6;2388:27;2384:38;2381:47;2378:67;;;2441:1;2438;2431:12;2378:67;2084:367;;;;;:::o;2456:910::-;2596:6;2604;2612;2620;2628;2636;2689:3;2677:9;2668:7;2664:23;2660:33;2657:53;;;2706:1;2703;2696:12;2657:53;2742:9;2729:23;2719:33;;2799:2;2788:9;2784:18;2771:32;2761:42;;2854:2;2843:9;2839:18;2826:32;2877:18;2918:2;2910:6;2907:14;2904:34;;;2934:1;2931;2924:12;2904:34;2973:70;3035:7;3026:6;3015:9;3011:22;2973:70;:::i;:::-;3062:8;;-1:-1:-1;2947:96:1;-1:-1:-1;3150:2:1;3135:18;;3122:32;;-1:-1:-1;3166:16:1;;;3163:36;;;3195:1;3192;3185:12;3163:36;;3234:72;3298:7;3287:8;3276:9;3272:24;3234:72;:::i;:::-;2456:910;;;;-1:-1:-1;2456:910:1;;-1:-1:-1;2456:910:1;;3325:8;;2456:910;-1:-1:-1;;;2456:910:1:o;3768:180::-;3827:6;3880:2;3868:9;3859:7;3855:23;3851:32;3848:52;;;3896:1;3893;3886:12;3848:52;-1:-1:-1;3919:23:1;;3768:180;-1:-1:-1;3768:180:1:o;3953:160::-;4018:20;;4074:13;;4067:21;4057:32;;4047:60;;4103:1;4100;4093:12;4118:180;4174:6;4227:2;4215:9;4206:7;4202:23;4198:32;4195:52;;;4243:1;4240;4233:12;4195:52;4266:26;4282:9;4266:26;:::i;:::-;4256:36;4118:180;-1:-1:-1;;;4118:180:1:o;4303:247::-;4362:6;4415:2;4403:9;4394:7;4390:23;4386:32;4383:52;;;4431:1;4428;4421:12;4383:52;4470:9;4457:23;4489:31;4514:5;4489:31;:::i;4555:315::-;4620:6;4628;4681:2;4669:9;4660:7;4656:23;4652:32;4649:52;;;4697:1;4694;4687:12;4649:52;4736:9;4723:23;4755:31;4780:5;4755:31;:::i;:::-;4805:5;-1:-1:-1;4829:35:1;4860:2;4845:18;;4829:35;:::i;:::-;4819:45;;4555:315;;;;;:::o;4875:388::-;4943:6;4951;5004:2;4992:9;4983:7;4979:23;4975:32;4972:52;;;5020:1;5017;5010:12;4972:52;5059:9;5046:23;5078:31;5103:5;5078:31;:::i;:::-;5128:5;-1:-1:-1;5185:2:1;5170:18;;5157:32;5198:33;5157:32;5198:33;:::i;:::-;5250:7;5240:17;;;4875:388;;;;;:::o;5268:127::-;5329:10;5324:3;5320:20;5317:1;5310:31;5360:4;5357:1;5350:15;5384:4;5381:1;5374:15;5400:128;5467:9;;;5488:11;;;5485:37;;;5502:18;;:::i;5533:217::-;5573:1;5599;5589:132;;5643:10;5638:3;5634:20;5631:1;5624:31;5678:4;5675:1;5668:15;5706:4;5703:1;5696:15;5589:132;-1:-1:-1;5735:9:1;;5533:217::o;5755:168::-;5828:9;;;5859;;5876:15;;;5870:22;;5856:37;5846:71;;5897:18;;:::i;5928:125::-;5993:9;;;6014:10;;;6011:36;;;6027:18;;:::i;6058:380::-;6137:1;6133:12;;;;6180;;;6201:61;;6255:4;6247:6;6243:17;6233:27;;6201:61;6308:2;6300:6;6297:14;6277:18;6274:38;6271:161;;6354:10;6349:3;6345:20;6342:1;6335:31;6389:4;6386:1;6379:15;6417:4;6414:1;6407:15;6271:161;;6058:380;;;:::o;6443:356::-;6645:2;6627:21;;;6664:18;;;6657:30;6723:34;6718:2;6703:18;;6696:62;6790:2;6775:18;;6443:356::o;8614:251::-;8684:6;8737:2;8725:9;8716:7;8712:23;8708:32;8705:52;;;8753:1;8750;8743:12;8705:52;8785:9;8779:16;8804:31;8829:5;8804:31;:::i;9179:422::-;9268:1;9311:5;9268:1;9325:270;9346:7;9336:8;9333:21;9325:270;;;9405:4;9401:1;9397:6;9393:17;9387:4;9384:27;9381:53;;;9414:18;;:::i;:::-;9464:7;9454:8;9450:22;9447:55;;;9484:16;;;;9447:55;9563:22;;;;9523:15;;;;9325:270;;;9329:3;9179:422;;;;;:::o;9606:806::-;9655:5;9685:8;9675:80;;-1:-1:-1;9726:1:1;9740:5;;9675:80;9774:4;9764:76;;-1:-1:-1;9811:1:1;9825:5;;9764:76;9856:4;9874:1;9869:59;;;;9942:1;9937:130;;;;9849:218;;9869:59;9899:1;9890:10;;9913:5;;;9937:130;9974:3;9964:8;9961:17;9958:43;;;9981:18;;:::i;:::-;-1:-1:-1;;10037:1:1;10023:16;;10052:5;;9849:218;;10151:2;10141:8;10138:16;10132:3;10126:4;10123:13;10119:36;10113:2;10103:8;10100:16;10095:2;10089:4;10086:12;10082:35;10079:77;10076:159;;;-1:-1:-1;10188:19:1;;;10220:5;;10076:159;10267:34;10292:8;10286:4;10267:34;:::i;:::-;10337:6;10333:1;10329:6;10325:19;10316:7;10313:32;10310:58;;;10348:18;;:::i;:::-;10386:20;;9606:806;-1:-1:-1;;;9606:806:1:o;10417:140::-;10475:5;10504:47;10545:4;10535:8;10531:19;10525:4;10504:47;:::i;11174:306::-;11262:6;11270;11278;11331:2;11319:9;11310:7;11306:23;11302:32;11299:52;;;11347:1;11344;11337:12;11299:52;11376:9;11370:16;11360:26;;11426:2;11415:9;11411:18;11405:25;11395:35;;11470:2;11459:9;11455:18;11449:25;11439:35;;11174:306;;;;;:::o;11485:127::-;11546:10;11541:3;11537:20;11534:1;11527:31;11577:4;11574:1;11567:15;11601:4;11598:1;11591:15;11617:127;11678:10;11673:3;11669:20;11666:1;11659:31;11709:4;11706:1;11699:15;11733:4;11730:1;11723:15;11749:461;11802:3;11840:5;11834:12;11867:6;11862:3;11855:19;11893:4;11922:2;11917:3;11913:12;11906:19;;11959:2;11952:5;11948:14;11980:1;11990:195;12004:6;12001:1;11998:13;11990:195;;;12069:13;;-1:-1:-1;;;;;12065:39:1;12053:52;;12125:12;;;;12160:15;;;;12101:1;12019:9;11990:195;;;-1:-1:-1;12201:3:1;;11749:461;-1:-1:-1;;;;;11749:461:1:o;12215:502::-;12478:6;12467:9;12460:25;12521:3;12516:2;12505:9;12501:18;12494:31;12441:4;12542:57;12594:3;12583:9;12579:19;12571:6;12542:57;:::i;:::-;-1:-1:-1;;;;;12635:32:1;;;;12630:2;12615:18;;12608:60;-1:-1:-1;12699:2:1;12684:18;12677:34;12534:65;12215:502;-1:-1:-1;;12215:502:1:o;12722:1105::-;12817:6;12848:2;12891;12879:9;12870:7;12866:23;12862:32;12859:52;;;12907:1;12904;12897:12;12859:52;12940:9;12934:16;12969:18;13010:2;13002:6;12999:14;12996:34;;;13026:1;13023;13016:12;12996:34;13064:6;13053:9;13049:22;13039:32;;13109:7;13102:4;13098:2;13094:13;13090:27;13080:55;;13131:1;13128;13121:12;13080:55;13160:2;13154:9;13182:2;13178;13175:10;13172:36;;;13188:18;;:::i;:::-;13234:2;13231:1;13227:10;13266:2;13260:9;13329:2;13325:7;13320:2;13316;13312:11;13308:25;13300:6;13296:38;13384:6;13372:10;13369:22;13364:2;13352:10;13349:18;13346:46;13343:72;;;13395:18;;:::i;:::-;13431:2;13424:22;13481:18;;;13515:15;;;;-1:-1:-1;13557:11:1;;;13553:20;;;13585:19;;;13582:39;;;13617:1;13614;13607:12;13582:39;13641:11;;;;13661:135;13677:6;13672:3;13669:15;13661:135;;;13743:10;;13731:23;;13694:12;;;;13774;;;;13661:135;;;13815:6;12722:1105;-1:-1:-1;;;;;;;;12722:1105:1:o;13832:135::-;13871:3;13892:17;;;13889:43;;13912:18;;:::i;:::-;-1:-1:-1;13959:1:1;13948:13;;13832:135::o;18477:401::-;18679:2;18661:21;;;18718:2;18698:18;;;18691:30;18757:34;18752:2;18737:18;;18730:62;-1:-1:-1;;;18823:2:1;18808:18;;18801:35;18868:3;18853:19;;18477:401::o;18883:399::-;19085:2;19067:21;;;19124:2;19104:18;;;19097:30;19163:34;19158:2;19143:18;;19136:62;-1:-1:-1;;;19229:2:1;19214:18;;19207:33;19272:3;19257:19;;18883:399::o;20458:148::-;20546:4;20525:12;;;20539;;;20521:31;;20564:13;;20561:39;;;20580:18;;:::i;20611:582::-;20910:6;20899:9;20892:25;20953:6;20948:2;20937:9;20933:18;20926:34;20996:3;20991:2;20980:9;20976:18;20969:31;20873:4;21017:57;21069:3;21058:9;21054:19;21046:6;21017:57;:::i;:::-;-1:-1:-1;;;;;21110:32:1;;;;21105:2;21090:18;;21083:60;-1:-1:-1;21174:3:1;21159:19;21152:35;21009:65;20611:582;-1:-1:-1;;;20611:582:1:o

Swarm Source

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