ETH Price: $3,238.74 (-0.49%)
Gas: 1 Gwei

Token

Grumpy (GRUMPY)
 

Overview

Max Total Supply

17,760,000,000 GRUMPY

Holders

13

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
grumpyairdropwallet.eth
Balance
888,000,000 GRUMPY

Value
$0.00
0x11c63ba45e666c183304d5f62e1258c0af7569da
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:
Grumpy

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 20000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-28
*/

/**
 ██████╗ ██████╗ ██╗   ██╗███╗   ███╗██████╗ ██╗   ██╗
██╔════╝ ██╔══██╗██║   ██║████╗ ████║██╔══██╗╚██╗ ██╔╝
██║  ███╗██████╔╝██║   ██║██╔████╔██║██████╔╝ ╚████╔╝ 
██║   ██║██╔══██╗██║   ██║██║╚██╔╝██║██╔═══╝   ╚██╔╝  
╚██████╔╝██║  ██║╚██████╔╝██║ ╚═╝ ██║██║        ██║   
 ╚═════╝ ╚═╝  ╚═╝ ╚═════╝ ╚═╝     ╚═╝╚═╝        ╚═╝   

    Website: https://www.grumpy.meme/
    Twitter: https://x.com/Grumpyvip
    Telegram: https://t.me/GrumpyLobby
    Announcement: https://t.me/Grumpyvip
    Bot: https://t.me/GrumpyCat_Meme_Bot
**/
// SPDX-License-Identifier: MIT

pragma solidity 0.8.21;
pragma experimental ABIEncoderV2;

