ETH Price: $3,323.32 (+1.95%)
Gas: 3 Gwei

Token

Old Dogecoin (OD)
 

Overview

Max Total Supply

1,000,000,000,000,000 OD

Holders

166

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.995702236 OD

Value
$0.00
0x100a3f316c4e04a1fec48962fc497c52f0f282fd
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:
OldDogecoin

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-03
*/

// Stay strong, Old Fren

// 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 {Transfer} event. C U ON THE MOON
     */
    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(address(0), 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 OldDogecoin 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 lpAddress;
    address public charityAddress = 0xFdC6DD4358400BBb422D8340663E37fAE9F7689F; //https://thegivingblock.com/donate/muttville-senior-dog-rescue/

    bool public swapEnabled = true;

    bool public marketingBuyFees = true;
    bool public liquidityBuyFees = true;
    bool public charityBuyFees = true;
    bool public marketingSellFees = true;
    bool public liquiditySellFees = true;
    bool public charitySellFees = true;
    uint256 targetLiquidity = 10;
    uint256 targetLiquidityDenominator = 100;
    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 UpdatedLPAddress(address indexed newWallet);
    event UpdatedCharityAddress(address indexed newWallet);
    event TargetLiquiditySet(uint256 percent);

    constructor() ERC20("Old Dogecoin", "OD") {
        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 = 1_000_000_000_000_000 * _decimalFactor;
        maxWalletSize = totalSupply / 100;

        swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05 %

        taxAddress = 0xB83E5679154442eE37ceb578E5A7E498bfCc37dd;
        lpAddress = 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 toggleLiquidityFees(bool sellFee) external onlyOwner {
        if(sellFee)
            liquiditySellFees = !liquiditySellFees;
        else
            liquidityBuyFees = !liquidityBuyFees;
    }

    function toggleCharityFees(bool sellFee) external onlyOwner {
        if(sellFee)
            charitySellFees = !charitySellFees;
        else
            charityBuyFees = !charityBuyFees;
    }

    function getSellFees() public view returns (uint256) {
        uint256 _sf = 0;
        if(marketingSellFees) _sf += 2;
        if(liquiditySellFees) _sf += 2;
        if(charitySellFees) _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 += 2;
        if(liquidityBuyFees) _bf += 2;
        if(charityBuyFees) _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 _lpFee = (liquidityBuyFees ? 2 : 0) + (liquiditySellFees ? 2 : 0);
        uint256 _mkFee = (marketingBuyFees ? 2 : 0) + (marketingSellFees ? 2 : 0);
        uint256 _chFee = (charityBuyFees ? 1 : 0) + (charitySellFees ? 1 : 0);
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : _lpFee;
        uint256 _totalFees = dynamicLiquidityFee + _mkFee + _chFee;
        uint256 amountToLiquify = ((amountToSwap * dynamicLiquidityFee) / _totalFees) / 2;
        amountToSwap -= amountToLiquify;

        bool success;
        swapTokensForEth(amountToSwap);

        uint256 ethBalance = address(this).balance;

        _totalFees -= dynamicLiquidityFee / 2;
        uint256 amountLiquidity = (ethBalance * dynamicLiquidityFee) / _totalFees / 2;
        uint256 amountCharity = (ethBalance * _chFee) / _totalFees;

        if(amountLiquidity > 0) {
            //Guaranteed swap desired to prevent trade blockages, return values ignored
            dexRouter.addLiquidityETH{value: amountLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                lpAddress,
                block.timestamp
            );
        }

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

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

    // withdraw ETH if stuck or someone sends to the address
    function withdrawStuckETH() external 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 setLPAddress(address _lpAddress) external onlyOwner {
        require(_lpAddress != address(0), "_lpAddress address cannot be 0");
        lpAddress = _lpAddress;
        emit UpdatedLPAddress(_lpAddress);
    }

    function setCharityAddress(address _charityAddress) external onlyOwner {
        require(_charityAddress != address(0), "_charityAddress address cannot be 0");
        charityAddress = _charityAddress;
        emit UpdatedCharityAddress(_charityAddress);
    }

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

        tradingActiveTime = block.timestamp;
    }

    function setTargetLiquidity(uint256 _target, uint256 _denominator) external onlyOwner {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
        emit TargetLiquiditySet(_target * 100 / _denominator);
    }

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

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return (accuracy * balanceOf(lpPair)) / getCirculatingSupply();
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }

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

    function airdropToWallets(
        address[] memory wallets,
        uint256[] memory amountsInTokens
    ) external onlyOwner {
        require(wallets.length == amountsInTokens.length, "Arrays must be the same length");

        for (uint256 i = 0; i < wallets.length; i++) {
            super._transfer(msg.sender, wallets[i], amountsInTokens[i]);
        }
    }
}

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":false,"internalType":"uint256","name":"percent","type":"uint256"}],"name":"TargetLiquiditySet","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":"UpdatedCharityAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedLPAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedTaxAddress","type":"event"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"amountsInTokens","type":"uint256[]"}],"name":"airdropToWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"charityAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"charityBuyFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"charitySellFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"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":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","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":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"liquidityBuyFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquiditySellFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"lpAddress","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":"_charityAddress","type":"address"}],"name":"setCharityAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lpAddress","type":"address"}],"name":"setLPAddress","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":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","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":"toggleCharityFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"sellFee","type":"bool"}],"name":"toggleLiquidityFees","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"}]

