ETH Price: $3,266.24 (-0.64%)

Token

PopKitty (POPKI)
 

Overview

Max Total Supply

100,000,000 POPKI

Holders

172

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
188,143.560059811458973886 POPKI

Value
$0.00
0x5BD7e19C265a394dC48A60B7F87c44EAB7903d3f
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:
POPKITTY

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-12-30
*/

/*
 /\_/\  
( o.o ) 
 > ^ < POPKITTY ~ ~


// https://popkitty.io/
// https://x.com/Popular__kitty
// https://t.me/popularkitty
*/
// SPDX-License-Identifier:MIT
pragma solidity 0.8.20;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(
        address recipient,
        uint256 amount
    ) external returns (bool);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}


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

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


contract Ownable is Context {
    address private _owner;

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

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

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

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

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    /**
     * @dev Unauthorized reentrant call.
     */
    error ReentrancyGuardReentrantCall();

    constructor() {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {
        _nonReentrantBefore();
        _;
        _nonReentrantAfter();
    }

    function _nonReentrantBefore() private {
        // On the first call to nonReentrant, _status will be _NOT_ENTERED
        if (_status == _ENTERED) {
            revert ReentrancyGuardReentrantCall();
        }

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;
    }

    function _nonReentrantAfter() private {
        _status = _NOT_ENTERED;
    }

    function _reentrancyGuardEntered() internal view returns (bool) {
        return _status == _ENTERED;
    }
}

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

// Dex Router contract interface
interface IDexRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

contract POPKITTY is Context, IERC20, Ownable,ReentrancyGuard {
    string private _name;
    string private _symbol;
    uint8 private _decimals = 18;
    uint256 private _totalSupply = 100_000_000 ether;
    uint256 public minSwapAmount;
    uint256 public maxTxnAmount = 250_000 ether;
    uint256 public maxWalletAmount = 250_000 ether; 

    uint256 public taxFeeOnBuy = 25;
    uint256 public taxFeeOnSell = 25;
    uint256 public percentDivider = 100;
    bool public distributeAndLiquifyStatus = true;

    address public feeReceiver; // fee receiver
    bool public feesStatus = true; // enable by default

    IDexRouter public dexRouter; //Uniswap  router declaration
    address public dexPair; //Uniswap  pair address declaration

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public isExcludedFromFee;
    mapping(address => bool) public isLimitExmpt;
    mapping(address => bool) public isWalletExmpt;

    event ExcludeFromFee(address indexed account, bool isExcluded);
    event NewSwapAmount(uint256 newAmount);
    event DistributionStatus(bool Status);
    event FeeStatus(bool Status);
    event FeeUpdated(uint256 amount);

    event feeReceiverUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    constructor(
        string memory __name,
        string memory __symbol,  
        address __feeReceiver,
        address __router
    ) {
        _name = __name;
        _symbol = __symbol; 
        _balances[owner()] = _totalSupply; 
        feeReceiver = __feeReceiver;
        minSwapAmount = _totalSupply / 2000;

        //exclude owner and this contract from fees
        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[address(dexRouter)] = true;

        IDexRouter _dexRouter = IDexRouter(__router);
        // Create a dex pair for this new ERC20
        address _dexPair = IDexFactory(_dexRouter.factory()).createPair(
            address(this),
            _dexRouter.WETH()
        );
        dexPair = _dexPair;

        // set the rest of the contract variables
        dexRouter = _dexRouter;

        isLimitExmpt[owner()] = true;
        isLimitExmpt[dexPair] = true;
        isLimitExmpt[address(this)] = true;
        isLimitExmpt[address(dexRouter)] = true;

        isWalletExmpt[owner()] = true;
        isWalletExmpt[dexPair] = true;
        isWalletExmpt[address(this)] = true;
        isWalletExmpt[address(dexRouter)] = true;

        emit Transfer(address(0), owner(), _totalSupply);
    }

    // Public viewable functions
    function name() public view returns (string memory) {
        return _name;
    }

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

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()] - amount
        );
        return true;
    }

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

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] - subtractedValue
        );
        return true;
    }

    function calculateBuyTax(uint256 amount) public view returns (uint256) {
        uint256 fee = (amount * taxFeeOnBuy) / percentDivider;
        return fee;
    }

    function calculateSellTax(uint256 amount) public view returns (uint256) {
        uint256 fee = (amount * taxFeeOnSell) / percentDivider;
        return fee;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "Approve from the zero address");
        require(spender != address(0), "Approve to the zero address");

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "Tansfer from the zero address");
        require(to != address(0), "Transfer to the zero address");
        require(amount > 0, " Amount must be greater than zero");
        if (!isLimitExmpt[from] && !isLimitExmpt[to]) {
            require(amount <= maxTxnAmount, "Max txn limit exceeds");

         
        }

        if (!isWalletExmpt[to]) {
            require(
                balanceOf(to) + amount <= maxWalletAmount,
                "Max Wallet limit exceeds"
            );
        }

        // swap and liquify
        distributeAndLiquify(from, to);

        //indicates if fee should be deducted from transfer
        bool takeFee = true;

        //if any account belongs to isExcludedFromFee account then remove the fee
        if (isExcludedFromFee[from] || isExcludedFromFee[to] || !feesStatus) {
            takeFee = false;
        }

        //transfer amount, it will take tax, burn, liquidity fee
        _tokenTransfer(from, to, amount, takeFee);
    }

    //this method is responsible for processing all fee, if takeFee is true
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (dexPair == sender && takeFee) {
            uint256 allFee;
            uint256 tTransferAmount;
            allFee = calculateBuyTax(amount);
            tTransferAmount = amount - allFee;

            _balances[sender] = _balances[sender] - amount;
            _balances[recipient] = _balances[recipient] + tTransferAmount;
            emit Transfer(sender, recipient, tTransferAmount);

            takeTokenFee(sender, allFee);
        } else if (dexPair == recipient && takeFee) {
            uint256 allFee = calculateSellTax(amount);
            uint256 tTransferAmount = amount - allFee;
            _balances[sender] = _balances[sender] - amount;
            _balances[recipient] = _balances[recipient] + tTransferAmount;
            emit Transfer(sender, recipient, tTransferAmount);

            takeTokenFee(sender, allFee);
        } else {
            _balances[sender] = _balances[sender] - amount;
            _balances[recipient] = _balances[recipient] + (amount);
            emit Transfer(sender, recipient, amount);
        }
    }

    function takeTokenFee(address sender, uint256 amount) private {
        _balances[address(this)] = _balances[address(this)] + amount;

        emit Transfer(sender, address(this), amount);
    }

    // Withdraw stuck ETH
    function removeETH(uint256 _amount) external onlyOwner {
        require(address(this).balance >= _amount, "Invalid Amount");
        payable(msg.sender).transfer(_amount);

        emit Transfer(address(this), msg.sender, _amount);
    }
 

    //callable by contract

    function distributeAndLiquify(address from, address to) private {
        uint256 contractTokenBalance = balanceOf(address(this));

        if (
            contractTokenBalance >= minSwapAmount &&
            from != dexPair &&
            distributeAndLiquifyStatus &&
            !(from == address(this) && to == dexPair) // swap 1 time
        ) {
            // approve contract
            _approve(address(this), address(dexRouter), minSwapAmount);

            // lock into liquidty pool
            Utils.swapTokensForEth(address(dexRouter), minSwapAmount);
            uint256 ethForMarketing = address(this).balance;

            // sending Eth to Marketing wallet
            if (ethForMarketing > 0)
                payable(feeReceiver).transfer(ethForMarketing);
        }
    }
 

    function removeMaxWalletMaxTrxAmount() external onlyOwner {
        maxWalletAmount = _totalSupply;
        maxTxnAmount = _totalSupply;
    }

    // to change buy fee
    function updateBuyTax(uint256 _taxFee) external onlyOwner {
        require(_taxFee <= taxFeeOnBuy, "Buy fee can't be more than current fee.");
        taxFeeOnBuy = _taxFee;

        emit FeeUpdated(taxFeeOnBuy);
    }

    // to change sell fee
    function updateSellTax(uint256 _taxFee) external onlyOwner {
        require(
            _taxFee <= taxFeeOnSell,
            "Sell fee can't be more than current fee."
        );
        taxFeeOnSell = _taxFee;

        emit FeeUpdated(taxFeeOnSell);
    }

    //to change swap fee
    function changeSwapAmount(uint256 _amount) external onlyOwner {
        require(_amount > 0, "min swap amount should be greater than zero");
        minSwapAmount = _amount;
        emit NewSwapAmount(minSwapAmount);
    }

    function setDistributionStatus(bool _value) external onlyOwner {
        // Check if the new value is different from the current state
        require(
            _value != distributeAndLiquifyStatus,
            "Value must be different from current state"
        );
        distributeAndLiquifyStatus = _value;
        emit DistributionStatus(_value);
    } 

    // to change fee receiver wallet
    function changeFeeReceiver(address newfeeReceiver) external onlyOwner {
        require(
            newfeeReceiver != address(0),
            "Ownable: new feeReceiver is the zero address"
        );
        emit feeReceiverUpdated(newfeeReceiver, feeReceiver);
        feeReceiver = newfeeReceiver;
    }

    //to receive ETH from dexRouter when swapping
    receive() external payable {}
}