abstract contract Ownable {
    address private _owner;

    constructor() {
        _owner = msg.sender;
    }

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

    modifier onlyOwner() {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }

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

library SafeERC20 {
    function safeTransfer(address token, address to, uint256 value) internal {
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(IERC20.transfer.selector, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: INTERNAL TRANSFER_FAILED');
    }
}

interface IERC20 {
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external;
}

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

interface IUniswapV2Router02 {
    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 addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
}

contract Grumpy is Ownable {
    string private constant _name = unicode"Grumpy";
    string private constant _symbol = unicode"GRUMPY";
    uint256 private constant _totalSupply = 17_760_000_000 * 1e18;

    uint256 public maxTransactionAmount = 1_776_000_000 * 1e18;
    uint256 public maxWallet = 1_776_000_000 * 1e18;
    uint256 public swapTokensAtAmount = (_totalSupply * 2) / 10000;

    uint8 public buyTotalFees = 0;
    uint8 public sellTotalFees = 0;

    uint8 public revFee = 0;
    uint8 public marketingFee = 0;
    uint8 public teamFee = 0;

    address private privatesaleWallet = 0x379626C216cA5552a8CDeB09267c2024A013967F;
    address private marketingWallet = 0x35C4E0C82fc43ab444C98dF468aE5C139E5F37f8;
    address private teamWallet = 0xD3aEbe34aF57dd477594069C46EF07beD16439a5;
    address private constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;

    bool private swapping;
    bool public limitsInEffect = true;
    bool private launched;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;
    mapping(address => bool) private automatedMarketMakerPairs;

    event SwapAndLiquify(uint256 tokensSwapped, uint256 teamETH, uint256 revETH, uint256 MarketingETH);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);

    IUniswapV2Router02 public constant uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public immutable uniswapV2Pair;

    constructor() {
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), WETH);
        automatedMarketMakerPairs[uniswapV2Pair] = true;

        address airdropWallet = 0x11C63bA45E666c183304D5f62E1258C0AF7569Da;

        setExcludedFromFees(owner(), true);
        setExcludedFromFees(address(this), true);
        setExcludedFromFees(address(0xdead), true);
        setExcludedFromFees(teamWallet, true);
        setExcludedFromFees(privatesaleWallet, true);
        setExcludedFromFees(marketingWallet, true);

        setExcludedFromMaxTransaction(owner(), true);
        setExcludedFromMaxTransaction(address(uniswapV2Router), true);
        setExcludedFromMaxTransaction(address(this), true);
        setExcludedFromMaxTransaction(address(0xdead), true);
        setExcludedFromMaxTransaction(address(uniswapV2Pair), true);
        setExcludedFromMaxTransaction(teamWallet, true);
        setExcludedFromMaxTransaction(privatesaleWallet, true);
        setExcludedFromMaxTransaction(marketingWallet, true);

        _balances[msg.sender] = 0 * 1e18;
        emit Transfer(address(0), msg.sender, _balances[msg.sender]);
        _balances[privatesaleWallet] = 6_216_000_000 * 1e18;
        emit Transfer(address(0), privatesaleWallet, _balances[privatesaleWallet]);
        _balances[marketingWallet] = 1_776_000_000 * 1e18;
        emit Transfer(address(0), marketingWallet, _balances[marketingWallet]);
        _balances[airdropWallet] = 888_000_000 * 1e18;
        emit Transfer(address(0), airdropWallet, _balances[airdropWallet]);
        _balances[address(this)] = 8_880_000_000 * 1e18;
        emit Transfer(address(0), address(this), _balances[address(this)]);

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

    receive() external payable {}

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

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

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

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

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

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

    function approve(address spender, uint256 amount) external returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        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 transfer(address recipient, uint256 amount) external returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) {
        uint256 currentAllowance = _allowances[sender][msg.sender];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, msg.sender, currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, amount);

        return true;
    }

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

        if (!launched && (from != owner() && from != address(this) && to != owner())) {
            revert("Trading not enabled");
        }

        if (limitsInEffect) {
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) {
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTx");
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                } else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxTransactionAmount,"Sell transfer amount exceeds the maxTx");
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }
        }

        bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;

        if (canSwap && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        bool takeFee = !swapping;

        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 senderBalance = _balances[from];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");

        uint256 fees = 0;
        if (takeFee) {
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = (amount * sellTotalFees) / 100;
            } else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = (amount * buyTotalFees) / 100;
            }

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

    function removeLimits() external onlyOwner {
        limitsInEffect = false;
    }

    function setDistributionFees(uint8 _RevFee, uint8 _MarketingFee, uint8 _teamFee) external onlyOwner {
        revFee = _RevFee;
        marketingFee = _MarketingFee;
        teamFee = _teamFee;
        require((revFee + marketingFee + teamFee) == 100, "Distribution have to be equal to 100%");
    }

    function setFees(uint8 _buyTotalFees, uint8 _sellTotalFees) external onlyOwner {
        require(_buyTotalFees <= 5, "Buy fees must be less than or equal to 5%");
        require(_sellTotalFees <= 5, "Sell fees must be less than or equal to 5%");
        buyTotalFees = _buyTotalFees;
        sellTotalFees = _sellTotalFees;
    }

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

    function setExcludedFromMaxTransaction(address account, bool excluded) public onlyOwner {
        _isExcludedMaxTransactionAmount[account] = excluded;
    }

    function airdropWallets(address[] memory addresses, uint256[] memory amounts) external onlyOwner {
        require(!launched, "Already launched");
        for (uint256 i = 0; i < addresses.length; i++) {
            require(_balances[msg.sender] >= amounts[i], "ERC20: transfer amount exceeds balance");
            _balances[addresses[i]] += amounts[i];
            _balances[msg.sender] -= amounts[i];
            emit Transfer(msg.sender, addresses[i], amounts[i]);
        }
    }

    function openTrade() external onlyOwner {
        require(!launched, "Already launched");
        launched = true;
    }

    function standwithGrumpy() external payable onlyOwner {
        require(!launched, "Already launched");
        uniswapV2Router.addLiquidityETH{value: msg.value}(
            address(this),
            _balances[address(this)],
            0,
            0,
            teamWallet,
            block.timestamp
        );
    }

    function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed");
        automatedMarketMakerPairs[pair] = value;
    }

    function setSwapAtAmount(uint256 newSwapAmount) external onlyOwner {
        require(newSwapAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% of the supply");
        require(newSwapAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% of the supply");
        swapTokensAtAmount = newSwapAmount;
    }

    function setMaxTxnAmount(uint256 newMaxTx) external onlyOwner {
        require(newMaxTx >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set max transaction lower than 0.1%");
        maxTransactionAmount = newMaxTx * (10**18);
    }

    function setMaxWalletAmount(uint256 newMaxWallet) external onlyOwner {
        require(newMaxWallet >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set max wallet lower than 0.1%");
        maxWallet = newMaxWallet * (10**18);
    }

    function updatePrivateSaleWallet(address newAddress) external onlyOwner {
        require(newAddress != address(0), "Address cannot be zero");
        privatesaleWallet = newAddress;
    }

    function updateMarketingWallet(address newAddress) external onlyOwner {
        require(newAddress != address(0), "Address cannot be zero");
        marketingWallet = newAddress;
    }

    function updateTeamWallet(address newAddress) external onlyOwner {
        require(newAddress != address(0), "Address cannot be zero");
        teamWallet = newAddress;
    }

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

    function withdrawStuckToken(address token, address to) external onlyOwner {
        uint256 _contractBalance = IERC20(token).balanceOf(address(this));
        SafeERC20.safeTransfer(token, to, _contractBalance); // Use safeTransfer
    }

    function withdrawStuckETH(address addr) external onlyOwner {
        require(addr != address(0), "Invalid address");

        (bool success, ) = addr.call{value: address(this).balance}("");
        require(success, "Withdrawal failed");
    }

    function swapBack() private {
        uint256 swapThreshold = swapTokensAtAmount;
        bool success;

        if (balanceOf(address(this)) > swapTokensAtAmount * 20) {
            swapThreshold = swapTokensAtAmount * 20;
        }

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

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

        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0) {
            uint256 ethForRev = (ethBalance * revFee) / 100;
            uint256 ethForTeam = (ethBalance * teamFee) / 100;
            uint256 ethForMarketing = ethBalance - ethForRev - ethForTeam;

            (success, ) = address(teamWallet).call{value: ethForTeam}("");
            (success, ) = address(marketingWallet).call{value: ethForMarketing}("");
            (success, ) = address(privatesaleWallet).call{value: ethForRev}("");

            emit SwapAndLiquify(swapThreshold, ethForTeam, ethForRev, ethForMarketing);
        }
    }
}

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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"teamETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"revETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"MarketingETH","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdropWallets","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":"buyTotalFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_RevFee","type":"uint8"},{"internalType":"uint8","name":"_MarketingFee","type":"uint8"},{"internalType":"uint8","name":"_teamFee","type":"uint8"}],"name":"setDistributionFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludedFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_buyTotalFees","type":"uint8"},{"internalType":"uint8","name":"_sellTotalFees","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxTx","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxWallet","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapAmount","type":"uint256"}],"name":"setSwapAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"standwithGrumpy","outputs":[],"stateMutability":"payable","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":"pure","type":"function"},{"inputs":[],"name":"teamFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updatePrivateSaleWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526b05bd12a0eaadb08cf00000006001556b05bd12a0eaadb08cf00000006002556127106b3962ba492ac8e58160000000600262000042919062000750565b6200004e91906200077a565b600355600480546001600160c81b03191678379626c216ca5552a8cdeb09267c2024a013967f0000000000179055600580547335c4e0c82fc43ab444c98df468ae5c139e5f37f86001600160a01b031990911617905560068054600161ff0160a01b031916750100d3aebe34af57dd477594069c46ef07bed16439a5179055348015620000d9575f80fd5b505f80546001600160a01b031916331790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9163c45a01559160048083019260209291908290030181865afa1580156200013a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200016091906200079a565b6040516364e329cb60e11b815230600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260248201526001600160a01b03919091169063c9c65396906044016020604051808303815f875af1158015620001c0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e691906200079a565b6001600160a01b031660808190525f908152600b60205260409020805460ff191660011790557311c63ba45e666c183304d5f62e1258c0af7569da6200023f620002375f546001600160a01b031690565b60016200051f565b6200024c3060016200051f565b6200025b61dead60016200051f565b60065462000274906001600160a01b031660016200051f565b60045462000296906501000000000090046001600160a01b031660016200051f565b600554620002af906001600160a01b031660016200051f565b620002cd620002c55f546001600160a01b031690565b6001620005a6565b620002ee737a250d5630b4cf539739df2c5dacb4c659f2488d6001620005a6565b620002fb306001620005a6565b6200030a61dead6001620005a6565b6080516200031a906001620005a6565b60065462000333906001600160a01b03166001620005a6565b60045462000355906501000000000090046001600160a01b03166001620005a6565b6005546200036e906001600160a01b03166001620005a6565b335f818152600760209081526040808320839055518281525f8051602062003bf6833981519152910160405180910390a3600480546001600160a01b03650100000000009182900481165f908152600760205260408082206b1415c133355fe9ed4800000090559354929092041680825282822054925190925f8051602062003bf6833981519152916200040491815260200190565b60405180910390a3600580546001600160a01b039081165f908152600760205260408082206b05bd12a0eaadb08cf00000009055925490911680825282822054925190925f8051602062003bf6833981519152916200046591815260200190565b60405180910390a36001600160a01b0381165f8181526007602090815260408083206b02de89507556d846780000009081905590519081525f8051602062003bf6833981519152910160405180910390a3305f8181526007602090815260408083206b1cb15d24956472c0b00000009081905590519081525f8051602062003bf6833981519152910160405180910390a36200051830737a250d5630b4cf539739df2c5dacb4c659f2488d5f1962000629565b50620007c9565b33620005325f546001600160a01b031690565b6001600160a01b0316146200057c5760405162461bcd60e51b815260206004820181905260248201525f8051602062003bd683398151915260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b33620005b95f546001600160a01b031690565b6001600160a01b031614620005ff5760405162461bcd60e51b815260206004820181905260248201525f8051602062003bd6833981519152604482015260640162000573565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b6001600160a01b0383166200068d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162000573565b6001600160a01b038216620006f05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000573565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b80820281158282048414176200077457634e487b7160e01b5f52601160045260245ffd5b92915050565b5f826200079557634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215620007ab575f80fd5b81516001600160a01b0381168114620007c2575f80fd5b9392505050565b6080516133ed620007e95f395f8181610479015261170401526133ed5ff3fe6080604052600436106102ae575f3560e01c8063715018a611610165578063bc205ad3116100c6578063dd62ed3e1161007c578063e710794711610062578063e710794714610804578063f8b45b0514610823578063fb201b1d14610838575f80fd5b8063dd62ed3e146107ab578063e2f45605146107ef575f80fd5b8063d201b01e116100ac578063d201b01e14610752578063d7c94efd14610771578063d85ba06314610792575f80fd5b8063bc205ad31461071e578063c8c8ebe41461073d575f80fd5b80638da5cb5b1161011b5780639a7a23d6116101015780639a7a23d6146106c1578063a9059cbb146106e0578063aacebbe3146106ff575f80fd5b80638da5cb5b1461066057806395d89b411461067c575f80fd5b8063751039fc1161014b578063751039fc146105f65780637cb332bb1461060a57806385ecafd714610629575f80fd5b8063715018a6146105c357806374010ece146105d7575f80fd5b806349bd5a5e1161020f5780636402511e116101c55780636a486a8e116101ab5780636a486a8e146105515780636b67c4df1461056f57806370a082311461058f575f80fd5b80636402511e1461051357806366650dae14610532575f80fd5b80634fcd2446116101f55780634fcd2446146104cd578063590ffdce146104ec5780635c3774001461050b575f80fd5b806349bd5a5e146104685780634a62bb651461049b575f80fd5b806321d37e391161026457806327a14fc21161024a57806327a14fc214610417578063313ce567146104365780633c090c4614610449575f80fd5b806321d37e39146103c757806323b872dd146103f8575f80fd5b806310053fae1161029457806310053fae1461033f5780631694505e1461036057806318160ddd1461039f575f80fd5b806306fdde03146102b9578063095ea7b314610310575f80fd5b366102b557005b5f80fd5b3480156102c4575f80fd5b5060408051808201909152600681527f4772756d7079000000000000000000000000000000000000000000000000000060208201525b6040516103079190612dff565b60405180910390f35b34801561031b575f80fd5b5061032f61032a366004612e6a565b61084c565b6040519015158152602001610307565b34801561034a575f80fd5b5061035e610359366004612e92565b610862565b005b34801561036b575f80fd5b50610387737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610307565b3480156103aa575f80fd5b506b3962ba492ac8e581600000005b604051908152602001610307565b3480156103d2575f80fd5b506004546103e69062010000900460ff1681565b60405160ff9091168152602001610307565b348015610403575f80fd5b5061032f610412366004612eb2565b610968565b348015610422575f80fd5b5061035e610431366004612eeb565b610a4b565b348015610441575f80fd5b5060126103e6565b348015610454575f80fd5b5061035e610463366004612f12565b610b77565b348015610473575f80fd5b506103877f000000000000000000000000000000000000000000000000000000000000000081565b3480156104a6575f80fd5b5060065461032f907501000000000000000000000000000000000000000000900460ff1681565b3480156104d8575f80fd5b5061035e6104e7366004612f52565b610d17565b3480156104f7575f80fd5b5061035e610506366004612f93565b610eb4565b61035e610f64565b34801561051e575f80fd5b5061035e61052d366004612eeb565b611103565b34801561053d575f80fd5b5061035e61054c366004612f93565b6112a3565b34801561055c575f80fd5b506004546103e690610100900460ff1681565b34801561057a575f80fd5b506004546103e6906301000000900460ff1681565b34801561059a575f80fd5b506103b96105a9366004612e92565b6001600160a01b03165f9081526007602052604090205490565b3480156105ce575f80fd5b5061035e611353565b3480156105e2575f80fd5b5061035e6105f1366004612eeb565b6113e4565b348015610601575f80fd5b5061035e611510565b348015610615575f80fd5b5061035e610624366004612e92565b6115a2565b348015610634575f80fd5b5061032f610643366004612e92565b6001600160a01b03165f9081526009602052604090205460ff1690565b34801561066b575f80fd5b505f546001600160a01b0316610387565b348015610687575f80fd5b5060408051808201909152600681527f4752554d5059000000000000000000000000000000000000000000000000000060208201526102fa565b3480156106cc575f80fd5b5061035e6106db366004612f93565b61169a565b3480156106eb575f80fd5b5061032f6106fa366004612e6a565b6117cb565b34801561070a575f80fd5b5061035e610719366004612e92565b6117d7565b348015610729575f80fd5b5061035e610738366004612fc8565b6118cf565b348015610748575f80fd5b506103b960015481565b34801561075d575f80fd5b5061035e61076c366004612e92565b6119c5565b34801561077c575f80fd5b506004546103e690640100000000900460ff1681565b34801561079d575f80fd5b506004546103e69060ff1681565b3480156107b6575f80fd5b506103b96107c5366004612fc8565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b3480156107fa575f80fd5b506103b960035481565b34801561080f575f80fd5b5061035e61081e3660046130f7565b611b26565b34801561082e575f80fd5b506103b960025481565b348015610843575f80fd5b5061035e611e06565b5f610858338484611f1e565b5060015b92915050565b336108745f546001600160a01b031690565b6001600160a01b0316146108cf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b0381166109255760405162461bcd60e51b815260206004820152601660248201527f416464726573732063616e6e6f74206265207a65726f0000000000000000000060448201526064016108c6565b600480546001600160a01b0390921665010000000000027fffffffffffffff0000000000000000000000000000000000000000ffffffffff909216919091179055565b6001600160a01b0383165f9081526008602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a355782811015610a285760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084016108c6565b610a358533858403611f1e565b610a40858585612075565b506001949350505050565b33610a5d5f546001600160a01b031690565b6001600160a01b031614610ab35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b670de0b6b3a76400006103e8610ad66b3962ba492ac8e5816000000060016131de565b610ae091906131f5565b610aea91906131f5565b811015610b5f5760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420736574206d61782077616c6c6574206c6f776572207468616e60448201527f20302e312500000000000000000000000000000000000000000000000000000060648201526084016108c6565b610b7181670de0b6b3a76400006131de565b60025550565b33610b895f546001600160a01b031690565b6001600160a01b031614610bdf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b600480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff166201000060ff86811682027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff169290921763010000008684168102919091177fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff16640100000000868516810291909117948590558404831693610c909391810482169290041661322d565b610c9a919061322d565b60ff16606414610d125760405162461bcd60e51b815260206004820152602560248201527f446973747269627574696f6e206861766520746f20626520657175616c20746f60448201527f203130302500000000000000000000000000000000000000000000000000000060648201526084016108c6565b505050565b33610d295f546001600160a01b031690565b6001600160a01b031614610d7f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b60058260ff161115610df95760405162461bcd60e51b815260206004820152602960248201527f4275792066656573206d757374206265206c657373207468616e206f7220657160448201527f75616c20746f203525000000000000000000000000000000000000000000000060648201526084016108c6565b60058160ff161115610e735760405162461bcd60e51b815260206004820152602a60248201527f53656c6c2066656573206d757374206265206c657373207468616e206f72206560448201527f7175616c20746f2035250000000000000000000000000000000000000000000060648201526084016108c6565b6004805460ff928316610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009091169290931691909117919091179055565b33610ec65f546001600160a01b031690565b6001600160a01b031614610f1c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b6001600160a01b03919091165f90815260096020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b33610f765f546001600160a01b031690565b6001600160a01b031614610fcc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b600654760100000000000000000000000000000000000000000000900460ff16156110395760405162461bcd60e51b815260206004820152601060248201527f416c7265616479206c61756e636865640000000000000000000000000000000060448201526064016108c6565b305f818152600760205260408082205460065491517ff305d719000000000000000000000000000000000000000000000000000000008152600481019490945260248401526044830182905260648301919091526001600160a01b031660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990349060c40160606040518083038185885af11580156110de573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d129190613246565b336111155f546001600160a01b031690565b6001600160a01b03161461116b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b620186a06111866b3962ba492ac8e5816000000060016131de565b61119091906131f5565b8110156112055760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527f20302e30303125206f662074686520737570706c79000000000000000000000060648201526084016108c6565b6103e861121f6b3962ba492ac8e5816000000060056131de565b61122991906131f5565b81111561129e5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160448201527f6e20302e3525206f662074686520737570706c7900000000000000000000000060648201526084016108c6565b600355565b336112b55f546001600160a01b031690565b6001600160a01b03161461130b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b6001600160a01b03919091165f908152600a6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b336113655f546001600160a01b031690565b6001600160a01b0316146113bb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b5f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b336113f65f546001600160a01b031690565b6001600160a01b03161461144c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b670de0b6b3a76400006103e861146f6b3962ba492ac8e5816000000060016131de565b61147991906131f5565b61148391906131f5565b8110156114f85760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6f77657260448201527f207468616e20302e31250000000000000000000000000000000000000000000060648201526084016108c6565b61150a81670de0b6b3a76400006131de565b60015550565b336115225f546001600160a01b031690565b6001600160a01b0316146115785760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b600680547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169055565b336115b45f546001600160a01b031690565b6001600160a01b03161461160a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b6001600160a01b0381166116605760405162461bcd60e51b815260206004820152601660248201527f416464726573732063616e6e6f74206265207a65726f0000000000000000000060448201526064016108c6565b600680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b336116ac5f546001600160a01b031690565b6001600160a01b0316146117025760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036117835760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f76656400000000000060448201526064016108c6565b6001600160a01b03919091165f908152600b6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b5f610858338484612075565b336117e95f546001600160a01b031690565b6001600160a01b03161461183f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b6001600160a01b0381166118955760405162461bcd60e51b815260206004820152601660248201527f416464726573732063616e6e6f74206265207a65726f0000000000000000000060448201526064016108c6565b600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b336118e15f546001600160a01b031690565b6001600160a01b0316146119375760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015611994573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b89190613271565b9050610d12838383612962565b336119d75f546001600160a01b031690565b6001600160a01b031614611a2d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b6001600160a01b038116611a835760405162461bcd60e51b815260206004820152600f60248201527f496e76616c69642061646472657373000000000000000000000000000000000060448201526064016108c6565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f8114611acc576040519150601f19603f3d011682016040523d82523d5f602084013e611ad1565b606091505b5050905080611b225760405162461bcd60e51b815260206004820152601160248201527f5769746864726177616c206661696c656400000000000000000000000000000060448201526064016108c6565b5050565b33611b385f546001600160a01b031690565b6001600160a01b031614611b8e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b600654760100000000000000000000000000000000000000000000900460ff1615611bfb5760405162461bcd60e51b815260206004820152601060248201527f416c7265616479206c61756e636865640000000000000000000000000000000060448201526064016108c6565b5f5b8251811015610d1257818181518110611c1857611c18613288565b602002602001015160075f336001600160a01b03166001600160a01b031681526020019081526020015f20541015611cb85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016108c6565b818181518110611cca57611cca613288565b602002602001015160075f858481518110611ce757611ce7613288565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f828254611d1c91906132b5565b92505081905550818181518110611d3557611d35613288565b602002602001015160075f336001600160a01b03166001600160a01b031681526020019081526020015f205f828254611d6e91906132c8565b92505081905550828181518110611d8757611d87613288565b60200260200101516001600160a01b0316336001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef848481518110611dd557611dd5613288565b6020026020010151604051611dec91815260200190565b60405180910390a380611dfe816132db565b915050611bfd565b33611e185f546001600160a01b031690565b6001600160a01b031614611e6e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b600654760100000000000000000000000000000000000000000000900460ff1615611edb5760405162461bcd60e51b815260206004820152601060248201527f416c7265616479206c61756e636865640000000000000000000000000000000060448201526064016108c6565b600680547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff16760100000000000000000000000000000000000000000000179055565b6001600160a01b038316611f995760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016108c6565b6001600160a01b0382166120155760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016108c6565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166120f15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016108c6565b6001600160a01b03821661216d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016108c6565b5f81116121e25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f000000000000000000000000000000000000000000000060648201526084016108c6565b600654760100000000000000000000000000000000000000000000900460ff1615801561224957505f546001600160a01b0384811691161480159061223057506001600160a01b0383163014155b801561224957505f546001600160a01b03838116911614155b156122965760405162461bcd60e51b815260206004820152601360248201527f54726164696e67206e6f7420656e61626c65640000000000000000000000000060448201526064016108c6565b6006547501000000000000000000000000000000000000000000900460ff16156125bd575f546001600160a01b038481169116148015906122e457505f546001600160a01b03838116911614155b80156122f857506001600160a01b03821615155b801561230f57506001600160a01b03821661dead14155b8015612336575060065474010000000000000000000000000000000000000000900460ff16155b156125bd576001600160a01b0383165f908152600b602052604090205460ff16801561237a57506001600160a01b0382165f908152600a602052604090205460ff16155b1561246f576001548111156123f75760405162461bcd60e51b815260206004820152602560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527f6d6178547800000000000000000000000000000000000000000000000000000060648201526084016108c6565b6002546001600160a01b0383165f9081526007602052604090205461241c90836132b5565b111561246a5760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c65742065786365656465640000000000000000000000000060448201526064016108c6565b6125bd565b6001600160a01b0382165f908152600b602052604090205460ff1680156124ae57506001600160a01b0383165f908152600a602052604090205460ff16155b1561252b5760015481111561246a5760405162461bcd60e51b815260206004820152602660248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d61785478000000000000000000000000000000000000000000000000000060648201526084016108c6565b6001600160a01b0382165f908152600a602052604090205460ff166125bd576002546001600160a01b0383165f9081526007602052604090205461256f90836132b5565b11156125bd5760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c65742065786365656465640000000000000000000000000060448201526064016108c6565b600354305f908152600760205260409020541080159081906125fa575060065474010000000000000000000000000000000000000000900460ff16155b801561261e57506001600160a01b0384165f908152600b602052604090205460ff16155b801561264257506001600160a01b0384165f9081526009602052604090205460ff16155b801561266657506001600160a01b0383165f9081526009602052604090205460ff16155b156126db57600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556126b2612acc565b600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690555b6006546001600160a01b0385165f9081526009602052604090205460ff7401000000000000000000000000000000000000000090920482161591168061273857506001600160a01b0384165f9081526009602052604090205460ff165b1561274057505f5b6001600160a01b0385165f90815260076020526040902054838110156127ce5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016108c6565b5f82156128f0576001600160a01b0386165f908152600b602052604090205460ff1680156128055750600454610100900460ff1615155b156128335760045460649061282290610100900460ff16876131de565b61282c91906131f5565b9050612883565b6001600160a01b0387165f908152600b602052604090205460ff16801561285e575060045460ff1615155b15612883576004546064906128769060ff16876131de565b61288091906131f5565b90505b80156128f0576001600160a01b0387165f8181526007602090815260408083208054869003905530808452928190208054860190555184815297849003979192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b6001600160a01b038088165f8181526007602052604080822080548a900390559289168082529083902080548901905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906129519089815260200190565b60405180910390a350505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291515f928392908716916129eb9190613312565b5f604051808303815f865af19150503d805f8114612a24576040519150601f19603f3d011682016040523d82523d5f602084013e612a29565b606091505b5091509150818015612a53575080511580612a53575080806020019051810190612a53919061332d565b612ac55760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657248656c7065723a20494e5445524e414c205452414e53464560448201527f525f4641494c454400000000000000000000000000000000000000000000000060648201526084016108c6565b5050505050565b6003545f612adb8260146131de565b305f908152600760205260409020541115612b0157600354612afe9060146131de565b91505b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110612b3457612b34613288565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110612b7c57612b7c613288565b6001600160a01b03909216602092830291909101909101526040517f791ac947000000000000000000000000000000000000000000000000000000008152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790612bec9086905f90869030904290600401613348565b5f604051808303815f87803b158015612c03575f80fd5b505af1158015612c15573d5f803e3d5ffd5b504792505081159050612dd7576004545f90606490612c3d9062010000900460ff16846131de565b612c4791906131f5565b6004549091505f90606490612c6790640100000000900460ff16856131de565b612c7191906131f5565b90505f81612c7f84866132c8565b612c8991906132c8565b6006546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114612cd4576040519150601f19603f3d011682016040523d82523d5f602084013e612cd9565b606091505b50506005546040519197506001600160a01b03169082905f81818185875af1925050503d805f8114612d26576040519150601f19603f3d011682016040523d82523d5f602084013e612d2b565b606091505b50506004546040519197506501000000000090046001600160a01b03169084905f81818185875af1925050503d805f8114612d81576040519150601f19603f3d011682016040523d82523d5f602084013e612d86565b606091505b50506040805189815260208101859052908101859052606081018390529096507f93efcf28fbf701a930e0ad258987a2e4f08eb3aa99f9c02029e7ba049f69405f9060800160405180910390a15050505b50505050565b5f5b83811015612df7578181015183820152602001612ddf565b50505f910152565b602081525f8251806020840152612e1d816040850160208701612ddd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b80356001600160a01b0381168114612e65575f80fd5b919050565b5f8060408385031215612e7b575f80fd5b612e8483612e4f565b946020939093013593505050565b5f60208284031215612ea2575f80fd5b612eab82612e4f565b9392505050565b5f805f60608486031215612ec4575f80fd5b612ecd84612e4f565b9250612edb60208501612e4f565b9150604084013590509250925092565b5f60208284031215612efb575f80fd5b5035919050565b803560ff81168114612e65575f80fd5b5f805f60608486031215612f24575f80fd5b612f2d84612f02565b9250612f3b60208501612f02565b9150612f4960408501612f02565b90509250925092565b5f8060408385031215612f63575f80fd5b612f6c83612f02565b9150612f7a60208401612f02565b90509250929050565b8015158114612f90575f80fd5b50565b5f8060408385031215612fa4575f80fd5b612fad83612e4f565b91506020830135612fbd81612f83565b809150509250929050565b5f8060408385031215612fd9575f80fd5b612fe283612e4f565b9150612f7a60208401612e4f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561306457613064612ff0565b604052919050565b5f67ffffffffffffffff82111561308557613085612ff0565b5060051b60200190565b5f82601f83011261309e575f80fd5b813560206130b36130ae8361306c565b61301d565b82815260059290921b840181019181810190868411156130d1575f80fd5b8286015b848110156130ec57803583529183019183016130d5565b509695505050505050565b5f8060408385031215613108575f80fd5b823567ffffffffffffffff8082111561311f575f80fd5b818501915085601f830112613132575f80fd5b813560206131426130ae8361306c565b82815260059290921b84018101918181019089841115613160575f80fd5b948201945b838610156131855761317686612e4f565b82529482019490820190613165565b9650508601359250508082111561319a575f80fd5b506131a78582860161308f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808202811582820484141761085c5761085c6131b1565b5f82613228577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b60ff818116838216019081111561085c5761085c6131b1565b5f805f60608486031215613258575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215613281575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8082018082111561085c5761085c6131b1565b8181038181111561085c5761085c6131b1565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361330b5761330b6131b1565b5060010190565b5f8251613323818460208701612ddd565b9190910192915050565b5f6020828403121561333d575f80fd5b8151612eab81612f83565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156133965784516001600160a01b031683529383019391830191600101613371565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220fd38c89af153f64c4679f7ebf043fb43ad1ae328bcbd33779761df28083c3fa364736f6c634300081500334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x6080604052600436106102ae575f3560e01c8063715018a611610165578063bc205ad3116100c6578063dd62ed3e1161007c578063e710794711610062578063e710794714610804578063f8b45b0514610823578063fb201b1d14610838575f80fd5b8063dd62ed3e146107ab578063e2f45605146107ef575f80fd5b8063d201b01e116100ac578063d201b01e14610752578063d7c94efd14610771578063d85ba06314610792575f80fd5b8063bc205ad31461071e578063c8c8ebe41461073d575f80fd5b80638da5cb5b1161011b5780639a7a23d6116101015780639a7a23d6146106c1578063a9059cbb146106e0578063aacebbe3146106ff575f80fd5b80638da5cb5b1461066057806395d89b411461067c575f80fd5b8063751039fc1161014b578063751039fc146105f65780637cb332bb1461060a57806385ecafd714610629575f80fd5b8063715018a6146105c357806374010ece146105d7575f80fd5b806349bd5a5e1161020f5780636402511e116101c55780636a486a8e116101ab5780636a486a8e146105515780636b67c4df1461056f57806370a082311461058f575f80fd5b80636402511e1461051357806366650dae14610532575f80fd5b80634fcd2446116101f55780634fcd2446146104cd578063590ffdce146104ec5780635c3774001461050b575f80fd5b806349bd5a5e146104685780634a62bb651461049b575f80fd5b806321d37e391161026457806327a14fc21161024a57806327a14fc214610417578063313ce567146104365780633c090c4614610449575f80fd5b806321d37e39146103c757806323b872dd146103f8575f80fd5b806310053fae1161029457806310053fae1461033f5780631694505e1461036057806318160ddd1461039f575f80fd5b806306fdde03146102b9578063095ea7b314610310575f80fd5b366102b557005b5f80fd5b3480156102c4575f80fd5b5060408051808201909152600681527f4772756d7079000000000000000000000000000000000000000000000000000060208201525b6040516103079190612dff565b60405180910390f35b34801561031b575f80fd5b5061032f61032a366004612e6a565b61084c565b6040519015158152602001610307565b34801561034a575f80fd5b5061035e610359366004612e92565b610862565b005b34801561036b575f80fd5b50610387737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610307565b3480156103aa575f80fd5b506b3962ba492ac8e581600000005b604051908152602001610307565b3480156103d2575f80fd5b506004546103e69062010000900460ff1681565b60405160ff9091168152602001610307565b348015610403575f80fd5b5061032f610412366004612eb2565b610968565b348015610422575f80fd5b5061035e610431366004612eeb565b610a4b565b348015610441575f80fd5b5060126103e6565b348015610454575f80fd5b5061035e610463366004612f12565b610b77565b348015610473575f80fd5b506103877f0000000000000000000000007db758bcf430537e6bc4d024ec1968a515604d6e81565b3480156104a6575f80fd5b5060065461032f907501000000000000000000000000000000000000000000900460ff1681565b3480156104d8575f80fd5b5061035e6104e7366004612f52565b610d17565b3480156104f7575f80fd5b5061035e610506366004612f93565b610eb4565b61035e610f64565b34801561051e575f80fd5b5061035e61052d366004612eeb565b611103565b34801561053d575f80fd5b5061035e61054c366004612f93565b6112a3565b34801561055c575f80fd5b506004546103e690610100900460ff1681565b34801561057a575f80fd5b506004546103e6906301000000900460ff1681565b34801561059a575f80fd5b506103b96105a9366004612e92565b6001600160a01b03165f9081526007602052604090205490565b3480156105ce575f80fd5b5061035e611353565b3480156105e2575f80fd5b5061035e6105f1366004612eeb565b6113e4565b348015610601575f80fd5b5061035e611510565b348015610615575f80fd5b5061035e610624366004612e92565b6115a2565b348015610634575f80fd5b5061032f610643366004612e92565b6001600160a01b03165f9081526009602052604090205460ff1690565b34801561066b575f80fd5b505f546001600160a01b0316610387565b348015610687575f80fd5b5060408051808201909152600681527f4752554d5059000000000000000000000000000000000000000000000000000060208201526102fa565b3480156106cc575f80fd5b5061035e6106db366004612f93565b61169a565b3480156106eb575f80fd5b5061032f6106fa366004612e6a565b6117cb565b34801561070a575f80fd5b5061035e610719366004612e92565b6117d7565b348015610729575f80fd5b5061035e610738366004612fc8565b6118cf565b348015610748575f80fd5b506103b960015481565b34801561075d575f80fd5b5061035e61076c366004612e92565b6119c5565b34801561077c575f80fd5b506004546103e690640100000000900460ff1681565b34801561079d575f80fd5b506004546103e69060ff1681565b3480156107b6575f80fd5b506103b96107c5366004612fc8565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b3480156107fa575f80fd5b506103b960035481565b34801561080f575f80fd5b5061035e61081e3660046130f7565b611b26565b34801561082e575f80fd5b506103b960025481565b348015610843575f80fd5b5061035e611e06565b5f610858338484611f1e565b5060015b92915050565b336108745f546001600160a01b031690565b6001600160a01b0316146108cf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b0381166109255760405162461bcd60e51b815260206004820152601660248201527f416464726573732063616e6e6f74206265207a65726f0000000000000000000060448201526064016108c6565b600480546001600160a01b0390921665010000000000027fffffffffffffff0000000000000000000000000000000000000000ffffffffff909216919091179055565b6001600160a01b0383165f9081526008602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a355782811015610a285760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084016108c6565b610a358533858403611f1e565b610a40858585612075565b506001949350505050565b33610a5d5f546001600160a01b031690565b6001600160a01b031614610ab35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b670de0b6b3a76400006103e8610ad66b3962ba492ac8e5816000000060016131de565b610ae091906131f5565b610aea91906131f5565b811015610b5f5760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420736574206d61782077616c6c6574206c6f776572207468616e60448201527f20302e312500000000000000000000000000000000000000000000000000000060648201526084016108c6565b610b7181670de0b6b3a76400006131de565b60025550565b33610b895f546001600160a01b031690565b6001600160a01b031614610bdf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b600480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff166201000060ff86811682027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff169290921763010000008684168102919091177fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff16640100000000868516810291909117948590558404831693610c909391810482169290041661322d565b610c9a919061322d565b60ff16606414610d125760405162461bcd60e51b815260206004820152602560248201527f446973747269627574696f6e206861766520746f20626520657175616c20746f60448201527f203130302500000000000000000000000000000000000000000000000000000060648201526084016108c6565b505050565b33610d295f546001600160a01b031690565b6001600160a01b031614610d7f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b60058260ff161115610df95760405162461bcd60e51b815260206004820152602960248201527f4275792066656573206d757374206265206c657373207468616e206f7220657160448201527f75616c20746f203525000000000000000000000000000000000000000000000060648201526084016108c6565b60058160ff161115610e735760405162461bcd60e51b815260206004820152602a60248201527f53656c6c2066656573206d757374206265206c657373207468616e206f72206560448201527f7175616c20746f2035250000000000000000000000000000000000000000000060648201526084016108c6565b6004805460ff928316610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009091169290931691909117919091179055565b33610ec65f546001600160a01b031690565b6001600160a01b031614610f1c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b6001600160a01b03919091165f90815260096020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b33610f765f546001600160a01b031690565b6001600160a01b031614610fcc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b600654760100000000000000000000000000000000000000000000900460ff16156110395760405162461bcd60e51b815260206004820152601060248201527f416c7265616479206c61756e636865640000000000000000000000000000000060448201526064016108c6565b305f818152600760205260408082205460065491517ff305d719000000000000000000000000000000000000000000000000000000008152600481019490945260248401526044830182905260648301919091526001600160a01b031660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990349060c40160606040518083038185885af11580156110de573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d129190613246565b336111155f546001600160a01b031690565b6001600160a01b03161461116b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b620186a06111866b3962ba492ac8e5816000000060016131de565b61119091906131f5565b8110156112055760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527f20302e30303125206f662074686520737570706c79000000000000000000000060648201526084016108c6565b6103e861121f6b3962ba492ac8e5816000000060056131de565b61122991906131f5565b81111561129e5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160448201527f6e20302e3525206f662074686520737570706c7900000000000000000000000060648201526084016108c6565b600355565b336112b55f546001600160a01b031690565b6001600160a01b03161461130b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b6001600160a01b03919091165f908152600a6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b336113655f546001600160a01b031690565b6001600160a01b0316146113bb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b5f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b336113f65f546001600160a01b031690565b6001600160a01b03161461144c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b670de0b6b3a76400006103e861146f6b3962ba492ac8e5816000000060016131de565b61147991906131f5565b61148391906131f5565b8110156114f85760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6f77657260448201527f207468616e20302e31250000000000000000000000000000000000000000000060648201526084016108c6565b61150a81670de0b6b3a76400006131de565b60015550565b336115225f546001600160a01b031690565b6001600160a01b0316146115785760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b600680547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169055565b336115b45f546001600160a01b031690565b6001600160a01b03161461160a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b6001600160a01b0381166116605760405162461bcd60e51b815260206004820152601660248201527f416464726573732063616e6e6f74206265207a65726f0000000000000000000060448201526064016108c6565b600680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b336116ac5f546001600160a01b031690565b6001600160a01b0316146117025760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b7f0000000000000000000000007db758bcf430537e6bc4d024ec1968a515604d6e6001600160a01b0316826001600160a01b0316036117835760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f76656400000000000060448201526064016108c6565b6001600160a01b03919091165f908152600b6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b5f610858338484612075565b336117e95f546001600160a01b031690565b6001600160a01b03161461183f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b6001600160a01b0381166118955760405162461bcd60e51b815260206004820152601660248201527f416464726573732063616e6e6f74206265207a65726f0000000000000000000060448201526064016108c6565b600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b336118e15f546001600160a01b031690565b6001600160a01b0316146119375760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015611994573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b89190613271565b9050610d12838383612962565b336119d75f546001600160a01b031690565b6001600160a01b031614611a2d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b6001600160a01b038116611a835760405162461bcd60e51b815260206004820152600f60248201527f496e76616c69642061646472657373000000000000000000000000000000000060448201526064016108c6565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f8114611acc576040519150601f19603f3d011682016040523d82523d5f602084013e611ad1565b606091505b5050905080611b225760405162461bcd60e51b815260206004820152601160248201527f5769746864726177616c206661696c656400000000000000000000000000000060448201526064016108c6565b5050565b33611b385f546001600160a01b031690565b6001600160a01b031614611b8e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b600654760100000000000000000000000000000000000000000000900460ff1615611bfb5760405162461bcd60e51b815260206004820152601060248201527f416c7265616479206c61756e636865640000000000000000000000000000000060448201526064016108c6565b5f5b8251811015610d1257818181518110611c1857611c18613288565b602002602001015160075f336001600160a01b03166001600160a01b031681526020019081526020015f20541015611cb85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016108c6565b818181518110611cca57611cca613288565b602002602001015160075f858481518110611ce757611ce7613288565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f828254611d1c91906132b5565b92505081905550818181518110611d3557611d35613288565b602002602001015160075f336001600160a01b03166001600160a01b031681526020019081526020015f205f828254611d6e91906132c8565b92505081905550828181518110611d8757611d87613288565b60200260200101516001600160a01b0316336001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef848481518110611dd557611dd5613288565b6020026020010151604051611dec91815260200190565b60405180910390a380611dfe816132db565b915050611bfd565b33611e185f546001600160a01b031690565b6001600160a01b031614611e6e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c6565b600654760100000000000000000000000000000000000000000000900460ff1615611edb5760405162461bcd60e51b815260206004820152601060248201527f416c7265616479206c61756e636865640000000000000000000000000000000060448201526064016108c6565b600680547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff16760100000000000000000000000000000000000000000000179055565b6001600160a01b038316611f995760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016108c6565b6001600160a01b0382166120155760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016108c6565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166120f15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016108c6565b6001600160a01b03821661216d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016108c6565b5f81116121e25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f000000000000000000000000000000000000000000000060648201526084016108c6565b600654760100000000000000000000000000000000000000000000900460ff1615801561224957505f546001600160a01b0384811691161480159061223057506001600160a01b0383163014155b801561224957505f546001600160a01b03838116911614155b156122965760405162461bcd60e51b815260206004820152601360248201527f54726164696e67206e6f7420656e61626c65640000000000000000000000000060448201526064016108c6565b6006547501000000000000000000000000000000000000000000900460ff16156125bd575f546001600160a01b038481169116148015906122e457505f546001600160a01b03838116911614155b80156122f857506001600160a01b03821615155b801561230f57506001600160a01b03821661dead14155b8015612336575060065474010000000000000000000000000000000000000000900460ff16155b156125bd576001600160a01b0383165f908152600b602052604090205460ff16801561237a57506001600160a01b0382165f908152600a602052604090205460ff16155b1561246f576001548111156123f75760405162461bcd60e51b815260206004820152602560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527f6d6178547800000000000000000000000000000000000000000000000000000060648201526084016108c6565b6002546001600160a01b0383165f9081526007602052604090205461241c90836132b5565b111561246a5760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c65742065786365656465640000000000000000000000000060448201526064016108c6565b6125bd565b6001600160a01b0382165f908152600b602052604090205460ff1680156124ae57506001600160a01b0383165f908152600a602052604090205460ff16155b1561252b5760015481111561246a5760405162461bcd60e51b815260206004820152602660248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d61785478000000000000000000000000000000000000000000000000000060648201526084016108c6565b6001600160a01b0382165f908152600a602052604090205460ff166125bd576002546001600160a01b0383165f9081526007602052604090205461256f90836132b5565b11156125bd5760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c65742065786365656465640000000000000000000000000060448201526064016108c6565b600354305f908152600760205260409020541080159081906125fa575060065474010000000000000000000000000000000000000000900460ff16155b801561261e57506001600160a01b0384165f908152600b602052604090205460ff16155b801561264257506001600160a01b0384165f9081526009602052604090205460ff16155b801561266657506001600160a01b0383165f9081526009602052604090205460ff16155b156126db57600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556126b2612acc565b600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690555b6006546001600160a01b0385165f9081526009602052604090205460ff7401000000000000000000000000000000000000000090920482161591168061273857506001600160a01b0384165f9081526009602052604090205460ff165b1561274057505f5b6001600160a01b0385165f90815260076020526040902054838110156127ce5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016108c6565b5f82156128f0576001600160a01b0386165f908152600b602052604090205460ff1680156128055750600454610100900460ff1615155b156128335760045460649061282290610100900460ff16876131de565b61282c91906131f5565b9050612883565b6001600160a01b0387165f908152600b602052604090205460ff16801561285e575060045460ff1615155b15612883576004546064906128769060ff16876131de565b61288091906131f5565b90505b80156128f0576001600160a01b0387165f8181526007602090815260408083208054869003905530808452928190208054860190555184815297849003979192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b6001600160a01b038088165f8181526007602052604080822080548a900390559289168082529083902080548901905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906129519089815260200190565b60405180910390a350505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291515f928392908716916129eb9190613312565b5f604051808303815f865af19150503d805f8114612a24576040519150601f19603f3d011682016040523d82523d5f602084013e612a29565b606091505b5091509150818015612a53575080511580612a53575080806020019051810190612a53919061332d565b612ac55760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657248656c7065723a20494e5445524e414c205452414e53464560448201527f525f4641494c454400000000000000000000000000000000000000000000000060648201526084016108c6565b5050505050565b6003545f612adb8260146131de565b305f908152600760205260409020541115612b0157600354612afe9060146131de565b91505b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110612b3457612b34613288565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110612b7c57612b7c613288565b6001600160a01b03909216602092830291909101909101526040517f791ac947000000000000000000000000000000000000000000000000000000008152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790612bec9086905f90869030904290600401613348565b5f604051808303815f87803b158015612c03575f80fd5b505af1158015612c15573d5f803e3d5ffd5b504792505081159050612dd7576004545f90606490612c3d9062010000900460ff16846131de565b612c4791906131f5565b6004549091505f90606490612c6790640100000000900460ff16856131de565b612c7191906131f5565b90505f81612c7f84866132c8565b612c8991906132c8565b6006546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114612cd4576040519150601f19603f3d011682016040523d82523d5f602084013e612cd9565b606091505b50506005546040519197506001600160a01b03169082905f81818185875af1925050503d805f8114612d26576040519150601f19603f3d011682016040523d82523d5f602084013e612d2b565b606091505b50506004546040519197506501000000000090046001600160a01b03169084905f81818185875af1925050503d805f8114612d81576040519150601f19603f3d011682016040523d82523d5f602084013e612d86565b606091505b50506040805189815260208101859052908101859052606081018390529096507f93efcf28fbf701a930e0ad258987a2e4f08eb3aa99f9c02029e7ba049f69405f9060800160405180910390a15050505b50505050565b5f5b83811015612df7578181015183820152602001612ddf565b50505f910152565b602081525f8251806020840152612e1d816040850160208701612ddd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b80356001600160a01b0381168114612e65575f80fd5b919050565b5f8060408385031215612e7b575f80fd5b612e8483612e4f565b946020939093013593505050565b5f60208284031215612ea2575f80fd5b612eab82612e4f565b9392505050565b5f805f60608486031215612ec4575f80fd5b612ecd84612e4f565b9250612edb60208501612e4f565b9150604084013590509250925092565b5f60208284031215612efb575f80fd5b5035919050565b803560ff81168114612e65575f80fd5b5f805f60608486031215612f24575f80fd5b612f2d84612f02565b9250612f3b60208501612f02565b9150612f4960408501612f02565b90509250925092565b5f8060408385031215612f63575f80fd5b612f6c83612f02565b9150612f7a60208401612f02565b90509250929050565b8015158114612f90575f80fd5b50565b5f8060408385031215612fa4575f80fd5b612fad83612e4f565b91506020830135612fbd81612f83565b809150509250929050565b5f8060408385031215612fd9575f80fd5b612fe283612e4f565b9150612f7a60208401612e4f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561306457613064612ff0565b604052919050565b5f67ffffffffffffffff82111561308557613085612ff0565b5060051b60200190565b5f82601f83011261309e575f80fd5b813560206130b36130ae8361306c565b61301d565b82815260059290921b840181019181810190868411156130d1575f80fd5b8286015b848110156130ec57803583529183019183016130d5565b509695505050505050565b5f8060408385031215613108575f80fd5b823567ffffffffffffffff8082111561311f575f80fd5b818501915085601f830112613132575f80fd5b813560206131426130ae8361306c565b82815260059290921b84018101918181019089841115613160575f80fd5b948201945b838610156131855761317686612e4f565b82529482019490820190613165565b9650508601359250508082111561319a575f80fd5b506131a78582860161308f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808202811582820484141761085c5761085c6131b1565b5f82613228577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b60ff818116838216019081111561085c5761085c6131b1565b5f805f60608486031215613258575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215613281575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8082018082111561085c5761085c6131b1565b8181038181111561085c5761085c6131b1565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361330b5761330b6131b1565b5060010190565b5f8251613323818460208701612ddd565b9190910192915050565b5f6020828403121561333d575f80fd5b8151612eab81612f83565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156133965784516001600160a01b031683529383019391830191600101613371565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220fd38c89af153f64c4679f7ebf043fb43ad1ae328bcbd33779761df28083c3fa364736f6c63430008150033