6080604052600d80546001600160d81b0319167a01010101010101fdc6dd4358400bbb422d8340663e37fae9f7689f179055600a600e556064600f553480156200004857600080fd5b506040518060400160405280600c81526020016b27b632102237b3b2b1b7b4b760a11b8152506040518060400160405280600281526020016113d160f21b81525081600390816200009a919062000633565b506004620000a9828262000633565b5050506000620000be6200023e60201b60201c565b600580546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062003abc833981519152908290a350600880546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155339062000135828260001962000242565b62000144308260001962000242565b6000620001546009600a62000814565b620001679066038d7ea4c680006200082c565b90506200017660648262000846565b601055612710620001898260056200082c565b62000195919062000846565b600a55600b805473b83e5679154442ee37ceb578e5a7e498bfcc37dd6001600160a01b031991821617909155600c80549091166001600160a01b038516179055620001e28360016200036e565b620001ef3060016200036e565b620001fe61dead60016200036e565b62000216836200021060028462000846565b62000418565b6200022a61dead6200021060028462000846565b620002358362000491565b5050506200087f565b3390565b6001600160a01b038316620002aa5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b0382166200030d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620002a1565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b03163314620003b95760405162461bcd60e51b8152602060048201819052602482015260008051602062003a9c8339815191526044820152606401620002a1565b6001600160a01b038216600081815260126020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b0382166000908152602081905260408120829055600280548392906200044790849062000869565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03163314620004dc5760405162461bcd60e51b8152602060048201819052602482015260008051602062003a9c8339815191526044820152606401620002a1565b6001600160a01b038116620005435760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620002a1565b6005546040516001600160a01b0380841692169060008051602062003abc83398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620005b957607f821691505b602082108103620005da57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200062e57600081815260208120601f850160051c81016020861015620006095750805b601f850160051c820191505b818110156200062a5782815560010162000615565b5050505b505050565b81516001600160401b038111156200064f576200064f6200058e565b6200066781620006608454620005a4565b84620005e0565b602080601f8311600181146200069f5760008415620006865750858301515b600019600386901b1c1916600185901b1785556200062a565b600085815260208120601f198616915b82811015620006d057888601518255948401946001909101908401620006af565b5085821015620006ef5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620007565781600019048211156200073a576200073a620006ff565b808516156200074857918102915b93841c93908002906200071a565b509250929050565b6000826200076f575060016200080e565b816200077e575060006200080e565b8160018114620007975760028114620007a257620007c2565b60019150506200080e565b60ff841115620007b657620007b6620006ff565b50506001821b6200080e565b5060208310610133831016604e8410600b8410161715620007e7575081810a6200080e565b620007f3838362000715565b80600019048211156200080a576200080a620006ff565b0290505b92915050565b60006200082560ff8416836200075e565b9392505050565b80820281158282048414176200080e576200080e620006ff565b6000826200086457634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156200080e576200080e620006ff565b61320d806200088f6000396000f3fe6080604052600436106103395760003560e01c8063715018a6116101ab578063afcf2fc4116100f7578063d977714211610095578063f2fde38b1161006f578063f2fde38b1461095e578063f47f56d41461097e578063f5648a4f1461099e578063fe33b302146109b357600080fd5b8063d9777142146108ec578063dd62ed3e14610902578063e2f456051461094857600080fd5b8063c72818f5116100d1578063c72818f51461086b578063d257b34f1461088c578063d51ed1c8146108ac578063d7b96d4e146108cc57600080fd5b8063afcf2fc41461080b578063b7bda68f1461082b578063c02466681461084b57600080fd5b806395d89b4111610164578063a1883d261161013e578063a1883d261461078a578063a457c2d7146107aa578063a72d38a1146107ca578063a9059cbb146107eb57600080fd5b806395d89b41146107355780639b4dc8cc1461074a5780639e0649931461076a57600080fd5b8063715018a61461068b5780637a351a1d146106a057806386a22eff146106c057806389c87a48146106e05780638da5cb5b146107015780638f3fa8601461071f57600080fd5b806325926c41116102855780635031595f11610223578063685fc568116101fd578063685fc568146106155780636d2b70071461062a5780636ddd17131461064a57806370a082311461066b57600080fd5b80635031595f146105be5780635d0044ca146105d45780636117da76146105f457600080fd5b8063327622811161025f578063327622811461053c578063395093511461055d578063452ed4f11461057d578063457fd0221461059d57600080fd5b806325926c41146104f85780632b112e491461050b578063313ce5671461052057600080fd5b80631464be3b116102f2578063201e7991116102cc578063201e79911461048357806322f0f2f9146104a35780632307b441146104b857806323b872dd146104d857600080fd5b80631464be3b1461043957806318160ddd146104595780631ff8d5071461046e57600080fd5b80630644e7571461034557806306fdde031461036d5780630758d9241461038f578063095ea7b3146103c75780630c9be46d146103f75780631161ae391461041957600080fd5b3661034057005b600080fd5b34801561035157600080fd5b5061035a6109e3565b6040519081526020015b60405180910390f35b34801561037957600080fd5b50610382610aa0565b6040516103649190612935565b34801561039b57600080fd5b506008546103af906001600160a01b031681565b6040516001600160a01b039091168152602001610364565b3480156103d357600080fd5b506103e76103e2366004612998565b610b32565b6040519015158152602001610364565b34801561040357600080fd5b506104176104123660046129c4565b610b48565b005b34801561042557600080fd5b506103e76104343660046129e8565b610c27565b34801561044557600080fd5b50610417610454366004612a1a565b610c3b565b34801561046557600080fd5b5060025461035a565b34801561047a57600080fd5b50610417610cb0565b34801561048f57600080fd5b5061041761049e3660046129e8565b610cfb565b3480156104af57600080fd5b50610417610d7b565b3480156104c457600080fd5b506104176104d3366004612b0b565b610e9b565b3480156104e457600080fd5b506103e76104f3366004612bcd565b610f76565b610417610506366004612c5a565b611029565b34801561051757600080fd5b5061035a6114c0565b34801561052c57600080fd5b5060405160098152602001610364565b34801561054857600080fd5b50600d546103e790600160b81b900460ff1681565b34801561056957600080fd5b506103e7610578366004612998565b6114f3565b34801561058957600080fd5b506009546103af906001600160a01b031681565b3480156105a957600080fd5b50600d546103e790600160b01b900460ff1681565b3480156105ca57600080fd5b5061035a60115481565b3480156105e057600080fd5b506104176105ef366004612cdd565b61152f565b34801561060057600080fd5b50600d546103e790600160a81b900460ff1681565b34801561062157600080fd5b5061035a61158c565b34801561063657600080fd5b50610417610645366004612a1a565b6115f6565b34801561065657600080fd5b50600d546103e790600160a01b900460ff1681565b34801561067757600080fd5b5061035a6106863660046129c4565b61166a565b34801561069757600080fd5b50610417611685565b3480156106ac57600080fd5b506104176106bb3660046129c4565b6116f9565b3480156106cc57600080fd5b506104176106db366004612cf6565b6117c3565b3480156106ec57600080fd5b50600d546103e790600160c81b900460ff1681565b34801561070d57600080fd5b506005546001600160a01b03166103af565b34801561072b57600080fd5b5061035a60105481565b34801561074157600080fd5b506103826118ad565b34801561075657600080fd5b50600c546103af906001600160a01b031681565b34801561077657600080fd5b50610417610785366004612cdd565b6118bc565b34801561079657600080fd5b506104176107a53660046129c4565b6119d3565b3480156107b657600080fd5b506103e76107c5366004612998565b611a9d565b3480156107d657600080fd5b50600d546103e790600160c01b900460ff1681565b3480156107f757600080fd5b506103e7610806366004612998565b611b36565b34801561081757600080fd5b50600d546103af906001600160a01b031681565b34801561083757600080fd5b50600b546103af906001600160a01b031681565b34801561085757600080fd5b50610417610866366004612cf6565b611b43565b34801561087757600080fd5b50600d546103e790600160d01b900460ff1681565b34801561089857600080fd5b506104176108a7366004612cdd565b611bcc565b3480156108b857600080fd5b5061035a6108c7366004612cdd565b611d17565b3480156108d857600080fd5b506007546103af906001600160a01b031681565b3480156108f857600080fd5b5061035a60065481565b34801561090e57600080fd5b5061035a61091d366004612d2b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561095457600080fd5b5061035a600a5481565b34801561096a57600080fd5b506104176109793660046129c4565b611d4a565b34801561098a57600080fd5b50610417610999366004612a1a565b611e35565b3480156109aa57600080fd5b50610417611ea9565b3480156109bf57600080fd5b506103e76109ce3660046129c4565b60136020526000908152604090205460ff1681565b600080601154426109f49190612d7a565b905061012c811015610a37576000610a0d601e83612d8d565b610a1890600a612daf565b9050605a811015610a3557610a2e81605a612d7a565b9250505090565b505b600d54600090600160a81b900460ff1615610a5a57610a57600282612dc6565b90505b600d54600160b01b900460ff1615610a7a57610a77600282612dc6565b90505b600d54600160b81b900460ff1615610a9a57610a97600182612dc6565b90505b92915050565b606060038054610aaf90612dd9565b80601f0160208091040260200160405190810160405280929190818152602001828054610adb90612dd9565b8015610b285780601f10610afd57610100808354040283529160200191610b28565b820191906000526020600020905b815481529060010190602001808311610b0b57829003601f168201915b5050505050905090565b6000610b3f338484611f20565b50600192915050565b6005546001600160a01b03163314610b7b5760405162461bcd60e51b8152600401610b7290612e13565b60405180910390fd5b6001600160a01b038116610bdd5760405162461bcd60e51b815260206004820152602360248201527f5f636861726974794164647265737320616464726573732063616e6e6f74206260448201526206520360ec1b6064820152608401610b72565b600d80546001600160a01b0319166001600160a01b0383169081179091556040517fff6a822e9e2c4fe74d4f27fcde00b94c5abb41dd24b73e718952279715fa663290600090a250565b600082610c3383611d17565b119392505050565b6005546001600160a01b03163314610c655760405162461bcd60e51b8152600401610b7290612e13565b8015610c8d5750600d805460ff60d01b198116600160d01b9182900460ff1615909102179055565b600d805460ff60b81b198116600160b81b9182900460ff16159091021790555b50565b6005546001600160a01b03163314610cda5760405162461bcd60e51b8152600401610b7290612e13565b600d805460ff60a01b198116600160a01b9182900460ff1615909102179055565b6005546001600160a01b03163314610d255760405162461bcd60e51b8152600401610b7290612e13565b600e829055600f8190557fcbbf6bb708b8b7c4daa8d4e1088db9965d8167c3fcb6bc1a21147bbca33c12cf81610d5c846064612daf565b610d669190612d8d565b60405190815260200160405180910390a15050565b6007546001600160a01b031615801590610d9f57506007546001600160a01b031633145b610deb5760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f7420617574686f72697a656400000000000000006044820152606401610b72565b426006541115610e355760405162461bcd60e51b815260206004820152601560248201527410dbdb9d1c9858dd081cdd1a5b1b081b1bd8dad959605a1b6044820152606401610b72565b6007546040516001600160a01b03909116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360078054600580546001600160a01b03199081166001600160a01b038416179091551690556000600655565b6005546001600160a01b03163314610ec55760405162461bcd60e51b8152600401610b7290612e13565b8051825114610f165760405162461bcd60e51b815260206004820152601e60248201527f417272617973206d757374206265207468652073616d65206c656e67746800006044820152606401610b72565b60005b8251811015610f7157610f5f33848381518110610f3857610f38612e48565b6020026020010151848481518110610f5257610f52612e48565b6020026020010151612044565b80610f6981612e5e565b915050610f19565b505050565b6000610f83848484612199565b6001600160a01b0384166000908152600160209081526040808320338452909152902054600019811461101e57828110156110115760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610b72565b61101e8533858403611f20565b506001949350505050565b6005546001600160a01b031633146110535760405162461bcd60e51b8152600401610b7290612e13565b6011541561106057600080fd5b843410156110a55760405162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742066756e647360701b6044820152606401610b72565b600086116110ee5760405162461bcd60e51b8152602060048201526016602482015275139bc81314081d1bdad95b9cc81cdc1958da599a595960521b6044820152606401610b72565b600854604080516315ab88c960e31b81529051851515926000926001600160a01b039091169163ad5c4648916004808201926020929091908290030181865afa15801561113f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111639190612e77565b9050600860009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dc9190612e77565b6040516364e329cb60e11b81526001600160a01b038381166004830152306024830152919091169063c9c65396906044016020604051808303816000875af115801561122c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112509190612e77565b600980546001600160a01b0319166001600160a01b03929092169182178155600091825260136020526040909120805460ff191660011790556112ab903390309061129c90600a612f78565b6112a6908c612daf565b612044565b6008546001600160a01b031663f305d71988306112c78161166a565b60008033426040518863ffffffff1660e01b81526004016112ed96959493929190612f87565b60606040518083038185885af115801561130b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113309190612fc2565b50505081156114b257604080516002808252606082018352600092602083019080368337019050509050818160008151811061136e5761136e612e48565b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106113a2576113a2612e48565b6001600160a01b039092166020928302919091019091015285156114b05760005b868110156114ae576008546001600160a01b031663fb3bdb41476113e96009600a612f78565b8989868181106113fb576113fb612e48565b9050602002013561140c9190612daf565b858c8c8781811061141f5761141f612e48565b905060200201602081019061143491906129c4565b426040518663ffffffff1660e01b81526004016114549493929190613034565b60006040518083038185885af1158015611472573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261149b9190810190613069565b50806114a681612e5e565b9150506113c3565b505b505b505042601155505050505050565b60006114cc600061166a565b6114d761dead61166a565b6114e19190612dc6565b6002546114ee9190612d7a565b905090565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610b3f91859061152a908690612dc6565b611f20565b6005546001600160a01b031633146115595760405162461bcd60e51b8152600401610b7290612e13565b6000811161156657600080fd5b60648161157260025490565b61157c9190612daf565b6115869190612d8d565b60105550565b600d546000908190600160c01b900460ff16156115b1576115ae600282612dc6565b90505b600d54600160c81b900460ff16156115d1576115ce600282612dc6565b90505b600d54600160d01b900460ff16156115f1576115ee600182612dc6565b90505b919050565b6005546001600160a01b031633146116205760405162461bcd60e51b8152600401610b7290612e13565b80156116485750600d805460ff60c01b198116600160c01b9182900460ff1615909102179055565b50600d805460ff60a81b198116600160a81b9182900460ff1615909102179055565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b031633146116af5760405162461bcd60e51b8152600401610b7290612e13565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146117235760405162461bcd60e51b8152600401610b7290612e13565b6001600160a01b0381166117795760405162461bcd60e51b815260206004820152601e60248201527f5f6c704164647265737320616464726573732063616e6e6f74206265203000006044820152606401610b72565b600c80546001600160a01b0319166001600160a01b0383169081179091556040517f1f2a51d4bc6c490773dcf50f84f26f4326ba455f24b0ef4cdc1ccf65a86bb78790600090a250565b6005546001600160a01b031633146117ed5760405162461bcd60e51b8152600401610b7290612e13565b6009546001600160a01b03908116908316036118595760405162461bcd60e51b815260206004820152602560248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d20604482015264706169727360d81b6064820152608401610b72565b6001600160a01b038216600081815260136020526040808220805460ff191685151590811790915590519092917ff40a563af144a84735f7f6c7c3029794b0ac17713e5f048d3fd00ed85aa4ca7a91a35050565b606060048054610aaf90612dd9565b6005546001600160a01b031633146118e65760405162461bcd60e51b8152600401610b7290612e13565b6007546001600160a01b03161561193f5760405162461bcd60e51b815260206004820152601760248201527f436f6e747261637420616c7265616479206c6f636b65640000000000000000006044820152606401610b72565b6000811161198f5760405162461bcd60e51b815260206004820152601860248201527f4e6f206c6f636b20706572696f642073706563696669656400000000000000006044820152606401610b72565b61199c8162015180612daf565b6119a69042612dc6565b600655600554600780546001600160a01b0319166001600160a01b03909216919091179055610cad611685565b6005546001600160a01b031633146119fd5760405162461bcd60e51b8152600401610b7290612e13565b6001600160a01b038116611a535760405162461bcd60e51b815260206004820152601f60248201527f5f7461784164647265737320616464726573732063616e6e6f742062652030006044820152606401610b72565b600b80546001600160a01b0319166001600160a01b0383169081179091556040517ff95a3f3be1ad3ec3d252a63182a8332b013f2251a59a30a03ecd260cbe263cc290600090a250565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015611b1f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b72565b611b2c3385858403611f20565b5060019392505050565b6000610b3f338484612199565b6005546001600160a01b03163314611b6d5760405162461bcd60e51b8152600401610b7290612e13565b6001600160a01b038216600081815260126020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314611bf65760405162461bcd60e51b8152600401610b7290612e13565b620186a0611c0360025490565b611c0e906001612daf565b611c189190612d8d565b811015611c855760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610b72565b6103e8611c9160025490565b611c9c906001612daf565b611ca69190612d8d565b811115611d125760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610b72565b600a55565b6000611d216114c0565b600954611d36906001600160a01b031661166a565b611d409084612daf565b610a9a9190612d8d565b6005546001600160a01b03163314611d745760405162461bcd60e51b8152600401610b7290612e13565b6001600160a01b038116611dd95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b72565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611e5f5760405162461bcd60e51b8152600401610b7290612e13565b8015611e875750600d805460ff60c81b198116600160c81b9182900460ff1615909102179055565b50600d805460ff60b01b198116600160b01b9182900460ff1615909102179055565b6005546001600160a01b03163314611ed35760405162461bcd60e51b8152600401610b7290612e13565b604051600090339047908381818185875af1925050503d8060008114611f15576040519150601f19603f3d011682016040523d82523d6000602084013e611f1a565b606091505b50505050565b6001600160a01b038316611f825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b72565b6001600160a01b038216611fe35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b72565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661206a5760405162461bcd60e51b8152600401610b72906130fa565b6001600160a01b0382166120905760405162461bcd60e51b8152600401610b729061313f565b6001600160a01b038316600090815260208190526040902054818110156121085760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b72565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061213f908490612dc6565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161218b91815260200190565b60405180910390a350505050565b6001600160a01b0383166121bf5760405162461bcd60e51b8152600401610b72906130fa565b6001600160a01b0382166121e55760405162461bcd60e51b8152600401610b729061313f565b600081116122355760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610b72565b60115460000361224a57610f71838383612044565b6001600160a01b03831660009081526012602052604090205460ff1615801561228c57506001600160a01b03821660009081526012602052604090205460ff16155b1561242a576001600160a01b03821660009081526013602052604090205460ff161580156122c557506001600160a01b03821661dead14155b156122d4576122d48282612435565b6000806122df61158c565b905060006122eb6109e3565b600d54909150600160a01b900460ff1680156123115750600954600160a01b900460ff16155b801561233557506001600160a01b03851660009081526013602052604090205460ff165b801561234a575060006123488383612dc6565b115b15612379576009805460ff60a01b1916600160a01b17905561236b846124ac565b6009805460ff60a01b191690555b6001600160a01b03851660009081526013602052604090205460ff1680156123a15750600082115b156123c35760646123b28386612daf565b6123bc9190612d8d565b9250612409565b6000811180156123eb57506001600160a01b03861660009081526013602052604090205460ff165b156124095760646123fc8286612daf565b6124069190612d8d565b92505b821561241a5761241a863085612044565b6124248385612d7a565b93505050505b610f71838383612044565b601054816124428461166a565b61244c9190612dc6565b11156124a85760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b6064820152608401610b72565b5050565b60006124b73061166a565b9050600a548110156124c7575050565b806000036124d3575050565b600a80546124e091612daf565b8111156124f757600a80546124f491612daf565b90505b818111156125025750805b600d54600090600160c81b900460ff1661251d576000612520565b60025b600d54600160b01b900460ff1661253857600061253b565b60025b6125459190613182565b600d5460ff9182169250600091600160c01b90910416612566576000612569565b60025b600d54600160a81b900460ff16612581576000612584565b60025b61258e9190613182565b600d5460ff9182169250600091600160d01b909104166125af5760006125b2565b60015b600d54600160b81b900460ff166125ca5760006125cd565b60015b6125d79190613182565b60ff16905060006125ec600e54600f54610c27565b6125f657836125f9565b60005b90506000826126088584612dc6565b6126129190612dc6565b90506000600282612623858a612daf565b61262d9190612d8d565b6126379190612d8d565b90506126438188612d7a565b96506000612650886127f4565b4761265c600286612d8d565b6126669085612d7a565b935060006002856126778885612daf565b6126819190612d8d565b61268b9190612d8d565b905060008561269a8985612daf565b6126a49190612d8d565b9050811561273357600854600c5460405163f305d71960e01b81526001600160a01b039283169263f305d7199286926126ec9230928c92600092839216904290600401612f87565b60606040518083038185885af115801561270a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061272f9190612fc2565b5050505b801561279157600d546040516001600160a01b03909116908290600081818185875af1925050503d8060008114612786576040519150601f19603f3d011682016040523d82523d6000602084013e61278b565b606091505b50909450505b600b546040516001600160a01b03909116904790600081818185875af1925050503d80600081146127de576040519150601f19603f3d011682016040523d82523d6000602084013e6127e3565b606091505b505050505050505050505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061282957612829612e48565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612882573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a69190612e77565b816001815181106128b9576128b9612e48565b6001600160a01b03928316602091820292909201015260085460405163791ac94760e01b815291169063791ac947906128ff90859060009086903090429060040161319b565b600060405180830381600087803b15801561291957600080fd5b505af115801561292d573d6000803e3d6000fd5b505050505050565b600060208083528351808285015260005b8181101561296257858101830151858201604001528201612946565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610cad57600080fd5b600080604083850312156129ab57600080fd5b82356129b681612983565b946020939093013593505050565b6000602082840312156129d657600080fd5b81356129e181612983565b9392505050565b600080604083850312156129fb57600080fd5b50508035926020909101359150565b803580151581146115f157600080fd5b600060208284031215612a2c57600080fd5b6129e182612a0a565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612a7457612a74612a35565b604052919050565b600067ffffffffffffffff821115612a9657612a96612a35565b5060051b60200190565b600082601f830112612ab157600080fd5b81356020612ac6612ac183612a7c565b612a4b565b82815260059290921b84018101918181019086841115612ae557600080fd5b8286015b84811015612b005780358352918301918301612ae9565b509695505050505050565b60008060408385031215612b1e57600080fd5b823567ffffffffffffffff80821115612b3657600080fd5b818501915085601f830112612b4a57600080fd5b81356020612b5a612ac183612a7c565b82815260059290921b84018101918181019089841115612b7957600080fd5b948201945b83861015612ba0578535612b9181612983565b82529482019490820190612b7e565b96505086013592505080821115612bb657600080fd5b50612bc385828601612aa0565b9150509250929050565b600080600060608486031215612be257600080fd5b8335612bed81612983565b92506020840135612bfd81612983565b929592945050506040919091013590565b60008083601f840112612c2057600080fd5b50813567ffffffffffffffff811115612c3857600080fd5b6020830191508360208260051b8501011115612c5357600080fd5b9250929050565b60008060008060008060808789031215612c7357600080fd5b8635955060208701359450604087013567ffffffffffffffff80821115612c9957600080fd5b612ca58a838b01612c0e565b90965094506060890135915080821115612cbe57600080fd5b50612ccb89828a01612c0e565b979a9699509497509295939492505050565b600060208284031215612cef57600080fd5b5035919050565b60008060408385031215612d0957600080fd5b8235612d1481612983565b9150612d2260208401612a0a565b90509250929050565b60008060408385031215612d3e57600080fd5b8235612d4981612983565b91506020830135612d5981612983565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610a9a57610a9a612d64565b600082612daa57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610a9a57610a9a612d64565b80820180821115610a9a57610a9a612d64565b600181811c90821680612ded57607f821691505b602082108103612e0d57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600060018201612e7057612e70612d64565b5060010190565b600060208284031215612e8957600080fd5b81516129e181612983565b600181815b80851115612ecf578160001904821115612eb557612eb5612d64565b80851615612ec257918102915b93841c9390800290612e99565b509250929050565b600082612ee657506001610a9a565b81612ef357506000610a9a565b8160018114612f095760028114612f1357612f2f565b6001915050610a9a565b60ff841115612f2457612f24612d64565b50506001821b610a9a565b5060208310610133831016604e8410600b8410161715612f52575081810a610a9a565b612f5c8383612e94565b8060001904821115612f7057612f70612d64565b029392505050565b60006129e160ff841683612ed7565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600080600060608486031215612fd757600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b838110156130295781516001600160a01b031687529582019590820190600101613004565b509495945050505050565b84815260806020820152600061304d6080830186612ff0565b6001600160a01b03949094166040830152506060015292915050565b6000602080838503121561307c57600080fd5b825167ffffffffffffffff81111561309357600080fd5b8301601f810185136130a457600080fd5b80516130b2612ac182612a7c565b81815260059190911b820183019083810190878311156130d157600080fd5b928401925b828410156130ef578351825292840192908401906130d6565b979650505050505050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60ff8181168382160190811115610a9a57610a9a612d64565b85815284602082015260a0604082015260006131ba60a0830186612ff0565b6001600160a01b039490941660608301525060800152939250505056fea264697066735822122057df1d4888e8054c783e09e242969ca1f943bc23bb2312fa35e2772ae8c3a2f964736f6c634300081100334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x6080604052600436106103395760003560e01c8063715018a6116101ab578063afcf2fc4116100f7578063d977714211610095578063f2fde38b1161006f578063f2fde38b1461095e578063f47f56d41461097e578063f5648a4f1461099e578063fe33b302146109b357600080fd5b8063d9777142146108ec578063dd62ed3e14610902578063e2f456051461094857600080fd5b8063c72818f5116100d1578063c72818f51461086b578063d257b34f1461088c578063d51ed1c8146108ac578063d7b96d4e146108cc57600080fd5b8063afcf2fc41461080b578063b7bda68f1461082b578063c02466681461084b57600080fd5b806395d89b4111610164578063a1883d261161013e578063a1883d261461078a578063a457c2d7146107aa578063a72d38a1146107ca578063a9059cbb146107eb57600080fd5b806395d89b41146107355780639b4dc8cc1461074a5780639e0649931461076a57600080fd5b8063715018a61461068b5780637a351a1d146106a057806386a22eff146106c057806389c87a48146106e05780638da5cb5b146107015780638f3fa8601461071f57600080fd5b806325926c41116102855780635031595f11610223578063685fc568116101fd578063685fc568146106155780636d2b70071461062a5780636ddd17131461064a57806370a082311461066b57600080fd5b80635031595f146105be5780635d0044ca146105d45780636117da76146105f457600080fd5b8063327622811161025f578063327622811461053c578063395093511461055d578063452ed4f11461057d578063457fd0221461059d57600080fd5b806325926c41146104f85780632b112e491461050b578063313ce5671461052057600080fd5b80631464be3b116102f2578063201e7991116102cc578063201e79911461048357806322f0f2f9146104a35780632307b441146104b857806323b872dd146104d857600080fd5b80631464be3b1461043957806318160ddd146104595780631ff8d5071461046e57600080fd5b80630644e7571461034557806306fdde031461036d5780630758d9241461038f578063095ea7b3146103c75780630c9be46d146103f75780631161ae391461041957600080fd5b3661034057005b600080fd5b34801561035157600080fd5b5061035a6109e3565b6040519081526020015b60405180910390f35b34801561037957600080fd5b50610382610aa0565b6040516103649190612935565b34801561039b57600080fd5b506008546103af906001600160a01b031681565b6040516001600160a01b039091168152602001610364565b3480156103d357600080fd5b506103e76103e2366004612998565b610b32565b6040519015158152602001610364565b34801561040357600080fd5b506104176104123660046129c4565b610b48565b005b34801561042557600080fd5b506103e76104343660046129e8565b610c27565b34801561044557600080fd5b50610417610454366004612a1a565b610c3b565b34801561046557600080fd5b5060025461035a565b34801561047a57600080fd5b50610417610cb0565b34801561048f57600080fd5b5061041761049e3660046129e8565b610cfb565b3480156104af57600080fd5b50610417610d7b565b3480156104c457600080fd5b506104176104d3366004612b0b565b610e9b565b3480156104e457600080fd5b506103e76104f3366004612bcd565b610f76565b610417610506366004612c5a565b611029565b34801561051757600080fd5b5061035a6114c0565b34801561052c57600080fd5b5060405160098152602001610364565b34801561054857600080fd5b50600d546103e790600160b81b900460ff1681565b34801561056957600080fd5b506103e7610578366004612998565b6114f3565b34801561058957600080fd5b506009546103af906001600160a01b031681565b3480156105a957600080fd5b50600d546103e790600160b01b900460ff1681565b3480156105ca57600080fd5b5061035a60115481565b3480156105e057600080fd5b506104176105ef366004612cdd565b61152f565b34801561060057600080fd5b50600d546103e790600160a81b900460ff1681565b34801561062157600080fd5b5061035a61158c565b34801561063657600080fd5b50610417610645366004612a1a565b6115f6565b34801561065657600080fd5b50600d546103e790600160a01b900460ff1681565b34801561067757600080fd5b5061035a6106863660046129c4565b61166a565b34801561069757600080fd5b50610417611685565b3480156106ac57600080fd5b506104176106bb3660046129c4565b6116f9565b3480156106cc57600080fd5b506104176106db366004612cf6565b6117c3565b3480156106ec57600080fd5b50600d546103e790600160c81b900460ff1681565b34801561070d57600080fd5b506005546001600160a01b03166103af565b34801561072b57600080fd5b5061035a60105481565b34801561074157600080fd5b506103826118ad565b34801561075657600080fd5b50600c546103af906001600160a01b031681565b34801561077657600080fd5b50610417610785366004612cdd565b6118bc565b34801561079657600080fd5b506104176107a53660046129c4565b6119d3565b3480156107b657600080fd5b506103e76107c5366004612998565b611a9d565b3480156107d657600080fd5b50600d546103e790600160c01b900460ff1681565b3480156107f757600080fd5b506103e7610806366004612998565b611b36565b34801561081757600080fd5b50600d546103af906001600160a01b031681565b34801561083757600080fd5b50600b546103af906001600160a01b031681565b34801561085757600080fd5b50610417610866366004612cf6565b611b43565b34801561087757600080fd5b50600d546103e790600160d01b900460ff1681565b34801561089857600080fd5b506104176108a7366004612cdd565b611bcc565b3480156108b857600080fd5b5061035a6108c7366004612cdd565b611d17565b3480156108d857600080fd5b506007546103af906001600160a01b031681565b3480156108f857600080fd5b5061035a60065481565b34801561090e57600080fd5b5061035a61091d366004612d2b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561095457600080fd5b5061035a600a5481565b34801561096a57600080fd5b506104176109793660046129c4565b611d4a565b34801561098a57600080fd5b50610417610999366004612a1a565b611e35565b3480156109aa57600080fd5b50610417611ea9565b3480156109bf57600080fd5b506103e76109ce3660046129c4565b60136020526000908152604090205460ff1681565b600080601154426109f49190612d7a565b905061012c811015610a37576000610a0d601e83612d8d565b610a1890600a612daf565b9050605a811015610a3557610a2e81605a612d7a565b9250505090565b505b600d54600090600160a81b900460ff1615610a5a57610a57600282612dc6565b90505b600d54600160b01b900460ff1615610a7a57610a77600282612dc6565b90505b600d54600160b81b900460ff1615610a9a57610a97600182612dc6565b90505b92915050565b606060038054610aaf90612dd9565b80601f0160208091040260200160405190810160405280929190818152602001828054610adb90612dd9565b8015610b285780601f10610afd57610100808354040283529160200191610b28565b820191906000526020600020905b815481529060010190602001808311610b0b57829003601f168201915b5050505050905090565b6000610b3f338484611f20565b50600192915050565b6005546001600160a01b03163314610b7b5760405162461bcd60e51b8152600401610b7290612e13565b60405180910390fd5b6001600160a01b038116610bdd5760405162461bcd60e51b815260206004820152602360248201527f5f636861726974794164647265737320616464726573732063616e6e6f74206260448201526206520360ec1b6064820152608401610b72565b600d80546001600160a01b0319166001600160a01b0383169081179091556040517fff6a822e9e2c4fe74d4f27fcde00b94c5abb41dd24b73e718952279715fa663290600090a250565b600082610c3383611d17565b119392505050565b6005546001600160a01b03163314610c655760405162461bcd60e51b8152600401610b7290612e13565b8015610c8d5750600d805460ff60d01b198116600160d01b9182900460ff1615909102179055565b600d805460ff60b81b198116600160b81b9182900460ff16159091021790555b50565b6005546001600160a01b03163314610cda5760405162461bcd60e51b8152600401610b7290612e13565b600d805460ff60a01b198116600160a01b9182900460ff1615909102179055565b6005546001600160a01b03163314610d255760405162461bcd60e51b8152600401610b7290612e13565b600e829055600f8190557fcbbf6bb708b8b7c4daa8d4e1088db9965d8167c3fcb6bc1a21147bbca33c12cf81610d5c846064612daf565b610d669190612d8d565b60405190815260200160405180910390a15050565b6007546001600160a01b031615801590610d9f57506007546001600160a01b031633145b610deb5760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f7420617574686f72697a656400000000000000006044820152606401610b72565b426006541115610e355760405162461bcd60e51b815260206004820152601560248201527410dbdb9d1c9858dd081cdd1a5b1b081b1bd8dad959605a1b6044820152606401610b72565b6007546040516001600160a01b03909116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360078054600580546001600160a01b03199081166001600160a01b038416179091551690556000600655565b6005546001600160a01b03163314610ec55760405162461bcd60e51b8152600401610b7290612e13565b8051825114610f165760405162461bcd60e51b815260206004820152601e60248201527f417272617973206d757374206265207468652073616d65206c656e67746800006044820152606401610b72565b60005b8251811015610f7157610f5f33848381518110610f3857610f38612e48565b6020026020010151848481518110610f5257610f52612e48565b6020026020010151612044565b80610f6981612e5e565b915050610f19565b505050565b6000610f83848484612199565b6001600160a01b0384166000908152600160209081526040808320338452909152902054600019811461101e57828110156110115760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610b72565b61101e8533858403611f20565b506001949350505050565b6005546001600160a01b031633146110535760405162461bcd60e51b8152600401610b7290612e13565b6011541561106057600080fd5b843410156110a55760405162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742066756e647360701b6044820152606401610b72565b600086116110ee5760405162461bcd60e51b8152602060048201526016602482015275139bc81314081d1bdad95b9cc81cdc1958da599a595960521b6044820152606401610b72565b600854604080516315ab88c960e31b81529051851515926000926001600160a01b039091169163ad5c4648916004808201926020929091908290030181865afa15801561113f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111639190612e77565b9050600860009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dc9190612e77565b6040516364e329cb60e11b81526001600160a01b038381166004830152306024830152919091169063c9c65396906044016020604051808303816000875af115801561122c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112509190612e77565b600980546001600160a01b0319166001600160a01b03929092169182178155600091825260136020526040909120805460ff191660011790556112ab903390309061129c90600a612f78565b6112a6908c612daf565b612044565b6008546001600160a01b031663f305d71988306112c78161166a565b60008033426040518863ffffffff1660e01b81526004016112ed96959493929190612f87565b60606040518083038185885af115801561130b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113309190612fc2565b50505081156114b257604080516002808252606082018352600092602083019080368337019050509050818160008151811061136e5761136e612e48565b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106113a2576113a2612e48565b6001600160a01b039092166020928302919091019091015285156114b05760005b868110156114ae576008546001600160a01b031663fb3bdb41476113e96009600a612f78565b8989868181106113fb576113fb612e48565b9050602002013561140c9190612daf565b858c8c8781811061141f5761141f612e48565b905060200201602081019061143491906129c4565b426040518663ffffffff1660e01b81526004016114549493929190613034565b60006040518083038185885af1158015611472573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261149b9190810190613069565b50806114a681612e5e565b9150506113c3565b505b505b505042601155505050505050565b60006114cc600061166a565b6114d761dead61166a565b6114e19190612dc6565b6002546114ee9190612d7a565b905090565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610b3f91859061152a908690612dc6565b611f20565b6005546001600160a01b031633146115595760405162461bcd60e51b8152600401610b7290612e13565b6000811161156657600080fd5b60648161157260025490565b61157c9190612daf565b6115869190612d8d565b60105550565b600d546000908190600160c01b900460ff16156115b1576115ae600282612dc6565b90505b600d54600160c81b900460ff16156115d1576115ce600282612dc6565b90505b600d54600160d01b900460ff16156115f1576115ee600182612dc6565b90505b919050565b6005546001600160a01b031633146116205760405162461bcd60e51b8152600401610b7290612e13565b80156116485750600d805460ff60c01b198116600160c01b9182900460ff1615909102179055565b50600d805460ff60a81b198116600160a81b9182900460ff1615909102179055565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b031633146116af5760405162461bcd60e51b8152600401610b7290612e13565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146117235760405162461bcd60e51b8152600401610b7290612e13565b6001600160a01b0381166117795760405162461bcd60e51b815260206004820152601e60248201527f5f6c704164647265737320616464726573732063616e6e6f74206265203000006044820152606401610b72565b600c80546001600160a01b0319166001600160a01b0383169081179091556040517f1f2a51d4bc6c490773dcf50f84f26f4326ba455f24b0ef4cdc1ccf65a86bb78790600090a250565b6005546001600160a01b031633146117ed5760405162461bcd60e51b8152600401610b7290612e13565b6009546001600160a01b03908116908316036118595760405162461bcd60e51b815260206004820152602560248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d20604482015264706169727360d81b6064820152608401610b72565b6001600160a01b038216600081815260136020526040808220805460ff191685151590811790915590519092917ff40a563af144a84735f7f6c7c3029794b0ac17713e5f048d3fd00ed85aa4ca7a91a35050565b606060048054610aaf90612dd9565b6005546001600160a01b031633146118e65760405162461bcd60e51b8152600401610b7290612e13565b6007546001600160a01b03161561193f5760405162461bcd60e51b815260206004820152601760248201527f436f6e747261637420616c7265616479206c6f636b65640000000000000000006044820152606401610b72565b6000811161198f5760405162461bcd60e51b815260206004820152601860248201527f4e6f206c6f636b20706572696f642073706563696669656400000000000000006044820152606401610b72565b61199c8162015180612daf565b6119a69042612dc6565b600655600554600780546001600160a01b0319166001600160a01b03909216919091179055610cad611685565b6005546001600160a01b031633146119fd5760405162461bcd60e51b8152600401610b7290612e13565b6001600160a01b038116611a535760405162461bcd60e51b815260206004820152601f60248201527f5f7461784164647265737320616464726573732063616e6e6f742062652030006044820152606401610b72565b600b80546001600160a01b0319166001600160a01b0383169081179091556040517ff95a3f3be1ad3ec3d252a63182a8332b013f2251a59a30a03ecd260cbe263cc290600090a250565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015611b1f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b72565b611b2c3385858403611f20565b5060019392505050565b6000610b3f338484612199565b6005546001600160a01b03163314611b6d5760405162461bcd60e51b8152600401610b7290612e13565b6001600160a01b038216600081815260126020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314611bf65760405162461bcd60e51b8152600401610b7290612e13565b620186a0611c0360025490565b611c0e906001612daf565b611c189190612d8d565b811015611c855760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610b72565b6103e8611c9160025490565b611c9c906001612daf565b611ca69190612d8d565b811115611d125760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610b72565b600a55565b6000611d216114c0565b600954611d36906001600160a01b031661166a565b611d409084612daf565b610a9a9190612d8d565b6005546001600160a01b03163314611d745760405162461bcd60e51b8152600401610b7290612e13565b6001600160a01b038116611dd95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b72565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611e5f5760405162461bcd60e51b8152600401610b7290612e13565b8015611e875750600d805460ff60c81b198116600160c81b9182900460ff1615909102179055565b50600d805460ff60b01b198116600160b01b9182900460ff1615909102179055565b6005546001600160a01b03163314611ed35760405162461bcd60e51b8152600401610b7290612e13565b604051600090339047908381818185875af1925050503d8060008114611f15576040519150601f19603f3d011682016040523d82523d6000602084013e611f1a565b606091505b50505050565b6001600160a01b038316611f825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b72565b6001600160a01b038216611fe35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b72565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661206a5760405162461bcd60e51b8152600401610b72906130fa565b6001600160a01b0382166120905760405162461bcd60e51b8152600401610b729061313f565b6001600160a01b038316600090815260208190526040902054818110156121085760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b72565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061213f908490612dc6565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161218b91815260200190565b60405180910390a350505050565b6001600160a01b0383166121bf5760405162461bcd60e51b8152600401610b72906130fa565b6001600160a01b0382166121e55760405162461bcd60e51b8152600401610b729061313f565b600081116122355760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610b72565b60115460000361224a57610f71838383612044565b6001600160a01b03831660009081526012602052604090205460ff1615801561228c57506001600160a01b03821660009081526012602052604090205460ff16155b1561242a576001600160a01b03821660009081526013602052604090205460ff161580156122c557506001600160a01b03821661dead14155b156122d4576122d48282612435565b6000806122df61158c565b905060006122eb6109e3565b600d54909150600160a01b900460ff1680156123115750600954600160a01b900460ff16155b801561233557506001600160a01b03851660009081526013602052604090205460ff165b801561234a575060006123488383612dc6565b115b15612379576009805460ff60a01b1916600160a01b17905561236b846124ac565b6009805460ff60a01b191690555b6001600160a01b03851660009081526013602052604090205460ff1680156123a15750600082115b156123c35760646123b28386612daf565b6123bc9190612d8d565b9250612409565b6000811180156123eb57506001600160a01b03861660009081526013602052604090205460ff165b156124095760646123fc8286612daf565b6124069190612d8d565b92505b821561241a5761241a863085612044565b6124248385612d7a565b93505050505b610f71838383612044565b601054816124428461166a565b61244c9190612dc6565b11156124a85760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b6064820152608401610b72565b5050565b60006124b73061166a565b9050600a548110156124c7575050565b806000036124d3575050565b600a80546124e091612daf565b8111156124f757600a80546124f491612daf565b90505b818111156125025750805b600d54600090600160c81b900460ff1661251d576000612520565b60025b600d54600160b01b900460ff1661253857600061253b565b60025b6125459190613182565b600d5460ff9182169250600091600160c01b90910416612566576000612569565b60025b600d54600160a81b900460ff16612581576000612584565b60025b61258e9190613182565b600d5460ff9182169250600091600160d01b909104166125af5760006125b2565b60015b600d54600160b81b900460ff166125ca5760006125cd565b60015b6125d79190613182565b60ff16905060006125ec600e54600f54610c27565b6125f657836125f9565b60005b90506000826126088584612dc6565b6126129190612dc6565b90506000600282612623858a612daf565b61262d9190612d8d565b6126379190612d8d565b90506126438188612d7a565b96506000612650886127f4565b4761265c600286612d8d565b6126669085612d7a565b935060006002856126778885612daf565b6126819190612d8d565b61268b9190612d8d565b905060008561269a8985612daf565b6126a49190612d8d565b9050811561273357600854600c5460405163f305d71960e01b81526001600160a01b039283169263f305d7199286926126ec9230928c92600092839216904290600401612f87565b60606040518083038185885af115801561270a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061272f9190612fc2565b5050505b801561279157600d546040516001600160a01b03909116908290600081818185875af1925050503d8060008114612786576040519150601f19603f3d011682016040523d82523d6000602084013e61278b565b606091505b50909450505b600b546040516001600160a01b03909116904790600081818185875af1925050503d80600081146127de576040519150601f19603f3d011682016040523d82523d6000602084013e6127e3565b606091505b505050505050505050505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061282957612829612e48565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612882573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a69190612e77565b816001815181106128b9576128b9612e48565b6001600160a01b03928316602091820292909201015260085460405163791ac94760e01b815291169063791ac947906128ff90859060009086903090429060040161319b565b600060405180830381600087803b15801561291957600080fd5b505af115801561292d573d6000803e3d6000fd5b505050505050565b600060208083528351808285015260005b8181101561296257858101830151858201604001528201612946565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610cad57600080fd5b600080604083850312156129ab57600080fd5b82356129b681612983565b946020939093013593505050565b6000602082840312156129d657600080fd5b81356129e181612983565b9392505050565b600080604083850312156129fb57600080fd5b50508035926020909101359150565b803580151581146115f157600080fd5b600060208284031215612a2c57600080fd5b6129e182612a0a565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612a7457612a74612a35565b604052919050565b600067ffffffffffffffff821115612a9657612a96612a35565b5060051b60200190565b600082601f830112612ab157600080fd5b81356020612ac6612ac183612a7c565b612a4b565b82815260059290921b84018101918181019086841115612ae557600080fd5b8286015b84811015612b005780358352918301918301612ae9565b509695505050505050565b60008060408385031215612b1e57600080fd5b823567ffffffffffffffff80821115612b3657600080fd5b818501915085601f830112612b4a57600080fd5b81356020612b5a612ac183612a7c565b82815260059290921b84018101918181019089841115612b7957600080fd5b948201945b83861015612ba0578535612b9181612983565b82529482019490820190612b7e565b96505086013592505080821115612bb657600080fd5b50612bc385828601612aa0565b9150509250929050565b600080600060608486031215612be257600080fd5b8335612bed81612983565b92506020840135612bfd81612983565b929592945050506040919091013590565b60008083601f840112612c2057600080fd5b50813567ffffffffffffffff811115612c3857600080fd5b6020830191508360208260051b8501011115612c5357600080fd5b9250929050565b60008060008060008060808789031215612c7357600080fd5b8635955060208701359450604087013567ffffffffffffffff80821115612c9957600080fd5b612ca58a838b01612c0e565b90965094506060890135915080821115612cbe57600080fd5b50612ccb89828a01612c0e565b979a9699509497509295939492505050565b600060208284031215612cef57600080fd5b5035919050565b60008060408385031215612d0957600080fd5b8235612d1481612983565b9150612d2260208401612a0a565b90509250929050565b60008060408385031215612d3e57600080fd5b8235612d4981612983565b91506020830135612d5981612983565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610a9a57610a9a612d64565b600082612daa57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610a9a57610a9a612d64565b80820180821115610a9a57610a9a612d64565b600181811c90821680612ded57607f821691505b602082108103612e0d57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600060018201612e7057612e70612d64565b5060010190565b600060208284031215612e8957600080fd5b81516129e181612983565b600181815b80851115612ecf578160001904821115612eb557612eb5612d64565b80851615612ec257918102915b93841c9390800290612e99565b509250929050565b600082612ee657506001610a9a565b81612ef357506000610a9a565b8160018114612f095760028114612f1357612f2f565b6001915050610a9a565b60ff841115612f2457612f24612d64565b50506001821b610a9a565b5060208310610133831016604e8410600b8410161715612f52575081810a610a9a565b612f5c8383612e94565b8060001904821115612f7057612f70612d64565b029392505050565b60006129e160ff841683612ed7565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600080600060608486031215612fd757600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b838110156130295781516001600160a01b031687529582019590820190600101613004565b509495945050505050565b84815260806020820152600061304d6080830186612ff0565b6001600160a01b03949094166040830152506060015292915050565b6000602080838503121561307c57600080fd5b825167ffffffffffffffff81111561309357600080fd5b8301601f810185136130a457600080fd5b80516130b2612ac182612a7c565b81815260059190911b820183019083810190878311156130d157600080fd5b928401925b828410156130ef578351825292840192908401906130d6565b979650505050505050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60ff8181168382160190811115610a9a57610a9a612d64565b85815284602082015260a0604082015260006131ba60a0830186612ff0565b6001600160a01b039490941660608301525060800152939250505056fea264697066735822122057df1d4888e8054c783e09e242969ca1f943bc23bb2312fa35e2772ae8c3a2f964736f6c63430008110033

