ETH Price: $2,506.18 (-0.48%)

Token

Oracle AI (ORCAI)
 

Overview

Max Total Supply

1,000,000 ORCAI

Holders

157

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 6 Decimals)

Balance
0.000001 ORCAI

Value
$0.00
0x30665a218DdA4F0C2dBC8d46d93839E06C5Ea0AA
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:
OracleAI

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : oracleai.sol
/*
 Oracle AI
 $ORCAI
 */
//  Official Website:  https://orcai.io/
//  Official Telegram: https://t.me/oracleaiofficial
//  Official Twitter:  https://twitter.com/@orcai_
//  Official Gitbook:  https://oracleai.gitbook.io/oracle-ai/

//SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.18;

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

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

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

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

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

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

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

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

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

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

contract OracleAI is Context, IERC20, Ownable {
    string private constant _name = "Oracle AI";
    string private constant _symbol = "ORCAI";
    uint8 private constant _decimals = 6;

    mapping(address => uint256) private _rOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000 * 10 ** 6;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 public launchBlock;

    //Buy Fee
    uint256 private _redisFeeOnBuy = 0; //
    uint256 private _taxFeeOnBuy = 0; // updated

    //Sell Fee
    uint256 private _redisFeeOnSell = 0; //
    uint256 private _taxFeeOnSell = 20; // updated

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping(address => bool) public bots;

    address payable private _developmentAddress =
        payable(0x5b1142dBcE016194Ba81Bdf2053C9A2fa8E1246B); // updated
    address payable private _marketingAddress =
        payable(0xCeA7Efde861047d024f34d2c78ACa05A01f89868); // updated

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = 100000000; //  100%
    uint256 public _maxWalletSize = 100000000 * 10 ** 6; // 100%
    uint256 public _swapTokensAtAmount = 500 * 10 ** 6; // 0.05%

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D //uniswap
        );
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;

        bots[address(0x66f049111958809841Bbe4b81c034Da2D953AA0c)] = true;
        bots[address(0x000000005736775Feb0C8568e7DEe77222a26880)] = true;
        bots[address(0x34822A742BDE3beF13acabF14244869841f06A73)] = true;
        bots[address(0x69611A66d0CF67e5Ddd1957e6499b5C5A3E44845)] = true;
        bots[address(0x69611A66d0CF67e5Ddd1957e6499b5C5A3E44845)] = true;
        bots[address(0x8484eFcBDa76955463aa12e1d504D7C6C89321F8)] = true;
        bots[address(0xe5265ce4D0a3B191431e1bac056d72b2b9F0Fe44)] = true;
        bots[address(0x33F9Da98C57674B5FC5AE7349E3C732Cf2E6Ce5C)] = true;
        bots[address(0xc59a8E2d2c476BA9122aa4eC19B4c5E2BBAbbC28)] = true;
        bots[address(0x21053Ff2D9Fc37D4DB8687d48bD0b57581c1333D)] = true;
        bots[address(0x4dd6A0D3191A41522B84BC6b65d17f6f5e6a4192)] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[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 tokenFromReflection(
        uint256 rAmount
    ) private view returns (uint256) {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount / currentRate;
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

        if (from != owner() && to != owner()) {
            //Trade start check
            if (!tradingOpen) {
                require(
                    from == owner(),
                    "TOKEN: This account cannot send tokens until trading is enabled"
                );
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(
                !bots[from] && !bots[to],
                "TOKEN: Your account is blacklisted!"
            );

            if (
                block.number <= launchBlock &&
                from == uniswapV2Pair &&
                to != address(uniswapV2Router) &&
                to != address(this)
            ) {
                bots[to] = true;
            }

            if (to != uniswapV2Pair) {
                require(
                    balanceOf(to) + amount < _maxWalletSize,
                    "TOKEN: Balance exceeds wallet size!"
                );
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if (contractTokenBalance >= _maxTxAmount) {
                contractTokenBalance = _maxTxAmount;
            }

            if (
                canSwap &&
                !inSwap &&
                from != uniswapV2Pair &&
                swapEnabled &&
                !_isExcludedFromFee[from] &&
                !_isExcludedFromFee[to]
            ) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if (
            (_isExcludedFromFee[from] || _isExcludedFromFee[to]) ||
            (from != uniswapV2Pair && to != uniswapV2Pair)
        ) {
            takeFee = false;
        } else {
            //Set Fee for Buys
            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }
        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function sendETHToFee(uint256 amount) private {
        _developmentAddress.transfer(amount);
        // _marketingAddress.transfer(amount / 2);
    }

    function setTrading() public onlyOwner {
        require(!tradingOpen, "Trading already enabled");
        tradingOpen = true;
        launchBlock = block.number;
    }

    function manualswap() external {
        require(
            _msgSender() == _developmentAddress ||
                _msgSender() == _marketingAddress
        );
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(
            _msgSender() == _developmentAddress ||
                _msgSender() == _marketingAddress
        );
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender] - rAmount;
        _rOwned[recipient] = _rOwned[recipient] + rTransferAmount;
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam * currentRate;
        _rOwned[address(this)] = _rOwned[address(this)] + rTeam;
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal - rFee;
        _tFeeTotal = _tFeeTotal + tFee;
    }

    receive() external payable {}

    function _getValues(
        uint256 tAmount
    )
        private
        view
        returns (uint256, uint256, uint256, uint256, uint256, uint256)
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(
            tAmount,
            _redisFee,
            _taxFee
        );
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(
            tAmount,
            tFee,
            tTeam,
            currentRate
        );

        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    ) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = (tAmount * redisFee) / 100;
        uint256 tTeam = (tAmount * taxFee) / 100;
        uint256 tTransferAmount = tAmount - tFee - tTeam;

        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    ) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount * currentRate;
        uint256 rFee = tFee * currentRate;
        uint256 rTeam = tTeam * currentRate;
        uint256 rTransferAmount = rAmount - rFee - rTeam;

        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();

        return rSupply / tSupply;
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal / _tTotal) return (_rTotal, _tTotal);

        return (rSupply, tSupply);
    }

    function setFee(
        uint256 redisFeeOnBuy,
        uint256 redisFeeOnSell,
        uint256 taxFeeOnBuy,
        uint256 taxFeeOnSell
    ) public onlyOwner {
        require(
            _taxFeeOnBuy <= 20 &&
                _taxFeeOnSell <= 20 &&
                redisFeeOnBuy <= 20 &&
                redisFeeOnSell <= 20,
            "Tax can't be higher than 20"
        );
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;

        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(
        uint256 swapTokensAtAmount
    ) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        require(_maxTxAmount > 0, "Max TX Amount needs to be larger than 0");
        _maxTxAmount = maxTxAmount;
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        require(
            _maxWalletSize > 0,
            "Max wallet size needs to be larger than 0"
        );
        _maxWalletSize = maxWalletSize;
    }

    function excludeMultipleAccountsFromFees(
        address[] calldata accounts,
        bool excluded
    ) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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"}]