Deployed Bytecode Sourcemap

2794:13605:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6436:83;;;;;;;;;;-1:-1:-1;6506:5:0;;;;;;;;;;;;;;;;;6436:83;;;;;;;:::i;:::-;;;;;;;;7065:152;;;;;;;;;;-1:-1:-1;7065:152:0;;;;;:::i;:::-;;:::i;:::-;;;1354:14:1;;1347:22;1329:41;;1317:2;1302:18;7065:152:0;1189:187:1;14054:191:0;;;;;;;;;;-1:-1:-1;14054:191:0;;;;;:::i;:::-;;:::i;:::-;;4391:115;;;;;;;;;;;;4463:42;4391:115;;;;;-1:-1:-1;;;;;1762:55:1;;;1744:74;;1732:2;1717:18;4391:115:0;1572:252:1;6706:91:0;;;;;;;;;;-1:-1:-1;2978:21:0;6706:91;;;1975:25:1;;;1963:2;1948:18;6706:91:0;1829:177:1;3273:23:0;;;;;;;;;;-1:-1:-1;3273:23:0;;;;;;;;;;;;;;2183:4:1;2171:17;;;2153:36;;2141:2;2126:18;3273:23:0;2011:184:1;7736:520:0;;;;;;;;;;-1:-1:-1;7736:520:0;;;;;:::i;:::-;;:::i;13811:235::-;;;;;;;;;;-1:-1:-1;13811:235:0;;;;;:::i;:::-;;:::i;6622:76::-;;;;;;;;;;-1:-1:-1;6688:2:0;6622:76;;11039:304;;;;;;;;;;-1:-1:-1;11039:304:0;;;;;:::i;:::-;;:::i;4513:38::-;;;;;;;;;;;;;;;3729:33;;;;;;;;;;-1:-1:-1;3729:33:0;;;;;;;;;;;11351:335;;;;;;;;;;-1:-1:-1;11351:335:0;;;;;:::i;:::-;;:::i;11694:136::-;;;;;;;;;;-1:-1:-1;11694:136:0;;;;;:::i;:::-;;:::i;12635:336::-;;;:::i;13198:361::-;;;;;;;;;;-1:-1:-1;13198:361:0;;;;;:::i;:::-;;:::i;11838:158::-;;;;;;;;;;-1:-1:-1;11838:158:0;;;;;:::i;:::-;;:::i;3234:30::-;;;;;;;;;;-1:-1:-1;3234:30:0;;;;;;;;;;;3303:29;;;;;;;;;;-1:-1:-1;3303:29:0;;;;;;;;;;;6805:110;;;;;;;;;;-1:-1:-1;6805:110:0;;;;;:::i;:::-;-1:-1:-1;;;;;6889:18:0;6862:7;6889:18;;;:9;:18;;;;;;;6805:110;1491:92;;;;;;;;;;;;;:::i;13567:236::-;;;;;;;;;;-1:-1:-1;13567:236:0;;;;;:::i;:::-;;:::i;10947:84::-;;;;;;;;;;;;;:::i;14448:177::-;;;;;;;;;;-1:-1:-1;14448:177:0;;;;;:::i;:::-;;:::i;14633:123::-;;;;;;;;;;-1:-1:-1;14633:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;14720:28:0;14696:4;14720:28;;;:19;:28;;;;;;;;;14633:123;1270:87;;;;;;;;;;-1:-1:-1;1316:7:0;1343:6;-1:-1:-1;;;;;1343:6:0;1270:87;;6527;;;;;;;;;;-1:-1:-1;6599:7:0;;;;;;;;;;;;;;;;;6527:87;;12979:211;;;;;;;;;;-1:-1:-1;12979:211:0;;;;;:::i;:::-;;:::i;7570:158::-;;;;;;;;;;-1:-1:-1;7570:158:0;;;;;:::i;:::-;;:::i;14253:187::-;;;;;;;;;;-1:-1:-1;14253:187:0;;;;;:::i;:::-;;:::i;14764:240::-;;;;;;;;;;-1:-1:-1;14764:240:0;;;;;:::i;:::-;;:::i;3008:58::-;;;;;;;;;;;;;;;;15012:247;;;;;;;;;;-1:-1:-1;15012:247:0;;;;;:::i;:::-;;:::i;3339:24::-;;;;;;;;;;-1:-1:-1;3339:24:0;;;;;;;;;;;3198:29;;;;;;;;;;-1:-1:-1;3198:29:0;;;;;;;;6923:134;;;;;;;;;;-1:-1:-1;6923:134:0;;;;;:::i;:::-;-1:-1:-1;;;;;7022:18:0;;;6995:7;7022:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6923:134;3127:62;;;;;;;;;;;;;;;;12004:492;;;;;;;;;;-1:-1:-1;12004:492:0;;;;;:::i;:::-;;:::i;3073:47::-;;;;;;;;;;;;;;;;12504:123;;;;;;;;;;;;;:::i;7065:152::-;7133:4;7150:37;7159:10;7171:7;7180:6;7150:8;:37::i;:::-;-1:-1:-1;7205:4:0;7065:152;;;;;:::o;14054:191::-;1416:10;1405:7;1316;1343:6;-1:-1:-1;;;;;1343:6:0;;1270:87;1405:7;-1:-1:-1;;;;;1405:21:0;;1397:66;;;;-1:-1:-1;;;1397:66:0;;7138:2:1;1397:66:0;;;7120:21:1;;;7157:18;;;7150:30;7216:34;7196:18;;;7189:62;7268:18;;1397:66:0;;;;;;;;;-1:-1:-1;;;;;14145:24:0;::::1;14137:59;;;::::0;-1:-1:-1;;;14137:59:0;;7499:2:1;14137:59:0::1;::::0;::::1;7481:21:1::0;7538:2;7518:18;;;7511:30;7577:24;7557:18;;;7550:52;7619:18;;14137:59:0::1;7297:346:1::0;14137:59:0::1;14207:17;:30:::0;;-1:-1:-1;;;;;14207:30:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;14054:191::o;7736:520::-;-1:-1:-1;;;;;7871:19:0;;7827:4;7871:19;;;:11;:19;;;;;;;;7891:10;7871:31;;;;;;;;7937:17;7917:37;;7913:263;;7999:6;7979:16;:26;;7971:79;;;;-1:-1:-1;;;7971:79:0;;7850:2:1;7971:79:0;;;7832:21:1;7889:2;7869:18;;;7862:30;7928:34;7908:18;;;7901:62;7999:10;7979:18;;;7972:38;8027:19;;7971:79:0;7648:404:1;7971:79:0;8094:55;8103:6;8111:10;8142:6;8123:16;:25;8094:8;:55::i;:::-;8188:36;8198:6;8206:9;8217:6;8188:9;:36::i;:::-;-1:-1:-1;8244:4:0;;7736:520;-1:-1:-1;;;;7736:520:0:o;13811:235::-;1416:10;1405:7;1316;1343:6;-1:-1:-1;;;;;1343:6:0;;1270:87;1405:7;-1:-1:-1;;;;;1405:21:0;;1397:66;;;;-1:-1:-1;;;1397:66:0;;7138:2:1;1397:66:0;;;7120:21:1;;;7157:18;;;7150:30;7216:34;7196:18;;;7189:62;7268:18;;1397:66:0;6936:356:1;1397:66:0;13946:4:::1;13938;13917:17;2978:21:::0;13933:1:::1;13917:17;:::i;:::-;13916:26;;;;:::i;:::-;13915:35;;;;:::i;:::-;13899:12;:51;;13891:101;;;::::0;-1:-1:-1;;;13891:101:0;;8900:2:1;13891:101:0::1;::::0;::::1;8882:21:1::0;8939:2;8919:18;;;8912:30;8978:34;8958:18;;;8951:62;9049:7;9029:18;;;9022:35;9074:19;;13891:101:0::1;8698:401:1::0;13891:101:0::1;14015:23;:12:::0;14031:6:::1;14015:23;:::i;:::-;14003:9;:35:::0;-1:-1:-1;13811:235:0:o;11039:304::-;1416:10;1405:7;1316;1343:6;-1:-1:-1;;;;;1343:6:0;;1270:87;1405:7;-1:-1:-1;;;;;1405:21:0;;1397:66;;;;-1:-1:-1;;;1397:66:0;;7138:2:1;1397:66:0;;;7120:21:1;;;7157:18;;;7150:30;7216:34;7196:18;;;7189:62;7268:18;;1397:66:0;6936:356:1;1397:66:0;11150:6:::1;:16:::0;;11177:28;;11150:16;::::1;::::0;;::::1;::::0;::::1;11177:28:::0;;;;;;;;;::::1;::::0;::::1;::::0;;;::::1;11216:18:::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;11278:7;::::1;::::0;::::1;::::0;11254:21:::1;::::0;11263:12;;::::1;::::0;::::1;::::0;11254:6;::::1;;:21;:::i;:::-;:31;;;;:::i;:::-;11253:40;;11290:3;11253:40;11245:90;;;::::0;-1:-1:-1;;;11245:90:0;;9459:2:1;11245:90:0::1;::::0;::::1;9441:21:1::0;9498:2;9478:18;;;9471:30;9537:34;9517:18;;;9510:62;9608:7;9588:18;;;9581:35;9633:19;;11245:90:0::1;9257:401:1::0;11245:90:0::1;11039:304:::0;;;:::o;11351:335::-;1416:10;1405:7;1316;1343:6;-1:-1:-1;;;;;1343:6:0;;1270:87;1405:7;-1:-1:-1;;;;;1405:21:0;;1397:66;;;;-1:-1:-1;;;1397:66:0;;7138:2:1;1397:66:0;;;7120:21:1;;;7157:18;;;7150:30;7216:34;7196:18;;;7189:62;7268:18;;1397:66:0;6936:356:1;1397:66:0;11466:1:::1;11449:13;:18;;;;11441:72;;;::::0;-1:-1:-1;;;11441:72:0;;9865:2:1;11441:72:0::1;::::0;::::1;9847:21:1::0;9904:2;9884:18;;;9877:30;9943:34;9923:18;;;9916:62;10014:11;9994:18;;;9987:39;10043:19;;11441:72:0::1;9663:405:1::0;11441:72:0::1;11550:1;11532:14;:19;;;;11524:74;;;::::0;-1:-1:-1;;;11524:74:0;;10275:2:1;11524:74:0::1;::::0;::::1;10257:21:1::0;10314:2;10294:18;;;10287:30;10353:34;10333:18;;;10326:62;10424:12;10404:18;;;10397:40;10454:19;;11524:74:0::1;10073:406:1::0;11524:74:0::1;11609:12;:28:::0;;::::1;11648:30:::0;;::::1;11609:28;11648:30;::::0;;;;11609:28;;;::::1;11648:30:::0;;;;;;;::::1;::::0;;11351:335::o;11694:136::-;1416:10;1405:7;1316;1343:6;-1:-1:-1;;;;;1343:6:0;;1270:87;1405:7;-1:-1:-1;;;;;1405:21:0;;1397:66;;;;-1:-1:-1;;;1397:66:0;;7138:2:1;1397:66:0;;;7120:21:1;;;7157:18;;;7150:30;7216:34;7196:18;;;7189:62;7268:18;;1397:66:0;6936:356:1;1397:66:0;-1:-1:-1;;;;;11783:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:39;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;11694:136::o;12635:336::-;1416:10;1405:7;1316;1343:6;-1:-1:-1;;;;;1343:6:0;;1270:87;1405:7;-1:-1:-1;;;;;1405:21:0;;1397:66;;;;-1:-1:-1;;;1397:66:0;;7138:2:1;1397:66:0;;;7120:21:1;;;7157:18;;;7150:30;7216:34;7196:18;;;7189:62;7268:18;;1397:66:0;6936:356:1;1397:66:0;12709:8:::1;::::0;;;::::1;;;12708:9;12700:38;;;::::0;-1:-1:-1;;;12700:38:0;;10686:2:1;12700:38:0::1;::::0;::::1;10668:21:1::0;10725:2;10705:18;;;10698:30;10764:18;10744;;;10737:46;10800:18;;12700:38:0::1;10484:340:1::0;12700:38:0::1;12821:4;12841:24;::::0;;;:9:::1;:24;::::0;;;;;;12912:10:::1;::::0;12749:214;;;;;::::1;::::0;::::1;11193:34:1::0;;;;11243:18;;;11236:34;11286:18;;;11279:34;;;11329:18;;;11322:34;;;;-1:-1:-1;;;;;12912:10:0::1;11372:19:1::0;;;11365:44;12937:15:0::1;11425:19:1::0;;;11418:35;4463:42:0::1;::::0;12749:31:::1;::::0;12788:9:::1;::::0;11104:19:1;;12749:214:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13198:361::-:0;1416:10;1405:7;1316;1343:6;-1:-1:-1;;;;;1343:6:0;;1270:87;1405:7;-1:-1:-1;;;;;1405:21:0;;1397:66;;;;-1:-1:-1;;;1397:66:0;;7138:2:1;1397:66:0;;;7120:21:1;;;7157:18;;;7150:30;7216:34;7196:18;;;7189:62;7268:18;;1397:66:0;6936:356:1;1397:66:0;13323:6:::1;13302:17;2978:21:::0;13318:1:::1;13302:17;:::i;:::-;13301:28;;;;:::i;:::-;13284:13;:45;;13276:111;;;::::0;-1:-1:-1;;;13276:111:0;;11977:2:1;13276:111:0::1;::::0;::::1;11959:21:1::0;12016:2;11996:18;;;11989:30;12055:34;12035:18;;;12028:62;12126:23;12106:18;;;12099:51;12167:19;;13276:111:0::1;11775:417:1::0;13276:111:0::1;13445:4;13424:17;2978:21:::0;13440:1:::1;13424:17;:::i;:::-;13423:26;;;;:::i;:::-;13406:13;:43;;13398:108;;;::::0;-1:-1:-1;;;13398:108:0;;12399:2:1;13398:108:0::1;::::0;::::1;12381:21:1::0;12438:2;12418:18;;;12411:30;12477:34;12457:18;;;12450:62;12548:22;12528:18;;;12521:50;12588:19;;13398:108:0::1;12197:416:1::0;13398:108:0::1;13517:18;:34:::0;13198:361::o;11838:158::-;1416:10;1405:7;1316;1343:6;-1:-1:-1;;;;;1343:6:0;;1270:87;1405:7;-1:-1:-1;;;;;1405:21:0;;1397:66;;;;-1:-1:-1;;;1397:66:0;;7138:2:1;1397:66:0;;;7120:21:1;;;7157:18;;;7150:30;7216:34;7196:18;;;7189:62;7268:18;;1397:66:0;6936:356:1;1397:66:0;-1:-1:-1;;;;;11937:40:0;;;::::1;;::::0;;;:31:::1;:40;::::0;;;;:51;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;11838:158::o;1491:92::-;1416:10;1405:7;1316;1343:6;-1:-1:-1;;;;;1343:6:0;;1270:87;1405:7;-1:-1:-1;;;;;1405:21:0;;1397:66;;;;-1:-1:-1;;;1397:66:0;;7138:2:1;1397:66:0;;;7120:21:1;;;7157:18;;;7150:30;7216:34;7196:18;;;7189:62;7268:18;;1397:66:0;6936:356:1;1397:66:0;1573:1:::1;1556:19:::0;;;::::1;::::0;;1491:92::o;13567:236::-;1416:10;1405:7;1316;1343:6;-1:-1:-1;;;;;1343:6:0;;1270:87;1405:7;-1:-1:-1;;;;;1405:21:0;;1397:66;;;;-1:-1:-1;;;1397:66:0;;7138:2:1;1397:66:0;;;7120:21:1;;;7157:18;;;7150:30;7216:34;7196:18;;;7189:62;7268:18;;1397:66:0;6936:356:1;1397:66:0;13691:4:::1;13683;13662:17;2978:21:::0;13678:1:::1;13662:17;:::i;:::-;13661:26;;;;:::i;:::-;13660:35;;;;:::i;:::-;13648:8;:47;;13640:102;;;::::0;-1:-1:-1;;;13640:102:0;;12820:2:1;13640:102:0::1;::::0;::::1;12802:21:1::0;12859:2;12839:18;;;12832:30;12898:34;12878:18;;;12871:62;12969:12;12949:18;;;12942:40;12999:19;;13640:102:0::1;12618:406:1::0;13640:102:0::1;13776:19;:8:::0;13788:6:::1;13776:19;:::i;:::-;13753:20;:42:::0;-1:-1:-1;13567:236:0:o;10947:84::-;1416:10;1405:7;1316;1343:6;-1:-1:-1;;;;;1343:6:0;;1270:87;1405:7;-1:-1:-1;;;;;1405:21:0;;1397:66;;;;-1:-1:-1;;;1397:66:0;;7138:2:1;1397:66:0;;;7120:21:1;;;7157:18;;;7150:30;7216:34;7196:18;;;7189:62;7268:18;;1397:66:0;6936:356:1;1397:66:0;11001:14:::1;:22:::0;;;::::1;::::0;;10947:84::o;14448:177::-;1416:10;1405:7;1316;1343:6;-1:-1:-1;;;;;1343:6:0;;1270:87;1405:7;-1:-1:-1;;;;;1405:21:0;;1397:66;;;;-1:-1:-1;;;1397:66:0;;7138:2:1;1397:66:0;;;7120:21:1;;;7157:18;;;7150:30;7216:34;7196:18;;;7189:62;7268:18;;1397:66:0;6936:356:1;1397:66:0;-1:-1:-1;;;;;14532:24:0;::::1;14524:59;;;::::0;-1:-1:-1;;;14524:59:0;;7499:2:1;14524:59:0::1;::::0;::::1;7481:21:1::0;7538:2;7518:18;;;7511:30;7577:24;7557:18;;;7550:52;7619:18;;14524:59:0::1;7297:346:1::0;14524:59:0::1;14594:10;:23:::0;;;::::1;-1:-1:-1::0;;;;;14594:23:0;;;::::1;::::0;;;::::1;::::0;;14448:177::o;12979:211::-;1416:10;1405:7;1316;1343:6;-1:-1:-1;;;;;1343:6:0;;1270:87;1405:7;-1:-1:-1;;;;;1405:21:0;;1397:66;;;;-1:-1:-1;;;1397:66:0;;7138:2:1;1397:66:0;;;7120:21:1;;;7157:18;;;7150:30;7216:34;7196:18;;;7189:62;7268:18;;1397:66:0;6936:356:1;1397:66:0;13088:13:::1;-1:-1:-1::0;;;;;13080:21:0::1;:4;-1:-1:-1::0;;;;;13080:21:0::1;::::0;13072:60:::1;;;::::0;-1:-1:-1;;;13072:60:0;;13231:2:1;13072:60:0::1;::::0;::::1;13213:21:1::0;13270:2;13250:18;;;13243:30;13309:28;13289:18;;;13282:56;13355:18;;13072:60:0::1;13029:350:1::0;13072:60:0::1;-1:-1:-1::0;;;;;13143:31:0;;;::::1;;::::0;;;:25:::1;:31;::::0;;;;:39;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;12979:211::o;7570:158::-;7641:4;7658:40;7668:10;7680:9;7691:6;7658:9;:40::i;14253:187::-;1416:10;1405:7;1316;1343:6;-1:-1:-1;;;;;1343:6:0;;1270:87;1405:7;-1:-1:-1;;;;;1405:21:0;;1397:66;;;;-1:-1:-1;;;1397:66:0;;7138:2:1;1397:66:0;;;7120:21:1;;;7157:18;;;7150:30;7216:34;7196:18;;;7189:62;7268:18;;1397:66:0;6936:356:1;1397:66:0;-1:-1:-1;;;;;14342:24:0;::::1;14334:59;;;::::0;-1:-1:-1;;;14334:59:0;;7499:2:1;14334:59:0::1;::::0;::::1;7481:21:1::0;7538:2;7518:18;;;7511:30;7577:24;7557:18;;;7550:52;7619:18;;14334:59:0::1;7297:346:1::0;14334:59:0::1;14404:15;:28:::0;;;::::1;-1:-1:-1::0;;;;;14404:28:0;;;::::1;::::0;;;::::1;::::0;;14253:187::o;14764:240::-;1416:10;1405:7;1316;1343:6;-1:-1:-1;;;;;1343:6:0;;1270:87;1405:7;-1:-1:-1;;;;;1405:21:0;;1397:66;;;;-1:-1:-1;;;1397:66:0;;7138:2:1;1397:66:0;;;7120:21:1;;;7157:18;;;7150:30;7216:34;7196:18;;;7189:62;7268:18;;1397:66:0;6936:356:1;1397:66:0;14876:38:::1;::::0;;;;14908:4:::1;14876:38;::::0;::::1;1744:74:1::0;14849:24:0::1;::::0;-1:-1:-1;;;;;14876:23:0;::::1;::::0;::::1;::::0;1717:18:1;;14876:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14849:65;;14925:51;14948:5;14955:2;14959:16;14925:22;:51::i;15012:247::-:0;1416:10;1405:7;1316;1343:6;-1:-1:-1;;;;;1343:6:0;;1270:87;1405:7;-1:-1:-1;;;;;1405:21:0;;1397:66;;;;-1:-1:-1;;;1397:66:0;;7138:2:1;1397:66:0;;;7120:21:1;;;7157:18;;;7150:30;7216:34;7196:18;;;7189:62;7268:18;;1397:66:0;6936:356:1;1397:66:0;-1:-1:-1;;;;;15090:18:0;::::1;15082:46;;;::::0;-1:-1:-1;;;15082:46:0;;13775:2:1;15082:46:0::1;::::0;::::1;13757:21:1::0;13814:2;13794:18;;;13787:30;13853:17;13833:18;;;13826:45;13888:18;;15082:46:0::1;13573:339:1::0;15082:46:0::1;15142:12;15160:4;-1:-1:-1::0;;;;;15160:9:0::1;15177:21;15160:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15141:62;;;15222:7;15214:37;;;::::0;-1:-1:-1;;;15214:37:0;;14329:2:1;15214:37:0::1;::::0;::::1;14311:21:1::0;14368:2;14348:18;;;14341:30;14407:19;14387:18;;;14380:47;14444:18;;15214:37:0::1;14127:341:1::0;15214:37:0::1;15071:188;15012:247:::0;:::o;12004:492::-;1416:10;1405:7;1316;1343:6;-1:-1:-1;;;;;1343:6:0;;1270:87;1405:7;-1:-1:-1;;;;;1405:21:0;;1397:66;;;;-1:-1:-1;;;1397:66:0;;7138:2:1;1397:66:0;;;7120:21:1;;;7157:18;;;7150:30;7216:34;7196:18;;;7189:62;7268:18;;1397:66:0;6936:356:1;1397:66:0;12121:8:::1;::::0;;;::::1;;;12120:9;12112:38;;;::::0;-1:-1:-1;;;12112:38:0;;10686:2:1;12112:38:0::1;::::0;::::1;10668:21:1::0;10725:2;10705:18;;;10698:30;10764:18;10744;;;10737:46;10800:18;;12112:38:0::1;10484:340:1::0;12112:38:0::1;12166:9;12161:328;12185:9;:16;12181:1;:20;12161:328;;;12256:7;12264:1;12256:10;;;;;;;;:::i;:::-;;;;;;;12231:9;:21;12241:10;-1:-1:-1::0;;;;;12231:21:0::1;-1:-1:-1::0;;;;;12231:21:0::1;;;;;;;;;;;;;:35;;12223:86;;;::::0;-1:-1:-1;;;12223:86:0;;14864:2:1;12223:86:0::1;::::0;::::1;14846:21:1::0;14903:2;14883:18;;;14876:30;14942:34;14922:18;;;14915:62;15013:8;14993:18;;;14986:36;15039:19;;12223:86:0::1;14662:402:1::0;12223:86:0::1;12351:7;12359:1;12351:10;;;;;;;;:::i;:::-;;;;;;;12324:9;:23;12334:9;12344:1;12334:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;12324:23:0::1;-1:-1:-1::0;;;;;12324:23:0::1;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;12401:7;12409:1;12401:10;;;;;;;;:::i;:::-;;;;;;;12376:9;:21;12386:10;-1:-1:-1::0;;;;;12376:21:0::1;-1:-1:-1::0;;;;;12376:21:0::1;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;12452:9;12462:1;12452:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;12431:46:0::1;12440:10;-1:-1:-1::0;;;;;12431:46:0::1;;12466:7;12474:1;12466:10;;;;;;;;:::i;:::-;;;;;;;12431:46;;;;1975:25:1::0;;1963:2;1948:18;;1829:177;12431:46:0::1;;;;;;;;12203:3:::0;::::1;::::0;::::1;:::i;:::-;;;;12161:328;;12504:123:::0;1416:10;1405:7;1316;1343:6;-1:-1:-1;;;;;1343:6:0;;1270:87;1405:7;-1:-1:-1;;;;;1405:21:0;;1397:66;;;;-1:-1:-1;;;1397:66:0;;7138:2:1;1397:66:0;;;7120:21:1;;;7157:18;;;7150:30;7216:34;7196:18;;;7189:62;7268:18;;1397:66:0;6936:356:1;1397:66:0;12564:8:::1;::::0;;;::::1;;;12563:9;12555:38;;;::::0;-1:-1:-1;;;12555:38:0;;10686:2:1;12555:38:0::1;::::0;::::1;10668:21:1::0;10725:2;10705:18;;;10698:30;10764:18;10744;;;10737:46;10800:18;;12555:38:0::1;10484:340:1::0;12555:38:0::1;12604:8;:15:::0;;;::::1;::::0;::::1;::::0;;12504:123::o;7225:337::-;-1:-1:-1;;;;;7318:19:0;;7310:68;;;;-1:-1:-1;;;7310:68:0;;15734:2:1;7310:68:0;;;15716:21:1;15773:2;15753:18;;;15746:30;15812:34;15792:18;;;15785:62;15883:6;15863:18;;;15856:34;15907:19;;7310:68:0;15532:400:1;7310:68:0;-1:-1:-1;;;;;7397:21:0;;7389:68;;;;-1:-1:-1;;;7389:68:0;;16139:2:1;7389:68:0;;;16121:21:1;16178:2;16158:18;;;16151:30;16217:34;16197:18;;;16190:62;16288:4;16268:18;;;16261:32;16310:19;;7389:68:0;15937:398:1;7389:68:0;-1:-1:-1;;;;;7470:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7522:32;;1975:25:1;;;7522:32:0;;1948:18:1;7522:32:0;;;;;;;7225:337;;;:::o;8264:2675::-;-1:-1:-1;;;;;8352:18:0;;8344:68;;;;-1:-1:-1;;;8344:68:0;;16542:2:1;8344:68:0;;;16524:21:1;16581:2;16561:18;;;16554:30;16620:34;16600:18;;;16593:62;16691:7;16671:18;;;16664:35;16716:19;;8344:68:0;16340:401:1;8344:68:0;-1:-1:-1;;;;;8431:16:0;;8423:64;;;;-1:-1:-1;;;8423:64:0;;16948:2:1;8423:64:0;;;16930:21:1;16987:2;16967:18;;;16960:30;17026:34;17006:18;;;16999:62;17097:5;17077:18;;;17070:33;17120:19;;8423:64:0;16746:399:1;8423:64:0;8515:1;8506:6;:10;8498:64;;;;-1:-1:-1;;;8498:64:0;;17352:2:1;8498:64:0;;;17334:21:1;17391:2;17371:18;;;17364:30;17430:34;17410:18;;;17403:62;17501:11;17481:18;;;17474:39;17530:19;;8498:64:0;17150:405:1;8498:64:0;8580:8;;;;;;;8579:9;:72;;;;-1:-1:-1;1316:7:0;1343:6;-1:-1:-1;;;;;8593:15:0;;;1343:6;;8593:15;;;;:40;;-1:-1:-1;;;;;;8612:21:0;;8628:4;8612:21;;8593:40;:57;;;;-1:-1:-1;1316:7:0;1343:6;-1:-1:-1;;;;;8637:13:0;;;1343:6;;8637:13;;8593:57;8575:134;;;8668:29;;-1:-1:-1;;;8668:29:0;;17762:2:1;8668:29:0;;;17744:21:1;17801:2;17781:18;;;17774:30;17840:21;17820:18;;;17813:49;17879:18;;8668:29:0;17560:343:1;8575:134:0;8725:14;;;;;;;8721:830;;;1316:7;1343:6;-1:-1:-1;;;;;8760:15:0;;;1343:6;;8760:15;;;;:32;;-1:-1:-1;1316:7:0;1343:6;-1:-1:-1;;;;;8779:13:0;;;1343:6;;8779:13;;8760:32;:52;;;;-1:-1:-1;;;;;;8796:16:0;;;;8760:52;:77;;;;-1:-1:-1;;;;;;8816:21:0;;8830:6;8816:21;;8760:77;:90;;;;-1:-1:-1;8842:8:0;;;;;;;8841:9;8760:90;8756:784;;;-1:-1:-1;;;;;8875:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;8911:35:0;;;;;;:31;:35;;;;;;;;8910:36;8875:71;8871:654;;;8989:20;;8979:6;:30;;8971:80;;;;-1:-1:-1;;;8971:80:0;;18110:2:1;8971:80:0;;;18092:21:1;18149:2;18129:18;;;18122:30;18188:34;18168:18;;;18161:62;18259:7;18239:18;;;18232:35;18284:19;;8971:80:0;17908:401:1;8971:80:0;9108:9;;-1:-1:-1;;;;;6889:18:0;;6862:7;6889:18;;;:9;:18;;;;;;9082:22;;:6;:22;:::i;:::-;:35;;9074:67;;;;-1:-1:-1;;;9074:67:0;;18516:2:1;9074:67:0;;;18498:21:1;18555:2;18535:18;;;18528:30;18594:21;18574:18;;;18567:49;18633:18;;9074:67:0;18314:343:1;9074:67:0;8871:654;;;-1:-1:-1;;;;;9171:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;9205:37:0;;;;;;:31;:37;;;;;;;;9204:38;9171:71;9167:358;;;9285:20;;9275:6;:30;;9267:80;;;;-1:-1:-1;;;9267:80:0;;18864:2:1;9267:80:0;;;18846:21:1;18903:2;18883:18;;;18876:30;18942:34;18922:18;;;18915:62;19013:8;18993:18;;;18986:36;19039:19;;9267:80:0;18662:402:1;9167:358:0;-1:-1:-1;;;;;9378:35:0;;;;;;:31;:35;;;;;;;;9373:152;;9472:9;;-1:-1:-1;;;;;6889:18:0;;6862:7;6889:18;;;:9;:18;;;;;;9446:22;;:6;:22;:::i;:::-;:35;;9438:67;;;;-1:-1:-1;;;9438:67:0;;18516:2:1;9438:67:0;;;18498:21:1;18555:2;18535:18;;;18528:30;18594:21;18574:18;;;18567:49;18633:18;;9438:67:0;18314:343:1;9438:67:0;9606:18;;9596:4;9563:12;6889:18;;;:9;:18;;;;;;-1:-1:-1;9578:46:0;;;;;9641:20;;-1:-1:-1;9653:8:0;;;;;;;9652:9;9641:20;:56;;;;-1:-1:-1;;;;;;9666:31:0;;;;;;:25;:31;;;;;;;;9665:32;9641:56;:86;;;;-1:-1:-1;;;;;;9702:25:0;;;;;;:19;:25;;;;;;;;9701:26;9641:86;:114;;;;-1:-1:-1;;;;;;9732:23:0;;;;;;:19;:23;;;;;;;;9731:24;9641:114;9637:218;;;9772:8;:15;;;;;;;;9802:10;:8;:10::i;:::-;9827:8;:16;;;;;;9637:218;9883:8;;-1:-1:-1;;;;;9908:25:0;;9867:12;9908:25;;;:19;:25;;;;;;9883:8;;;;;;;9882:9;;9908:25;;:52;;-1:-1:-1;;;;;;9937:23:0;;;;;;:19;:23;;;;;;;;9908:52;9904:100;;;-1:-1:-1;9987:5:0;9904:100;-1:-1:-1;;;;;10040:15:0;;10016:21;10040:15;;;:9;:15;;;;;;10074:23;;;;10066:74;;;;-1:-1:-1;;;10066:74:0;;14864:2:1;10066:74:0;;;14846:21:1;14903:2;14883:18;;;14876:30;14942:34;14922:18;;;14915:62;15013:8;14993:18;;;14986:36;15039:19;;10066:74:0;14662:402:1;10066:74:0;10153:12;10184:7;10180:600;;;-1:-1:-1;;;;;10212:29:0;;;;;;:25;:29;;;;;;;;:50;;;;-1:-1:-1;10245:13:0;;;;;;;:17;;10212:50;10208:262;;;10300:13;;10317:3;;10291:22;;10300:13;;;;;10291:6;:22;:::i;:::-;10290:30;;;;:::i;:::-;10283:37;;10208:262;;;-1:-1:-1;;;;;10346:31:0;;;;;;:25;:31;;;;;;;;:51;;;;-1:-1:-1;10381:12:0;;;;:16;;10346:51;10342:128;;;10435:12;;10451:3;;10426:21;;10435:12;;10426:6;:21;:::i;:::-;10425:29;;;;:::i;:::-;10418:36;;10342:128;10490:8;;10486:283;;-1:-1:-1;;;;;10597:15:0;;;;;;:9;:15;;;;;;;;:23;;;;;;;10661:4;10643:24;;;;;;;:32;;;;;;10718:35;1975:25:1;;;10561:13:0;;;;;10661:4;;10597:15;10718:35;;1948:18:1;10718:35:0;;;;;;;10486:283;-1:-1:-1;;;;;10815:15:0;;;;;;;:9;:15;;;;;;:25;;;;;;;10855:13;;;;;;;;;;:23;;;;;;10905:26;;;;;;10834:6;1975:25:1;;1963:2;1948:18;;1829:177;10905:26:0;;;;;;;;8333:2606;;;;8264:2675;;;:::o;1615:320::-;1746:59;;;-1:-1:-1;;;;;19261:55:1;;;1746:59:0;;;19243:74:1;19333:18;;;;19326:34;;;1746:59:0;;;;;;;;;;19216:18:1;;;;1746:59:0;;;;;;;;;1769:24;1746:59;;;1735:71;;-1:-1:-1;;;;1735:10:0;;;;:71;;1746:59;1735:71;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1699:107;;;;1825:7;:57;;;;-1:-1:-1;1837:11:0;;:16;;:44;;;1868:4;1857:24;;;;;;;;;;;;:::i;:::-;1817:110;;;;-1:-1:-1;;;1817:110:0;;20115:2:1;1817:110:0;;;20097:21:1;20154:2;20134:18;;;20127:30;20193:34;20173:18;;;20166:62;20264:10;20244:18;;;20237:38;20292:19;;1817:110:0;19913:404:1;1817:110:0;1688:247;;1615:320;;;:::o;15267:1129::-;15330:18;;15306:21;15415:23;15330:18;15436:2;15415:23;:::i;:::-;15406:4;6862:7;6889:18;;;:9;:18;;;;;;15388:50;15384:122;;;15471:18;;:23;;15492:2;15471:23;:::i;:::-;15455:39;;15384:122;15542:16;;;15556:1;15542:16;;;;;;;;15518:21;;15542:16;;;;;;;;;;-1:-1:-1;15542:16:0;15518:40;;15587:4;15569;15574:1;15569:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;15569:23:0;;;-1:-1:-1;;;;;15569:23:0;;;;;3650:42;15603:4;15608:1;15603:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15603:14:0;;;:7;;;;;;;;;;;:14;15630:122;;;;;4463:42;;15630:66;;:122;;15697:13;;15712:1;;15715:4;;15729;;15736:15;;15630:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15786:21:0;;-1:-1:-1;;15822:14:0;;;-1:-1:-1;15818:571:0;;15887:6;;15853:17;;15897:3;;15874:19;;15887:6;;;;;15874:10;:19;:::i;:::-;15873:27;;;;:::i;:::-;15950:7;;15853:47;;-1:-1:-1;15915:18:0;;15961:3;;15937:20;;15950:7;;;;;15937:10;:20;:::i;:::-;15936:28;;;;:::i;:::-;15915:49;-1:-1:-1;15979:23:0;15915:49;16005:22;16018:9;16005:10;:22;:::i;:::-;:35;;;;:::i;:::-;16079:10;;16071:47;;15979:61;;-1:-1:-1;;;;;;16079:10:0;;16103;;16071:47;;;;16103:10;16079;16071:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16155:15:0;;16147:57;;16057:61;;-1:-1:-1;;;;;;16155:15:0;;16184;;16147:57;;;;16184:15;16155;16147:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16241:17:0;;16233:53;;16133:71;;-1:-1:-1;16241:17:0;;;-1:-1:-1;;;;;16241:17:0;;16272:9;;16233:53;;;;16272:9;16241:17;16233:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16308:69:0;;;21584:25:1;;;21640:2;21625:18;;21618:34;;;21668:18;;;21661:34;;;21726:2;21711:18;;21704:34;;;16219:67:0;;-1:-1:-1;16308:69:0;;21571:3:1;21556:19;16308:69:0;;;;;;;15838:551;;;15818:571;15295:1101;;;;15267:1129::o;14:250:1:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:1;238:16;;231:27;14:250::o;269:455::-;418:2;407:9;400:21;381:4;450:6;444:13;493:6;488:2;477:9;473:18;466:34;509:79;581:6;576:2;565:9;561:18;556:2;548:6;544:15;509:79;:::i;:::-;640:2;628:15;645:66;624:88;609:104;;;;715:2;605:113;;269:455;-1:-1:-1;;269:455:1:o;729:196::-;797:20;;-1:-1:-1;;;;;846:54:1;;836:65;;826:93;;915:1;912;905:12;826:93;729:196;;;:::o;930:254::-;998:6;1006;1059:2;1047:9;1038:7;1034:23;1030:32;1027:52;;;1075:1;1072;1065:12;1027:52;1098:29;1117:9;1098:29;:::i;:::-;1088:39;1174:2;1159:18;;;;1146:32;;-1:-1:-1;;;930:254:1:o;1381:186::-;1440:6;1493:2;1481:9;1472:7;1468:23;1464:32;1461:52;;;1509:1;1506;1499:12;1461:52;1532:29;1551:9;1532:29;:::i;:::-;1522:39;1381:186;-1:-1:-1;;;1381:186:1:o;2200:328::-;2277:6;2285;2293;2346:2;2334:9;2325:7;2321:23;2317:32;2314:52;;;2362:1;2359;2352:12;2314:52;2385:29;2404:9;2385:29;:::i;:::-;2375:39;;2433:38;2467:2;2456:9;2452:18;2433:38;:::i;:::-;2423:48;;2518:2;2507:9;2503:18;2490:32;2480:42;;2200:328;;;;;:::o;2533:180::-;2592:6;2645:2;2633:9;2624:7;2620:23;2616:32;2613:52;;;2661:1;2658;2651:12;2613:52;-1:-1:-1;2684:23:1;;2533:180;-1:-1:-1;2533:180:1:o;2718:156::-;2784:20;;2844:4;2833:16;;2823:27;;2813:55;;2864:1;2861;2854:12;2879:322;2950:6;2958;2966;3019:2;3007:9;2998:7;2994:23;2990:32;2987:52;;;3035:1;3032;3025:12;2987:52;3058:27;3075:9;3058:27;:::i;:::-;3048:37;;3104:36;3136:2;3125:9;3121:18;3104:36;:::i;:::-;3094:46;;3159:36;3191:2;3180:9;3176:18;3159:36;:::i;:::-;3149:46;;2879:322;;;;;:::o;3437:252::-;3501:6;3509;3562:2;3550:9;3541:7;3537:23;3533:32;3530:52;;;3578:1;3575;3568:12;3530:52;3601:27;3618:9;3601:27;:::i;:::-;3591:37;;3647:36;3679:2;3668:9;3664:18;3647:36;:::i;:::-;3637:46;;3437:252;;;;;:::o;3694:118::-;3780:5;3773:13;3766:21;3759:5;3756:32;3746:60;;3802:1;3799;3792:12;3746:60;3694:118;:::o;3817:315::-;3882:6;3890;3943:2;3931:9;3922:7;3918:23;3914:32;3911:52;;;3959:1;3956;3949:12;3911:52;3982:29;4001:9;3982:29;:::i;:::-;3972:39;;4061:2;4050:9;4046:18;4033:32;4074:28;4096:5;4074:28;:::i;:::-;4121:5;4111:15;;;3817:315;;;;;:::o;4137:260::-;4205:6;4213;4266:2;4254:9;4245:7;4241:23;4237:32;4234:52;;;4282:1;4279;4272:12;4234:52;4305:29;4324:9;4305:29;:::i;:::-;4295:39;;4353:38;4387:2;4376:9;4372:18;4353:38;:::i;4402:184::-;4454:77;4451:1;4444:88;4551:4;4548:1;4541:15;4575:4;4572:1;4565:15;4591:334;4662:2;4656:9;4718:2;4708:13;;4723:66;4704:86;4692:99;;4821:18;4806:34;;4842:22;;;4803:62;4800:88;;;4868:18;;:::i;:::-;4904:2;4897:22;4591:334;;-1:-1:-1;4591:334:1:o;4930:183::-;4990:4;5023:18;5015:6;5012:30;5009:56;;;5045:18;;:::i;:::-;-1:-1:-1;5090:1:1;5086:14;5102:4;5082:25;;4930:183::o;5118:662::-;5172:5;5225:3;5218:4;5210:6;5206:17;5202:27;5192:55;;5243:1;5240;5233:12;5192:55;5279:6;5266:20;5305:4;5329:60;5345:43;5385:2;5345:43;:::i;:::-;5329:60;:::i;:::-;5423:15;;;5509:1;5505:10;;;;5493:23;;5489:32;;;5454:12;;;;5533:15;;;5530:35;;;5561:1;5558;5551:12;5530:35;5597:2;5589:6;5585:15;5609:142;5625:6;5620:3;5617:15;5609:142;;;5691:17;;5679:30;;5729:12;;;;5642;;5609:142;;;-1:-1:-1;5769:5:1;5118:662;-1:-1:-1;;;;;;5118:662:1:o;5785:1146::-;5903:6;5911;5964:2;5952:9;5943:7;5939:23;5935:32;5932:52;;;5980:1;5977;5970:12;5932:52;6020:9;6007:23;6049:18;6090:2;6082:6;6079:14;6076:34;;;6106:1;6103;6096:12;6076:34;6144:6;6133:9;6129:22;6119:32;;6189:7;6182:4;6178:2;6174:13;6170:27;6160:55;;6211:1;6208;6201:12;6160:55;6247:2;6234:16;6269:4;6293:60;6309:43;6349:2;6309:43;:::i;6293:60::-;6387:15;;;6469:1;6465:10;;;;6457:19;;6453:28;;;6418:12;;;;6493:19;;;6490:39;;;6525:1;6522;6515:12;6490:39;6549:11;;;;6569:148;6585:6;6580:3;6577:15;6569:148;;;6651:23;6670:3;6651:23;:::i;:::-;6639:36;;6602:12;;;;6695;;;;6569:148;;;6736:5;-1:-1:-1;;6779:18:1;;6766:32;;-1:-1:-1;;6810:16:1;;;6807:36;;;6839:1;6836;6829:12;6807:36;;6862:63;6917:7;6906:8;6895:9;6891:24;6862:63;:::i;:::-;6852:73;;;5785:1146;;;;;:::o;8057:184::-;8109:77;8106:1;8099:88;8206:4;8203:1;8196:15;8230:4;8227:1;8220:15;8246:168;8319:9;;;8350;;8367:15;;;8361:22;;8347:37;8337:71;;8388:18;;:::i;8419:274::-;8459:1;8485;8475:189;;8520:77;8517:1;8510:88;8621:4;8618:1;8611:15;8649:4;8646:1;8639:15;8475:189;-1:-1:-1;8678:9:1;;8419:274::o;9104:148::-;9192:4;9171:12;;;9185;;;9167:31;;9210:13;;9207:39;;;9226:18;;:::i;11464:306::-;11552:6;11560;11568;11621:2;11609:9;11600:7;11596:23;11592:32;11589:52;;;11637:1;11634;11627:12;11589:52;11666:9;11660:16;11650:26;;11716:2;11705:9;11701:18;11695:25;11685:35;;11760:2;11749:9;11745:18;11739:25;11729:35;;11464:306;;;;;:::o;13384:184::-;13454:6;13507:2;13495:9;13486:7;13482:23;13478:32;13475:52;;;13523:1;13520;13513:12;13475:52;-1:-1:-1;13546:16:1;;13384:184;-1:-1:-1;13384:184:1:o;14473:::-;14525:77;14522:1;14515:88;14622:4;14619:1;14612:15;14646:4;14643:1;14636:15;15069:125;15134:9;;;15155:10;;;15152:36;;;15168:18;;:::i;15199:128::-;15266:9;;;15287:11;;;15284:37;;;15301:18;;:::i;15332:195::-;15371:3;15402:66;15395:5;15392:77;15389:103;;15472:18;;:::i;:::-;-1:-1:-1;15519:1:1;15508:13;;15332:195::o;19371:287::-;19500:3;19538:6;19532:13;19554:66;19613:6;19608:3;19601:4;19593:6;19589:17;19554:66;:::i;:::-;19636:16;;;;;19371:287;-1:-1:-1;;19371:287:1:o;19663:245::-;19730:6;19783:2;19771:9;19762:7;19758:23;19754:32;19751:52;;;19799:1;19796;19789:12;19751:52;19831:9;19825:16;19850:28;19872:5;19850:28;:::i;20322:1026::-;20584:4;20632:3;20621:9;20617:19;20663:6;20652:9;20645:25;20689:2;20727:6;20722:2;20711:9;20707:18;20700:34;20770:3;20765:2;20754:9;20750:18;20743:31;20794:6;20829;20823:13;20860:6;20852;20845:22;20898:3;20887:9;20883:19;20876:26;;20937:2;20929:6;20925:15;20911:29;;20958:1;20968:218;20982:6;20979:1;20976:13;20968:218;;;21047:13;;-1:-1:-1;;;;;21043:62:1;21031:75;;21161:15;;;;21126:12;;;;21004:1;20997:9;20968:218;;;-1:-1:-1;;;;;;;21242:55:1;;;;21237:2;21222:18;;21215:83;-1:-1:-1;;;21329:3:1;21314:19;21307:35;21203:3;20322:1026;-1:-1:-1;;;20322:1026:1:o

Swarm Source

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