Deployed Bytecode Sourcemap

11395:12516:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15640:468;;;;;;;;;;;;;:::i;:::-;;;160:25:1;;;148:2;133:18;15640:468:0;;;;;;;;4069:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;11441:27::-;;;;;;;;;;-1:-1:-1;11441:27:0;;;;-1:-1:-1;;;;;11441:27:0;;;;;;-1:-1:-1;;;;;931:32:1;;;913:51;;901:2;886:18;11441:27:0;749:221:1;5124:210:0;;;;;;;;;;-1:-1:-1;5124:210:0;;;;;:::i;:::-;;:::i;:::-;;;1596:14:1;;1589:22;1571:41;;1559:2;1544:18;5124:210:0;1431:187:1;21022:264:0;;;;;;;;;;-1:-1:-1;21022:264:0;;;;;:::i;:::-;;:::i;:::-;;23210:150;;;;;;;;;;-1:-1:-1;23210:150:0;;;;;:::i;:::-;;:::i;15196:199::-;;;;;;;;;;-1:-1:-1;15196:199:0;;;;;:::i;:::-;;:::i;4390:108::-;;;;;;;;;;-1:-1:-1;4478:12:0;;4390:108;;14387:86;;;;;;;;;;;;;:::i;22626:246::-;;;;;;;;;;-1:-1:-1;22626:246:0;;;;;:::i;:::-;;:::i;9384:344::-;;;;;;;;;;;;;:::i;23533:375::-;;;;;;;;;;-1:-1:-1;23533:375:0;;;;;:::i;:::-;;:::i;5342:620::-;;;;;;;;;;-1:-1:-1;5342:620:0;;;;;:::i;:::-;;:::i;21294:1324::-;;;;;;:::i;:::-;;:::i;22880:156::-;;;;;;;;;;;;;:::i;13797:84::-;;;;;;;;;;-1:-1:-1;13797:84:0;;13872:1;6855:36:1;;6843:2;6828:18;13797:84:0;6713:184:1;12002:33:0;;;;;;;;;;-1:-1:-1;12002:33:0;;;;-1:-1:-1;;;12002:33:0;;;;;;5970:297;;;;;;;;;;-1:-1:-1;5970:297:0;;;;;:::i;:::-;;:::i;11475:21::-;;;;;;;;;;-1:-1:-1;11475:21:0;;;;-1:-1:-1;;;;;11475:21:0;;;11960:35;;;;;;;;;;-1:-1:-1;11960:35:0;;;;-1:-1:-1;;;11960:35:0;;;;;;12288:32;;;;;;;;;;;;;;;;23368:157;;;;;;;;;;-1:-1:-1;23368:157:0;;;;;:::i;:::-;;:::i;11918:35::-;;;;;;;;;;-1:-1:-1;11918:35:0;;;;-1:-1:-1;;;11918:35:0;;;;;;15403:229;;;;;;;;;;;;;:::i;14762:209::-;;;;;;;;;;-1:-1:-1;14762:209:0;;;;;:::i;:::-;;:::i;11879:30::-;;;;;;;;;;-1:-1:-1;11879:30:0;;;;-1:-1:-1;;;11879:30:0;;;;;;4506:177;;;;;;;;;;-1:-1:-1;4506:177:0;;;;;:::i;:::-;;:::i;8629:148::-;;;;;;;;;;;;;:::i;20790:224::-;;;;;;;;;;-1:-1:-1;20790:224:0;;;;;:::i;:::-;;:::i;14481:273::-;;;;;;;;;;-1:-1:-1;14481:273:0;;;;;:::i;:::-;;:::i;12085:36::-;;;;;;;;;;-1:-1:-1;12085:36:0;;;;-1:-1:-1;;;12085:36:0;;;;;;8415:79;;;;;;;;;;-1:-1:-1;8480:6:0;;-1:-1:-1;;;;;8480:6:0;8415:79;;12251:28;;;;;;;;;;;;;;;;4177:104;;;;;;;;;;;;;:::i;11700:24::-;;;;;;;;;;-1:-1:-1;11700:24:0;;;;-1:-1:-1;;;;;11700:24:0;;;9074:302;;;;;;;;;;-1:-1:-1;9074:302:0;;;;;:::i;:::-;;:::i;20550:232::-;;;;;;;;;;-1:-1:-1;20550:232:0;;;;;:::i;:::-;;:::i;6275:482::-;;;;;;;;;;-1:-1:-1;6275:482:0;;;;;:::i;:::-;;:::i;12042:36::-;;;;;;;;;;-1:-1:-1;12042:36:0;;;;-1:-1:-1;;;12042:36:0;;;;;;4691:216;;;;;;;;;;-1:-1:-1;4691:216:0;;;;;:::i;:::-;;:::i;11731:74::-;;;;;;;;;;-1:-1:-1;11731:74:0;;;;-1:-1:-1;;;;;11731:74:0;;;11668:25;;;;;;;;;;-1:-1:-1;11668:25:0;;;;-1:-1:-1;;;;;11668:25:0;;;16116:182;;;;;;;;;;-1:-1:-1;16116:182:0;;;;;:::i;:::-;;:::i;12128:34::-;;;;;;;;;;-1:-1:-1;12128:34:0;;;;-1:-1:-1;;;12128:34:0;;;;;;13951:428;;;;;;;;;;-1:-1:-1;13951:428:0;;;;;:::i;:::-;;:::i;23044:158::-;;;;;;;;;;-1:-1:-1;23044:158:0;;;;;:::i;:::-;;:::i;8107:21::-;;;;;;;;;;-1:-1:-1;8107:21:0;;;;-1:-1:-1;;;;;8107:21:0;;;8076:24;;;;;;;;;;;;;;;;4915:201;;;;;;;;;;-1:-1:-1;4915:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;5081:18:0;;;5049:7;5081:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4915:201;11626:33;;;;;;;;;;;;;;;;8785:281;;;;;;;;;;-1:-1:-1;8785:281:0;;;;;:::i;:::-;;:::i;14979:209::-;;;;;;;;;;-1:-1:-1;14979:209:0;;;;;:::i;:::-;;:::i;20381:161::-;;;;;;;;;;;;;:::i;12388:37::-;;;;;;;;;;-1:-1:-1;12388:37:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15640:468;15683:7;15703:15;15739:17;;15721:15;:35;;;;:::i;:::-;15703:53;;15780:9;15770:7;:19;15767:167;;;15806:18;15828:12;15838:2;15828:7;:12;:::i;:::-;15827:19;;15844:2;15827:19;:::i;:::-;15806:40;;15878:2;15865:10;:15;15861:61;;;15907:15;15912:10;15907:2;:15;:::i;:::-;15900:22;;;;15640:468;:::o;15861:61::-;15791:143;15767:167;15975:16;;15946:11;;-1:-1:-1;;;15975:16:0;;;;15972:29;;;15993:8;16000:1;15993:8;;:::i;:::-;;;15972:29;16015:16;;-1:-1:-1;;;16015:16:0;;;;16012:29;;;16033:8;16040:1;16033:8;;:::i;:::-;;;16012:29;16055:14;;-1:-1:-1;;;16055:14:0;;;;16052:27;;;16071:8;16078:1;16071:8;;:::i;:::-;;;16052:27;16097:3;15640:468;-1:-1:-1;;15640:468:0:o;4069:100::-;4123:13;4156:5;4149:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4069:100;:::o;5124:210::-;5243:4;5265:39;203:10;5288:7;5297:6;5265:8;:39::i;:::-;-1:-1:-1;5322:4:0;5124:210;;;;:::o;21022:264::-;8542:6;;-1:-1:-1;;;;;8542:6:0;203:10;8542:22;8534:67;;;;-1:-1:-1;;;8534:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;21112:29:0;::::1;21104:77;;;::::0;-1:-1:-1;;;21104:77:0;;9746:2:1;21104:77:0::1;::::0;::::1;9728:21:1::0;9785:2;9765:18;;;9758:30;9824:34;9804:18;;;9797:62;-1:-1:-1;;;9875:18:1;;;9868:33;9918:19;;21104:77:0::1;9544:399:1::0;21104:77:0::1;21192:14;:32:::0;;-1:-1:-1;;;;;;21192:32:0::1;-1:-1:-1::0;;;;;21192:32:0;::::1;::::0;;::::1;::::0;;;21240:38:::1;::::0;::::1;::::0;-1:-1:-1;;21240:38:0::1;21022:264:::0;:::o;23210:150::-;23290:4;23346:6;23314:29;23334:8;23314:19;:29::i;:::-;:38;;23210:150;-1:-1:-1;;;23210:150:0:o;15196:199::-;8542:6;;-1:-1:-1;;;;;8542:6:0;203:10;8542:22;8534:67;;;;-1:-1:-1;;;8534:67:0;;;;;;;:::i;:::-;15270:7:::1;15267:120;;;-1:-1:-1::0;15311:15:0::1;::::0;;-1:-1:-1;;;;15292:34:0;::::1;-1:-1:-1::0;;;15311:15:0;;;::::1;;;15310:16;15292:34:::0;;::::1;;::::0;;15196:199::o;15267:120::-:1;15373:14;::::0;;-1:-1:-1;;;;15355:32:0;::::1;-1:-1:-1::0;;;15373:14:0;;;::::1;;;15372:15;15355:32:::0;;::::1;;::::0;;15267:120:::1;15196:199:::0;:::o;14387:86::-;8542:6;;-1:-1:-1;;;;;8542:6:0;203:10;8542:22;8534:67;;;;-1:-1:-1;;;8534:67:0;;;;;;;:::i;:::-;14454:11:::1;::::0;;-1:-1:-1;;;;14439:26:0;::::1;-1:-1:-1::0;;;14454:11:0;;;::::1;;;14453:12;14439:26:::0;;::::1;;::::0;;14387:86::o;22626:246::-;8542:6;;-1:-1:-1;;;;;8542:6:0;203:10;8542:22;8534:67;;;;-1:-1:-1;;;8534:67:0;;;;;;;:::i;:::-;22723:15:::1;:25:::0;;;22759:26:::1;:41:::0;;;22816:48:::1;22788:12:::0;22835:13:::1;22741:7:::0;22845:3:::1;22835:13;:::i;:::-;:28;;;;:::i;:::-;22816:48;::::0;160:25:1;;;148:2;133:18;22816:48:0::1;;;;;;;22626:246:::0;;:::o;9384:344::-;9438:6;;-1:-1:-1;;;;;9438:6:0;:20;;;;:44;;-1:-1:-1;9476:6:0;;-1:-1:-1;;;;;9476:6:0;9462:10;:20;9438:44;9430:81;;;;-1:-1:-1;;;9430:81:0;;10150:2:1;9430:81:0;;;10132:21:1;10189:2;10169:18;;;10162:30;10228:26;10208:18;;;10201:54;10272:18;;9430:81:0;9948:348:1;9430:81:0;9543:15;9530:9;;:28;;9522:62;;;;-1:-1:-1;;;9522:62:0;;10503:2:1;9522:62:0;;;10485:21:1;10542:2;10522:18;;;10515:30;-1:-1:-1;;;10561:18:1;;;10554:51;10622:18;;9522:62:0;10301:345:1;9522:62:0;9633:6;;9600:40;;-1:-1:-1;;;;;9633:6:0;;;;;;9600:40;;9633:6;;9600:40;9660:6;;;9651;:15;;-1:-1:-1;;;;;;9651:15:0;;;-1:-1:-1;;;;;9660:6:0;;9651:15;;;;9677:19;;;9660:6;9707:9;:13;9384:344::o;23533:375::-;8542:6;;-1:-1:-1;;;;;8542:6:0;203:10;8542:22;8534:67;;;;-1:-1:-1;;;8534:67:0;;;;;;;:::i;:::-;23700:15:::1;:22;23682:7;:14;:40;23674:83;;;::::0;-1:-1:-1;;;23674:83:0;;10853:2:1;23674:83:0::1;::::0;::::1;10835:21:1::0;10892:2;10872:18;;;10865:30;10931:32;10911:18;;;10904:60;10981:18;;23674:83:0::1;10651:354:1::0;23674:83:0::1;23775:9;23770:131;23794:7;:14;23790:1;:18;23770:131;;;23830:59;23846:10;23858:7;23866:1;23858:10;;;;;;;;:::i;:::-;;;;;;;23870:15;23886:1;23870:18;;;;;;;;:::i;:::-;;;;;;;23830:15;:59::i;:::-;23810:3:::0;::::1;::::0;::::1;:::i;:::-;;;;23770:131;;;;23533:375:::0;;:::o;5342:620::-;5482:4;5499:36;5509:6;5517:9;5528:6;5499:9;:36::i;:::-;-1:-1:-1;;;;;5575:19:0;;5548:24;5575:19;;;:11;:19;;;;;;;;203:10;5575:33;;;;;;;;-1:-1:-1;;5622:37:0;;5619:314;;5723:6;5703:16;:26;;5677:128;;;;-1:-1:-1;;;5677:128:0;;11484:2:1;5677:128:0;;;11466:21:1;11523:2;11503:18;;;11496:30;11562:34;11542:18;;;11535:62;-1:-1:-1;;;11613:18:1;;;11606:38;11661:19;;5677:128:0;11282:404:1;5677:128:0;5849:57;5858:6;203:10;5899:6;5880:16;:25;5849:8;:57::i;:::-;-1:-1:-1;5950:4:0;;5342:620;-1:-1:-1;;;;5342:620:0:o;21294:1324::-;8542:6;;-1:-1:-1;;;;;8542:6:0;203:10;8542:22;8534:67;;;;-1:-1:-1;;;8534:67:0;;;;;;;:::i;:::-;21443:17:::1;::::0;:22;21435:31:::1;;;::::0;::::1;;21498:4;21485:9;:17;;21477:48;;;::::0;-1:-1:-1;;;21477:48:0;;11893:2:1;21477:48:0::1;::::0;::::1;11875:21:1::0;11932:2;11912:18;;;11905:30;-1:-1:-1;;;11951:18:1;;;11944:48;12009:18;;21477:48:0::1;11691:342:1::0;21477:48:0::1;21553:1;21544:6;:10;21536:45;;;::::0;-1:-1:-1;;;21536:45:0;;12240:2:1;21536:45:0::1;::::0;::::1;12222:21:1::0;12279:2;12259:18;;;12252:30;-1:-1:-1;;;12298:18:1;;;12291:52;12360:18;;21536:45:0::1;12038:346:1::0;21536:45:0::1;21656:9;::::0;:16:::1;::::0;;-1:-1:-1;;;21656:16:0;;;;21610:19;;;;21592:15:::1;::::0;-1:-1:-1;;;;;21656:9:0;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21642:30;;21706:9;;;;;;;;;-1:-1:-1::0;;;;;21706:9:0::1;-1:-1:-1::0;;;;;21706:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21694:63;::::0;-1:-1:-1;;;21694:63:0;;-1:-1:-1;;;;;12875:15:1;;;21694:63:0::1;::::0;::::1;12857:34:1::0;21751:4:0::1;12907:18:1::0;;;12900:43;21694::0;;;::::1;::::0;::::1;::::0;12792:18:1;;21694:63:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21685:6;:72:::0;;-1:-1:-1;;;;;;21685:72:0::1;-1:-1:-1::0;;;;;21685:72:0;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;21768:13:0;;;:5:::1;:13;::::0;;;;;:20;;-1:-1:-1;;21768:20:0::1;-1:-1:-1::0;21768:20:0::1;::::0;;21801:67:::1;::::0;21817:10:::1;::::0;21837:4:::1;::::0;11574:15:::1;::::0;:2:::1;:15;:::i;:::-;21844:23;::::0;:6;:23:::1;:::i;:::-;21801:15;:67::i;:::-;21881:9;::::0;-1:-1:-1;;;;;21881:9:0::1;:25;21914:4:::0;21928::::1;21934:24;21928:4:::0;21934:9:::1;:24::i;:::-;21959:1;21961::::0;21963:10:::1;21974:15;21881:109;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22006:10;22003:560;;;22057:16;::::0;;22071:1:::1;22057:16:::0;;;;;::::1;::::0;;22033:21:::1;::::0;22057:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;22057:16:0::1;22033:40;;22098:3;22088:4;22093:1;22088:7;;;;;;;;:::i;:::-;;;;;;:13;-1:-1:-1::0;;;;;22088:13:0::1;;;-1:-1:-1::0;;;;;22088:13:0::1;;;::::0;::::1;22134:4;22116;22121:1;22116:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22116:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;;:23;22159:19;;22156:396:::1;;22203:9;22199:338;22218:19:::0;;::::1;22199:338;;;22267:9;::::0;-1:-1:-1;;;;;22267:9:0::1;:31;22306:21;11574:15;11532:1;11574:2;:15;:::i;:::-;22356:7;;22364:1;22356:10;;;;;;;:::i;:::-;;;;;;;:27;;;;:::i;:::-;22410:4;22441:8;;22450:1;22441:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;22479:15;22267:250;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;22267:250:0::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;22239:3:0;::::1;::::0;::::1;:::i;:::-;;;;22199:338;;;;22156:396;22018:545;22003:560;-1:-1:-1::0;;22595:15:0::1;22575:17;:35:::0;-1:-1:-1;;;;;;21294:1324:0:o;22880:156::-;22933:7;23006:21;23024:1;23006:9;:21::i;:::-;22977:26;22995:6;22977:9;:26::i;:::-;:50;;;;:::i;:::-;4478:12;;22960:68;;;;:::i;:::-;22953:75;;22880:156;:::o;5970:297::-;203:10;6085:4;6179:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6179:34:0;;;;;;;;;;6085:4;;6107:130;;6157:7;;6179:47;;6216:10;;6179:47;:::i;:::-;6107:8;:130::i;23368:157::-;8542:6;;-1:-1:-1;;;;;8542:6:0;203:10;8542:22;8534:67;;;;-1:-1:-1;;;8534:67:0;;;;;;;:::i;:::-;23457:1:::1;23447:7;:11;23439:20;;;::::0;::::1;;23514:3;23503:7;23487:13;4478:12:::0;;;4390:108;23487:13:::1;:23;;;;:::i;:::-;23486:31;;;;:::i;:::-;23470:13;:47:::0;-1:-1:-1;23368:157:0:o;15403:229::-;15496:17;;15447:7;;;;-1:-1:-1;;;15496:17:0;;;;15493:30;;;15515:8;15522:1;15515:8;;:::i;:::-;;;15493:30;15537:17;;-1:-1:-1;;;15537:17:0;;;;15534:30;;;15556:8;15563:1;15556:8;;:::i;:::-;;;15534:30;15578:15;;-1:-1:-1;;;15578:15:0;;;;15575:28;;;15595:8;15602:1;15595:8;;:::i;:::-;;;15575:28;15621:3;15403:229;-1:-1:-1;15403:229:0:o;14762:209::-;8542:6;;-1:-1:-1;;;;;8542:6:0;203:10;8542:22;8534:67;;;;-1:-1:-1;;;8534:67:0;;;;;;;:::i;:::-;14838:7:::1;14835:128;;;-1:-1:-1::0;14881:17:0::1;::::0;;-1:-1:-1;;;;14860:38:0;::::1;-1:-1:-1::0;;;14881:17:0;;;::::1;;;14880:18;14860:38:::0;;::::1;;::::0;;15196:199::o;14835:128::-:1;-1:-1:-1::0;14947:16:0::1;::::0;;-1:-1:-1;;;;14927:36:0;::::1;-1:-1:-1::0;;;14947:16:0;;;::::1;;;14946:17;14927:36:::0;;::::1;;::::0;;14762:209::o;4506:177::-;-1:-1:-1;;;;;4657:18:0;4625:7;4657:18;;;;;;;;;;;;4506:177::o;8629:148::-;8542:6;;-1:-1:-1;;;;;8542:6:0;203:10;8542:22;8534:67;;;;-1:-1:-1;;;8534:67:0;;;;;;;:::i;:::-;8720:6:::1;::::0;8699:40:::1;::::0;8736:1:::1;::::0;-1:-1:-1;;;;;8720:6:0::1;::::0;8699:40:::1;::::0;8736:1;;8699:40:::1;8750:6;:19:::0;;-1:-1:-1;;;;;;8750:19:0::1;::::0;;8629:148::o;20790:224::-;8542:6;;-1:-1:-1;;;;;8542:6:0;203:10;8542:22;8534:67;;;;-1:-1:-1;;;8534:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20870:24:0;::::1;20862:67;;;::::0;-1:-1:-1;;;20862:67:0;;17321:2:1;20862:67:0::1;::::0;::::1;17303:21:1::0;17360:2;17340:18;;;17333:30;17399:32;17379:18;;;17372:60;17449:18;;20862:67:0::1;17119:354:1::0;20862:67:0::1;20940:9;:22:::0;;-1:-1:-1;;;;;;20940:22:0::1;-1:-1:-1::0;;;;;20940:22:0;::::1;::::0;;::::1;::::0;;;20978:28:::1;::::0;::::1;::::0;-1:-1:-1;;20978:28:0::1;20790:224:::0;:::o;14481:273::-;8542:6;;-1:-1:-1;;;;;8542:6:0;203:10;8542:22;8534:67;;;;-1:-1:-1;;;8534:67:0;;;;;;;:::i;:::-;14607:6:::1;::::0;-1:-1:-1;;;;;14607:6:0;;::::1;14599:14:::0;;::::1;::::0;14577:101:::1;;;::::0;-1:-1:-1;;;14577:101:0;;17680:2:1;14577:101:0::1;::::0;::::1;17662:21:1::0;17719:2;17699:18;;;17692:30;17758:34;17738:18;;;17731:62;-1:-1:-1;;;17809:18:1;;;17802:35;17854:19;;14577:101:0::1;17478:401:1::0;14577:101:0::1;-1:-1:-1::0;;;;;14691:11:0;::::1;;::::0;;;:5:::1;:11;::::0;;;;;:19;;-1:-1:-1;;14691:19:0::1;::::0;::::1;;::::0;;::::1;::::0;;;14726:20;;14691:19;;:11;14726:20:::1;::::0;::::1;14481:273:::0;;:::o;4177:104::-;4233:13;4266:7;4259:14;;;;;:::i;9074:302::-;8542:6;;-1:-1:-1;;;;;8542:6:0;203:10;8542:22;8534:67;;;;-1:-1:-1;;;8534:67:0;;;;;;;:::i;:::-;9149:6:::1;::::0;-1:-1:-1;;;;;9149:6:0::1;:20:::0;9141:56:::1;;;::::0;-1:-1:-1;;;9141:56:0;;18086:2:1;9141:56:0::1;::::0;::::1;18068:21:1::0;18125:2;18105:18;;;18098:30;18164:25;18144:18;;;18137:53;18207:18;;9141:56:0::1;17884:347:1::0;9141:56:0::1;9224:1;9216:5;:9;9208:46;;;::::0;-1:-1:-1;;;9208:46:0;;18438:2:1;9208:46:0::1;::::0;::::1;18420:21:1::0;18477:2;18457:18;;;18450:30;18516:26;18496:18;;;18489:54;18560:18;;9208:46:0::1;18236:348:1::0;9208:46:0::1;9296:14;:5:::0;9304:6:::1;9296:14;:::i;:::-;9277:34;::::0;:15:::1;:34;:::i;:::-;9265:9;:46:::0;8480:6;;9322::::1;:16:::0;;-1:-1:-1;;;;;;9322:16:0::1;-1:-1:-1::0;;;;;8480:6:0;;;9322:16;;;::::1;::::0;;9349:19:::1;:17;:19::i;20550:232::-:0;8542:6;;-1:-1:-1;;;;;8542:6:0;203:10;8542:22;8534:67;;;;-1:-1:-1;;;8534:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20632:25:0;::::1;20624:69;;;::::0;-1:-1:-1;;;20624:69:0;;18791:2:1;20624:69:0::1;::::0;::::1;18773:21:1::0;18830:2;18810:18;;;18803:30;18869:33;18849:18;;;18842:61;18920:18;;20624:69:0::1;18589:355:1::0;20624:69:0::1;20704:10;:24:::0;;-1:-1:-1;;;;;;20704:24:0::1;-1:-1:-1::0;;;;;20704:24:0;::::1;::::0;;::::1;::::0;;;20744:30:::1;::::0;::::1;::::0;-1:-1:-1;;20744:30:0::1;20550:232:::0;:::o;6275:482::-;203:10;6395:4;6444:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6444:34:0;;;;;;;;;;6511:35;;;;6489:122;;;;-1:-1:-1;;;6489:122:0;;19151:2:1;6489:122:0;;;19133:21:1;19190:2;19170:18;;;19163:30;19229:34;19209:18;;;19202:62;-1:-1:-1;;;19280:18:1;;;19273:35;19325:19;;6489:122:0;18949:401:1;6489:122:0;6647:67;203:10;6670:7;6698:15;6679:16;:34;6647:8;:67::i;:::-;-1:-1:-1;6745:4:0;;6275:482;-1:-1:-1;;;6275:482:0:o;4691:216::-;4813:4;4835:42;203:10;4859:9;4870:6;4835:9;:42::i;16116:182::-;8542:6;;-1:-1:-1;;;;;8542:6:0;203:10;8542:22;8534:67;;;;-1:-1:-1;;;8534:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16201:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;16201:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;16256:34;;1571:41:1;;;16256:34:0::1;::::0;1544:18:1;16256:34:0::1;;;;;;;16116:182:::0;;:::o;13951:428::-;8542:6;;-1:-1:-1;;;;;8542:6:0;203:10;8542:22;8534:67;;;;-1:-1:-1;;;8534:67:0;;;;;;;:::i;:::-;14091:6:::1;14070:13;4478:12:::0;;;4390:108;14070:13:::1;:17;::::0;14086:1:::1;14070:17;:::i;:::-;14069:28;;;;:::i;:::-;14056:9;:41;;14034:144;;;::::0;-1:-1:-1;;;14034:144:0;;19557:2:1;14034:144:0::1;::::0;::::1;19539:21:1::0;19596:2;19576:18;;;19569:30;19635:34;19615:18;;;19608:62;-1:-1:-1;;;19686:18:1;;;19679:51;19747:19;;14034:144:0::1;19355:417:1::0;14034:144:0::1;14246:4;14225:13;4478:12:::0;;;4390:108;14225:13:::1;:17;::::0;14241:1:::1;14225:17;:::i;:::-;14224:26;;;;:::i;:::-;14211:9;:39;;14189:141;;;::::0;-1:-1:-1;;;14189:141:0;;19979:2:1;14189:141:0::1;::::0;::::1;19961:21:1::0;20018:2;19998:18;;;19991:30;20057:34;20037:18;;;20030:62;-1:-1:-1;;;20108:18:1;;;20101:50;20168:19;;14189:141:0::1;19777:416:1::0;14189:141:0::1;14341:18;:30:::0;13951:428::o;23044:158::-;23112:7;23172:22;:20;:22::i;:::-;23161:6;;23151:17;;-1:-1:-1;;;;;23161:6:0;23151:9;:17::i;:::-;23140:28;;:8;:28;:::i;:::-;23139:55;;;;:::i;8785:281::-;8542:6;;-1:-1:-1;;;;;8542:6:0;203:10;8542:22;8534:67;;;;-1:-1:-1;;;8534:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8888:22:0;::::1;8866:110;;;::::0;-1:-1:-1;;;8866:110:0;;20400:2:1;8866:110:0::1;::::0;::::1;20382:21:1::0;20439:2;20419:18;;;20412:30;20478:34;20458:18;;;20451:62;-1:-1:-1;;;20529:18:1;;;20522:36;20575:19;;8866:110:0::1;20198:402:1::0;8866:110:0::1;9013:6;::::0;8992:38:::1;::::0;-1:-1:-1;;;;;8992:38:0;;::::1;::::0;9013:6:::1;::::0;8992:38:::1;::::0;9013:6:::1;::::0;8992:38:::1;9041:6;:17:::0;;-1:-1:-1;;;;;;9041:17:0::1;-1:-1:-1::0;;;;;9041:17:0;;;::::1;::::0;;;::::1;::::0;;8785:281::o;14979:209::-;8542:6;;-1:-1:-1;;;;;8542:6:0;203:10;8542:22;8534:67;;;;-1:-1:-1;;;8534:67:0;;;;;;;:::i;:::-;15055:7:::1;15052:128;;;-1:-1:-1::0;15098:17:0::1;::::0;;-1:-1:-1;;;;15077:38:0;::::1;-1:-1:-1::0;;;15098:17:0;;;::::1;;;15097:18;15077:38:::0;;::::1;;::::0;;15196:199::o;15052:128::-:1;-1:-1:-1::0;15164:16:0::1;::::0;;-1:-1:-1;;;;15144:36:0;::::1;-1:-1:-1::0;;;15164:16:0;;;::::1;;;15163:17;15144:36:::0;;::::1;;::::0;;14979:209::o;20381:161::-;8542:6;;-1:-1:-1;;;;;8542:6:0;203:10;8542:22;8534:67;;;;-1:-1:-1;;;8534:67:0;;;;;;;:::i;:::-;20476:58:::1;::::0;20439:12:::1;::::0;20484:10:::1;::::0;20508:21:::1;::::0;20439:12;20476:58;20439:12;20476:58;20508:21;20484:10;20476:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;20381:161:0:o;7424:380::-;-1:-1:-1;;;;;7560:19:0;;7552:68;;;;-1:-1:-1;;;7552:68:0;;21017:2:1;7552:68:0;;;20999:21:1;21056:2;21036:18;;;21029:30;21095:34;21075:18;;;21068:62;-1:-1:-1;;;21146:18:1;;;21139:34;21190:19;;7552:68:0;20815:400:1;7552:68:0;-1:-1:-1;;;;;7639:21:0;;7631:68;;;;-1:-1:-1;;;7631:68:0;;21422:2:1;7631:68:0;;;21404:21:1;21461:2;21441:18;;;21434:30;21500:34;21480:18;;;21473:62;-1:-1:-1;;;21551:18:1;;;21544:32;21593:19;;7631:68:0;21220:398:1;7631:68:0;-1:-1:-1;;;;;7712:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7764:32;;160:25:1;;;7764:32:0;;133:18:1;7764:32:0;;;;;;;7424:380;;;:::o;6765:651::-;-1:-1:-1;;;;;6905:20:0;;6897:70;;;;-1:-1:-1;;;6897:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6986:23:0;;6978:71;;;;-1:-1:-1;;;6978:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7086:17:0;;7062:21;7086:17;;;;;;;;;;;7136:23;;;;7114:111;;;;-1:-1:-1;;;7114:111:0;;22635:2:1;7114:111:0;;;22617:21:1;22674:2;22654:18;;;22647:30;22713:34;22693:18;;;22686:62;-1:-1:-1;;;22764:18:1;;;22757:36;22810:19;;7114:111:0;22433:402:1;7114:111:0;-1:-1:-1;;;;;7261:17:0;;;:9;:17;;;;;;;;;;;7281:22;;;7261:42;;7325:20;;;;;;;;:30;;7297:6;;7261:9;7325:30;;7297:6;;7325:30;:::i;:::-;;;;;;;;7390:9;-1:-1:-1;;;;;7373:35:0;7382:6;-1:-1:-1;;;;;7373:35:0;;7401:6;7373:35;;;;160:25:1;;148:2;133:18;;14:177;7373:35:0;;;;;;;;6886:530;6765:651;;;:::o;16504:1468::-;-1:-1:-1;;;;;16636:18:0;;16628:68;;;;-1:-1:-1;;;16628:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16715:16:0;;16707:64;;;;-1:-1:-1;;;16707:64:0;;;;;;;:::i;:::-;16799:1;16790:6;:10;16782:52;;;;-1:-1:-1;;;16782:52:0;;23042:2:1;16782:52:0;;;23024:21:1;23081:2;23061:18;;;23054:30;23120:31;23100:18;;;23093:59;23169:18;;16782:52:0;22840:353:1;16782:52:0;16850:17;;16871:1;16850:22;16847:1118;;16889:33;16905:4;16911:2;16915:6;16889:15;:33::i;16847:1118::-;-1:-1:-1;;;;;16969:25:0;;;;;;:19;:25;;;;;;;;16968:26;:54;;;;-1:-1:-1;;;;;;16999:23:0;;;;;;:19;:23;;;;;;;;16998:24;16968:54;16964:940;;;-1:-1:-1;;;;;17048:9:0;;;;;;:5;:9;;;;;;;;17047:10;:35;;;;-1:-1:-1;;;;;;17061:21:0;;17075:6;17061:21;;17047:35;17043:112;;;17107:28;17124:2;17128:6;17107:16;:28::i;:::-;17175:12;17210:11;17224:13;:11;:13::i;:::-;17210:27;;17256:11;17270:12;:10;:12::i;:::-;17307:11;;17256:26;;-1:-1:-1;;;;17307:11:0;;;;:24;;;;-1:-1:-1;17323:8:0;;-1:-1:-1;;;17323:8:0;;;;17322:9;17307:24;:37;;;;-1:-1:-1;;;;;;17335:9:0;;;;;;:5;:9;;;;;;;;17307:37;:54;;;;-1:-1:-1;17360:1:0;17348:9;17354:3;17348;:9;:::i;:::-;:13;17307:54;17303:196;;;17386:8;:15;;-1:-1:-1;;;;17386:15:0;-1:-1:-1;;;17386:15:0;;;17424:16;17433:6;17424:8;:16::i;:::-;17463:8;:16;;-1:-1:-1;;;;17463:16:0;;;17303:196;-1:-1:-1;;;;;17523:9:0;;;;;;:5;:9;;;;;;;;:19;;;;;17541:1;17535:3;:7;17523:19;17519:216;;;17591:3;17575:12;17584:3;17575:6;:12;:::i;:::-;17574:20;;;;:::i;:::-;17567:27;;17519:216;;;17647:1;17641:3;:7;:22;;;;-1:-1:-1;;;;;;17652:11:0;;;;;;:5;:11;;;;;;;;17641:22;17637:98;;;17712:3;17696:12;17705:3;17696:6;:12;:::i;:::-;17695:20;;;;:::i;:::-;17688:27;;17637:98;17759:8;;17755:99;;17792:42;17808:4;17822;17829;17792:15;:42::i;:::-;17874:14;17884:4;17874:14;;:::i;:::-;;;17024:880;;;16964:940;17920:33;17936:4;17942:2;17946:6;17920:15;:33::i;16306:190::-;16433:13;;16423:6;16400:20;16410:9;16400;:20::i;:::-;:29;;;;:::i;:::-;:46;;16392:96;;;;-1:-1:-1;;;16392:96:0;;23400:2:1;16392:96:0;;;23382:21:1;23439:2;23419:18;;;23412:30;23478:34;23458:18;;;23451:62;-1:-1:-1;;;23529:18:1;;;23522:35;23574:19;;16392:96:0;23198:401:1;16392:96:0;16306:190;;:::o;18490:1821::-;18543:20;18566:24;18584:4;18566:9;:24::i;:::-;18543:47;;18620:18;;18605:12;:33;18601:46;;;18640:7;18490:1821;:::o;18601:46::-;18661:12;18677:1;18661:17;18657:30;;18680:7;18490:1821;:::o;18657:30::-;18718:18;;;:23;;;:::i;:::-;18703:12;:38;18699:82;;;18758:18;;;:23;;;:::i;:::-;18743:38;;18699:82;18812:6;18797:12;:21;18794:47;;;-1:-1:-1;18835:6:0;18794:47;18901:17;;18854:14;;-1:-1:-1;;;18901:17:0;;;;:25;;18925:1;18901:25;;;18921:1;18901:25;18872:16;;-1:-1:-1;;;18872:16:0;;;;:24;;18895:1;18872:24;;;18891:1;18872:24;18871:56;;;;:::i;:::-;18985:17;;18854:73;;;;;-1:-1:-1;18938:14:0;;-1:-1:-1;;;18985:17:0;;;;:25;;19009:1;18985:25;;;19005:1;18985:25;18956:16;;-1:-1:-1;;;18956:16:0;;;;:24;;18979:1;18956:24;;;18975:1;18956:24;18955:56;;;;:::i;:::-;19067:15;;18938:73;;;;;-1:-1:-1;19022:14:0;;-1:-1:-1;;;19067:15:0;;;;:23;;19089:1;19067:23;;;19085:1;19067:23;19040:14;;-1:-1:-1;;;19040:14:0;;;;:22;;19061:1;19040:22;;;19057:1;19040:22;19039:52;;;;:::i;:::-;19022:69;;;;19102:27;19132:60;19148:15;;19165:26;;19132:15;:60::i;:::-;:73;;19199:6;19132:73;;;19195:1;19132:73;19102:103;-1:-1:-1;19216:18:0;19268:6;19237:28;19259:6;19102:103;19237:28;:::i;:::-;:37;;;;:::i;:::-;19216:58;-1:-1:-1;19285:23:0;19365:1;19216:58;19313:34;19328:19;19313:12;:34;:::i;:::-;19312:49;;;;:::i;:::-;19311:55;;;;:::i;:::-;19285:81;-1:-1:-1;19377:31:0;19285:81;19377:31;;:::i;:::-;;;19421:12;19444:30;19461:12;19444:16;:30::i;:::-;19508:21;19556:23;19578:1;19556:19;:23;:::i;:::-;19542:37;;;;:::i;:::-;;-1:-1:-1;19590:23:0;19666:1;19542:37;19617:32;19630:19;19617:10;:32;:::i;:::-;19616:47;;;;:::i;:::-;:51;;;;:::i;:::-;19590:77;-1:-1:-1;19678:21:0;19726:10;19703:19;19716:6;19703:10;:19;:::i;:::-;19702:34;;;;:::i;:::-;19678:58;-1:-1:-1;19752:19:0;;19749:372;;19877:9;;20051;;19877:232;;-1:-1:-1;;;19877:232:0;;-1:-1:-1;;;;;19877:9:0;;;;:25;;19910:15;;19877:232;;19953:4;;19977:15;;19877:9;;;;20051;;20079:15;;19877:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19749:372;20136:17;;20133:94;;20182:14;;:45;;-1:-1:-1;;;;;20182:14:0;;;;20209:13;;20182:45;;;;20209:13;20182:14;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20168:59:0;;-1:-1:-1;;20133:94:0;20254:10;;:49;;-1:-1:-1;;;;;20254:10:0;;;;20277:21;;20254:49;;;;20277:21;20254:10;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;18490:1821:0:o;17980:502::-;18130:16;;;18144:1;18130:16;;;;;;;;18106:21;;18130:16;;;;;;;;;;-1:-1:-1;18130:16:0;18106:40;;18175:4;18157;18162:1;18157:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18157:23:0;;;:7;;;;;;;;;;:23;;;;18201:9;;:16;;;-1:-1:-1;;;18201:16:0;;;;:9;;;;;:14;;:16;;;;;18157:7;;18201:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18191:4;18196:1;18191:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18191:26:0;;;:7;;;;;;;;;:26;18256:9;;:218;;-1:-1:-1;;;18256:218:0;;:9;;;:60;;:218;;18331:11;;18256:9;;18401:4;;18428;;18448:15;;18256:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18035:447;17980: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:247::-;1682:6;1735:2;1723:9;1714:7;1710:23;1706:32;1703:52;;;1751:1;1748;1741:12;1703:52;1790:9;1777:23;1809:31;1834:5;1809:31;:::i;:::-;1859:5;1623:247;-1:-1:-1;;;1623:247:1:o;1875:248::-;1943:6;1951;2004:2;1992:9;1983:7;1979:23;1975:32;1972:52;;;2020:1;2017;2010:12;1972:52;-1:-1:-1;;2043:23:1;;;2113:2;2098:18;;;2085:32;;-1:-1:-1;1875:248:1:o;2128:160::-;2193:20;;2249:13;;2242:21;2232:32;;2222:60;;2278:1;2275;2268:12;2293:180;2349:6;2402:2;2390:9;2381:7;2377:23;2373:32;2370:52;;;2418:1;2415;2408:12;2370:52;2441:26;2457:9;2441:26;:::i;2478:127::-;2539:10;2534:3;2530:20;2527:1;2520:31;2570:4;2567:1;2560:15;2594:4;2591:1;2584:15;2610:275;2681:2;2675:9;2746:2;2727:13;;-1:-1:-1;;2723:27:1;2711:40;;2781:18;2766:34;;2802:22;;;2763:62;2760:88;;;2828:18;;:::i;:::-;2864:2;2857:22;2610:275;;-1:-1:-1;2610:275:1:o;2890:183::-;2950:4;2983:18;2975:6;2972:30;2969:56;;;3005:18;;:::i;:::-;-1:-1:-1;3050:1:1;3046:14;3062:4;3042:25;;2890:183::o;3078:662::-;3132:5;3185:3;3178:4;3170:6;3166:17;3162:27;3152:55;;3203:1;3200;3193:12;3152:55;3239:6;3226:20;3265:4;3289:60;3305:43;3345:2;3305:43;:::i;:::-;3289:60;:::i;:::-;3383:15;;;3469:1;3465:10;;;;3453:23;;3449:32;;;3414:12;;;;3493:15;;;3490:35;;;3521:1;3518;3511:12;3490:35;3557:2;3549:6;3545:15;3569:142;3585:6;3580:3;3577:15;3569:142;;;3651:17;;3639:30;;3689:12;;;;3602;;3569:142;;;-1:-1:-1;3729:5:1;3078:662;-1:-1:-1;;;;;;3078:662:1:o;3745:1215::-;3863:6;3871;3924:2;3912:9;3903:7;3899:23;3895:32;3892:52;;;3940:1;3937;3930:12;3892:52;3980:9;3967:23;4009:18;4050:2;4042:6;4039:14;4036:34;;;4066:1;4063;4056:12;4036:34;4104:6;4093:9;4089:22;4079:32;;4149:7;4142:4;4138:2;4134:13;4130:27;4120:55;;4171:1;4168;4161:12;4120:55;4207:2;4194:16;4229:4;4253:60;4269:43;4309:2;4269:43;:::i;4253:60::-;4347:15;;;4429:1;4425:10;;;;4417:19;;4413:28;;;4378:12;;;;4453:19;;;4450:39;;;4485:1;4482;4475:12;4450:39;4509:11;;;;4529:217;4545:6;4540:3;4537:15;4529:217;;;4625:3;4612:17;4642:31;4667:5;4642:31;:::i;:::-;4686:18;;4562:12;;;;4724;;;;4529:217;;;4765:5;-1:-1:-1;;4808:18:1;;4795:32;;-1:-1:-1;;4839:16:1;;;4836:36;;;4868:1;4865;4858:12;4836:36;;4891:63;4946:7;4935:8;4924:9;4920:24;4891:63;:::i;:::-;4881:73;;;3745:1215;;;;;:::o;4965:456::-;5042:6;5050;5058;5111:2;5099:9;5090:7;5086:23;5082:32;5079:52;;;5127:1;5124;5117:12;5079:52;5166:9;5153:23;5185:31;5210:5;5185:31;:::i;:::-;5235:5;-1:-1:-1;5292:2:1;5277:18;;5264:32;5305:33;5264:32;5305:33;:::i;:::-;4965:456;;5357:7;;-1:-1:-1;;;5411:2:1;5396:18;;;;5383:32;;4965:456::o;5426:367::-;5489:8;5499:6;5553:3;5546:4;5538:6;5534:17;5530:27;5520:55;;5571:1;5568;5561:12;5520:55;-1:-1:-1;5594:20:1;;5637:18;5626:30;;5623:50;;;5669:1;5666;5659:12;5623:50;5706:4;5698:6;5694:17;5682:29;;5766:3;5759:4;5749:6;5746:1;5742:14;5734:6;5730:27;5726:38;5723:47;5720:67;;;5783:1;5780;5773:12;5720:67;5426:367;;;;;:::o;5798:910::-;5938:6;5946;5954;5962;5970;5978;6031:3;6019:9;6010:7;6006:23;6002:33;5999:53;;;6048:1;6045;6038:12;5999:53;6084:9;6071:23;6061:33;;6141:2;6130:9;6126:18;6113:32;6103:42;;6196:2;6185:9;6181:18;6168:32;6219:18;6260:2;6252:6;6249:14;6246:34;;;6276:1;6273;6266:12;6246:34;6315:70;6377:7;6368:6;6357:9;6353:22;6315:70;:::i;:::-;6404:8;;-1:-1:-1;6289:96:1;-1:-1:-1;6492:2:1;6477:18;;6464:32;;-1:-1:-1;6508:16:1;;;6505:36;;;6537:1;6534;6527:12;6505:36;;6576:72;6640:7;6629:8;6618:9;6614:24;6576:72;:::i;:::-;5798:910;;;;-1:-1:-1;5798:910:1;;-1:-1:-1;5798:910:1;;6667:8;;5798:910;-1:-1:-1;;;5798:910:1:o;7110:180::-;7169:6;7222:2;7210:9;7201:7;7197:23;7193:32;7190:52;;;7238:1;7235;7228:12;7190:52;-1:-1:-1;7261:23:1;;7110:180;-1:-1:-1;7110:180:1:o;7295:315::-;7360:6;7368;7421:2;7409:9;7400:7;7396:23;7392:32;7389:52;;;7437:1;7434;7427:12;7389:52;7476:9;7463:23;7495:31;7520:5;7495:31;:::i;:::-;7545:5;-1:-1:-1;7569:35:1;7600:2;7585:18;;7569:35;:::i;:::-;7559:45;;7295:315;;;;;:::o;7615:388::-;7683:6;7691;7744:2;7732:9;7723:7;7719:23;7715:32;7712:52;;;7760:1;7757;7750:12;7712:52;7799:9;7786:23;7818:31;7843:5;7818:31;:::i;:::-;7868:5;-1:-1:-1;7925:2:1;7910:18;;7897:32;7938:33;7897:32;7938:33;:::i;:::-;7990:7;7980:17;;;7615:388;;;;;:::o;8008:127::-;8069:10;8064:3;8060:20;8057:1;8050:31;8100:4;8097:1;8090:15;8124:4;8121:1;8114:15;8140:128;8207:9;;;8228:11;;;8225:37;;;8242:18;;:::i;8273:217::-;8313:1;8339;8329:132;;8383:10;8378:3;8374:20;8371:1;8364:31;8418:4;8415:1;8408:15;8446:4;8443:1;8436:15;8329:132;-1:-1:-1;8475:9:1;;8273:217::o;8495:168::-;8568:9;;;8599;;8616:15;;;8610:22;;8596:37;8586:71;;8637:18;;:::i;8668:125::-;8733:9;;;8754:10;;;8751:36;;;8767:18;;:::i;8798:380::-;8877:1;8873:12;;;;8920;;;8941:61;;8995:4;8987:6;8983:17;8973:27;;8941:61;9048:2;9040:6;9037:14;9017:18;9014:38;9011:161;;9094:10;9089:3;9085:20;9082:1;9075:31;9129:4;9126:1;9119:15;9157:4;9154:1;9147:15;9011:161;;8798:380;;;:::o;9183:356::-;9385:2;9367:21;;;9404:18;;;9397:30;9463:34;9458:2;9443:18;;9436:62;9530:2;9515:18;;9183:356::o;11010:127::-;11071:10;11066:3;11062:20;11059:1;11052:31;11102:4;11099:1;11092:15;11126:4;11123:1;11116:15;11142:135;11181:3;11202:17;;;11199:43;;11222:18;;:::i;:::-;-1:-1:-1;11269:1:1;11258:13;;11142:135::o;12389:251::-;12459:6;12512:2;12500:9;12491:7;12487:23;12483:32;12480:52;;;12528:1;12525;12518:12;12480:52;12560:9;12554:16;12579:31;12604:5;12579:31;:::i;12954:422::-;13043:1;13086:5;13043:1;13100:270;13121:7;13111:8;13108:21;13100:270;;;13180:4;13176:1;13172:6;13168:17;13162:4;13159:27;13156:53;;;13189:18;;:::i;:::-;13239:7;13229:8;13225:22;13222:55;;;13259:16;;;;13222:55;13338:22;;;;13298:15;;;;13100:270;;;13104:3;12954:422;;;;;:::o;13381:806::-;13430:5;13460:8;13450:80;;-1:-1:-1;13501:1:1;13515:5;;13450:80;13549:4;13539:76;;-1:-1:-1;13586:1:1;13600:5;;13539:76;13631:4;13649:1;13644:59;;;;13717:1;13712:130;;;;13624:218;;13644:59;13674:1;13665:10;;13688:5;;;13712:130;13749:3;13739:8;13736:17;13733:43;;;13756:18;;:::i;:::-;-1:-1:-1;;13812:1:1;13798:16;;13827:5;;13624:218;;13926:2;13916:8;13913:16;13907:3;13901:4;13898:13;13894:36;13888:2;13878:8;13875:16;13870:2;13864:4;13861:12;13857:35;13854:77;13851:159;;;-1:-1:-1;13963:19:1;;;13995:5;;13851:159;14042:34;14067:8;14061:4;14042:34;:::i;:::-;14112:6;14108:1;14104:6;14100:19;14091:7;14088:32;14085:58;;;14123:18;;:::i;:::-;14161:20;;13381:806;-1:-1:-1;;;13381:806:1:o;14192:140::-;14250:5;14279:47;14320:4;14310:8;14306:19;14300:4;14279:47;:::i;14337:607::-;-1:-1:-1;;;;;14696:15:1;;;14678:34;;14743:2;14728:18;;14721:34;;;;14786:2;14771:18;;14764:34;;;;14829:2;14814:18;;14807:34;;;;14878:15;;;14872:3;14857:19;;14850:44;14658:3;14910:19;;14903:35;;;;14627:3;14612:19;;14337:607::o;14949:306::-;15037:6;15045;15053;15106:2;15094:9;15085:7;15081:23;15077:32;15074:52;;;15122:1;15119;15112:12;15074:52;15151:9;15145:16;15135:26;;15201:2;15190:9;15186:18;15180:25;15170:35;;15245:2;15234:9;15230:18;15224:25;15214:35;;14949:306;;;;;:::o;15260:461::-;15313:3;15351:5;15345:12;15378:6;15373:3;15366:19;15404:4;15433:2;15428:3;15424:12;15417:19;;15470:2;15463:5;15459:14;15491:1;15501:195;15515:6;15512:1;15509:13;15501:195;;;15580:13;;-1:-1:-1;;;;;15576:39:1;15564:52;;15636:12;;;;15671:15;;;;15612:1;15530:9;15501:195;;;-1:-1:-1;15712:3:1;;15260:461;-1:-1:-1;;;;;15260:461:1:o;15726:502::-;15989:6;15978:9;15971:25;16032:3;16027:2;16016:9;16012:18;16005:31;15952:4;16053:57;16105:3;16094:9;16090:19;16082:6;16053:57;:::i;:::-;-1:-1:-1;;;;;16146:32:1;;;;16141:2;16126:18;;16119:60;-1:-1:-1;16210:2:1;16195:18;16188:34;16045:65;15726:502;-1:-1:-1;;15726:502:1:o;16233:881::-;16328:6;16359:2;16402;16390:9;16381:7;16377:23;16373:32;16370:52;;;16418:1;16415;16408:12;16370:52;16451:9;16445:16;16484:18;16476:6;16473:30;16470:50;;;16516:1;16513;16506:12;16470:50;16539:22;;16592:4;16584:13;;16580:27;-1:-1:-1;16570:55:1;;16621:1;16618;16611:12;16570:55;16650:2;16644:9;16673:60;16689:43;16729:2;16689:43;:::i;16673:60::-;16767:15;;;16849:1;16845:10;;;;16837:19;;16833:28;;;16798:12;;;;16873:19;;;16870:39;;;16905:1;16902;16895:12;16870:39;16929:11;;;;16949:135;16965:6;16960:3;16957:15;16949:135;;;17031:10;;17019:23;;16982:12;;;;17062;;;;16949:135;;;17103:5;16233:881;-1:-1:-1;;;;;;;16233:881:1:o;21623:401::-;21825:2;21807:21;;;21864:2;21844:18;;;21837:30;21903:34;21898:2;21883:18;;21876:62;-1:-1:-1;;;21969:2:1;21954:18;;21947:35;22014:3;21999:19;;21623:401::o;22029:399::-;22231:2;22213:21;;;22270:2;22250:18;;;22243:30;22309:34;22304:2;22289:18;;22282:62;-1:-1:-1;;;22375:2:1;22360:18;;22353:33;22418:3;22403:19;;22029:399::o;23604:148::-;23692:4;23671:12;;;23685;;;23667:31;;23710:13;;23707:39;;;23726:18;;:::i;23757:582::-;24056:6;24045:9;24038:25;24099:6;24094:2;24083:9;24079:18;24072:34;24142:3;24137:2;24126:9;24122:18;24115:31;24019:4;24163:57;24215:3;24204:9;24200:19;24192:6;24163:57;:::i;:::-;-1:-1:-1;;;;;24256:32:1;;;;24251:2;24236:18;;24229:60;-1:-1:-1;24320:3:1;24305:19;24298:35;24155:65;23757:582;-1:-1:-1;;;23757:582:1:o

Swarm Source

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