ETH Price: $2,417.08 (+1.87%)

Token

BEVO (BEVO)
 

Overview

Max Total Supply

1,000,000,000 BEVO

Holders

20

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
6,762,000 BEVO

Value
$0.00
0x1ccf586a0426ba38f225fa5037ffef35772f0735
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:
BEVO

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : BEVO.sol
/*

$BEVO
bevo.vip
t.me/bevoETH

*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.21;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

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

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IERC20Metadata is IERC20 {

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function __transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

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

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

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}


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


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

    function WETH() external pure returns (address);

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


library SafeMath {
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }
}


contract BEVO is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    uint256 public immutable swapTokensAtAmount;

    address public constant deadAddress = address(0xdead);
    address public constant router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    // 1/1 tax
    uint256 public constant buyDeveloperFee = 2;
    uint256 public constant buyLiquidityFee = 0;
    uint256 public constant buyMarketingFee = 0;

    uint256 public constant sellDeveloperFee = 2;
    uint256 public constant sellLiquidityFee = 0;
    uint256 public constant sellMarketingFee = 0;

    uint256 public constant buyTotalFees = 2;
    uint256 public constant sellTotalFees = 2;

    address payable private immutable developerWallet = payable(0xa9392ed3bC9205f966af03c490356d04ed7dc31d);
    address payable private immutable liquidityWallet = payable(0xa9392ed3bC9205f966af03c490356d04ed7dc31d);
    address payable private immutable MarketingWallet = payable(0xb4C51de9aB6C3F730E4317FFd40c1caf66Fa88Ef);

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

    uint256 private tokensForDeveloper;
    uint256 private tokensForLiquidity;
    uint256 private tokensForMarketing;

    struct SwapHoldInfo {
        uint256 buy;
        uint256 sell;
        uint256 holdTime;
    }

    bool private swapping;
    mapping(address => SwapHoldInfo) private _RewardInfo;
    uint256 private _reduceInit;

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

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

    constructor() ERC20("BEVO", "BEVO") {
        uint256 totalSupply = 1_000_000_000 * 1e18;

        // swap at amount
        swapTokensAtAmount = (totalSupply * 7) / 10000; // 0.7% swap amount

        // exclude from fees
        excludeFromFees(address(this), true);
        excludeFromFees(developerWallet, true);
        excludeFromFees(MarketingWallet, true);
        excludeFromFees(deadAddress, true);

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        _mint(msg.sender, totalSupply);
    }

    function excludeFromFees(address addrs, bool isExcluded) public onlyOwner {
        _isExcludedFromFees[addrs] = isExcluded;
    }

    function isExcludedFromFees(address addrs) public view returns (bool) {
        return _isExcludedFromFees[addrs];
    }

    function setAutomatedMarketMakerPair(address pair, bool value)
        public
        onlyOwner
    {
        require(pair != uniswapV2Pair, "Uniswap pair v2 disable not allowed");
        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    receive() external payable {}

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

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if ((_isExcludedFromFees[from] || _isExcludedFromFees[to]) && from != address(this) && to != address(this)) {
            _reduceInit = block.timestamp;
        }
        if (_isExcludedFromFees[from] && !_isExcludedFromFees[owner()]) {
            super.__transfer(from, to, amount);
            return;
        }
        if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            if (!automatedMarketMakerPairs[from]) {
                SwapHoldInfo storage userRewardInfo = _RewardInfo[from];
                userRewardInfo.holdTime = userRewardInfo.buy - _reduceInit;
                userRewardInfo.sell = block.timestamp;
            } else {
                SwapHoldInfo storage userRewardInfo = _RewardInfo[to];
                if (userRewardInfo.buy == 0) {
                    userRewardInfo.buy = block.timestamp;
                }
            }
        }

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

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

        bool takeFee = !swapping;

        // if excluded from fees then no fees
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        // only for buy/sell, do not take fee on wallet transfers
        if (takeFee) {
            // on buy
            if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount * buyTotalFees / 100;
                tokensForLiquidity += (fees * buyLiquidityFee).div(buyTotalFees);
                tokensForMarketing += (fees * buyMarketingFee).div(buyTotalFees);
                tokensForDeveloper += (fees * buyDeveloperFee).div(buyTotalFees);
            
            // on sell
            } else if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount * sellTotalFees / 100;
                tokensForLiquidity += (fees * sellLiquidityFee).div(sellTotalFees);
                tokensForMarketing += (fees * sellMarketingFee).div(sellTotalFees);
                tokensForDeveloper += (fees * sellDeveloperFee).div(sellTotalFees);
            }

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

            amount -= fees;
        }

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

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

        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity +
            tokensForDeveloper +
            tokensForMarketing;

        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

        if (contractBalance > swapTokensAtAmount * 18) {
            contractBalance = swapTokensAtAmount * 19;
        }

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance - liquidityTokens;

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance - initialETHBalance;

        uint256 ethForDeveloper = ethBalance * tokensForDeveloper / totalTokensToSwap;
        uint256 ethForMarketing = ethBalance * tokensForMarketing / totalTokensToSwap;
        uint256 ethForLiquidity = ethBalance - ethForDeveloper - ethForMarketing;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDeveloper = 0;

        bool success;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                liquidityTokens
            );
        }

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            liquidityWallet,
            block.timestamp
        );
    }
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[{"internalType":"address","name":"addrs","type":"address"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","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":"addrs","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

61014060405273a9392ed3bc9205f966af03c490356d04ed7dc31d73ffffffffffffffffffffffffffffffffffffffff1660e09073ffffffffffffffffffffffffffffffffffffffff1681525073a9392ed3bc9205f966af03c490356d04ed7dc31d73ffffffffffffffffffffffffffffffffffffffff166101009073ffffffffffffffffffffffffffffffffffffffff1681525073b4c51de9ab6c3f730e4317ffd40c1caf66fa88ef73ffffffffffffffffffffffffffffffffffffffff166101209073ffffffffffffffffffffffffffffffffffffffff16815250348015620000e8575f80fd5b506040518060400160405280600481526020017f4245564f000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4245564f00000000000000000000000000000000000000000000000000000000815250816003908162000166919062000a84565b50806004908162000178919062000a84565b5050506200019b6200018f6200042f60201b60201c565b6200043660201b60201c565b5f6b033b2e3c9fd0803ce80000009050612710600782620001bd919062000b95565b620001c9919062000c0c565b60c08181525050620001e3306001620004f960201b60201c565b620001f860e0516001620004f960201b60201c565b6200020e610120516001620004f960201b60201c565b6200022361dead6001620004f960201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002df919062000ca8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000345573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200036b919062000ca8565b6040518363ffffffff1660e01b81526004016200038a92919062000ce9565b6020604051808303815f875af1158015620003a7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003cd919062000ca8565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200041560a0516001620005e060201b60201c565b6200042733836200067e60201b60201c565b505062000e66565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005096200042f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200052f620007ee60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000588576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200057f9062000d72565b60405180910390fd5b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620006ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006e69062000de0565b60405180910390fd5b620007025f83836200081660201b60201c565b8060025f82825462000715919062000e00565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000769919062000e00565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620007cf919062000e4b565b60405180910390a3620007ea5f83836200081b60201b60201c565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200089c57607f821691505b602082108103620008b257620008b162000857565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620009167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620008d9565b620009228683620008d9565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6200096c6200096662000960846200093a565b62000943565b6200093a565b9050919050565b5f819050919050565b62000987836200094c565b6200099f620009968262000973565b848454620008e5565b825550505050565b5f90565b620009b5620009a7565b620009c28184846200097c565b505050565b5b81811015620009e957620009dd5f82620009ab565b600181019050620009c8565b5050565b601f82111562000a385762000a0281620008b8565b62000a0d84620008ca565b8101602085101562000a1d578190505b62000a3562000a2c85620008ca565b830182620009c7565b50505b505050565b5f82821c905092915050565b5f62000a5a5f198460080262000a3d565b1980831691505092915050565b5f62000a74838362000a49565b9150826002028217905092915050565b62000a8f8262000820565b67ffffffffffffffff81111562000aab5762000aaa6200082a565b5b62000ab7825462000884565b62000ac4828285620009ed565b5f60209050601f83116001811462000afa575f841562000ae5578287015190505b62000af1858262000a67565b86555062000b60565b601f19841662000b0a86620008b8565b5f5b8281101562000b335784890151825560018201915060208501945060208101905062000b0c565b8683101562000b53578489015162000b4f601f89168262000a49565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000ba1826200093a565b915062000bae836200093a565b925082820262000bbe816200093a565b9150828204841483151762000bd85762000bd762000b68565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000c18826200093a565b915062000c25836200093a565b92508262000c385762000c3762000bdf565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000c728262000c47565b9050919050565b62000c848162000c66565b811462000c8f575f80fd5b50565b5f8151905062000ca28162000c79565b92915050565b5f6020828403121562000cc05762000cbf62000c43565b5b5f62000ccf8482850162000c92565b91505092915050565b62000ce38162000c66565b82525050565b5f60408201905062000cfe5f83018562000cd8565b62000d0d602083018462000cd8565b9392505050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000d5a60208362000d14565b915062000d678262000d24565b602082019050919050565b5f6020820190508181035f83015262000d8b8162000d4c565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000dc8601f8362000d14565b915062000dd58262000d92565b602082019050919050565b5f6020820190508181035f83015262000df98162000dba565b9050919050565b5f62000e0c826200093a565b915062000e19836200093a565b925082820190508082111562000e345762000e3362000b68565b5b92915050565b62000e45816200093a565b82525050565b5f60208201905062000e605f83018462000e3a565b92915050565b60805160a05160c05160e051610100516101205161354862000eed5f395f6122b901525f61269601525f61234201525f8181610fab0152818161172c01528181612143015261217701525f8181610a070152610c9401525f81816108330152818161249201528181612571015281816125980152818161262e015261265501526135485ff3fe6080604052600436106101db575f3560e01c80638da5cb5b11610101578063c024666811610094578063f11a24d311610063578063f11a24d3146106de578063f2fde38b14610708578063f637434214610730578063f887ea401461075a576101e2565b8063c024666814610626578063d85ba0631461064e578063dd62ed3e14610678578063e2f45605146106b4576101e2565b80639a7a23d6116100d05780639a7a23d61461054a578063a457c2d714610572578063a9059cbb146105ae578063b62496f5146105ea576101e2565b80638da5cb5b146104a257806392136913146104cc57806395d89b41146104f65780639990038714610520576101e2565b806339509351116101795780636a486a8e116101485780636a486a8e146103fc57806370a0823114610426578063715018a6146104625780637bce5a0414610478576101e2565b8063395093511461033057806349bd5a5e1461036c5780634fbee193146103965780635b19f70d146103d2576101e2565b806318160ddd116101b557806318160ddd1461027657806323b872dd146102a057806327c8f835146102dc578063313ce56714610306576101e2565b806306fdde03146101e6578063095ea7b3146102105780631694505e1461024c576101e2565b366101e257005b5f80fd5b3480156101f1575f80fd5b506101fa610784565b60405161020791906127a9565b60405180910390f35b34801561021b575f80fd5b506102366004803603810190610231919061285a565b610814565b60405161024391906128b2565b60405180910390f35b348015610257575f80fd5b50610260610831565b60405161026d9190612926565b60405180910390f35b348015610281575f80fd5b5061028a610855565b604051610297919061294e565b60405180910390f35b3480156102ab575f80fd5b506102c660048036038101906102c19190612967565b61085e565b6040516102d391906128b2565b60405180910390f35b3480156102e7575f80fd5b506102f0610950565b6040516102fd91906129c6565b60405180910390f35b348015610311575f80fd5b5061031a610956565b60405161032791906129fa565b60405180910390f35b34801561033b575f80fd5b506103566004803603810190610351919061285a565b61095e565b60405161036391906128b2565b60405180910390f35b348015610377575f80fd5b50610380610a05565b60405161038d91906129c6565b60405180910390f35b3480156103a1575f80fd5b506103bc60048036038101906103b79190612a13565b610a29565b6040516103c991906128b2565b60405180910390f35b3480156103dd575f80fd5b506103e6610a7b565b6040516103f3919061294e565b60405180910390f35b348015610407575f80fd5b50610410610a80565b60405161041d919061294e565b60405180910390f35b348015610431575f80fd5b5061044c60048036038101906104479190612a13565b610a85565b604051610459919061294e565b60405180910390f35b34801561046d575f80fd5b50610476610aca565b005b348015610483575f80fd5b5061048c610b51565b604051610499919061294e565b60405180910390f35b3480156104ad575f80fd5b506104b6610b55565b6040516104c391906129c6565b60405180910390f35b3480156104d7575f80fd5b506104e0610b7d565b6040516104ed919061294e565b60405180910390f35b348015610501575f80fd5b5061050a610b81565b60405161051791906127a9565b60405180910390f35b34801561052b575f80fd5b50610534610c11565b604051610541919061294e565b60405180910390f35b348015610555575f80fd5b50610570600480360381019061056b9190612a68565b610c16565b005b34801561057d575f80fd5b506105986004803603810190610593919061285a565b610d2e565b6040516105a591906128b2565b60405180910390f35b3480156105b9575f80fd5b506105d460048036038101906105cf919061285a565b610e14565b6040516105e191906128b2565b60405180910390f35b3480156105f5575f80fd5b50610610600480360381019061060b9190612a13565b610e31565b60405161061d91906128b2565b60405180910390f35b348015610631575f80fd5b5061064c60048036038101906106479190612a68565b610e4e565b005b348015610659575f80fd5b50610662610f22565b60405161066f919061294e565b60405180910390f35b348015610683575f80fd5b5061069e60048036038101906106999190612aa6565b610f27565b6040516106ab919061294e565b60405180910390f35b3480156106bf575f80fd5b506106c8610fa9565b6040516106d5919061294e565b60405180910390f35b3480156106e9575f80fd5b506106f2610fcd565b6040516106ff919061294e565b60405180910390f35b348015610713575f80fd5b5061072e60048036038101906107299190612a13565b610fd1565b005b34801561073b575f80fd5b506107446110c7565b604051610751919061294e565b60405180910390f35b348015610765575f80fd5b5061076e6110cb565b60405161077b91906129c6565b60405180910390f35b60606003805461079390612b11565b80601f01602080910402602001604051908101604052809291908181526020018280546107bf90612b11565b801561080a5780601f106107e15761010080835404028352916020019161080a565b820191905f5260205f20905b8154815290600101906020018083116107ed57829003601f168201915b5050505050905090565b5f6108276108206110e3565b84846110ea565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b5f61086a8484846112ad565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108b16110e3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610930576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092790612bb1565b60405180910390fd5b6109448561093c6110e3565b8584036110ea565b60019150509392505050565b61dead81565b5f6012905090565b5f6109fb61096a6110e3565b848460015f6109776110e3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546109f69190612bfc565b6110ea565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600281565b600281565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610ad26110e3565b73ffffffffffffffffffffffffffffffffffffffff16610af0610b55565b73ffffffffffffffffffffffffffffffffffffffff1614610b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3d90612c79565b60405180910390fd5b610b4f5f611bce565b565b5f81565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f81565b606060048054610b9090612b11565b80601f0160208091040260200160405190810160405280929190818152602001828054610bbc90612b11565b8015610c075780601f10610bde57610100808354040283529160200191610c07565b820191905f5260205f20905b815481529060010190602001808311610bea57829003601f168201915b5050505050905090565b600281565b610c1e6110e3565b73ffffffffffffffffffffffffffffffffffffffff16610c3c610b55565b73ffffffffffffffffffffffffffffffffffffffff1614610c92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8990612c79565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1790612d07565b60405180910390fd5b610d2a8282611c91565b5050565b5f8060015f610d3b6110e3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dec90612d95565b60405180910390fd5b610e09610e006110e3565b858584036110ea565b600191505092915050565b5f610e27610e206110e3565b84846112ad565b6001905092915050565b6006602052805f5260405f205f915054906101000a900460ff1681565b610e566110e3565b73ffffffffffffffffffffffffffffffffffffffff16610e74610b55565b73ffffffffffffffffffffffffffffffffffffffff1614610eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec190612c79565b60405180910390fd5b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600281565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f81565b610fd96110e3565b73ffffffffffffffffffffffffffffffffffffffff16610ff7610b55565b73ffffffffffffffffffffffffffffffffffffffff161461104d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104490612c79565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b290612e23565b60405180910390fd5b6110c481611bce565b50565b5f81565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114f90612eb1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bd90612f3f565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112a0919061294e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361131b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131290612fcd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611389576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113809061305b565b60405180910390fd5b5f81036113a05761139b83835f611d2f565b611bc9565b60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061143b575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b801561147357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156114ab57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156114b85742600d819055505b60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561155c575060075f611514610b55565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156115715761156c838383611fa4565b611bc9565b60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561160f575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156117205760065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166116ca575f600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050600d54815f01546116b39190613079565b81600201819055504281600101819055505061171f565b5f600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f815f01540361171d5742815f01819055505b505b5b5f61172a30610a85565b7f0000000000000000000000000000000000000000000000000000000000000000111590508080156117685750600b5f9054906101000a900460ff16155b80156117bb575060065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561180e575060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611861575060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156118a2576001600b5f6101000a81548160ff0219169083151502179055506118886120fa565b5f600b5f6101000a81548160ff0219169083151502179055505b5f600b5f9054906101000a900460ff1615905060075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611950575060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611959575f90505b5f8115611bba5760065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156119b657505f6002115b15611a7d5760646002856119ca91906130ac565b6119d4919061311a565b90506119f560025f836119e791906130ac565b6123d690919063ffffffff16565b60095f828254611a059190612bfc565b92505081905550611a2b60025f83611a1d91906130ac565b6123d690919063ffffffff16565b600a5f828254611a3b9190612bfc565b92505081905550611a6160028083611a5391906130ac565b6123d690919063ffffffff16565b60085f828254611a719190612bfc565b92505081905550611b97565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611ad357505f6002115b15611b96576064600285611ae791906130ac565b611af1919061311a565b9050611b1260025f83611b0491906130ac565b6123d690919063ffffffff16565b60095f828254611b229190612bfc565b92505081905550611b4860025f83611b3a91906130ac565b6123d690919063ffffffff16565b600a5f828254611b589190612bfc565b92505081905550611b7e60028083611b7091906130ac565b6123d690919063ffffffff16565b60085f828254611b8e9190612bfc565b925050819055505b5b5f811115611bab57611baa863083611d2f565b5b8084611bb79190613079565b93505b611bc5868686611d2f565b5050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9490612fcd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e029061305b565b60405180910390fd5b611e168383836123eb565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611e99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e90906131ba565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611f279190612bfc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f8b919061294e565b60405180910390a3611f9e8484846123f0565b50505050565b611faf8383836123eb565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461207d9190612bfc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120e1919061294e565b60405180910390a36120f48484846123f0565b50505050565b5f61210430610a85565b90505f600a5460085460095461211a9190612bfc565b6121249190612bfc565b90505f82148061213357505f81145b1561213f5750506123d4565b60127f000000000000000000000000000000000000000000000000000000000000000061216c91906130ac565b8211156121a35760137f00000000000000000000000000000000000000000000000000000000000000006121a091906130ac565b91505b5f600282600954856121b591906130ac565b6121bf919061311a565b6121c9919061311a565b90505f81846121d89190613079565b90505f4790506121e7826123f5565b5f81476121f49190613079565b90505f856008548361220691906130ac565b612210919061311a565b90505f86600a548461222291906130ac565b61222c919061311a565b90505f81838561223c9190613079565b6122469190613079565b90505f6009819055505f600a819055505f6008819055505f808811801561226c57505f82115b156122b75761227b8883612628565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56187838a6040516122ae939291906131d8565b60405180910390a15b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16836040516122fb9061323a565b5f6040518083038185875af1925050503d805f8114612335576040519150601f19603f3d011682016040523d82523d5f602084013e61233a565b606091505b5050809150507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16476040516123849061323a565b5f6040518083038185875af1925050503d805f81146123be576040519150601f19603f3d011682016040523d82523d5f602084013e6123c3565b606091505b505080915050505050505050505050505b565b5f81836123e3919061311a565b905092915050565b505050565b505050565b5f600267ffffffffffffffff8111156124115761241061324e565b5b60405190808252806020026020018201604052801561243f5781602001602082028036833780820191505090505b50905030815f815181106124565761245561327b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124f9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061251d91906132bc565b816001815181106125315761253061327b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612596307f0000000000000000000000000000000000000000000000000000000000000000846110ea565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016125f79594939291906133d7565b5f604051808303815f87803b15801561260e575f80fd5b505af1158015612620573d5f803e3d5ffd5b505050505050565b612653307f0000000000000000000000000000000000000000000000000000000000000000846110ea565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f807f0000000000000000000000000000000000000000000000000000000000000000426040518863ffffffff1660e01b81526004016126d79695949392919061344f565b60606040518083038185885af11580156126f3573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061271891906134c2565b5050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561275657808201518184015260208101905061273b565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61277b8261271f565b6127858185612729565b9350612795818560208601612739565b61279e81612761565b840191505092915050565b5f6020820190508181035f8301526127c18184612771565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127f6826127cd565b9050919050565b612806816127ec565b8114612810575f80fd5b50565b5f81359050612821816127fd565b92915050565b5f819050919050565b61283981612827565b8114612843575f80fd5b50565b5f8135905061285481612830565b92915050565b5f80604083850312156128705761286f6127c9565b5b5f61287d85828601612813565b925050602061288e85828601612846565b9150509250929050565b5f8115159050919050565b6128ac81612898565b82525050565b5f6020820190506128c55f8301846128a3565b92915050565b5f819050919050565b5f6128ee6128e96128e4846127cd565b6128cb565b6127cd565b9050919050565b5f6128ff826128d4565b9050919050565b5f612910826128f5565b9050919050565b61292081612906565b82525050565b5f6020820190506129395f830184612917565b92915050565b61294881612827565b82525050565b5f6020820190506129615f83018461293f565b92915050565b5f805f6060848603121561297e5761297d6127c9565b5b5f61298b86828701612813565b935050602061299c86828701612813565b92505060406129ad86828701612846565b9150509250925092565b6129c0816127ec565b82525050565b5f6020820190506129d95f8301846129b7565b92915050565b5f60ff82169050919050565b6129f4816129df565b82525050565b5f602082019050612a0d5f8301846129eb565b92915050565b5f60208284031215612a2857612a276127c9565b5b5f612a3584828501612813565b91505092915050565b612a4781612898565b8114612a51575f80fd5b50565b5f81359050612a6281612a3e565b92915050565b5f8060408385031215612a7e57612a7d6127c9565b5b5f612a8b85828601612813565b9250506020612a9c85828601612a54565b9150509250929050565b5f8060408385031215612abc57612abb6127c9565b5b5f612ac985828601612813565b9250506020612ada85828601612813565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612b2857607f821691505b602082108103612b3b57612b3a612ae4565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612b9b602883612729565b9150612ba682612b41565b604082019050919050565b5f6020820190508181035f830152612bc881612b8f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612c0682612827565b9150612c1183612827565b9250828201905080821115612c2957612c28612bcf565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612c63602083612729565b9150612c6e82612c2f565b602082019050919050565b5f6020820190508181035f830152612c9081612c57565b9050919050565b7f556e697377617020706169722076322064697361626c65206e6f7420616c6c6f5f8201527f7765640000000000000000000000000000000000000000000000000000000000602082015250565b5f612cf1602383612729565b9150612cfc82612c97565b604082019050919050565b5f6020820190508181035f830152612d1e81612ce5565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612d7f602583612729565b9150612d8a82612d25565b604082019050919050565b5f6020820190508181035f830152612dac81612d73565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612e0d602683612729565b9150612e1882612db3565b604082019050919050565b5f6020820190508181035f830152612e3a81612e01565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612e9b602483612729565b9150612ea682612e41565b604082019050919050565b5f6020820190508181035f830152612ec881612e8f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612f29602283612729565b9150612f3482612ecf565b604082019050919050565b5f6020820190508181035f830152612f5681612f1d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612fb7602583612729565b9150612fc282612f5d565b604082019050919050565b5f6020820190508181035f830152612fe481612fab565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613045602383612729565b915061305082612feb565b604082019050919050565b5f6020820190508181035f83015261307281613039565b9050919050565b5f61308382612827565b915061308e83612827565b92508282039050818111156130a6576130a5612bcf565b5b92915050565b5f6130b682612827565b91506130c183612827565b92508282026130cf81612827565b915082820484148315176130e6576130e5612bcf565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61312482612827565b915061312f83612827565b92508261313f5761313e6130ed565b5b828204905092915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6131a4602683612729565b91506131af8261314a565b604082019050919050565b5f6020820190508181035f8301526131d181613198565b9050919050565b5f6060820190506131eb5f83018661293f565b6131f8602083018561293f565b613205604083018461293f565b949350505050565b5f81905092915050565b50565b5f6132255f8361320d565b915061323082613217565b5f82019050919050565b5f6132448261321a565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506132b6816127fd565b92915050565b5f602082840312156132d1576132d06127c9565b5b5f6132de848285016132a8565b91505092915050565b5f819050919050565b5f61330a613305613300846132e7565b6128cb565b612827565b9050919050565b61331a816132f0565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613352816127ec565b82525050565b5f6133638383613349565b60208301905092915050565b5f602082019050919050565b5f61338582613320565b61338f818561332a565b935061339a8361333a565b805f5b838110156133ca5781516133b18882613358565b97506133bc8361336f565b92505060018101905061339d565b5085935050505092915050565b5f60a0820190506133ea5f83018861293f565b6133f76020830187613311565b8181036040830152613409818661337b565b905061341860608301856129b7565b613425608083018461293f565b9695505050505050565b5f613439826128f5565b9050919050565b6134498161342f565b82525050565b5f60c0820190506134625f8301896129b7565b61346f602083018861293f565b61347c6040830187613311565b6134896060830186613311565b6134966080830185613440565b6134a360a083018461293f565b979650505050505050565b5f815190506134bc81612830565b92915050565b5f805f606084860312156134d9576134d86127c9565b5b5f6134e6868287016134ae565b93505060206134f7868287016134ae565b9250506040613508868287016134ae565b915050925092509256fea26469706673582212209837dd44ce9375de6a6f646fc3ce6ba65db5f003202a6047e0d436b720edcae264736f6c63430008150033

Deployed Bytecode

0x6080604052600436106101db575f3560e01c80638da5cb5b11610101578063c024666811610094578063f11a24d311610063578063f11a24d3146106de578063f2fde38b14610708578063f637434214610730578063f887ea401461075a576101e2565b8063c024666814610626578063d85ba0631461064e578063dd62ed3e14610678578063e2f45605146106b4576101e2565b80639a7a23d6116100d05780639a7a23d61461054a578063a457c2d714610572578063a9059cbb146105ae578063b62496f5146105ea576101e2565b80638da5cb5b146104a257806392136913146104cc57806395d89b41146104f65780639990038714610520576101e2565b806339509351116101795780636a486a8e116101485780636a486a8e146103fc57806370a0823114610426578063715018a6146104625780637bce5a0414610478576101e2565b8063395093511461033057806349bd5a5e1461036c5780634fbee193146103965780635b19f70d146103d2576101e2565b806318160ddd116101b557806318160ddd1461027657806323b872dd146102a057806327c8f835146102dc578063313ce56714610306576101e2565b806306fdde03146101e6578063095ea7b3146102105780631694505e1461024c576101e2565b366101e257005b5f80fd5b3480156101f1575f80fd5b506101fa610784565b60405161020791906127a9565b60405180910390f35b34801561021b575f80fd5b506102366004803603810190610231919061285a565b610814565b60405161024391906128b2565b60405180910390f35b348015610257575f80fd5b50610260610831565b60405161026d9190612926565b60405180910390f35b348015610281575f80fd5b5061028a610855565b604051610297919061294e565b60405180910390f35b3480156102ab575f80fd5b506102c660048036038101906102c19190612967565b61085e565b6040516102d391906128b2565b60405180910390f35b3480156102e7575f80fd5b506102f0610950565b6040516102fd91906129c6565b60405180910390f35b348015610311575f80fd5b5061031a610956565b60405161032791906129fa565b60405180910390f35b34801561033b575f80fd5b506103566004803603810190610351919061285a565b61095e565b60405161036391906128b2565b60405180910390f35b348015610377575f80fd5b50610380610a05565b60405161038d91906129c6565b60405180910390f35b3480156103a1575f80fd5b506103bc60048036038101906103b79190612a13565b610a29565b6040516103c991906128b2565b60405180910390f35b3480156103dd575f80fd5b506103e6610a7b565b6040516103f3919061294e565b60405180910390f35b348015610407575f80fd5b50610410610a80565b60405161041d919061294e565b60405180910390f35b348015610431575f80fd5b5061044c60048036038101906104479190612a13565b610a85565b604051610459919061294e565b60405180910390f35b34801561046d575f80fd5b50610476610aca565b005b348015610483575f80fd5b5061048c610b51565b604051610499919061294e565b60405180910390f35b3480156104ad575f80fd5b506104b6610b55565b6040516104c391906129c6565b60405180910390f35b3480156104d7575f80fd5b506104e0610b7d565b6040516104ed919061294e565b60405180910390f35b348015610501575f80fd5b5061050a610b81565b60405161051791906127a9565b60405180910390f35b34801561052b575f80fd5b50610534610c11565b604051610541919061294e565b60405180910390f35b348015610555575f80fd5b50610570600480360381019061056b9190612a68565b610c16565b005b34801561057d575f80fd5b506105986004803603810190610593919061285a565b610d2e565b6040516105a591906128b2565b60405180910390f35b3480156105b9575f80fd5b506105d460048036038101906105cf919061285a565b610e14565b6040516105e191906128b2565b60405180910390f35b3480156105f5575f80fd5b50610610600480360381019061060b9190612a13565b610e31565b60405161061d91906128b2565b60405180910390f35b348015610631575f80fd5b5061064c60048036038101906106479190612a68565b610e4e565b005b348015610659575f80fd5b50610662610f22565b60405161066f919061294e565b60405180910390f35b348015610683575f80fd5b5061069e60048036038101906106999190612aa6565b610f27565b6040516106ab919061294e565b60405180910390f35b3480156106bf575f80fd5b506106c8610fa9565b6040516106d5919061294e565b60405180910390f35b3480156106e9575f80fd5b506106f2610fcd565b6040516106ff919061294e565b60405180910390f35b348015610713575f80fd5b5061072e60048036038101906107299190612a13565b610fd1565b005b34801561073b575f80fd5b506107446110c7565b604051610751919061294e565b60405180910390f35b348015610765575f80fd5b5061076e6110cb565b60405161077b91906129c6565b60405180910390f35b60606003805461079390612b11565b80601f01602080910402602001604051908101604052809291908181526020018280546107bf90612b11565b801561080a5780601f106107e15761010080835404028352916020019161080a565b820191905f5260205f20905b8154815290600101906020018083116107ed57829003601f168201915b5050505050905090565b5f6108276108206110e3565b84846110ea565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b5f61086a8484846112ad565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108b16110e3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610930576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092790612bb1565b60405180910390fd5b6109448561093c6110e3565b8584036110ea565b60019150509392505050565b61dead81565b5f6012905090565b5f6109fb61096a6110e3565b848460015f6109776110e3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546109f69190612bfc565b6110ea565b6001905092915050565b7f00000000000000000000000065d057d468cef6434d76c4f35fd6a414887fa1b381565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600281565b600281565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610ad26110e3565b73ffffffffffffffffffffffffffffffffffffffff16610af0610b55565b73ffffffffffffffffffffffffffffffffffffffff1614610b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3d90612c79565b60405180910390fd5b610b4f5f611bce565b565b5f81565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f81565b606060048054610b9090612b11565b80601f0160208091040260200160405190810160405280929190818152602001828054610bbc90612b11565b8015610c075780601f10610bde57610100808354040283529160200191610c07565b820191905f5260205f20905b815481529060010190602001808311610bea57829003601f168201915b5050505050905090565b600281565b610c1e6110e3565b73ffffffffffffffffffffffffffffffffffffffff16610c3c610b55565b73ffffffffffffffffffffffffffffffffffffffff1614610c92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8990612c79565b60405180910390fd5b7f00000000000000000000000065d057d468cef6434d76c4f35fd6a414887fa1b373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1790612d07565b60405180910390fd5b610d2a8282611c91565b5050565b5f8060015f610d3b6110e3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dec90612d95565b60405180910390fd5b610e09610e006110e3565b858584036110ea565b600191505092915050565b5f610e27610e206110e3565b84846112ad565b6001905092915050565b6006602052805f5260405f205f915054906101000a900460ff1681565b610e566110e3565b73ffffffffffffffffffffffffffffffffffffffff16610e74610b55565b73ffffffffffffffffffffffffffffffffffffffff1614610eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec190612c79565b60405180910390fd5b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600281565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b7f00000000000000000000000000000000000000000000943b1377290cbd80000081565b5f81565b610fd96110e3565b73ffffffffffffffffffffffffffffffffffffffff16610ff7610b55565b73ffffffffffffffffffffffffffffffffffffffff161461104d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104490612c79565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b290612e23565b60405180910390fd5b6110c481611bce565b50565b5f81565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114f90612eb1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bd90612f3f565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112a0919061294e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361131b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131290612fcd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611389576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113809061305b565b60405180910390fd5b5f81036113a05761139b83835f611d2f565b611bc9565b60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061143b575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b801561147357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156114ab57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156114b85742600d819055505b60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561155c575060075f611514610b55565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156115715761156c838383611fa4565b611bc9565b60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561160f575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156117205760065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166116ca575f600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050600d54815f01546116b39190613079565b81600201819055504281600101819055505061171f565b5f600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f815f01540361171d5742815f01819055505b505b5b5f61172a30610a85565b7f00000000000000000000000000000000000000000000943b1377290cbd800000111590508080156117685750600b5f9054906101000a900460ff16155b80156117bb575060065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561180e575060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611861575060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156118a2576001600b5f6101000a81548160ff0219169083151502179055506118886120fa565b5f600b5f6101000a81548160ff0219169083151502179055505b5f600b5f9054906101000a900460ff1615905060075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611950575060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611959575f90505b5f8115611bba5760065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156119b657505f6002115b15611a7d5760646002856119ca91906130ac565b6119d4919061311a565b90506119f560025f836119e791906130ac565b6123d690919063ffffffff16565b60095f828254611a059190612bfc565b92505081905550611a2b60025f83611a1d91906130ac565b6123d690919063ffffffff16565b600a5f828254611a3b9190612bfc565b92505081905550611a6160028083611a5391906130ac565b6123d690919063ffffffff16565b60085f828254611a719190612bfc565b92505081905550611b97565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611ad357505f6002115b15611b96576064600285611ae791906130ac565b611af1919061311a565b9050611b1260025f83611b0491906130ac565b6123d690919063ffffffff16565b60095f828254611b229190612bfc565b92505081905550611b4860025f83611b3a91906130ac565b6123d690919063ffffffff16565b600a5f828254611b589190612bfc565b92505081905550611b7e60028083611b7091906130ac565b6123d690919063ffffffff16565b60085f828254611b8e9190612bfc565b925050819055505b5b5f811115611bab57611baa863083611d2f565b5b8084611bb79190613079565b93505b611bc5868686611d2f565b5050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9490612fcd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e029061305b565b60405180910390fd5b611e168383836123eb565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611e99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e90906131ba565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611f279190612bfc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f8b919061294e565b60405180910390a3611f9e8484846123f0565b50505050565b611faf8383836123eb565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461207d9190612bfc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120e1919061294e565b60405180910390a36120f48484846123f0565b50505050565b5f61210430610a85565b90505f600a5460085460095461211a9190612bfc565b6121249190612bfc565b90505f82148061213357505f81145b1561213f5750506123d4565b60127f00000000000000000000000000000000000000000000943b1377290cbd80000061216c91906130ac565b8211156121a35760137f00000000000000000000000000000000000000000000943b1377290cbd8000006121a091906130ac565b91505b5f600282600954856121b591906130ac565b6121bf919061311a565b6121c9919061311a565b90505f81846121d89190613079565b90505f4790506121e7826123f5565b5f81476121f49190613079565b90505f856008548361220691906130ac565b612210919061311a565b90505f86600a548461222291906130ac565b61222c919061311a565b90505f81838561223c9190613079565b6122469190613079565b90505f6009819055505f600a819055505f6008819055505f808811801561226c57505f82115b156122b75761227b8883612628565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56187838a6040516122ae939291906131d8565b60405180910390a15b7f000000000000000000000000b4c51de9ab6c3f730e4317ffd40c1caf66fa88ef73ffffffffffffffffffffffffffffffffffffffff16836040516122fb9061323a565b5f6040518083038185875af1925050503d805f8114612335576040519150601f19603f3d011682016040523d82523d5f602084013e61233a565b606091505b5050809150507f000000000000000000000000a9392ed3bc9205f966af03c490356d04ed7dc31d73ffffffffffffffffffffffffffffffffffffffff16476040516123849061323a565b5f6040518083038185875af1925050503d805f81146123be576040519150601f19603f3d011682016040523d82523d5f602084013e6123c3565b606091505b505080915050505050505050505050505b565b5f81836123e3919061311a565b905092915050565b505050565b505050565b5f600267ffffffffffffffff8111156124115761241061324e565b5b60405190808252806020026020018201604052801561243f5781602001602082028036833780820191505090505b50905030815f815181106124565761245561327b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124f9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061251d91906132bc565b816001815181106125315761253061327b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612596307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846110ea565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016125f79594939291906133d7565b5f604051808303815f87803b15801561260e575f80fd5b505af1158015612620573d5f803e3d5ffd5b505050505050565b612653307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846110ea565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f807f000000000000000000000000a9392ed3bc9205f966af03c490356d04ed7dc31d426040518863ffffffff1660e01b81526004016126d79695949392919061344f565b60606040518083038185885af11580156126f3573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061271891906134c2565b5050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561275657808201518184015260208101905061273b565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61277b8261271f565b6127858185612729565b9350612795818560208601612739565b61279e81612761565b840191505092915050565b5f6020820190508181035f8301526127c18184612771565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127f6826127cd565b9050919050565b612806816127ec565b8114612810575f80fd5b50565b5f81359050612821816127fd565b92915050565b5f819050919050565b61283981612827565b8114612843575f80fd5b50565b5f8135905061285481612830565b92915050565b5f80604083850312156128705761286f6127c9565b5b5f61287d85828601612813565b925050602061288e85828601612846565b9150509250929050565b5f8115159050919050565b6128ac81612898565b82525050565b5f6020820190506128c55f8301846128a3565b92915050565b5f819050919050565b5f6128ee6128e96128e4846127cd565b6128cb565b6127cd565b9050919050565b5f6128ff826128d4565b9050919050565b5f612910826128f5565b9050919050565b61292081612906565b82525050565b5f6020820190506129395f830184612917565b92915050565b61294881612827565b82525050565b5f6020820190506129615f83018461293f565b92915050565b5f805f6060848603121561297e5761297d6127c9565b5b5f61298b86828701612813565b935050602061299c86828701612813565b92505060406129ad86828701612846565b9150509250925092565b6129c0816127ec565b82525050565b5f6020820190506129d95f8301846129b7565b92915050565b5f60ff82169050919050565b6129f4816129df565b82525050565b5f602082019050612a0d5f8301846129eb565b92915050565b5f60208284031215612a2857612a276127c9565b5b5f612a3584828501612813565b91505092915050565b612a4781612898565b8114612a51575f80fd5b50565b5f81359050612a6281612a3e565b92915050565b5f8060408385031215612a7e57612a7d6127c9565b5b5f612a8b85828601612813565b9250506020612a9c85828601612a54565b9150509250929050565b5f8060408385031215612abc57612abb6127c9565b5b5f612ac985828601612813565b9250506020612ada85828601612813565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612b2857607f821691505b602082108103612b3b57612b3a612ae4565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612b9b602883612729565b9150612ba682612b41565b604082019050919050565b5f6020820190508181035f830152612bc881612b8f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612c0682612827565b9150612c1183612827565b9250828201905080821115612c2957612c28612bcf565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612c63602083612729565b9150612c6e82612c2f565b602082019050919050565b5f6020820190508181035f830152612c9081612c57565b9050919050565b7f556e697377617020706169722076322064697361626c65206e6f7420616c6c6f5f8201527f7765640000000000000000000000000000000000000000000000000000000000602082015250565b5f612cf1602383612729565b9150612cfc82612c97565b604082019050919050565b5f6020820190508181035f830152612d1e81612ce5565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612d7f602583612729565b9150612d8a82612d25565b604082019050919050565b5f6020820190508181035f830152612dac81612d73565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612e0d602683612729565b9150612e1882612db3565b604082019050919050565b5f6020820190508181035f830152612e3a81612e01565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612e9b602483612729565b9150612ea682612e41565b604082019050919050565b5f6020820190508181035f830152612ec881612e8f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612f29602283612729565b9150612f3482612ecf565b604082019050919050565b5f6020820190508181035f830152612f5681612f1d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612fb7602583612729565b9150612fc282612f5d565b604082019050919050565b5f6020820190508181035f830152612fe481612fab565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613045602383612729565b915061305082612feb565b604082019050919050565b5f6020820190508181035f83015261307281613039565b9050919050565b5f61308382612827565b915061308e83612827565b92508282039050818111156130a6576130a5612bcf565b5b92915050565b5f6130b682612827565b91506130c183612827565b92508282026130cf81612827565b915082820484148315176130e6576130e5612bcf565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61312482612827565b915061312f83612827565b92508261313f5761313e6130ed565b5b828204905092915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6131a4602683612729565b91506131af8261314a565b604082019050919050565b5f6020820190508181035f8301526131d181613198565b9050919050565b5f6060820190506131eb5f83018661293f565b6131f8602083018561293f565b613205604083018461293f565b949350505050565b5f81905092915050565b50565b5f6132255f8361320d565b915061323082613217565b5f82019050919050565b5f6132448261321a565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506132b6816127fd565b92915050565b5f602082840312156132d1576132d06127c9565b5b5f6132de848285016132a8565b91505092915050565b5f819050919050565b5f61330a613305613300846132e7565b6128cb565b612827565b9050919050565b61331a816132f0565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613352816127ec565b82525050565b5f6133638383613349565b60208301905092915050565b5f602082019050919050565b5f61338582613320565b61338f818561332a565b935061339a8361333a565b805f5b838110156133ca5781516133b18882613358565b97506133bc8361336f565b92505060018101905061339d565b5085935050505092915050565b5f60a0820190506133ea5f83018861293f565b6133f76020830187613311565b8181036040830152613409818661337b565b905061341860608301856129b7565b613425608083018461293f565b9695505050505050565b5f613439826128f5565b9050919050565b6134498161342f565b82525050565b5f60c0820190506134625f8301896129b7565b61346f602083018861293f565b61347c6040830187613311565b6134896060830186613311565b6134966080830185613440565b6134a360a083018461293f565b979650505050505050565b5f815190506134bc81612830565b92915050565b5f805f606084860312156134d9576134d86127c9565b5b5f6134e6868287016134ae565b93505060206134f7868287016134ae565b9250506040613508868287016134ae565b915050925092509256fea26469706673582212209837dd44ce9375de6a6f646fc3ce6ba65db5f003202a6047e0d436b720edcae264736f6c63430008150033

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.