// Library dex swap
library Utils {
    function swapTokensForEth(
        address routerAddress,
        uint256 tokenAmount
    ) internal {
        IDexRouter dexRouter = IDexRouter(routerAddress);

        // generate the Dex pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"__name","type":"string"},{"internalType":"string","name":"__symbol","type":"string"},{"internalType":"address","name":"__feeReceiver","type":"address"},{"internalType":"address","name":"__router","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"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":"bool","name":"Status","type":"bool"}],"name":"DistributionStatus","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"FeeStatus","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"FeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"NewSwapAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"feeReceiverUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"calculateBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"calculateSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newfeeReceiver","type":"address"}],"name":"changeFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"changeSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributeAndLiquifyStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feesStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isLimitExmpt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletExmpt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentDivider","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"removeETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeMaxWalletMaxTrxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setDistributionStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_taxFee","type":"uint256"}],"name":"updateBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_taxFee","type":"uint256"}],"name":"updateSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052601260045f6101000a81548160ff021916908360ff1602179055506a52b7d2dcc80cd2e40000006005556934f086f3b33b684000006007556934f086f3b33b6840000060085560196009556019600a556064600b556001600c5f6101000a81548160ff0219169083151502179055506001600c60156101000a81548160ff0219169083151502179055503480156200009a575f80fd5b5060405162004888380380620048888339818101604052810190620000c0919062000b54565b620000d06200094060201b60201c565b5f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36001808190555083600290816200019f919062000e38565b508260039081620001b1919062000e38565b50600554600f5f620001c86200094760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555081600c60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506107d060055462000258919062000f49565b600681905550600160115f620002736200094760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160115f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160115f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f8190505f8173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003dc573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000402919062000f80565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000468573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200048e919062000f80565b6040518363ffffffff1660e01b8152600401620004ad92919062000fc1565b6020604051808303815f875af1158015620004ca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004f0919062000f80565b905080600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160125f620005876200094760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160135f6200072c6200094760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160135f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160135f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160135f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620008cc6200094760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6005546040516200092c919062000ffd565b60405180910390a350505050505062001018565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b620009cf8262000987565b810181811067ffffffffffffffff82111715620009f157620009f062000997565b5b80604052505050565b5f62000a056200096e565b905062000a138282620009c4565b919050565b5f67ffffffffffffffff82111562000a355762000a3462000997565b5b62000a408262000987565b9050602081019050919050565b5f5b8381101562000a6c57808201518184015260208101905062000a4f565b5f8484015250505050565b5f62000a8d62000a878462000a18565b620009fa565b90508281526020810184848401111562000aac5762000aab62000983565b5b62000ab984828562000a4d565b509392505050565b5f82601f83011262000ad85762000ad76200097f565b5b815162000aea84826020860162000a77565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000b1e8262000af3565b9050919050565b62000b308162000b12565b811462000b3b575f80fd5b50565b5f8151905062000b4e8162000b25565b92915050565b5f805f806080858703121562000b6f5762000b6e62000977565b5b5f85015167ffffffffffffffff81111562000b8f5762000b8e6200097b565b5b62000b9d8782880162000ac1565b945050602085015167ffffffffffffffff81111562000bc15762000bc06200097b565b5b62000bcf8782880162000ac1565b935050604062000be28782880162000b3e565b925050606062000bf58782880162000b3e565b91505092959194509250565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000c5057607f821691505b60208210810362000c665762000c6562000c0b565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000cca7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c8d565b62000cd6868362000c8d565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000d2062000d1a62000d148462000cee565b62000cf7565b62000cee565b9050919050565b5f819050919050565b62000d3b8362000d00565b62000d5362000d4a8262000d27565b84845462000c99565b825550505050565b5f90565b62000d6962000d5b565b62000d7681848462000d30565b505050565b5b8181101562000d9d5762000d915f8262000d5f565b60018101905062000d7c565b5050565b601f82111562000dec5762000db68162000c6c565b62000dc18462000c7e565b8101602085101562000dd1578190505b62000de962000de08562000c7e565b83018262000d7b565b50505b505050565b5f82821c905092915050565b5f62000e0e5f198460080262000df1565b1980831691505092915050565b5f62000e28838362000dfd565b9150826002028217905092915050565b62000e438262000c01565b67ffffffffffffffff81111562000e5f5762000e5e62000997565b5b62000e6b825462000c38565b62000e7882828562000da1565b5f60209050601f83116001811462000eae575f841562000e99578287015190505b62000ea5858262000e1b565b86555062000f14565b601f19841662000ebe8662000c6c565b5f5b8281101562000ee75784890151825560018201915060208501945060208101905062000ec0565b8683101562000f07578489015162000f03601f89168262000dfd565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000f558262000cee565b915062000f628362000cee565b92508262000f755762000f7462000f1c565b5b828204905092915050565b5f6020828403121562000f985762000f9762000977565b5b5f62000fa78482850162000b3e565b91505092915050565b62000fbb8162000b12565b82525050565b5f60408201905062000fd65f83018562000fb0565b62000fe5602083018462000fb0565b9392505050565b62000ff78162000cee565b82525050565b5f602082019050620010125f83018462000fec565b92915050565b61386280620010265f395ff3fe60806040526004361061021d575f3560e01c806379777b4e11610122578063a9059cbb116100aa578063dd62ed3e1161006e578063dd62ed3e146107e8578063ede50eb814610824578063f242ab4114610860578063f2fde38b1461088a578063fe6f1b05146108b257610224565b8063a9059cbb14610704578063aa4bde2814610740578063ab4ebc1e1461076a578063b3f0067414610794578063cf46f24c146107be57610224565b80638bae9480116100f15780638bae94801461060e5780638da5cb5b1461064a57806395d89b41146106745780639c0b9d741461069e578063a457c2d7146106c857610224565b806379777b4e146105565780637c08b9641461058057806386cb8fb1146105a8578063879dd3c5146105e457610224565b8063313ce567116101a55780635342acb4116101745780635342acb414610476578063540b8a27146104b25780636fd0cfb3146104ee57806370a0823114610504578063715018a61461054057610224565b8063313ce567146103be578063338246e2146103e85780633950935114610412578063436d33401461044e57610224565b80630ce5fd36116101ec5780630ce5fd36146102e057806312185a391461030857806318160ddd146103305780631e9b197e1461035a57806323b872dd1461038257610224565b806306fdde03146102285780630758d92414610252578063095ea7b31461027c5780630a2d140c146102b857610224565b3661022457005b5f80fd5b348015610233575f80fd5b5061023c6108dc565b6040516102499190612a48565b60405180910390f35b34801561025d575f80fd5b5061026661096c565b6040516102739190612ae2565b60405180910390f35b348015610287575f80fd5b506102a2600480360381019061029d9190612b6d565b610991565b6040516102af9190612bc5565b60405180910390f35b3480156102c3575f80fd5b506102de60048036038101906102d99190612c08565b6109ae565b005b3480156102eb575f80fd5b5061030660048036038101906103019190612c33565b610ae9565b005b348015610313575f80fd5b5061032e60048036038101906103299190612c33565b610c02565b005b34801561033b575f80fd5b50610344610d1e565b6040516103519190612c6d565b60405180910390f35b348015610365575f80fd5b50610380600480360381019061037b9190612c33565b610d27565b005b34801561038d575f80fd5b506103a860048036038101906103a39190612c86565b610eaa565b6040516103b59190612bc5565b60405180910390f35b3480156103c9575f80fd5b506103d2610f5d565b6040516103df9190612cf1565b60405180910390f35b3480156103f3575f80fd5b506103fc610f72565b6040516104099190612c6d565b60405180910390f35b34801561041d575f80fd5b5061043860048036038101906104339190612b6d565b610f78565b6040516104459190612bc5565b60405180910390f35b348015610459575f80fd5b50610474600480360381019061046f9190612c33565b61101f565b005b348015610481575f80fd5b5061049c60048036038101906104979190612d0a565b61113b565b6040516104a99190612bc5565b60405180910390f35b3480156104bd575f80fd5b506104d860048036038101906104d39190612d0a565b611158565b6040516104e59190612bc5565b60405180910390f35b3480156104f9575f80fd5b50610502611175565b005b34801561050f575f80fd5b5061052a60048036038101906105259190612d0a565b61121d565b6040516105379190612c6d565b60405180910390f35b34801561054b575f80fd5b50610554611263565b005b348015610561575f80fd5b5061056a6113b1565b6040516105779190612bc5565b60405180910390f35b34801561058b575f80fd5b506105a660048036038101906105a19190612d0a565b6113c3565b005b3480156105b3575f80fd5b506105ce60048036038101906105c99190612d0a565b611585565b6040516105db9190612bc5565b60405180910390f35b3480156105ef575f80fd5b506105f86115a2565b6040516106059190612bc5565b60405180910390f35b348015610619575f80fd5b50610634600480360381019061062f9190612c33565b6115b5565b6040516106419190612c6d565b60405180910390f35b348015610655575f80fd5b5061065e6115dd565b60405161066b9190612d44565b60405180910390f35b34801561067f575f80fd5b50610688611604565b6040516106959190612a48565b60405180910390f35b3480156106a9575f80fd5b506106b2611694565b6040516106bf9190612c6d565b60405180910390f35b3480156106d3575f80fd5b506106ee60048036038101906106e99190612b6d565b61169a565b6040516106fb9190612bc5565b60405180910390f35b34801561070f575f80fd5b5061072a60048036038101906107259190612b6d565b611741565b6040516107379190612bc5565b60405180910390f35b34801561074b575f80fd5b5061075461175e565b6040516107619190612c6d565b60405180910390f35b348015610775575f80fd5b5061077e611764565b60405161078b9190612c6d565b60405180910390f35b34801561079f575f80fd5b506107a861176a565b6040516107b59190612d44565b60405180910390f35b3480156107c9575f80fd5b506107d2611790565b6040516107df9190612c6d565b60405180910390f35b3480156107f3575f80fd5b5061080e60048036038101906108099190612d5d565b611796565b60405161081b9190612c6d565b60405180910390f35b34801561082f575f80fd5b5061084a60048036038101906108459190612c33565b611818565b6040516108579190612c6d565b60405180910390f35b34801561086b575f80fd5b50610874611840565b6040516108819190612d44565b60405180910390f35b348015610895575f80fd5b506108b060048036038101906108ab9190612d0a565b611865565b005b3480156108bd575f80fd5b506108c6611a22565b6040516108d39190612c6d565b60405180910390f35b6060600280546108eb90612dc8565b80601f016020809104026020016040519081016040528092919081815260200182805461091790612dc8565b80156109625780601f1061093957610100808354040283529160200191610962565b820191905f5260205f20905b81548152906001019060200180831161094557829003601f168201915b5050505050905090565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6109a461099d611a28565b8484611a2f565b6001905092915050565b6109b6611a28565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3990612e42565b60405180910390fd5b600c5f9054906101000a900460ff16151581151503610a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8d90612ed0565b60405180910390fd5b80600c5f6101000a81548160ff0219169083151502179055507f0ff846c521f32cbf9b5885504ef4a918e437ceb78c26a4b3bdde29162fc36dd381604051610ade9190612bc5565b60405180910390a150565b610af1611a28565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7490612e42565b60405180910390fd5b5f8111610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb690612f5e565b60405180910390fd5b806006819055507f2e6bb606f8e40581f3aead29e6b2d80455a891e6b1a8cee3624f74a93f015593600654604051610bf79190612c6d565b60405180910390a150565b610c0a611a28565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8d90612e42565b60405180910390fd5b600a54811115610cdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd290612fec565b60405180910390fd5b80600a819055507f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c76600a54604051610d139190612c6d565b60405180910390a150565b5f600554905090565b610d2f611a28565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db290612e42565b60405180910390fd5b80471015610dfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df590613054565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610e41573d5f803e3d5ffd5b503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e9f9190612c6d565b60405180910390a350565b5f610eb6848484611bf2565b610f5284610ec2611a28565b8460105f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610f09611a28565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610f4d919061309f565b611a2f565b600190509392505050565b5f60045f9054906101000a900460ff16905090565b60065481565b5f611015610f84611a28565b848460105f610f91611a28565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461101091906130d2565b611a2f565b6001905092915050565b611027611a28565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110aa90612e42565b60405180910390fd5b6009548111156110f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ef90613175565b60405180910390fd5b806009819055507f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c766009546040516111309190612c6d565b60405180910390a150565b6011602052805f5260405f205f915054906101000a900460ff1681565b6012602052805f5260405f205f915054906101000a900460ff1681565b61117d611a28565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611209576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120090612e42565b60405180910390fd5b600554600881905550600554600781905550565b5f600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61126b611a28565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ee90612e42565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600c5f9054906101000a900460ff1681565b6113cb611a28565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611457576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144e90612e42565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bc90613203565b60405180910390fd5b600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f94223efa5e0ef633fcdce676def839a7ea220f7f45a1c693a4540846bc1ee14d60405160405180910390a380600c60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6013602052805f5260405f205f915054906101000a900460ff1681565b600c60159054906101000a900460ff1681565b5f80600b54600954846115c89190613221565b6115d2919061328f565b905080915050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606003805461161390612dc8565b80601f016020809104026020016040519081016040528092919081815260200182805461163f90612dc8565b801561168a5780601f106116615761010080835404028352916020019161168a565b820191905f5260205f20905b81548152906001019060200180831161166d57829003601f168201915b5050505050905090565b600a5481565b5f6117376116a6611a28565b848460105f6116b3611a28565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611732919061309f565b611a2f565b6001905092915050565b5f61175461174d611a28565b8484611bf2565b6001905092915050565b60085481565b60095481565b600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b5f60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f80600b54600a548461182b9190613221565b611835919061328f565b905080915050919050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61186d611a28565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f090612e42565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195e9061332f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9490613397565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b02906133ff565b60405180910390fd5b8060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611be59190612c6d565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5790613467565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc5906134cf565b60405180910390fd5b5f8111611d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d079061355d565b60405180910390fd5b60125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611dae575060125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611df957600754811115611df8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611def906135c5565b60405180910390fd5b5b60135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611ea05760085481611e548461121d565b611e5e91906130d2565b1115611e9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e969061362d565b60405180910390fd5b5b611eaa8383611f7d565b5f6001905060115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611f4a575060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611f625750600c60159054906101000a900460ff16155b15611f6b575f90505b611f7784848484612169565b50505050565b5f611f873061121d565b90506006548110158015611fe85750600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611fff5750600c5f9054906101000a900460ff165b801561208f57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561208d5750600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b155b15612164576120c230600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600654611a2f565b6120ef600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166006546126f0565b5f4790505f81111561216257600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612160573d5f803e3d5ffd5b505b505b505050565b8373ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156121c25750805b1561236c575f806121d2846115b5565b915081846121e0919061309f565b905083600f5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461222b919061309f565b600f5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122b591906130d2565b600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123539190612c6d565b60405180910390a361236586836128cb565b50506126ea565b8273ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156123c55750805b1561256f575f6123d483611818565b90505f81846123e3919061309f565b905083600f5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461242e919061309f565b600f5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124b891906130d2565b600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125569190612c6d565b60405180910390a361256886836128cb565b50506126e9565b81600f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125b8919061309f565b600f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555081600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461264291906130d2565b600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126e09190612c6d565b60405180910390a35b5b50505050565b5f8290505f600267ffffffffffffffff8111156127105761270f61364b565b5b60405190808252806020026020018201604052801561273e5781602001602082028036833780820191505090505b50905030815f8151811061275557612754613678565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127fc91906136b9565b816001815181106128105761280f613678565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947845f843061012c4261287891906130d2565b6040518663ffffffff1660e01b81526004016128989594939291906137d4565b5f604051808303815f87803b1580156128af575f80fd5b505af11580156128c1573d5f803e3d5ffd5b5050505050505050565b80600f5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461291491906130d2565b600f5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129b29190612c6d565b60405180910390a35050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156129f55780820151818401526020810190506129da565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612a1a826129be565b612a2481856129c8565b9350612a348185602086016129d8565b612a3d81612a00565b840191505092915050565b5f6020820190508181035f830152612a608184612a10565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f612aaa612aa5612aa084612a68565b612a87565b612a68565b9050919050565b5f612abb82612a90565b9050919050565b5f612acc82612ab1565b9050919050565b612adc81612ac2565b82525050565b5f602082019050612af55f830184612ad3565b92915050565b5f80fd5b5f612b0982612a68565b9050919050565b612b1981612aff565b8114612b23575f80fd5b50565b5f81359050612b3481612b10565b92915050565b5f819050919050565b612b4c81612b3a565b8114612b56575f80fd5b50565b5f81359050612b6781612b43565b92915050565b5f8060408385031215612b8357612b82612afb565b5b5f612b9085828601612b26565b9250506020612ba185828601612b59565b9150509250929050565b5f8115159050919050565b612bbf81612bab565b82525050565b5f602082019050612bd85f830184612bb6565b92915050565b612be781612bab565b8114612bf1575f80fd5b50565b5f81359050612c0281612bde565b92915050565b5f60208284031215612c1d57612c1c612afb565b5b5f612c2a84828501612bf4565b91505092915050565b5f60208284031215612c4857612c47612afb565b5b5f612c5584828501612b59565b91505092915050565b612c6781612b3a565b82525050565b5f602082019050612c805f830184612c5e565b92915050565b5f805f60608486031215612c9d57612c9c612afb565b5b5f612caa86828701612b26565b9350506020612cbb86828701612b26565b9250506040612ccc86828701612b59565b9150509250925092565b5f60ff82169050919050565b612ceb81612cd6565b82525050565b5f602082019050612d045f830184612ce2565b92915050565b5f60208284031215612d1f57612d1e612afb565b5b5f612d2c84828501612b26565b91505092915050565b612d3e81612aff565b82525050565b5f602082019050612d575f830184612d35565b92915050565b5f8060408385031215612d7357612d72612afb565b5b5f612d8085828601612b26565b9250506020612d9185828601612b26565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612ddf57607f821691505b602082108103612df257612df1612d9b565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612e2c6020836129c8565b9150612e3782612df8565b602082019050919050565b5f6020820190508181035f830152612e5981612e20565b9050919050565b7f56616c7565206d75737420626520646966666572656e742066726f6d206375725f8201527f72656e7420737461746500000000000000000000000000000000000000000000602082015250565b5f612eba602a836129c8565b9150612ec582612e60565b604082019050919050565b5f6020820190508181035f830152612ee781612eae565b9050919050565b7f6d696e207377617020616d6f756e742073686f756c64206265206772656174655f8201527f72207468616e207a65726f000000000000000000000000000000000000000000602082015250565b5f612f48602b836129c8565b9150612f5382612eee565b604082019050919050565b5f6020820190508181035f830152612f7581612f3c565b9050919050565b7f53656c6c206665652063616e2774206265206d6f7265207468616e20637572725f8201527f656e74206665652e000000000000000000000000000000000000000000000000602082015250565b5f612fd66028836129c8565b9150612fe182612f7c565b604082019050919050565b5f6020820190508181035f83015261300381612fca565b9050919050565b7f496e76616c696420416d6f756e740000000000000000000000000000000000005f82015250565b5f61303e600e836129c8565b91506130498261300a565b602082019050919050565b5f6020820190508181035f83015261306b81613032565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6130a982612b3a565b91506130b483612b3a565b92508282039050818111156130cc576130cb613072565b5b92915050565b5f6130dc82612b3a565b91506130e783612b3a565b92508282019050808211156130ff576130fe613072565b5b92915050565b7f427579206665652063616e2774206265206d6f7265207468616e2063757272655f8201527f6e74206665652e00000000000000000000000000000000000000000000000000602082015250565b5f61315f6027836129c8565b915061316a82613105565b604082019050919050565b5f6020820190508181035f83015261318c81613153565b9050919050565b7f4f776e61626c653a206e657720666565526563656976657220697320746865205f8201527f7a65726f20616464726573730000000000000000000000000000000000000000602082015250565b5f6131ed602c836129c8565b91506131f882613193565b604082019050919050565b5f6020820190508181035f83015261321a816131e1565b9050919050565b5f61322b82612b3a565b915061323683612b3a565b925082820261324481612b3a565b9150828204841483151761325b5761325a613072565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61329982612b3a565b91506132a483612b3a565b9250826132b4576132b3613262565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6133196026836129c8565b9150613324826132bf565b604082019050919050565b5f6020820190508181035f8301526133468161330d565b9050919050565b7f417070726f76652066726f6d20746865207a65726f20616464726573730000005f82015250565b5f613381601d836129c8565b915061338c8261334d565b602082019050919050565b5f6020820190508181035f8301526133ae81613375565b9050919050565b7f417070726f766520746f20746865207a65726f206164647265737300000000005f82015250565b5f6133e9601b836129c8565b91506133f4826133b5565b602082019050919050565b5f6020820190508181035f830152613416816133dd565b9050919050565b7f54616e736665722066726f6d20746865207a65726f20616464726573730000005f82015250565b5f613451601d836129c8565b915061345c8261341d565b602082019050919050565b5f6020820190508181035f83015261347e81613445565b9050919050565b7f5472616e7366657220746f20746865207a65726f2061646472657373000000005f82015250565b5f6134b9601c836129c8565b91506134c482613485565b602082019050919050565b5f6020820190508181035f8301526134e6816134ad565b9050919050565b7f20416d6f756e74206d7573742062652067726561746572207468616e207a65725f8201527f6f00000000000000000000000000000000000000000000000000000000000000602082015250565b5f6135476021836129c8565b9150613552826134ed565b604082019050919050565b5f6020820190508181035f8301526135748161353b565b9050919050565b7f4d61782074786e206c696d6974206578636565647300000000000000000000005f82015250565b5f6135af6015836129c8565b91506135ba8261357b565b602082019050919050565b5f6020820190508181035f8301526135dc816135a3565b9050919050565b7f4d61782057616c6c6574206c696d6974206578636565647300000000000000005f82015250565b5f6136176018836129c8565b9150613622826135e3565b602082019050919050565b5f6020820190508181035f8301526136448161360b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506136b381612b10565b92915050565b5f602082840312156136ce576136cd612afb565b5b5f6136db848285016136a5565b91505092915050565b5f819050919050565b5f6137076137026136fd846136e4565b612a87565b612b3a565b9050919050565b613717816136ed565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61374f81612aff565b82525050565b5f6137608383613746565b60208301905092915050565b5f602082019050919050565b5f6137828261371d565b61378c8185613727565b935061379783613737565b805f5b838110156137c75781516137ae8882613755565b97506137b98361376c565b92505060018101905061379a565b5085935050505092915050565b5f60a0820190506137e75f830188612c5e565b6137f4602083018761370e565b81810360408301526138068186613778565b90506138156060830185612d35565b6138226080830184612c5e565b969550505050505056fea2646970667358221220a1379d710cf1cde1732847b34637e1b67a4ae9cb1703d18284dae831ed757b8d64736f6c63430008140033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000004ed2d84a05db7212039b4290507762da79d4ceb70000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000000000000000000000000000000000000000000008506f704b697474790000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005504f504b49000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x60806040526004361061021d575f3560e01c806379777b4e11610122578063a9059cbb116100aa578063dd62ed3e1161006e578063dd62ed3e146107e8578063ede50eb814610824578063f242ab4114610860578063f2fde38b1461088a578063fe6f1b05146108b257610224565b8063a9059cbb14610704578063aa4bde2814610740578063ab4ebc1e1461076a578063b3f0067414610794578063cf46f24c146107be57610224565b80638bae9480116100f15780638bae94801461060e5780638da5cb5b1461064a57806395d89b41146106745780639c0b9d741461069e578063a457c2d7146106c857610224565b806379777b4e146105565780637c08b9641461058057806386cb8fb1146105a8578063879dd3c5146105e457610224565b8063313ce567116101a55780635342acb4116101745780635342acb414610476578063540b8a27146104b25780636fd0cfb3146104ee57806370a0823114610504578063715018a61461054057610224565b8063313ce567146103be578063338246e2146103e85780633950935114610412578063436d33401461044e57610224565b80630ce5fd36116101ec5780630ce5fd36146102e057806312185a391461030857806318160ddd146103305780631e9b197e1461035a57806323b872dd1461038257610224565b806306fdde03146102285780630758d92414610252578063095ea7b31461027c5780630a2d140c146102b857610224565b3661022457005b5f80fd5b348015610233575f80fd5b5061023c6108dc565b6040516102499190612a48565b60405180910390f35b34801561025d575f80fd5b5061026661096c565b6040516102739190612ae2565b60405180910390f35b348015610287575f80fd5b506102a2600480360381019061029d9190612b6d565b610991565b6040516102af9190612bc5565b60405180910390f35b3480156102c3575f80fd5b506102de60048036038101906102d99190612c08565b6109ae565b005b3480156102eb575f80fd5b5061030660048036038101906103019190612c33565b610ae9565b005b348015610313575f80fd5b5061032e60048036038101906103299190612c33565b610c02565b005b34801561033b575f80fd5b50610344610d1e565b6040516103519190612c6d565b60405180910390f35b348015610365575f80fd5b50610380600480360381019061037b9190612c33565b610d27565b005b34801561038d575f80fd5b506103a860048036038101906103a39190612c86565b610eaa565b6040516103b59190612bc5565b60405180910390f35b3480156103c9575f80fd5b506103d2610f5d565b6040516103df9190612cf1565b60405180910390f35b3480156103f3575f80fd5b506103fc610f72565b6040516104099190612c6d565b60405180910390f35b34801561041d575f80fd5b5061043860048036038101906104339190612b6d565b610f78565b6040516104459190612bc5565b60405180910390f35b348015610459575f80fd5b50610474600480360381019061046f9190612c33565b61101f565b005b348015610481575f80fd5b5061049c60048036038101906104979190612d0a565b61113b565b6040516104a99190612bc5565b60405180910390f35b3480156104bd575f80fd5b506104d860048036038101906104d39190612d0a565b611158565b6040516104e59190612bc5565b60405180910390f35b3480156104f9575f80fd5b50610502611175565b005b34801561050f575f80fd5b5061052a60048036038101906105259190612d0a565b61121d565b6040516105379190612c6d565b60405180910390f35b34801561054b575f80fd5b50610554611263565b005b348015610561575f80fd5b5061056a6113b1565b6040516105779190612bc5565b60405180910390f35b34801561058b575f80fd5b506105a660048036038101906105a19190612d0a565b6113c3565b005b3480156105b3575f80fd5b506105ce60048036038101906105c99190612d0a565b611585565b6040516105db9190612bc5565b60405180910390f35b3480156105ef575f80fd5b506105f86115a2565b6040516106059190612bc5565b60405180910390f35b348015610619575f80fd5b50610634600480360381019061062f9190612c33565b6115b5565b6040516106419190612c6d565b60405180910390f35b348015610655575f80fd5b5061065e6115dd565b60405161066b9190612d44565b60405180910390f35b34801561067f575f80fd5b50610688611604565b6040516106959190612a48565b60405180910390f35b3480156106a9575f80fd5b506106b2611694565b6040516106bf9190612c6d565b60405180910390f35b3480156106d3575f80fd5b506106ee60048036038101906106e99190612b6d565b61169a565b6040516106fb9190612bc5565b60405180910390f35b34801561070f575f80fd5b5061072a60048036038101906107259190612b6d565b611741565b6040516107379190612bc5565b60405180910390f35b34801561074b575f80fd5b5061075461175e565b6040516107619190612c6d565b60405180910390f35b348015610775575f80fd5b5061077e611764565b60405161078b9190612c6d565b60405180910390f35b34801561079f575f80fd5b506107a861176a565b6040516107b59190612d44565b60405180910390f35b3480156107c9575f80fd5b506107d2611790565b6040516107df9190612c6d565b60405180910390f35b3480156107f3575f80fd5b5061080e60048036038101906108099190612d5d565b611796565b60405161081b9190612c6d565b60405180910390f35b34801561082f575f80fd5b5061084a60048036038101906108459190612c33565b611818565b6040516108579190612c6d565b60405180910390f35b34801561086b575f80fd5b50610874611840565b6040516108819190612d44565b60405180910390f35b348015610895575f80fd5b506108b060048036038101906108ab9190612d0a565b611865565b005b3480156108bd575f80fd5b506108c6611a22565b6040516108d39190612c6d565b60405180910390f35b6060600280546108eb90612dc8565b80601f016020809104026020016040519081016040528092919081815260200182805461091790612dc8565b80156109625780601f1061093957610100808354040283529160200191610962565b820191905f5260205f20905b81548152906001019060200180831161094557829003601f168201915b5050505050905090565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6109a461099d611a28565b8484611a2f565b6001905092915050565b6109b6611a28565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3990612e42565b60405180910390fd5b600c5f9054906101000a900460ff16151581151503610a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8d90612ed0565b60405180910390fd5b80600c5f6101000a81548160ff0219169083151502179055507f0ff846c521f32cbf9b5885504ef4a918e437ceb78c26a4b3bdde29162fc36dd381604051610ade9190612bc5565b60405180910390a150565b610af1611a28565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7490612e42565b60405180910390fd5b5f8111610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb690612f5e565b60405180910390fd5b806006819055507f2e6bb606f8e40581f3aead29e6b2d80455a891e6b1a8cee3624f74a93f015593600654604051610bf79190612c6d565b60405180910390a150565b610c0a611a28565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8d90612e42565b60405180910390fd5b600a54811115610cdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd290612fec565b60405180910390fd5b80600a819055507f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c76600a54604051610d139190612c6d565b60405180910390a150565b5f600554905090565b610d2f611a28565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db290612e42565b60405180910390fd5b80471015610dfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df590613054565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610e41573d5f803e3d5ffd5b503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e9f9190612c6d565b60405180910390a350565b5f610eb6848484611bf2565b610f5284610ec2611a28565b8460105f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610f09611a28565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610f4d919061309f565b611a2f565b600190509392505050565b5f60045f9054906101000a900460ff16905090565b60065481565b5f611015610f84611a28565b848460105f610f91611a28565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461101091906130d2565b611a2f565b6001905092915050565b611027611a28565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110aa90612e42565b60405180910390fd5b6009548111156110f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ef90613175565b60405180910390fd5b806009819055507f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c766009546040516111309190612c6d565b60405180910390a150565b6011602052805f5260405f205f915054906101000a900460ff1681565b6012602052805f5260405f205f915054906101000a900460ff1681565b61117d611a28565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611209576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120090612e42565b60405180910390fd5b600554600881905550600554600781905550565b5f600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61126b611a28565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ee90612e42565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600c5f9054906101000a900460ff1681565b6113cb611a28565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611457576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144e90612e42565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bc90613203565b60405180910390fd5b600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f94223efa5e0ef633fcdce676def839a7ea220f7f45a1c693a4540846bc1ee14d60405160405180910390a380600c60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6013602052805f5260405f205f915054906101000a900460ff1681565b600c60159054906101000a900460ff1681565b5f80600b54600954846115c89190613221565b6115d2919061328f565b905080915050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606003805461161390612dc8565b80601f016020809104026020016040519081016040528092919081815260200182805461163f90612dc8565b801561168a5780601f106116615761010080835404028352916020019161168a565b820191905f5260205f20905b81548152906001019060200180831161166d57829003601f168201915b5050505050905090565b600a5481565b5f6117376116a6611a28565b848460105f6116b3611a28565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611732919061309f565b611a2f565b6001905092915050565b5f61175461174d611a28565b8484611bf2565b6001905092915050565b60085481565b60095481565b600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b5f60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f80600b54600a548461182b9190613221565b611835919061328f565b905080915050919050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61186d611a28565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f090612e42565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195e9061332f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9490613397565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b02906133ff565b60405180910390fd5b8060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611be59190612c6d565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5790613467565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc5906134cf565b60405180910390fd5b5f8111611d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d079061355d565b60405180910390fd5b60125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611dae575060125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611df957600754811115611df8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611def906135c5565b60405180910390fd5b5b60135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611ea05760085481611e548461121d565b611e5e91906130d2565b1115611e9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e969061362d565b60405180910390fd5b5b611eaa8383611f7d565b5f6001905060115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611f4a575060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611f625750600c60159054906101000a900460ff16155b15611f6b575f90505b611f7784848484612169565b50505050565b5f611f873061121d565b90506006548110158015611fe85750600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611fff5750600c5f9054906101000a900460ff165b801561208f57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561208d5750600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b155b15612164576120c230600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600654611a2f565b6120ef600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166006546126f0565b5f4790505f81111561216257600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612160573d5f803e3d5ffd5b505b505b505050565b8373ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156121c25750805b1561236c575f806121d2846115b5565b915081846121e0919061309f565b905083600f5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461222b919061309f565b600f5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122b591906130d2565b600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123539190612c6d565b60405180910390a361236586836128cb565b50506126ea565b8273ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156123c55750805b1561256f575f6123d483611818565b90505f81846123e3919061309f565b905083600f5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461242e919061309f565b600f5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124b891906130d2565b600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125569190612c6d565b60405180910390a361256886836128cb565b50506126e9565b81600f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125b8919061309f565b600f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555081600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461264291906130d2565b600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126e09190612c6d565b60405180910390a35b5b50505050565b5f8290505f600267ffffffffffffffff8111156127105761270f61364b565b5b60405190808252806020026020018201604052801561273e5781602001602082028036833780820191505090505b50905030815f8151811061275557612754613678565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127fc91906136b9565b816001815181106128105761280f613678565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947845f843061012c4261287891906130d2565b6040518663ffffffff1660e01b81526004016128989594939291906137d4565b5f604051808303815f87803b1580156128af575f80fd5b505af11580156128c1573d5f803e3d5ffd5b5050505050505050565b80600f5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461291491906130d2565b600f5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129b29190612c6d565b60405180910390a35050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156129f55780820151818401526020810190506129da565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612a1a826129be565b612a2481856129c8565b9350612a348185602086016129d8565b612a3d81612a00565b840191505092915050565b5f6020820190508181035f830152612a608184612a10565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f612aaa612aa5612aa084612a68565b612a87565b612a68565b9050919050565b5f612abb82612a90565b9050919050565b5f612acc82612ab1565b9050919050565b612adc81612ac2565b82525050565b5f602082019050612af55f830184612ad3565b92915050565b5f80fd5b5f612b0982612a68565b9050919050565b612b1981612aff565b8114612b23575f80fd5b50565b5f81359050612b3481612b10565b92915050565b5f819050919050565b612b4c81612b3a565b8114612b56575f80fd5b50565b5f81359050612b6781612b43565b92915050565b5f8060408385031215612b8357612b82612afb565b5b5f612b9085828601612b26565b9250506020612ba185828601612b59565b9150509250929050565b5f8115159050919050565b612bbf81612bab565b82525050565b5f602082019050612bd85f830184612bb6565b92915050565b612be781612bab565b8114612bf1575f80fd5b50565b5f81359050612c0281612bde565b92915050565b5f60208284031215612c1d57612c1c612afb565b5b5f612c2a84828501612bf4565b91505092915050565b5f60208284031215612c4857612c47612afb565b5b5f612c5584828501612b59565b91505092915050565b612c6781612b3a565b82525050565b5f602082019050612c805f830184612c5e565b92915050565b5f805f60608486031215612c9d57612c9c612afb565b5b5f612caa86828701612b26565b9350506020612cbb86828701612b26565b9250506040612ccc86828701612b59565b9150509250925092565b5f60ff82169050919050565b612ceb81612cd6565b82525050565b5f602082019050612d045f830184612ce2565b92915050565b5f60208284031215612d1f57612d1e612afb565b5b5f612d2c84828501612b26565b91505092915050565b612d3e81612aff565b82525050565b5f602082019050612d575f830184612d35565b92915050565b5f8060408385031215612d7357612d72612afb565b5b5f612d8085828601612b26565b9250506020612d9185828601612b26565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612ddf57607f821691505b602082108103612df257612df1612d9b565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612e2c6020836129c8565b9150612e3782612df8565b602082019050919050565b5f6020820190508181035f830152612e5981612e20565b9050919050565b7f56616c7565206d75737420626520646966666572656e742066726f6d206375725f8201527f72656e7420737461746500000000000000000000000000000000000000000000602082015250565b5f612eba602a836129c8565b9150612ec582612e60565b604082019050919050565b5f6020820190508181035f830152612ee781612eae565b9050919050565b7f6d696e207377617020616d6f756e742073686f756c64206265206772656174655f8201527f72207468616e207a65726f000000000000000000000000000000000000000000602082015250565b5f612f48602b836129c8565b9150612f5382612eee565b604082019050919050565b5f6020820190508181035f830152612f7581612f3c565b9050919050565b7f53656c6c206665652063616e2774206265206d6f7265207468616e20637572725f8201527f656e74206665652e000000000000000000000000000000000000000000000000602082015250565b5f612fd66028836129c8565b9150612fe182612f7c565b604082019050919050565b5f6020820190508181035f83015261300381612fca565b9050919050565b7f496e76616c696420416d6f756e740000000000000000000000000000000000005f82015250565b5f61303e600e836129c8565b91506130498261300a565b602082019050919050565b5f6020820190508181035f83015261306b81613032565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6130a982612b3a565b91506130b483612b3a565b92508282039050818111156130cc576130cb613072565b5b92915050565b5f6130dc82612b3a565b91506130e783612b3a565b92508282019050808211156130ff576130fe613072565b5b92915050565b7f427579206665652063616e2774206265206d6f7265207468616e2063757272655f8201527f6e74206665652e00000000000000000000000000000000000000000000000000602082015250565b5f61315f6027836129c8565b915061316a82613105565b604082019050919050565b5f6020820190508181035f83015261318c81613153565b9050919050565b7f4f776e61626c653a206e657720666565526563656976657220697320746865205f8201527f7a65726f20616464726573730000000000000000000000000000000000000000602082015250565b5f6131ed602c836129c8565b91506131f882613193565b604082019050919050565b5f6020820190508181035f83015261321a816131e1565b9050919050565b5f61322b82612b3a565b915061323683612b3a565b925082820261324481612b3a565b9150828204841483151761325b5761325a613072565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61329982612b3a565b91506132a483612b3a565b9250826132b4576132b3613262565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6133196026836129c8565b9150613324826132bf565b604082019050919050565b5f6020820190508181035f8301526133468161330d565b9050919050565b7f417070726f76652066726f6d20746865207a65726f20616464726573730000005f82015250565b5f613381601d836129c8565b915061338c8261334d565b602082019050919050565b5f6020820190508181035f8301526133ae81613375565b9050919050565b7f417070726f766520746f20746865207a65726f206164647265737300000000005f82015250565b5f6133e9601b836129c8565b91506133f4826133b5565b602082019050919050565b5f6020820190508181035f830152613416816133dd565b9050919050565b7f54616e736665722066726f6d20746865207a65726f20616464726573730000005f82015250565b5f613451601d836129c8565b915061345c8261341d565b602082019050919050565b5f6020820190508181035f83015261347e81613445565b9050919050565b7f5472616e7366657220746f20746865207a65726f2061646472657373000000005f82015250565b5f6134b9601c836129c8565b91506134c482613485565b602082019050919050565b5f6020820190508181035f8301526134e6816134ad565b9050919050565b7f20416d6f756e74206d7573742062652067726561746572207468616e207a65725f8201527f6f00000000000000000000000000000000000000000000000000000000000000602082015250565b5f6135476021836129c8565b9150613552826134ed565b604082019050919050565b5f6020820190508181035f8301526135748161353b565b9050919050565b7f4d61782074786e206c696d6974206578636565647300000000000000000000005f82015250565b5f6135af6015836129c8565b91506135ba8261357b565b602082019050919050565b5f6020820190508181035f8301526135dc816135a3565b9050919050565b7f4d61782057616c6c6574206c696d6974206578636565647300000000000000005f82015250565b5f6136176018836129c8565b9150613622826135e3565b602082019050919050565b5f6020820190508181035f8301526136448161360b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506136b381612b10565b92915050565b5f602082840312156136ce576136cd612afb565b5b5f6136db848285016136a5565b91505092915050565b5f819050919050565b5f6137076137026136fd846136e4565b612a87565b612b3a565b9050919050565b613717816136ed565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61374f81612aff565b82525050565b5f6137608383613746565b60208301905092915050565b5f602082019050919050565b5f6137828261371d565b61378c8185613727565b935061379783613737565b805f5b838110156137c75781516137ae8882613755565b97506137b98361376c565b92505060018101905061379a565b5085935050505092915050565b5f60a0820190506137e75f830188612c5e565b6137f4602083018761370e565b81810360408301526138068186613778565b90506138156060830185612d35565b6138226080830184612c5e565b969550505050505056fea2646970667358221220a1379d710cf1cde1732847b34637e1b67a4ae9cb1703d18284dae831ed757b8d64736f6c63430008140033

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

000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000004ed2d84a05db7212039b4290507762da79d4ceb70000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000000000000000000000000000000000000000000008506f704b697474790000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005504f504b49000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : __name (string): PopKitty
Arg [1] : __symbol (string): POPKI
Arg [2] : __feeReceiver (address): 0x4ed2D84a05DB7212039B4290507762Da79D4Ceb7
Arg [3] : __router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000004ed2d84a05db7212039b4290507762da79d4ceb7
Arg [3] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [5] : 506f704b69747479000000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [7] : 504f504b49000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

4259:11195:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7158:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4896:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8046:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14634:369;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14400:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14100:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7435:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12555:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8240:350;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7344:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4474:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8598:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13841:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5153:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5209:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13662:145;;;;;;;;;;;;;:::i;:::-;;7543:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1924:157;;;;;;;;;;;;;:::i;:::-;;4734:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15050:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5260:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4837:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9206:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1710:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7249:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4653:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8898:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7670:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4559:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4615:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4788:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4509:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7870:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9378:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4960:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2089:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4692:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7158:83;7195:13;7228:5;7221:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7158:83;:::o;4896:27::-;;;;;;;;;;;;;:::o;8046:186::-;8146:4;8163:39;8172:12;:10;:12::i;:::-;8186:7;8195:6;8163:8;:39::i;:::-;8220:4;8213:11;;8046:186;;;;:::o;14634:369::-;1847:12;:10;:12::i;:::-;1837:22;;:6;;;;;;;;;;:22;;;1829:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14811:26:::1;;;;;;;;;;;14801:36;;:6;:36;;::::0;14779:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14947:6;14918:26;;:35;;;;;;;;;;;;;;;;;;14969:26;14988:6;14969:26;;;;;;:::i;:::-;;;;;;;;14634:369:::0;:::o;14400:226::-;1847:12;:10;:12::i;:::-;1837:22;;:6;;;;;;;;;;:22;;;1829:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14491:1:::1;14481:7;:11;14473:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14567:7;14551:13;:23;;;;14590:28;14604:13;;14590:28;;;;;;:::i;:::-;;;;;;;;14400:226:::0;:::o;14100:266::-;1847:12;:10;:12::i;:::-;1837:22;;:6;;;;;;;;;;:22;;;1829:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14203:12:::1;;14192:7;:23;;14170:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;14309:7;14294:12;:22;;;;14334:24;14345:12;;14334:24;;;;;;:::i;:::-;;;;;;;;14100:266:::0;:::o;7435:100::-;7488:7;7515:12;;7508:19;;7435:100;:::o;12555:243::-;1847:12;:10;:12::i;:::-;1837:22;;:6;;;;;;;;;;:22;;;1829:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12654:7:::1;12629:21;:32;;12621:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;12699:10;12691:28;;:37;12720:7;12691:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;12770:10;12746:44;;12763:4;12746:44;;;12782:7;12746:44;;;;;;:::i;:::-;;;;;;;;12555:243:::0;:::o;8240:350::-;8372:4;8389:36;8399:6;8407:9;8418:6;8389:9;:36::i;:::-;8436:124;8459:6;8480:12;:10;:12::i;:::-;8543:6;8507:11;:19;8519:6;8507:19;;;;;;;;;;;;;;;:33;8527:12;:10;:12::i;:::-;8507:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;8436:8;:124::i;:::-;8578:4;8571:11;;8240:350;;;;;:::o;7344:83::-;7385:5;7410:9;;;;;;;;;;;7403:16;;7344:83;:::o;4474:28::-;;;;:::o;8598:292::-;8711:4;8728:132;8751:12;:10;:12::i;:::-;8778:7;8838:10;8800:11;:25;8812:12;:10;:12::i;:::-;8800:25;;;;;;;;;;;;;;;:34;8826:7;8800:34;;;;;;;;;;;;;;;;:49;;;;:::i;:::-;8728:8;:132::i;:::-;8878:4;8871:11;;8598:292;;;;:::o;13841:224::-;1847:12;:10;:12::i;:::-;1837:22;;:6;;;;;;;;;;:22;;;1829:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13929:11:::1;;13918:7;:22;;13910:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14009:7;13995:11;:21;;;;14034:23;14045:11;;14034:23;;;;;;:::i;:::-;;;;;;;;13841:224:::0;:::o;5153:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;5209:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;13662:145::-;1847:12;:10;:12::i;:::-;1837:22;;:6;;;;;;;;;;:22;;;1829:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13749:12:::1;;13731:15;:30;;;;13787:12;;13772;:27;;;;13662:145::o:0;7543:119::-;7609:7;7636:9;:18;7646:7;7636:18;;;;;;;;;;;;;;;;7629:25;;7543:119;;;:::o;1924:157::-;1847:12;:10;:12::i;:::-;1837:22;;:6;;;;;;;;;;:22;;;1829:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2031:1:::1;1994:40;;2015:6;::::0;::::1;;;;;;;;1994:40;;;;;;;;;;;;2070:1;2045:6:::0;::::1;:28;;;;;;;;;;;;;;;;;;1924:157::o:0;4734:45::-;;;;;;;;;;;;;:::o;15050:313::-;1847:12;:10;:12::i;:::-;1837:22;;:6;;;;;;;;;;:22;;;1829:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15179:1:::1;15153:28;;:14;:28;;::::0;15131:122:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15304:11;;;;;;;;;;;15269:47;;15288:14;15269:47;;;;;;;;;;;;15341:14;15327:11;;:28;;;;;;;;;;;;;;;;;;15050:313:::0;:::o;5260:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;4837:29::-;;;;;;;;;;;;;:::o;9206:164::-;9268:7;9288:11;9327:14;;9312:11;;9303:6;:20;;;;:::i;:::-;9302:39;;;;:::i;:::-;9288:53;;9359:3;9352:10;;;9206:164;;;:::o;1710:79::-;1748:7;1775:6;;;;;;;;;;;1768:13;;1710:79;:::o;7249:87::-;7288:13;7321:7;7314:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7249:87;:::o;4653:32::-;;;;:::o;8898:300::-;9016:4;9033:135;9056:12;:10;:12::i;:::-;9083:7;9142:15;9105:11;:25;9117:12;:10;:12::i;:::-;9105:25;;;;;;;;;;;;;;;:34;9131:7;9105:34;;;;;;;;;;;;;;;;:52;;;;:::i;:::-;9033:8;:135::i;:::-;9186:4;9179:11;;8898:300;;;;:::o;7670:192::-;7773:4;7790:42;7800:12;:10;:12::i;:::-;7814:9;7825:6;7790:9;:42::i;:::-;7850:4;7843:11;;7670:192;;;;:::o;4559:46::-;;;;:::o;4615:31::-;;;;:::o;4788:26::-;;;;;;;;;;;;;:::o;4509:43::-;;;;:::o;7870:168::-;7976:7;8003:11;:18;8015:5;8003:18;;;;;;;;;;;;;;;:27;8022:7;8003:27;;;;;;;;;;;;;;;;7996:34;;7870:168;;;;:::o;9378:166::-;9441:7;9461:11;9501:14;;9485:12;;9476:6;:21;;;;:::i;:::-;9475:40;;;;:::i;:::-;9461:54;;9533:3;9526:10;;;9378:166;;;:::o;4960:22::-;;;;;;;;;;;;;:::o;2089:281::-;1847:12;:10;:12::i;:::-;1837:22;;:6;;;;;;;;;;:22;;;1829:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2212:1:::1;2192:22;;:8;:22;;::::0;2170:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2325:8;2296:38;;2317:6;::::0;::::1;;;;;;;;2296:38;;;;;;;;;;;;2354:8;2345:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2089:281:::0;:::o;4692:35::-;;;;:::o;1044:115::-;1097:15;1140:10;1125:26;;1044:115;:::o;9552:323::-;9662:1;9645:19;;:5;:19;;;9637:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;9736:1;9717:21;;:7;:21;;;9709:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;9813:6;9783:11;:18;9795:5;9783:18;;;;;;;;;;;;;;;:27;9802:7;9783:27;;;;;;;;;;;;;;;:36;;;;9851:7;9835:32;;9844:5;9835:32;;;9860:6;9835:32;;;;;;:::i;:::-;;;;;;;;9552:323;;;:::o;9883:1116::-;9987:1;9971:18;;:4;:18;;;9963:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;10056:1;10042:16;;:2;:16;;;10034:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;10119:1;10110:6;:10;10102:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;10174:12;:18;10187:4;10174:18;;;;;;;;;;;;;;;;;;;;;;;;;10173:19;:40;;;;;10197:12;:16;10210:2;10197:16;;;;;;;;;;;;;;;;;;;;;;;;;10196:17;10173:40;10169:142;;;10248:12;;10238:6;:22;;10230:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;10169:142;10328:13;:17;10342:2;10328:17;;;;;;;;;;;;;;;;;;;;;;;;;10323:178;;10414:15;;10404:6;10388:13;10398:2;10388:9;:13::i;:::-;:22;;;;:::i;:::-;:41;;10362:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;10323:178;10542:30;10563:4;10569:2;10542:20;:30::i;:::-;10646:12;10661:4;10646:19;;10765:17;:23;10783:4;10765:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;10792:17;:21;10810:2;10792:21;;;;;;;;;;;;;;;;;;;;;;;;;10765:48;:63;;;;10818:10;;;;;;;;;;;10817:11;10765:63;10761:111;;;10855:5;10845:15;;10761:111;10950:41;10965:4;10971:2;10975:6;10983:7;10950:14;:41::i;:::-;9952:1047;9883:1116;;;:::o;12839:812::-;12914:28;12945:24;12963:4;12945:9;:24::i;:::-;12914:55;;13024:13;;13000:20;:37;;:69;;;;;13062:7;;;;;;;;;;;13054:15;;:4;:15;;;;13000:69;:112;;;;;13086:26;;;;;;;;;;;13000:112;:170;;;;;13147:4;13131:21;;:4;:21;;;:38;;;;;13162:7;;;;;;;;;;;13156:13;;:2;:13;;;13131:38;13129:41;13000:170;12982:662;;;13245:58;13262:4;13277:9;;;;;;;;;;;13289:13;;13245:8;:58::i;:::-;13360:57;13391:9;;;;;;;;;;;13403:13;;13360:22;:57::i;:::-;13432:23;13458:21;13432:47;;13566:1;13548:15;:19;13544:88;;;13594:11;;;;;;;;;;;13586:29;;:46;13616:15;13586:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13544:88;13197:447;12982:662;12903:748;12839:812;;:::o;11084:1230::-;11250:6;11239:17;;:7;;;;;;;;;;;:17;;;:28;;;;;11260:7;11239:28;11235:1072;;;11284:14;11313:23;11360;11376:6;11360:15;:23::i;:::-;11351:32;;11425:6;11416;:15;;;;:::i;:::-;11398:33;;11488:6;11468:9;:17;11478:6;11468:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;11448:9;:17;11458:6;11448:17;;;;;;;;;;;;;;;:46;;;;11555:15;11532:9;:20;11542:9;11532:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;11509:9;:20;11519:9;11509:20;;;;;;;;;;;;;;;:61;;;;11607:9;11590:44;;11599:6;11590:44;;;11618:15;11590:44;;;;;;:::i;:::-;;;;;;;;11651:28;11664:6;11672;11651:12;:28::i;:::-;11269:422;;11235:1072;;;11712:9;11701:20;;:7;;;;;;;;;;;:20;;;:31;;;;;11725:7;11701:31;11697:610;;;11749:14;11766:24;11783:6;11766:16;:24::i;:::-;11749:41;;11805:23;11840:6;11831;:15;;;;:::i;:::-;11805:41;;11901:6;11881:9;:17;11891:6;11881:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;11861:9;:17;11871:6;11861:17;;;;;;;;;;;;;;;:46;;;;11968:15;11945:9;:20;11955:9;11945:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;11922:9;:20;11932:9;11922:20;;;;;;;;;;;;;;;:61;;;;12020:9;12003:44;;12012:6;12003:44;;;12031:15;12003:44;;;;;;:::i;:::-;;;;;;;;12064:28;12077:6;12085;12064:12;:28::i;:::-;11734:370;;11697:610;;;12165:6;12145:9;:17;12155:6;12145:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;12125:9;:17;12135:6;12125:17;;;;;;;;;;;;;;;:46;;;;12233:6;12209:9;:20;12219:9;12209:20;;;;;;;;;;;;;;;;:31;;;;:::i;:::-;12186:9;:20;12196:9;12186:20;;;;;;;;;;;;;;;:54;;;;12277:9;12260:35;;12269:6;12260:35;;;12288:6;12260:35;;;;;;:::i;:::-;;;;;;;;11697:610;11235:1072;11084:1230;;;;:::o;15500:614::-;15615:20;15649:13;15615:48;;15732:21;15770:1;15756:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15732:40;;15801:4;15783;15788:1;15783:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15827:9;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15817:4;15822:1;15817:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;15882:9;:60;;;15957:11;15983:1;16027:4;16054;16092:3;16074:15;:21;;;;:::i;:::-;15882:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15604:510;;15500:614;;:::o;12322:198::-;12449:6;12422:9;:24;12440:4;12422:24;;;;;;;;;;;;;;;;:33;;;;:::i;:::-;12395:9;:24;12413:4;12395:24;;;;;;;;;;;;;;;:60;;;;12498:4;12473:39;;12482:6;12473:39;;;12505:6;12473:39;;;;;;:::i;:::-;;;;;;;;12322:198;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:126::-;1386:7;1426:42;1419:5;1415:54;1404:65;;1349:126;;;:::o;1481:60::-;1509:3;1530:5;1523:12;;1481:60;;;:::o;1547:142::-;1597:9;1630:53;1648:34;1657:24;1675:5;1657:24;:::i;:::-;1648:34;:::i;:::-;1630:53;:::i;:::-;1617:66;;1547:142;;;:::o;1695:126::-;1745:9;1778:37;1809:5;1778:37;:::i;:::-;1765:50;;1695:126;;;:::o;1827:144::-;1895:9;1928:37;1959:5;1928:37;:::i;:::-;1915:50;;1827:144;;;:::o;1977:167::-;2082:55;2131:5;2082:55;:::i;:::-;2077:3;2070:68;1977:167;;:::o;2150:258::-;2261:4;2299:2;2288:9;2284:18;2276:26;;2312:89;2398:1;2387:9;2383:17;2374:6;2312:89;:::i;:::-;2150:258;;;;:::o;2495:117::-;2604:1;2601;2594:12;2741:96;2778:7;2807:24;2825:5;2807:24;:::i;:::-;2796:35;;2741:96;;;:::o;2843:122::-;2916:24;2934:5;2916:24;:::i;:::-;2909:5;2906:35;2896:63;;2955:1;2952;2945:12;2896:63;2843:122;:::o;2971:139::-;3017:5;3055:6;3042:20;3033:29;;3071:33;3098:5;3071:33;:::i;:::-;2971:139;;;;:::o;3116:77::-;3153:7;3182:5;3171:16;;3116:77;;;:::o;3199:122::-;3272:24;3290:5;3272:24;:::i;:::-;3265:5;3262:35;3252:63;;3311:1;3308;3301:12;3252:63;3199:122;:::o;3327:139::-;3373:5;3411:6;3398:20;3389:29;;3427:33;3454:5;3427:33;:::i;:::-;3327:139;;;;:::o;3472:474::-;3540:6;3548;3597:2;3585:9;3576:7;3572:23;3568:32;3565:119;;;3603:79;;:::i;:::-;3565:119;3723:1;3748:53;3793:7;3784:6;3773:9;3769:22;3748:53;:::i;:::-;3738:63;;3694:117;3850:2;3876:53;3921:7;3912:6;3901:9;3897:22;3876:53;:::i;:::-;3866:63;;3821:118;3472:474;;;;;:::o;3952:90::-;3986:7;4029:5;4022:13;4015:21;4004:32;;3952:90;;;:::o;4048:109::-;4129:21;4144:5;4129:21;:::i;:::-;4124:3;4117:34;4048:109;;:::o;4163:210::-;4250:4;4288:2;4277:9;4273:18;4265:26;;4301:65;4363:1;4352:9;4348:17;4339:6;4301:65;:::i;:::-;4163:210;;;;:::o;4379:116::-;4449:21;4464:5;4449:21;:::i;:::-;4442:5;4439:32;4429:60;;4485:1;4482;4475:12;4429:60;4379:116;:::o;4501:133::-;4544:5;4582:6;4569:20;4560:29;;4598:30;4622:5;4598:30;:::i;:::-;4501:133;;;;:::o;4640:323::-;4696:6;4745:2;4733:9;4724:7;4720:23;4716:32;4713:119;;;4751:79;;:::i;:::-;4713:119;4871:1;4896:50;4938:7;4929:6;4918:9;4914:22;4896:50;:::i;:::-;4886:60;;4842:114;4640:323;;;;:::o;4969:329::-;5028:6;5077:2;5065:9;5056:7;5052:23;5048:32;5045:119;;;5083:79;;:::i;:::-;5045:119;5203:1;5228:53;5273:7;5264:6;5253:9;5249:22;5228:53;:::i;:::-;5218:63;;5174:117;4969:329;;;;:::o;5304:118::-;5391:24;5409:5;5391:24;:::i;:::-;5386:3;5379:37;5304:118;;:::o;5428:222::-;5521:4;5559:2;5548:9;5544:18;5536:26;;5572:71;5640:1;5629:9;5625:17;5616:6;5572:71;:::i;:::-;5428:222;;;;:::o;5656:619::-;5733:6;5741;5749;5798:2;5786:9;5777:7;5773:23;5769:32;5766:119;;;5804:79;;:::i;:::-;5766:119;5924:1;5949:53;5994:7;5985:6;5974:9;5970:22;5949:53;:::i;:::-;5939:63;;5895:117;6051:2;6077:53;6122:7;6113:6;6102:9;6098:22;6077:53;:::i;:::-;6067:63;;6022:118;6179:2;6205:53;6250:7;6241:6;6230:9;6226:22;6205:53;:::i;:::-;6195:63;;6150:118;5656:619;;;;;:::o;6281:86::-;6316:7;6356:4;6349:5;6345:16;6334:27;;6281:86;;;:::o;6373:112::-;6456:22;6472:5;6456:22;:::i;:::-;6451:3;6444:35;6373:112;;:::o;6491:214::-;6580:4;6618:2;6607:9;6603:18;6595:26;;6631:67;6695:1;6684:9;6680:17;6671:6;6631:67;:::i;:::-;6491:214;;;;:::o;6711:329::-;6770:6;6819:2;6807:9;6798:7;6794:23;6790:32;6787:119;;;6825:79;;:::i;:::-;6787:119;6945:1;6970:53;7015:7;7006:6;6995:9;6991:22;6970:53;:::i;:::-;6960:63;;6916:117;6711:329;;;;:::o;7046:118::-;7133:24;7151:5;7133:24;:::i;:::-;7128:3;7121:37;7046:118;;:::o;7170:222::-;7263:4;7301:2;7290:9;7286:18;7278:26;;7314:71;7382:1;7371:9;7367:17;7358:6;7314:71;:::i;:::-;7170:222;;;;:::o;7398:474::-;7466:6;7474;7523:2;7511:9;7502:7;7498:23;7494:32;7491:119;;;7529:79;;:::i;:::-;7491:119;7649:1;7674:53;7719:7;7710:6;7699:9;7695:22;7674:53;:::i;:::-;7664:63;;7620:117;7776:2;7802:53;7847:7;7838:6;7827:9;7823:22;7802:53;:::i;:::-;7792:63;;7747:118;7398:474;;;;;:::o;7878:180::-;7926:77;7923:1;7916:88;8023:4;8020:1;8013:15;8047:4;8044:1;8037:15;8064:320;8108:6;8145:1;8139:4;8135:12;8125:22;;8192:1;8186:4;8182:12;8213:18;8203:81;;8269:4;8261:6;8257:17;8247:27;;8203:81;8331:2;8323:6;8320:14;8300:18;8297:38;8294:84;;8350:18;;:::i;:::-;8294:84;8115:269;8064:320;;;:::o;8390:182::-;8530:34;8526:1;8518:6;8514:14;8507:58;8390:182;:::o;8578:366::-;8720:3;8741:67;8805:2;8800:3;8741:67;:::i;:::-;8734:74;;8817:93;8906:3;8817:93;:::i;:::-;8935:2;8930:3;8926:12;8919:19;;8578:366;;;:::o;8950:419::-;9116:4;9154:2;9143:9;9139:18;9131:26;;9203:9;9197:4;9193:20;9189:1;9178:9;9174:17;9167:47;9231:131;9357:4;9231:131;:::i;:::-;9223:139;;8950:419;;;:::o;9375:229::-;9515:34;9511:1;9503:6;9499:14;9492:58;9584:12;9579:2;9571:6;9567:15;9560:37;9375:229;:::o;9610:366::-;9752:3;9773:67;9837:2;9832:3;9773:67;:::i;:::-;9766:74;;9849:93;9938:3;9849:93;:::i;:::-;9967:2;9962:3;9958:12;9951:19;;9610:366;;;:::o;9982:419::-;10148:4;10186:2;10175:9;10171:18;10163:26;;10235:9;10229:4;10225:20;10221:1;10210:9;10206:17;10199:47;10263:131;10389:4;10263:131;:::i;:::-;10255:139;;9982:419;;;:::o;10407:230::-;10547:34;10543:1;10535:6;10531:14;10524:58;10616:13;10611:2;10603:6;10599:15;10592:38;10407:230;:::o;10643:366::-;10785:3;10806:67;10870:2;10865:3;10806:67;:::i;:::-;10799:74;;10882:93;10971:3;10882:93;:::i;:::-;11000:2;10995:3;10991:12;10984:19;;10643:366;;;:::o;11015:419::-;11181:4;11219:2;11208:9;11204:18;11196:26;;11268:9;11262:4;11258:20;11254:1;11243:9;11239:17;11232:47;11296:131;11422:4;11296:131;:::i;:::-;11288:139;;11015:419;;;:::o;11440:227::-;11580:34;11576:1;11568:6;11564:14;11557:58;11649:10;11644:2;11636:6;11632:15;11625:35;11440:227;:::o;11673:366::-;11815:3;11836:67;11900:2;11895:3;11836:67;:::i;:::-;11829:74;;11912:93;12001:3;11912:93;:::i;:::-;12030:2;12025:3;12021:12;12014:19;;11673:366;;;:::o;12045:419::-;12211:4;12249:2;12238:9;12234:18;12226:26;;12298:9;12292:4;12288:20;12284:1;12273:9;12269:17;12262:47;12326:131;12452:4;12326:131;:::i;:::-;12318:139;;12045:419;;;:::o;12470:164::-;12610:16;12606:1;12598:6;12594:14;12587:40;12470:164;:::o;12640:366::-;12782:3;12803:67;12867:2;12862:3;12803:67;:::i;:::-;12796:74;;12879:93;12968:3;12879:93;:::i;:::-;12997:2;12992:3;12988:12;12981:19;;12640:366;;;:::o;13012:419::-;13178:4;13216:2;13205:9;13201:18;13193:26;;13265:9;13259:4;13255:20;13251:1;13240:9;13236:17;13229:47;13293:131;13419:4;13293:131;:::i;:::-;13285:139;;13012:419;;;:::o;13437:180::-;13485:77;13482:1;13475:88;13582:4;13579:1;13572:15;13606:4;13603:1;13596:15;13623:194;13663:4;13683:20;13701:1;13683:20;:::i;:::-;13678:25;;13717:20;13735:1;13717:20;:::i;:::-;13712:25;;13761:1;13758;13754:9;13746:17;;13785:1;13779:4;13776:11;13773:37;;;13790:18;;:::i;:::-;13773:37;13623:194;;;;:::o;13823:191::-;13863:3;13882:20;13900:1;13882:20;:::i;:::-;13877:25;;13916:20;13934:1;13916:20;:::i;:::-;13911:25;;13959:1;13956;13952:9;13945:16;;13980:3;13977:1;13974:10;13971:36;;;13987:18;;:::i;:::-;13971:36;13823:191;;;;:::o;14020:226::-;14160:34;14156:1;14148:6;14144:14;14137:58;14229:9;14224:2;14216:6;14212:15;14205:34;14020:226;:::o;14252:366::-;14394:3;14415:67;14479:2;14474:3;14415:67;:::i;:::-;14408:74;;14491:93;14580:3;14491:93;:::i;:::-;14609:2;14604:3;14600:12;14593:19;;14252:366;;;:::o;14624:419::-;14790:4;14828:2;14817:9;14813:18;14805:26;;14877:9;14871:4;14867:20;14863:1;14852:9;14848:17;14841:47;14905:131;15031:4;14905:131;:::i;:::-;14897:139;;14624:419;;;:::o;15049:231::-;15189:34;15185:1;15177:6;15173:14;15166:58;15258:14;15253:2;15245:6;15241:15;15234:39;15049:231;:::o;15286:366::-;15428:3;15449:67;15513:2;15508:3;15449:67;:::i;:::-;15442:74;;15525:93;15614:3;15525:93;:::i;:::-;15643:2;15638:3;15634:12;15627:19;;15286:366;;;:::o;15658:419::-;15824:4;15862:2;15851:9;15847:18;15839:26;;15911:9;15905:4;15901:20;15897:1;15886:9;15882:17;15875:47;15939:131;16065:4;15939:131;:::i;:::-;15931:139;;15658:419;;;:::o;16083:410::-;16123:7;16146:20;16164:1;16146:20;:::i;:::-;16141:25;;16180:20;16198:1;16180:20;:::i;:::-;16175:25;;16235:1;16232;16228:9;16257:30;16275:11;16257:30;:::i;:::-;16246:41;;16436:1;16427:7;16423:15;16420:1;16417:22;16397:1;16390:9;16370:83;16347:139;;16466:18;;:::i;:::-;16347:139;16131:362;16083:410;;;;:::o;16499:180::-;16547:77;16544:1;16537:88;16644:4;16641:1;16634:15;16668:4;16665:1;16658:15;16685:185;16725:1;16742:20;16760:1;16742:20;:::i;:::-;16737:25;;16776:20;16794:1;16776:20;:::i;:::-;16771:25;;16815:1;16805:35;;16820:18;;:::i;:::-;16805:35;16862:1;16859;16855:9;16850:14;;16685:185;;;;:::o;16876:225::-;17016:34;17012:1;17004:6;17000:14;16993:58;17085:8;17080:2;17072:6;17068:15;17061:33;16876:225;:::o;17107:366::-;17249:3;17270:67;17334:2;17329:3;17270:67;:::i;:::-;17263:74;;17346:93;17435:3;17346:93;:::i;:::-;17464:2;17459:3;17455:12;17448:19;;17107:366;;;:::o;17479:419::-;17645:4;17683:2;17672:9;17668:18;17660:26;;17732:9;17726:4;17722:20;17718:1;17707:9;17703:17;17696:47;17760:131;17886:4;17760:131;:::i;:::-;17752:139;;17479:419;;;:::o;17904:179::-;18044:31;18040:1;18032:6;18028:14;18021:55;17904:179;:::o;18089:366::-;18231:3;18252:67;18316:2;18311:3;18252:67;:::i;:::-;18245:74;;18328:93;18417:3;18328:93;:::i;:::-;18446:2;18441:3;18437:12;18430:19;;18089:366;;;:::o;18461:419::-;18627:4;18665:2;18654:9;18650:18;18642:26;;18714:9;18708:4;18704:20;18700:1;18689:9;18685:17;18678:47;18742:131;18868:4;18742:131;:::i;:::-;18734:139;;18461:419;;;:::o;18886:177::-;19026:29;19022:1;19014:6;19010:14;19003:53;18886:177;:::o;19069:366::-;19211:3;19232:67;19296:2;19291:3;19232:67;:::i;:::-;19225:74;;19308:93;19397:3;19308:93;:::i;:::-;19426:2;19421:3;19417:12;19410:19;;19069:366;;;:::o;19441:419::-;19607:4;19645:2;19634:9;19630:18;19622:26;;19694:9;19688:4;19684:20;19680:1;19669:9;19665:17;19658:47;19722:131;19848:4;19722:131;:::i;:::-;19714:139;;19441:419;;;:::o;19866:179::-;20006:31;20002:1;19994:6;19990:14;19983:55;19866:179;:::o;20051:366::-;20193:3;20214:67;20278:2;20273:3;20214:67;:::i;:::-;20207:74;;20290:93;20379:3;20290:93;:::i;:::-;20408:2;20403:3;20399:12;20392:19;;20051:366;;;:::o;20423:419::-;20589:4;20627:2;20616:9;20612:18;20604:26;;20676:9;20670:4;20666:20;20662:1;20651:9;20647:17;20640:47;20704:131;20830:4;20704:131;:::i;:::-;20696:139;;20423:419;;;:::o;20848:178::-;20988:30;20984:1;20976:6;20972:14;20965:54;20848:178;:::o;21032:366::-;21174:3;21195:67;21259:2;21254:3;21195:67;:::i;:::-;21188:74;;21271:93;21360:3;21271:93;:::i;:::-;21389:2;21384:3;21380:12;21373:19;;21032:366;;;:::o;21404:419::-;21570:4;21608:2;21597:9;21593:18;21585:26;;21657:9;21651:4;21647:20;21643:1;21632:9;21628:17;21621:47;21685:131;21811:4;21685:131;:::i;:::-;21677:139;;21404:419;;;:::o;21829:220::-;21969:34;21965:1;21957:6;21953:14;21946:58;22038:3;22033:2;22025:6;22021:15;22014:28;21829:220;:::o;22055:366::-;22197:3;22218:67;22282:2;22277:3;22218:67;:::i;:::-;22211:74;;22294:93;22383:3;22294:93;:::i;:::-;22412:2;22407:3;22403:12;22396:19;;22055:366;;;:::o;22427:419::-;22593:4;22631:2;22620:9;22616:18;22608:26;;22680:9;22674:4;22670:20;22666:1;22655:9;22651:17;22644:47;22708:131;22834:4;22708:131;:::i;:::-;22700:139;;22427:419;;;:::o;22852:171::-;22992:23;22988:1;22980:6;22976:14;22969:47;22852:171;:::o;23029:366::-;23171:3;23192:67;23256:2;23251:3;23192:67;:::i;:::-;23185:74;;23268:93;23357:3;23268:93;:::i;:::-;23386:2;23381:3;23377:12;23370:19;;23029:366;;;:::o;23401:419::-;23567:4;23605:2;23594:9;23590:18;23582:26;;23654:9;23648:4;23644:20;23640:1;23629:9;23625:17;23618:47;23682:131;23808:4;23682:131;:::i;:::-;23674:139;;23401:419;;;:::o;23826:174::-;23966:26;23962:1;23954:6;23950:14;23943:50;23826:174;:::o;24006:366::-;24148:3;24169:67;24233:2;24228:3;24169:67;:::i;:::-;24162:74;;24245:93;24334:3;24245:93;:::i;:::-;24363:2;24358:3;24354:12;24347:19;;24006:366;;;:::o;24378:419::-;24544:4;24582:2;24571:9;24567:18;24559:26;;24631:9;24625:4;24621:20;24617:1;24606:9;24602:17;24595:47;24659:131;24785:4;24659:131;:::i;:::-;24651:139;;24378:419;;;:::o;24803:180::-;24851:77;24848:1;24841:88;24948:4;24945:1;24938:15;24972:4;24969:1;24962:15;24989:180;25037:77;25034:1;25027:88;25134:4;25131:1;25124:15;25158:4;25155:1;25148:15;25175:143;25232:5;25263:6;25257:13;25248:22;;25279:33;25306:5;25279:33;:::i;:::-;25175:143;;;;:::o;25324:351::-;25394:6;25443:2;25431:9;25422:7;25418:23;25414:32;25411:119;;;25449:79;;:::i;:::-;25411:119;25569:1;25594:64;25650:7;25641:6;25630:9;25626:22;25594:64;:::i;:::-;25584:74;;25540:128;25324:351;;;;:::o;25681:85::-;25726:7;25755:5;25744:16;;25681:85;;;:::o;25772:158::-;25830:9;25863:61;25881:42;25890:32;25916:5;25890:32;:::i;:::-;25881:42;:::i;:::-;25863:61;:::i;:::-;25850:74;;25772:158;;;:::o;25936:147::-;26031:45;26070:5;26031:45;:::i;:::-;26026:3;26019:58;25936:147;;:::o;26089:114::-;26156:6;26190:5;26184:12;26174:22;;26089:114;;;:::o;26209:184::-;26308:11;26342:6;26337:3;26330:19;26382:4;26377:3;26373:14;26358:29;;26209:184;;;;:::o;26399:132::-;26466:4;26489:3;26481:11;;26519:4;26514:3;26510:14;26502:22;;26399:132;;;:::o;26537:108::-;26614:24;26632:5;26614:24;:::i;:::-;26609:3;26602:37;26537:108;;:::o;26651:179::-;26720:10;26741:46;26783:3;26775:6;26741:46;:::i;:::-;26819:4;26814:3;26810:14;26796:28;;26651:179;;;;:::o;26836:113::-;26906:4;26938;26933:3;26929:14;26921:22;;26836:113;;;:::o;26985:732::-;27104:3;27133:54;27181:5;27133:54;:::i;:::-;27203:86;27282:6;27277:3;27203:86;:::i;:::-;27196:93;;27313:56;27363:5;27313:56;:::i;:::-;27392:7;27423:1;27408:284;27433:6;27430:1;27427:13;27408:284;;;27509:6;27503:13;27536:63;27595:3;27580:13;27536:63;:::i;:::-;27529:70;;27622:60;27675:6;27622:60;:::i;:::-;27612:70;;27468:224;27455:1;27452;27448:9;27443:14;;27408:284;;;27412:14;27708:3;27701:10;;27109:608;;;26985:732;;;;:::o;27723:831::-;27986:4;28024:3;28013:9;28009:19;28001:27;;28038:71;28106:1;28095:9;28091:17;28082:6;28038:71;:::i;:::-;28119:80;28195:2;28184:9;28180:18;28171:6;28119:80;:::i;:::-;28246:9;28240:4;28236:20;28231:2;28220:9;28216:18;28209:48;28274:108;28377:4;28368:6;28274:108;:::i;:::-;28266:116;;28392:72;28460:2;28449:9;28445:18;28436:6;28392:72;:::i;:::-;28474:73;28542:3;28531:9;28527:19;28518:6;28474:73;:::i;:::-;27723:831;;;;;;;;:::o

Swarm Source

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