608060405264e8d4a5100060001962000019919062000bbd565b60001962000028919062000c24565b600555600060085560006009556000600a556014600b55600a54600c55600b54600d55600c54600e55600d54600f55735b1142dbce016194ba81bdf2053c9a2fa8e1246b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073cea7efde861047d024f34d2c78aca05a01f89868601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006014806101000a81548160ff0219169083151502179055506000601460156101000a81548160ff0219169083151502179055506001601460166101000a81548160ff0219169083151502179055506305f5e100601555655af3107a4000601655631dcd65006017553480156200017857600080fd5b5060006200018b62000b5360201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600554600260006200024062000b5360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034a919062000cc9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d8919062000cc9565b6040518363ffffffff1660e01b8152600401620003f792919062000d0c565b6020604051808303816000875af115801562000417573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200043d919062000cc9565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460006200049362000b5b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060007366f049111958809841bbe4b81c034da2d953aa0c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060006f5736775feb0c8568e7dee77222a2688073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060007334822a742bde3bef13acabf14244869841f06a7373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060007369611a66d0cf67e5ddd1957e6499b5c5a3e4484573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060007369611a66d0cf67e5ddd1957e6499b5c5a3e4484573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000738484efcbda76955463aa12e1d504d7c6c89321f873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600073e5265ce4d0a3b191431e1bac056d72b2b9f0fe4473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060007333f9da98c57674b5fc5ae7349e3c732cf2e6ce5c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600073c59a8e2d2c476ba9122aa4ec19b4c5e2bbabbc2873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060007321053ff2d9fc37d4db8687d48bd0b57581c1333d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000734dd6a0d3191a41522b84bc6b65d17f6f5e6a419273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000ae062000b5360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef64e8d4a5100060405162000b44919062000d4a565b60405180910390a35062000d67565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000bca8262000b84565b915062000bd78362000b84565b92508262000bea5762000be962000b8e565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c318262000b84565b915062000c3e8362000b84565b925082820390508181111562000c595762000c5862000bf5565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c918262000c64565b9050919050565b62000ca38162000c84565b811462000caf57600080fd5b50565b60008151905062000cc38162000c98565b92915050565b60006020828403121562000ce25762000ce162000c5f565b5b600062000cf28482850162000cb2565b91505092915050565b62000d068162000c84565b82525050565b600060408201905062000d23600083018562000cfb565b62000d32602083018462000cfb565b9392505050565b62000d448162000b84565b82525050565b600060208201905062000d61600083018462000d39565b92915050565b6139f08062000d776000396000f3fe6080604052600436106101bb5760003560e01c80637d1db4a5116100ec578063bfd792841161008a578063d00efb2f11610064578063d00efb2f146105cf578063dd62ed3e146105fa578063ea1644d514610637578063f2fde38b14610660576101c2565b8063bfd7928414610552578063c3c8cd801461058f578063c492f046146105a6576101c2565b806395d89b41116100c657806395d89b411461049857806398a5c315146104c3578063a2a957bb146104ec578063a9059cbb14610515576101c2565b80637d1db4a5146104175780638da5cb5b146104425780638f9a55c01461046d576101c2565b806349bd5a5e1161015957806370a082311161013357806370a0823114610383578063715018a6146103c057806374010ece146103d75780637c519ffb14610400576101c2565b806349bd5a5e146103185780636d8aa8f8146103435780636fc3eaec1461036c576101c2565b806318160ddd1161019557806318160ddd1461025a57806323b872dd146102855780632fd689e3146102c2578063313ce567146102ed576101c2565b806306fdde03146101c7578063095ea7b3146101f25780631694505e1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc610689565b6040516101e99190612911565b60405180910390f35b3480156101fe57600080fd5b50610219600480360381019061021491906129d1565b6106c6565b6040516102269190612a2c565b60405180910390f35b34801561023b57600080fd5b506102446106e4565b6040516102519190612aa6565b60405180910390f35b34801561026657600080fd5b5061026f61070a565b60405161027c9190612ad0565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a79190612aeb565b610717565b6040516102b99190612a2c565b60405180910390f35b3480156102ce57600080fd5b506102d76107cf565b6040516102e49190612ad0565b60405180910390f35b3480156102f957600080fd5b506103026107d5565b60405161030f9190612b5a565b60405180910390f35b34801561032457600080fd5b5061032d6107de565b60405161033a9190612b84565b60405180910390f35b34801561034f57600080fd5b5061036a60048036038101906103659190612bcb565b610804565b005b34801561037857600080fd5b506103816108b6565b005b34801561038f57600080fd5b506103aa60048036038101906103a59190612bf8565b610987565b6040516103b79190612ad0565b60405180910390f35b3480156103cc57600080fd5b506103d56109d8565b005b3480156103e357600080fd5b506103fe60048036038101906103f99190612c25565b610b2b565b005b34801561040c57600080fd5b50610415610c0f565b005b34801561042357600080fd5b5061042c610d15565b6040516104399190612ad0565b60405180910390f35b34801561044e57600080fd5b50610457610d1b565b6040516104649190612b84565b60405180910390f35b34801561047957600080fd5b50610482610d44565b60405161048f9190612ad0565b60405180910390f35b3480156104a457600080fd5b506104ad610d4a565b6040516104ba9190612911565b60405180910390f35b3480156104cf57600080fd5b506104ea60048036038101906104e59190612c25565b610d87565b005b3480156104f857600080fd5b50610513600480360381019061050e9190612c52565b610e26565b005b34801561052157600080fd5b5061053c600480360381019061053791906129d1565b610f4c565b6040516105499190612a2c565b60405180910390f35b34801561055e57600080fd5b5061057960048036038101906105749190612bf8565b610f6a565b6040516105869190612a2c565b60405180910390f35b34801561059b57600080fd5b506105a4610f8a565b005b3480156105b257600080fd5b506105cd60048036038101906105c89190612d1e565b611063565b005b3480156105db57600080fd5b506105e461119d565b6040516105f19190612ad0565b60405180910390f35b34801561060657600080fd5b50610621600480360381019061061c9190612d7e565b6111a3565b60405161062e9190612ad0565b60405180910390f35b34801561064357600080fd5b5061065e60048036038101906106599190612c25565b61122a565b005b34801561066c57600080fd5b5061068760048036038101906106829190612bf8565b61130e565b005b60606040518060400160405280600981526020017f4f7261636c652041490000000000000000000000000000000000000000000000815250905090565b60006106da6106d36114cf565b84846114d7565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600064e8d4a51000905090565b60006107248484846116a0565b6107c4846107306114cf565b84600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061077a6114cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107bf9190612ded565b6114d7565b600190509392505050565b60175481565b60006006905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61080c6114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089090612e6d565b60405180910390fd5b80601460166101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108f76114cf565b73ffffffffffffffffffffffffffffffffffffffff16148061096d5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109556114cf565b73ffffffffffffffffffffffffffffffffffffffff16145b61097657600080fd5b600047905061098481612072565b50565b60006109d1600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120de565b9050919050565b6109e06114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6490612e6d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b336114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb790612e6d565b60405180910390fd5b600060155411610c05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfc90612eff565b60405180910390fd5b8060158190555050565b610c176114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9b90612e6d565b60405180910390fd5b60148054906101000a900460ff1615610cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce990612f6b565b60405180910390fd5b60016014806101000a81548160ff02191690831515021790555043600781905550565b60155481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60165481565b60606040518060400160405280600581526020017f4f52434149000000000000000000000000000000000000000000000000000000815250905090565b610d8f6114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1390612e6d565b60405180910390fd5b8060178190555050565b610e2e6114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb290612e6d565b60405180910390fd5b601460095411158015610ed157506014600b5411155b8015610ede575060148411155b8015610eeb575060148311155b610f2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2190612fd7565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000610f60610f596114cf565b84846116a0565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fcb6114cf565b73ffffffffffffffffffffffffffffffffffffffff1614806110415750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110296114cf565b73ffffffffffffffffffffffffffffffffffffffff16145b61104a57600080fd5b600061105530610987565b905061106081612145565b50565b61106b6114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ef90612e6d565b60405180910390fd5b60005b8383905081101561119757816004600086868581811061111e5761111d612ff7565b5b90506020020160208101906111339190612bf8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061118f90613026565b9150506110fb565b50505050565b60075481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112326114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b690612e6d565b60405180910390fd5b600060165411611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb906130e0565b60405180910390fd5b8060168190555050565b6113166114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139a90612e6d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611412576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140990613172565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153d90613204565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ac90613296565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116939190612ad0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361170f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170690613328565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361177e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611775906133ba565b60405180910390fd5b600081116117c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b89061344c565b60405180910390fd5b6117c9610d1b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118375750611807610d1b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d715760148054906101000a900460ff166118c457611856610d1b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146118c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ba906134de565b60405180910390fd5b5b601554811115611909576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119009061354a565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119ad5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6119ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e3906135dc565b60405180910390fd5b6007544311158015611a4b5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015611aa55750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611add57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611b3b576001601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611be85760165481611b9d84610987565b611ba791906135fc565b10611be7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bde906136a2565b60405180910390fd5b5b6000611bf330610987565b9050600060175482101590506015548210611c0e5760155491505b808015611c285750601460159054906101000a900460ff16155b8015611c825750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c9a5750601460169054906101000a900460ff165b8015611cf05750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d465750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d6e57611d5482612145565b60004790506000811115611d6c57611d6b47612072565b5b505b50505b600060019050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e185750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611ecb5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611eca5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611ed95760009050612060565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f845750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f9c57600854600c81905550600954600d819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120475750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561205f57600a54600c81905550600b54600d819055505b5b61206c848484846123be565b50505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120da573d6000803e3d6000fd5b5050565b6000600554821115612125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211c90613734565b60405180910390fd5b600061212f6123eb565b9050808361213d9190613783565b915050919050565b6001601460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561217d5761217c6137b4565b5b6040519080825280602002602001820160405280156121ab5781602001602082028036833780820191505090505b50905030816000815181106121c3576121c2612ff7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561226a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061228e91906137f8565b816001815181106122a2576122a1612ff7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061230930601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846114d7565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161236d95949392919061391e565b600060405180830381600087803b15801561238757600080fd5b505af115801561239b573d6000803e3d6000fd5b50505050506000601460156101000a81548160ff02191690831515021790555050565b806123cc576123cb61240f565b5b6123d784848461244c565b806123e5576123e4612609565b5b50505050565b60008060006123f861261d565b9150915080826124089190613783565b9250505090565b6000600c5414801561242357506000600d54145b61244a57600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061245e8761266c565b95509550955095509550955085600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124b59190612ded565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555084600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254391906135fc565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061258f816126d4565b6125998483612783565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125f69190612ad0565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006005549050600064e8d4a51000905064e8d4a510006005546126449190613783565b82101561265f5760055464e8d4a51000935093505050612668565b81819350935050505b9091565b60008060008060008060008060006126898a600c54600d546127af565b92509250925060006126996123eb565b905060008060006126ac8e87878761281b565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006126de6123eb565b9050600081836126ee9190613978565b905080600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461273b91906135fc565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b816005546127919190612ded565b600581905550806006546127a591906135fc565b6006819055505050565b600080600080606486886127c39190613978565b6127cd9190613783565b90506000606486896127df9190613978565b6127e99190613783565b9050600081838a6127fa9190612ded565b6128049190612ded565b905080838395509550955050505093509350939050565b600080600080848861282d9190613978565b90506000858861283d9190613978565b90506000868861284d9190613978565b9050600081838561285e9190612ded565b6128689190612ded565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128bb5780820151818401526020810190506128a0565b60008484015250505050565b6000601f19601f8301169050919050565b60006128e382612881565b6128ed818561288c565b93506128fd81856020860161289d565b612906816128c7565b840191505092915050565b6000602082019050818103600083015261292b81846128d8565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129688261293d565b9050919050565b6129788161295d565b811461298357600080fd5b50565b6000813590506129958161296f565b92915050565b6000819050919050565b6129ae8161299b565b81146129b957600080fd5b50565b6000813590506129cb816129a5565b92915050565b600080604083850312156129e8576129e7612933565b5b60006129f685828601612986565b9250506020612a07858286016129bc565b9150509250929050565b60008115159050919050565b612a2681612a11565b82525050565b6000602082019050612a416000830184612a1d565b92915050565b6000819050919050565b6000612a6c612a67612a628461293d565b612a47565b61293d565b9050919050565b6000612a7e82612a51565b9050919050565b6000612a9082612a73565b9050919050565b612aa081612a85565b82525050565b6000602082019050612abb6000830184612a97565b92915050565b612aca8161299b565b82525050565b6000602082019050612ae56000830184612ac1565b92915050565b600080600060608486031215612b0457612b03612933565b5b6000612b1286828701612986565b9350506020612b2386828701612986565b9250506040612b34868287016129bc565b9150509250925092565b600060ff82169050919050565b612b5481612b3e565b82525050565b6000602082019050612b6f6000830184612b4b565b92915050565b612b7e8161295d565b82525050565b6000602082019050612b996000830184612b75565b92915050565b612ba881612a11565b8114612bb357600080fd5b50565b600081359050612bc581612b9f565b92915050565b600060208284031215612be157612be0612933565b5b6000612bef84828501612bb6565b91505092915050565b600060208284031215612c0e57612c0d612933565b5b6000612c1c84828501612986565b91505092915050565b600060208284031215612c3b57612c3a612933565b5b6000612c49848285016129bc565b91505092915050565b60008060008060808587031215612c6c57612c6b612933565b5b6000612c7a878288016129bc565b9450506020612c8b878288016129bc565b9350506040612c9c878288016129bc565b9250506060612cad878288016129bc565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612cde57612cdd612cb9565b5b8235905067ffffffffffffffff811115612cfb57612cfa612cbe565b5b602083019150836020820283011115612d1757612d16612cc3565b5b9250929050565b600080600060408486031215612d3757612d36612933565b5b600084013567ffffffffffffffff811115612d5557612d54612938565b5b612d6186828701612cc8565b93509350506020612d7486828701612bb6565b9150509250925092565b60008060408385031215612d9557612d94612933565b5b6000612da385828601612986565b9250506020612db485828601612986565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612df88261299b565b9150612e038361299b565b9250828203905081811115612e1b57612e1a612dbe565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612e5760208361288c565b9150612e6282612e21565b602082019050919050565b60006020820190508181036000830152612e8681612e4a565b9050919050565b7f4d617820545820416d6f756e74206e6565647320746f206265206c617267657260008201527f207468616e203000000000000000000000000000000000000000000000000000602082015250565b6000612ee960278361288c565b9150612ef482612e8d565b604082019050919050565b60006020820190508181036000830152612f1881612edc565b9050919050565b7f54726164696e6720616c726561647920656e61626c6564000000000000000000600082015250565b6000612f5560178361288c565b9150612f6082612f1f565b602082019050919050565b60006020820190508181036000830152612f8481612f48565b9050919050565b7f5461782063616e277420626520686967686572207468616e2032300000000000600082015250565b6000612fc1601b8361288c565b9150612fcc82612f8b565b602082019050919050565b60006020820190508181036000830152612ff081612fb4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006130318261299b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361306357613062612dbe565b5b600182019050919050565b7f4d61782077616c6c65742073697a65206e6565647320746f206265206c61726760008201527f6572207468616e20300000000000000000000000000000000000000000000000602082015250565b60006130ca60298361288c565b91506130d58261306e565b604082019050919050565b600060208201905081810360008301526130f9816130bd565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061315c60268361288c565b915061316782613100565b604082019050919050565b6000602082019050818103600083015261318b8161314f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006131ee60248361288c565b91506131f982613192565b604082019050919050565b6000602082019050818103600083015261321d816131e1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061328060228361288c565b915061328b82613224565b604082019050919050565b600060208201905081810360008301526132af81613273565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061331260258361288c565b915061331d826132b6565b604082019050919050565b6000602082019050818103600083015261334181613305565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006133a460238361288c565b91506133af82613348565b604082019050919050565b600060208201905081810360008301526133d381613397565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061343660298361288c565b9150613441826133da565b604082019050919050565b6000602082019050818103600083015261346581613429565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006134c8603f8361288c565b91506134d38261346c565b604082019050919050565b600060208201905081810360008301526134f7816134bb565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613534601c8361288c565b915061353f826134fe565b602082019050919050565b6000602082019050818103600083015261356381613527565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006135c660238361288c565b91506135d18261356a565b604082019050919050565b600060208201905081810360008301526135f5816135b9565b9050919050565b60006136078261299b565b91506136128361299b565b925082820190508082111561362a57613629612dbe565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061368c60238361288c565b915061369782613630565b604082019050919050565b600060208201905081810360008301526136bb8161367f565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061371e602a8361288c565b9150613729826136c2565b604082019050919050565b6000602082019050818103600083015261374d81613711565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061378e8261299b565b91506137998361299b565b9250826137a9576137a8613754565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506137f28161296f565b92915050565b60006020828403121561380e5761380d612933565b5b600061381c848285016137e3565b91505092915050565b6000819050919050565b600061384a61384561384084613825565b612a47565b61299b565b9050919050565b61385a8161382f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138958161295d565b82525050565b60006138a7838361388c565b60208301905092915050565b6000602082019050919050565b60006138cb82613860565b6138d5818561386b565b93506138e08361387c565b8060005b838110156139115781516138f8888261389b565b9750613903836138b3565b9250506001810190506138e4565b5085935050505092915050565b600060a0820190506139336000830188612ac1565b6139406020830187613851565b818103604083015261395281866138c0565b90506139616060830185612b75565b61396e6080830184612ac1565b9695505050505050565b60006139838261299b565b915061398e8361299b565b925082820261399c8161299b565b915082820484148315176139b3576139b2612dbe565b5b509291505056fea264697066735822122034c6f04b97d9f3a5ae79a94f9153ec016aa0e8876c5300288deb2520d33debb864736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c80637d1db4a5116100ec578063bfd792841161008a578063d00efb2f11610064578063d00efb2f146105cf578063dd62ed3e146105fa578063ea1644d514610637578063f2fde38b14610660576101c2565b8063bfd7928414610552578063c3c8cd801461058f578063c492f046146105a6576101c2565b806395d89b41116100c657806395d89b411461049857806398a5c315146104c3578063a2a957bb146104ec578063a9059cbb14610515576101c2565b80637d1db4a5146104175780638da5cb5b146104425780638f9a55c01461046d576101c2565b806349bd5a5e1161015957806370a082311161013357806370a0823114610383578063715018a6146103c057806374010ece146103d75780637c519ffb14610400576101c2565b806349bd5a5e146103185780636d8aa8f8146103435780636fc3eaec1461036c576101c2565b806318160ddd1161019557806318160ddd1461025a57806323b872dd146102855780632fd689e3146102c2578063313ce567146102ed576101c2565b806306fdde03146101c7578063095ea7b3146101f25780631694505e1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc610689565b6040516101e99190612911565b60405180910390f35b3480156101fe57600080fd5b50610219600480360381019061021491906129d1565b6106c6565b6040516102269190612a2c565b60405180910390f35b34801561023b57600080fd5b506102446106e4565b6040516102519190612aa6565b60405180910390f35b34801561026657600080fd5b5061026f61070a565b60405161027c9190612ad0565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a79190612aeb565b610717565b6040516102b99190612a2c565b60405180910390f35b3480156102ce57600080fd5b506102d76107cf565b6040516102e49190612ad0565b60405180910390f35b3480156102f957600080fd5b506103026107d5565b60405161030f9190612b5a565b60405180910390f35b34801561032457600080fd5b5061032d6107de565b60405161033a9190612b84565b60405180910390f35b34801561034f57600080fd5b5061036a60048036038101906103659190612bcb565b610804565b005b34801561037857600080fd5b506103816108b6565b005b34801561038f57600080fd5b506103aa60048036038101906103a59190612bf8565b610987565b6040516103b79190612ad0565b60405180910390f35b3480156103cc57600080fd5b506103d56109d8565b005b3480156103e357600080fd5b506103fe60048036038101906103f99190612c25565b610b2b565b005b34801561040c57600080fd5b50610415610c0f565b005b34801561042357600080fd5b5061042c610d15565b6040516104399190612ad0565b60405180910390f35b34801561044e57600080fd5b50610457610d1b565b6040516104649190612b84565b60405180910390f35b34801561047957600080fd5b50610482610d44565b60405161048f9190612ad0565b60405180910390f35b3480156104a457600080fd5b506104ad610d4a565b6040516104ba9190612911565b60405180910390f35b3480156104cf57600080fd5b506104ea60048036038101906104e59190612c25565b610d87565b005b3480156104f857600080fd5b50610513600480360381019061050e9190612c52565b610e26565b005b34801561052157600080fd5b5061053c600480360381019061053791906129d1565b610f4c565b6040516105499190612a2c565b60405180910390f35b34801561055e57600080fd5b5061057960048036038101906105749190612bf8565b610f6a565b6040516105869190612a2c565b60405180910390f35b34801561059b57600080fd5b506105a4610f8a565b005b3480156105b257600080fd5b506105cd60048036038101906105c89190612d1e565b611063565b005b3480156105db57600080fd5b506105e461119d565b6040516105f19190612ad0565b60405180910390f35b34801561060657600080fd5b50610621600480360381019061061c9190612d7e565b6111a3565b60405161062e9190612ad0565b60405180910390f35b34801561064357600080fd5b5061065e60048036038101906106599190612c25565b61122a565b005b34801561066c57600080fd5b5061068760048036038101906106829190612bf8565b61130e565b005b60606040518060400160405280600981526020017f4f7261636c652041490000000000000000000000000000000000000000000000815250905090565b60006106da6106d36114cf565b84846114d7565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600064e8d4a51000905090565b60006107248484846116a0565b6107c4846107306114cf565b84600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061077a6114cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107bf9190612ded565b6114d7565b600190509392505050565b60175481565b60006006905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61080c6114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089090612e6d565b60405180910390fd5b80601460166101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108f76114cf565b73ffffffffffffffffffffffffffffffffffffffff16148061096d5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109556114cf565b73ffffffffffffffffffffffffffffffffffffffff16145b61097657600080fd5b600047905061098481612072565b50565b60006109d1600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120de565b9050919050565b6109e06114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6490612e6d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b336114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb790612e6d565b60405180910390fd5b600060155411610c05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfc90612eff565b60405180910390fd5b8060158190555050565b610c176114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9b90612e6d565b60405180910390fd5b60148054906101000a900460ff1615610cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce990612f6b565b60405180910390fd5b60016014806101000a81548160ff02191690831515021790555043600781905550565b60155481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60165481565b60606040518060400160405280600581526020017f4f52434149000000000000000000000000000000000000000000000000000000815250905090565b610d8f6114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1390612e6d565b60405180910390fd5b8060178190555050565b610e2e6114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb290612e6d565b60405180910390fd5b601460095411158015610ed157506014600b5411155b8015610ede575060148411155b8015610eeb575060148311155b610f2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2190612fd7565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000610f60610f596114cf565b84846116a0565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fcb6114cf565b73ffffffffffffffffffffffffffffffffffffffff1614806110415750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110296114cf565b73ffffffffffffffffffffffffffffffffffffffff16145b61104a57600080fd5b600061105530610987565b905061106081612145565b50565b61106b6114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ef90612e6d565b60405180910390fd5b60005b8383905081101561119757816004600086868581811061111e5761111d612ff7565b5b90506020020160208101906111339190612bf8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061118f90613026565b9150506110fb565b50505050565b60075481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112326114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b690612e6d565b60405180910390fd5b600060165411611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb906130e0565b60405180910390fd5b8060168190555050565b6113166114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139a90612e6d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611412576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140990613172565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153d90613204565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ac90613296565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116939190612ad0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361170f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170690613328565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361177e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611775906133ba565b60405180910390fd5b600081116117c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b89061344c565b60405180910390fd5b6117c9610d1b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118375750611807610d1b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d715760148054906101000a900460ff166118c457611856610d1b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146118c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ba906134de565b60405180910390fd5b5b601554811115611909576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119009061354a565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119ad5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6119ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e3906135dc565b60405180910390fd5b6007544311158015611a4b5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015611aa55750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611add57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611b3b576001601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611be85760165481611b9d84610987565b611ba791906135fc565b10611be7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bde906136a2565b60405180910390fd5b5b6000611bf330610987565b9050600060175482101590506015548210611c0e5760155491505b808015611c285750601460159054906101000a900460ff16155b8015611c825750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c9a5750601460169054906101000a900460ff165b8015611cf05750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d465750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d6e57611d5482612145565b60004790506000811115611d6c57611d6b47612072565b5b505b50505b600060019050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e185750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611ecb5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611eca5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611ed95760009050612060565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f845750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f9c57600854600c81905550600954600d819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120475750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561205f57600a54600c81905550600b54600d819055505b5b61206c848484846123be565b50505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120da573d6000803e3d6000fd5b5050565b6000600554821115612125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211c90613734565b60405180910390fd5b600061212f6123eb565b9050808361213d9190613783565b915050919050565b6001601460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561217d5761217c6137b4565b5b6040519080825280602002602001820160405280156121ab5781602001602082028036833780820191505090505b50905030816000815181106121c3576121c2612ff7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561226a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061228e91906137f8565b816001815181106122a2576122a1612ff7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061230930601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846114d7565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161236d95949392919061391e565b600060405180830381600087803b15801561238757600080fd5b505af115801561239b573d6000803e3d6000fd5b50505050506000601460156101000a81548160ff02191690831515021790555050565b806123cc576123cb61240f565b5b6123d784848461244c565b806123e5576123e4612609565b5b50505050565b60008060006123f861261d565b9150915080826124089190613783565b9250505090565b6000600c5414801561242357506000600d54145b61244a57600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061245e8761266c565b95509550955095509550955085600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124b59190612ded565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555084600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254391906135fc565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061258f816126d4565b6125998483612783565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125f69190612ad0565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006005549050600064e8d4a51000905064e8d4a510006005546126449190613783565b82101561265f5760055464e8d4a51000935093505050612668565b81819350935050505b9091565b60008060008060008060008060006126898a600c54600d546127af565b92509250925060006126996123eb565b905060008060006126ac8e87878761281b565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006126de6123eb565b9050600081836126ee9190613978565b905080600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461273b91906135fc565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b816005546127919190612ded565b600581905550806006546127a591906135fc565b6006819055505050565b600080600080606486886127c39190613978565b6127cd9190613783565b90506000606486896127df9190613978565b6127e99190613783565b9050600081838a6127fa9190612ded565b6128049190612ded565b905080838395509550955050505093509350939050565b600080600080848861282d9190613978565b90506000858861283d9190613978565b90506000868861284d9190613978565b9050600081838561285e9190612ded565b6128689190612ded565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128bb5780820151818401526020810190506128a0565b60008484015250505050565b6000601f19601f8301169050919050565b60006128e382612881565b6128ed818561288c565b93506128fd81856020860161289d565b612906816128c7565b840191505092915050565b6000602082019050818103600083015261292b81846128d8565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129688261293d565b9050919050565b6129788161295d565b811461298357600080fd5b50565b6000813590506129958161296f565b92915050565b6000819050919050565b6129ae8161299b565b81146129b957600080fd5b50565b6000813590506129cb816129a5565b92915050565b600080604083850312156129e8576129e7612933565b5b60006129f685828601612986565b9250506020612a07858286016129bc565b9150509250929050565b60008115159050919050565b612a2681612a11565b82525050565b6000602082019050612a416000830184612a1d565b92915050565b6000819050919050565b6000612a6c612a67612a628461293d565b612a47565b61293d565b9050919050565b6000612a7e82612a51565b9050919050565b6000612a9082612a73565b9050919050565b612aa081612a85565b82525050565b6000602082019050612abb6000830184612a97565b92915050565b612aca8161299b565b82525050565b6000602082019050612ae56000830184612ac1565b92915050565b600080600060608486031215612b0457612b03612933565b5b6000612b1286828701612986565b9350506020612b2386828701612986565b9250506040612b34868287016129bc565b9150509250925092565b600060ff82169050919050565b612b5481612b3e565b82525050565b6000602082019050612b6f6000830184612b4b565b92915050565b612b7e8161295d565b82525050565b6000602082019050612b996000830184612b75565b92915050565b612ba881612a11565b8114612bb357600080fd5b50565b600081359050612bc581612b9f565b92915050565b600060208284031215612be157612be0612933565b5b6000612bef84828501612bb6565b91505092915050565b600060208284031215612c0e57612c0d612933565b5b6000612c1c84828501612986565b91505092915050565b600060208284031215612c3b57612c3a612933565b5b6000612c49848285016129bc565b91505092915050565b60008060008060808587031215612c6c57612c6b612933565b5b6000612c7a878288016129bc565b9450506020612c8b878288016129bc565b9350506040612c9c878288016129bc565b9250506060612cad878288016129bc565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612cde57612cdd612cb9565b5b8235905067ffffffffffffffff811115612cfb57612cfa612cbe565b5b602083019150836020820283011115612d1757612d16612cc3565b5b9250929050565b600080600060408486031215612d3757612d36612933565b5b600084013567ffffffffffffffff811115612d5557612d54612938565b5b612d6186828701612cc8565b93509350506020612d7486828701612bb6565b9150509250925092565b60008060408385031215612d9557612d94612933565b5b6000612da385828601612986565b9250506020612db485828601612986565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612df88261299b565b9150612e038361299b565b9250828203905081811115612e1b57612e1a612dbe565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612e5760208361288c565b9150612e6282612e21565b602082019050919050565b60006020820190508181036000830152612e8681612e4a565b9050919050565b7f4d617820545820416d6f756e74206e6565647320746f206265206c617267657260008201527f207468616e203000000000000000000000000000000000000000000000000000602082015250565b6000612ee960278361288c565b9150612ef482612e8d565b604082019050919050565b60006020820190508181036000830152612f1881612edc565b9050919050565b7f54726164696e6720616c726561647920656e61626c6564000000000000000000600082015250565b6000612f5560178361288c565b9150612f6082612f1f565b602082019050919050565b60006020820190508181036000830152612f8481612f48565b9050919050565b7f5461782063616e277420626520686967686572207468616e2032300000000000600082015250565b6000612fc1601b8361288c565b9150612fcc82612f8b565b602082019050919050565b60006020820190508181036000830152612ff081612fb4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006130318261299b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361306357613062612dbe565b5b600182019050919050565b7f4d61782077616c6c65742073697a65206e6565647320746f206265206c61726760008201527f6572207468616e20300000000000000000000000000000000000000000000000602082015250565b60006130ca60298361288c565b91506130d58261306e565b604082019050919050565b600060208201905081810360008301526130f9816130bd565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061315c60268361288c565b915061316782613100565b604082019050919050565b6000602082019050818103600083015261318b8161314f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006131ee60248361288c565b91506131f982613192565b604082019050919050565b6000602082019050818103600083015261321d816131e1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061328060228361288c565b915061328b82613224565b604082019050919050565b600060208201905081810360008301526132af81613273565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061331260258361288c565b915061331d826132b6565b604082019050919050565b6000602082019050818103600083015261334181613305565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006133a460238361288c565b91506133af82613348565b604082019050919050565b600060208201905081810360008301526133d381613397565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061343660298361288c565b9150613441826133da565b604082019050919050565b6000602082019050818103600083015261346581613429565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006134c8603f8361288c565b91506134d38261346c565b604082019050919050565b600060208201905081810360008301526134f7816134bb565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613534601c8361288c565b915061353f826134fe565b602082019050919050565b6000602082019050818103600083015261356381613527565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006135c660238361288c565b91506135d18261356a565b604082019050919050565b600060208201905081810360008301526135f5816135b9565b9050919050565b60006136078261299b565b91506136128361299b565b925082820190508082111561362a57613629612dbe565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061368c60238361288c565b915061369782613630565b604082019050919050565b600060208201905081810360008301526136bb8161367f565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061371e602a8361288c565b9150613729826136c2565b604082019050919050565b6000602082019050818103600083015261374d81613711565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061378e8261299b565b91506137998361299b565b9250826137a9576137a8613754565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506137f28161296f565b92915050565b60006020828403121561380e5761380d612933565b5b600061381c848285016137e3565b91505092915050565b6000819050919050565b600061384a61384561384084613825565b612a47565b61299b565b9050919050565b61385a8161382f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138958161295d565b82525050565b60006138a7838361388c565b60208301905092915050565b6000602082019050919050565b60006138cb82613860565b6138d5818561386b565b93506138e08361387c565b8060005b838110156139115781516138f8888261389b565b9750613903836138b3565b9250506001810190506138e4565b5085935050505092915050565b600060a0820190506139336000830188612ac1565b6139406020830187613851565b818103604083015261395281866138c0565b90506139616060830185612b75565b61396e6080830184612ac1565b9695505050505050565b60006139838261299b565b915061398e8361299b565b925082820261399c8161299b565b915082820484148315176139b3576139b2612dbe565b5b509291505056fea264697066735822122034c6f04b97d9f3a5ae79a94f9153ec016aa0e8876c5300288deb2520d33debb864736f6c63430008120033

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.