ETH Price: $3,391.01 (+1.84%)

Token

Shiba Inu v3 (SHIBv3)
 

Overview

Max Total Supply

7,000,000,000 SHIBv3

Holders

21

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
6,553.125769663107788946 SHIBv3

Value
$0.00
0x96c23ef196e9cfd7d9f3abae91e5fafc3c736c91
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:
Shibv3

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-30
*/

pragma solidity ^0.8.14;
// SPDX-License-Identifier: Unlicensed
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;
    }

}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

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 Shibv3 is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "Shiba Inu v3";
    string private constant _symbol = "SHIBv3";
    uint8 private constant _decimals = 18;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 7 * 1e9 * 1e18;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 7;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 7;

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

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

    mapping (address => uint256) public _buyMap;
    
    address private marketingAddress;
    
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxWalletSize = 14 * 1e7 * 1e18 + 1 * 1e18;
    uint256 public _swapTokensAtAmount = 7 * 1e6 * 1e18;

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        marketingAddress = address(0x13e53c136fEc17aAA303b0375c9544A6b8af5101);

        _rOwned[_msgSender()] = _rTotal;

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

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[marketingAddress] = 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()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        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.div(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()) {

            //Trading open check
            if (!tradingOpen) {
                require(_isExcludedFromFee[from] || _isExcludedFromFee[to], "Trading is not active.");
            }

            if(to != uniswapV2Pair) {
				if (!_isExcludedFromFee[to]) {
					require(balanceOf(to) + amount < _maxWalletSize, "Balance exceeds max wallet size!");
				}
            }

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

            if(contractTokenBalance >= _swapTokensAtAmount * 20)
            {
                contractTokenBalance = _swapTokensAtAmount * 20;
            }

            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 lockTheSwap {
        payable(marketingAddress).transfer(amount);
    }

	function openTrading() public onlyOwner {
		tradingOpen = true;
	}
	
	function updateFees(uint256 redisFeeOnBuy, uint256 taxFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnSell) external {
		require(_msgSender() == marketingAddress, "Unauthorized");
		require(redisFeeOnBuy + taxFeeOnBuy + redisFeeOnSell + taxFeeOnSell <= 30, "Roundtrip <= 30%");
		_redisFeeOnBuy = redisFeeOnBuy;
		_taxFeeOnBuy = taxFeeOnBuy;
		_redisFeeOnSell = redisFeeOnSell;
		_taxFeeOnSell = taxFeeOnSell;
    }	
	
    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].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(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.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

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

}

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":"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":"","type":"address"}],"name":"_buyMap","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","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":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526b169e43a85eb381aa5800000060001962000020919062000646565b6000196200002f9190620006ad565b600655600060085560076009556000600a556007600b55600a54600c55600b54600d55600c54600e55600d54600f556000601360156101000a81548160ff0219169083151502179055506001601360166101000a81548160ff0219169083151502179055506a73ce2742f8c8a7b36400006014556a05ca4ec2a79a7f67000000601555348015620000bf57600080fd5b506000620000d2620005dc60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3507313e53c136fec17aaa303b0375c9544a6b8af5101601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060065460026000620001dc620005dc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e6919062000752565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200034e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000374919062000752565b6040518363ffffffff1660e01b81526004016200039392919062000795565b6020604051808303816000875af1158015620003b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d9919062000752565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560006200042f620005e460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000562620005dc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b169e43a85eb381aa58000000604051620005cd9190620007d3565b60405180910390a350620007f0565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000653826200060d565b915062000660836200060d565b92508262000673576200067262000617565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620006ba826200060d565b9150620006c7836200060d565b925082821015620006dd57620006dc6200067e565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200071a82620006ed565b9050919050565b6200072c816200070d565b81146200073857600080fd5b50565b6000815190506200074c8162000721565b92915050565b6000602082840312156200076b576200076a620006e8565b5b60006200077b848285016200073b565b91505092915050565b6200078f816200070d565b82525050565b6000604082019050620007ac600083018562000784565b620007bb602083018462000784565b9392505050565b620007cd816200060d565b82525050565b6000602082019050620007ea6000830184620007c2565b92915050565b61308480620008006000396000f3fe6080604052600436106101185760003560e01c8063715018a6116100a0578063a9059cbb11610064578063a9059cbb146103b2578063c6616ba1146103ef578063c9567bf914610418578063dd62ed3e1461042f578063f2fde38b1461046c5761011f565b8063715018a6146102dd5780637f2feddc146102f45780638da5cb5b146103315780638f9a55c01461035c57806395d89b41146103875761011f565b806323b872dd116100e757806323b872dd146101e25780632fd689e31461021f578063313ce5671461024a57806349bd5a5e1461027557806370a08231146102a05761011f565b806306fdde0314610124578063095ea7b31461014f5780631694505e1461018c57806318160ddd146101b75761011f565b3661011f57005b600080fd5b34801561013057600080fd5b50610139610495565b604051610146919061224b565b60405180910390f35b34801561015b57600080fd5b5061017660048036038101906101719190612306565b6104d2565b6040516101839190612361565b60405180910390f35b34801561019857600080fd5b506101a16104f0565b6040516101ae91906123db565b60405180910390f35b3480156101c357600080fd5b506101cc610516565b6040516101d99190612405565b60405180910390f35b3480156101ee57600080fd5b5061020960048036038101906102049190612420565b61052a565b6040516102169190612361565b60405180910390f35b34801561022b57600080fd5b50610234610603565b6040516102419190612405565b60405180910390f35b34801561025657600080fd5b5061025f610609565b60405161026c919061248f565b60405180910390f35b34801561028157600080fd5b5061028a610612565b60405161029791906124b9565b60405180910390f35b3480156102ac57600080fd5b506102c760048036038101906102c291906124d4565b610638565b6040516102d49190612405565b60405180910390f35b3480156102e957600080fd5b506102f2610689565b005b34801561030057600080fd5b5061031b600480360381019061031691906124d4565b6107dc565b6040516103289190612405565b60405180910390f35b34801561033d57600080fd5b506103466107f4565b60405161035391906124b9565b60405180910390f35b34801561036857600080fd5b5061037161081d565b60405161037e9190612405565b60405180910390f35b34801561039357600080fd5b5061039c610823565b6040516103a9919061224b565b60405180910390f35b3480156103be57600080fd5b506103d960048036038101906103d49190612306565b610860565b6040516103e69190612361565b60405180910390f35b3480156103fb57600080fd5b5061041660048036038101906104119190612501565b61087e565b005b34801561042457600080fd5b5061042d61099c565b005b34801561043b57600080fd5b5061045660048036038101906104519190612568565b610a4e565b6040516104639190612405565b60405180910390f35b34801561047857600080fd5b50610493600480360381019061048e91906124d4565b610ad5565b005b60606040518060400160405280600c81526020017f536869626120496e752076330000000000000000000000000000000000000000815250905090565b60006104e66104df610c96565b8484610c9e565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006b169e43a85eb381aa58000000905090565b6000610537848484610e67565b6105f884610543610c96565b6105f38560405180606001604052806028815260200161302760289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105a9610c96565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116999092919063ffffffff16565b610c9e565b600190509392505050565b60155481565b60006012905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610682600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fd565b9050919050565b610691610c96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461071e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610715906125f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60106020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60145481565b60606040518060400160405280600681526020017f5348494276330000000000000000000000000000000000000000000000000000815250905090565b600061087461086d610c96565b8484610e67565b6001905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108bf610c96565b73ffffffffffffffffffffffffffffffffffffffff1614610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090c90612660565b60405180910390fd5b601e8183858761092591906126af565b61092f91906126af565b61093991906126af565b111561097a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097190612751565b60405180910390fd5b836008819055508260098190555081600a8190555080600b8190555050505050565b6109a4610c96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a28906125f4565b60405180910390fd5b6001601360146101000a81548160ff021916908315150217905550565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610add610c96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b61906125f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610bd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd0906127e3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0490612875565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7390612907565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e5a9190612405565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ed6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecd90612999565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3c90612a2b565b60405180910390fd5b60008111610f88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7f90612abd565b60405180910390fd5b610f906107f4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610ffe5750610fce6107f4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561139857601360149054906101000a900460ff166110f857600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806110b85750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6110f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ee90612b29565b60405180910390fd5b5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146111f757600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166111f657601454816111ab84610638565b6111b591906126af565b106111f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ec90612b95565b60405180910390fd5b5b5b600061120230610638565b905060006015548210159050601460155461121d9190612bb5565b82106112355760146015546112329190612bb5565b91505b80801561124f5750601360159054906101000a900460ff16155b80156112a95750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156112c15750601360169054906101000a900460ff165b80156113175750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561136d5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156113955761137b8261176b565b6000479050600081111561139357611392476119e4565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061143f5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806114f25750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156114f15750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156115005760009050611687565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156115ab5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156115c357600854600c81905550600954600d819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561166e5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561168657600a54600c81905550600b54600d819055505b5b61169384848484611a86565b50505050565b60008383111582906116e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d8919061224b565b60405180910390fd5b50600083856116f09190612c0f565b9050809150509392505050565b6000600654821115611744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173b90612cb5565b60405180910390fd5b600061174e611ab3565b90506117638184611ade90919063ffffffff16565b915050919050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156117a3576117a2612cd5565b5b6040519080825280602002602001820160405280156117d15781602001602082028036833780820191505090505b50905030816000815181106117e9576117e8612d04565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611890573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b49190612d48565b816001815181106118c8576118c7612d04565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061192f30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610c9e565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611993959493929190612e6e565b600060405180830381600087803b1580156119ad57600080fd5b505af11580156119c1573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b6001601360156101000a81548160ff021916908315150217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611a67573d6000803e3d6000fd5b506000601360156101000a81548160ff02191690831515021790555050565b80611a9457611a93611b28565b5b611a9f848484611b65565b80611aad57611aac611d30565b5b50505050565b6000806000611ac0611d44565b91509150611ad78183611ade90919063ffffffff16565b9250505090565b6000611b2083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611daf565b905092915050565b6000600c54148015611b3c57506000600d54145b611b6357600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080611b7787611e12565b955095509550955095509550611bd586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e7a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c6a85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ec490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611cb681611f22565b611cc08483611fdf565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611d1d9190612405565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b6000806000600654905060006b169e43a85eb381aa580000009050611d806b169e43a85eb381aa58000000600654611ade90919063ffffffff16565b821015611da2576006546b169e43a85eb381aa58000000935093505050611dab565b81819350935050505b9091565b60008083118290611df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ded919061224b565b60405180910390fd5b5060008385611e059190612ef7565b9050809150509392505050565b6000806000806000806000806000611e2f8a600c54600d54612019565b9250925092506000611e3f611ab3565b90506000806000611e528e8787876120af565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000611ebc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611699565b905092915050565b6000808284611ed391906126af565b905083811015611f18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0f90612f74565b60405180910390fd5b8091505092915050565b6000611f2c611ab3565b90506000611f43828461213890919063ffffffff16565b9050611f9781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ec490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b611ff482600654611e7a90919063ffffffff16565b60068190555061200f81600754611ec490919063ffffffff16565b6007819055505050565b6000806000806120456064612037888a61213890919063ffffffff16565b611ade90919063ffffffff16565b9050600061206f6064612061888b61213890919063ffffffff16565b611ade90919063ffffffff16565b905060006120988261208a858c611e7a90919063ffffffff16565b611e7a90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806120c8858961213890919063ffffffff16565b905060006120df868961213890919063ffffffff16565b905060006120f6878961213890919063ffffffff16565b9050600061211f826121118587611e7a90919063ffffffff16565b611e7a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080830361214a57600090506121ac565b600082846121589190612bb5565b90508284826121679190612ef7565b146121a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219e90613006565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156121ec5780820151818401526020810190506121d1565b838111156121fb576000848401525b50505050565b6000601f19601f8301169050919050565b600061221d826121b2565b61222781856121bd565b93506122378185602086016121ce565b61224081612201565b840191505092915050565b600060208201905081810360008301526122658184612212565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061229d82612272565b9050919050565b6122ad81612292565b81146122b857600080fd5b50565b6000813590506122ca816122a4565b92915050565b6000819050919050565b6122e3816122d0565b81146122ee57600080fd5b50565b600081359050612300816122da565b92915050565b6000806040838503121561231d5761231c61226d565b5b600061232b858286016122bb565b925050602061233c858286016122f1565b9150509250929050565b60008115159050919050565b61235b81612346565b82525050565b60006020820190506123766000830184612352565b92915050565b6000819050919050565b60006123a161239c61239784612272565b61237c565b612272565b9050919050565b60006123b382612386565b9050919050565b60006123c5826123a8565b9050919050565b6123d5816123ba565b82525050565b60006020820190506123f060008301846123cc565b92915050565b6123ff816122d0565b82525050565b600060208201905061241a60008301846123f6565b92915050565b6000806000606084860312156124395761243861226d565b5b6000612447868287016122bb565b9350506020612458868287016122bb565b9250506040612469868287016122f1565b9150509250925092565b600060ff82169050919050565b61248981612473565b82525050565b60006020820190506124a46000830184612480565b92915050565b6124b381612292565b82525050565b60006020820190506124ce60008301846124aa565b92915050565b6000602082840312156124ea576124e961226d565b5b60006124f8848285016122bb565b91505092915050565b6000806000806080858703121561251b5761251a61226d565b5b6000612529878288016122f1565b945050602061253a878288016122f1565b935050604061254b878288016122f1565b925050606061255c878288016122f1565b91505092959194509250565b6000806040838503121561257f5761257e61226d565b5b600061258d858286016122bb565b925050602061259e858286016122bb565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006125de6020836121bd565b91506125e9826125a8565b602082019050919050565b6000602082019050818103600083015261260d816125d1565b9050919050565b7f556e617574686f72697a65640000000000000000000000000000000000000000600082015250565b600061264a600c836121bd565b915061265582612614565b602082019050919050565b600060208201905081810360008301526126798161263d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006126ba826122d0565b91506126c5836122d0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156126fa576126f9612680565b5b828201905092915050565b7f526f756e6474726970203c3d2033302500000000000000000000000000000000600082015250565b600061273b6010836121bd565b915061274682612705565b602082019050919050565b6000602082019050818103600083015261276a8161272e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006127cd6026836121bd565b91506127d882612771565b604082019050919050565b600060208201905081810360008301526127fc816127c0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061285f6024836121bd565b915061286a82612803565b604082019050919050565b6000602082019050818103600083015261288e81612852565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006128f16022836121bd565b91506128fc82612895565b604082019050919050565b60006020820190508181036000830152612920816128e4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006129836025836121bd565b915061298e82612927565b604082019050919050565b600060208201905081810360008301526129b281612976565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612a156023836121bd565b9150612a20826129b9565b604082019050919050565b60006020820190508181036000830152612a4481612a08565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612aa76029836121bd565b9150612ab282612a4b565b604082019050919050565b60006020820190508181036000830152612ad681612a9a565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000612b136016836121bd565b9150612b1e82612add565b602082019050919050565b60006020820190508181036000830152612b4281612b06565b9050919050565b7f42616c616e63652065786365656473206d61782077616c6c65742073697a6521600082015250565b6000612b7f6020836121bd565b9150612b8a82612b49565b602082019050919050565b60006020820190508181036000830152612bae81612b72565b9050919050565b6000612bc0826122d0565b9150612bcb836122d0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612c0457612c03612680565b5b828202905092915050565b6000612c1a826122d0565b9150612c25836122d0565b925082821015612c3857612c37612680565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000612c9f602a836121bd565b9150612caa82612c43565b604082019050919050565b60006020820190508181036000830152612cce81612c92565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612d42816122a4565b92915050565b600060208284031215612d5e57612d5d61226d565b5b6000612d6c84828501612d33565b91505092915050565b6000819050919050565b6000612d9a612d95612d9084612d75565b61237c565b6122d0565b9050919050565b612daa81612d7f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612de581612292565b82525050565b6000612df78383612ddc565b60208301905092915050565b6000602082019050919050565b6000612e1b82612db0565b612e258185612dbb565b9350612e3083612dcc565b8060005b83811015612e61578151612e488882612deb565b9750612e5383612e03565b925050600181019050612e34565b5085935050505092915050565b600060a082019050612e8360008301886123f6565b612e906020830187612da1565b8181036040830152612ea28186612e10565b9050612eb160608301856124aa565b612ebe60808301846123f6565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612f02826122d0565b9150612f0d836122d0565b925082612f1d57612f1c612ec8565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612f5e601b836121bd565b9150612f6982612f28565b602082019050919050565b60006020820190508181036000830152612f8d81612f51565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612ff06021836121bd565b9150612ffb82612f94565b604082019050919050565b6000602082019050818103600083015261301f81612fe3565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220784d02adae11cf5170ac4e367df03f43345023e307753e5820a498d68950618164736f6c634300080e0033

Deployed Bytecode

0x6080604052600436106101185760003560e01c8063715018a6116100a0578063a9059cbb11610064578063a9059cbb146103b2578063c6616ba1146103ef578063c9567bf914610418578063dd62ed3e1461042f578063f2fde38b1461046c5761011f565b8063715018a6146102dd5780637f2feddc146102f45780638da5cb5b146103315780638f9a55c01461035c57806395d89b41146103875761011f565b806323b872dd116100e757806323b872dd146101e25780632fd689e31461021f578063313ce5671461024a57806349bd5a5e1461027557806370a08231146102a05761011f565b806306fdde0314610124578063095ea7b31461014f5780631694505e1461018c57806318160ddd146101b75761011f565b3661011f57005b600080fd5b34801561013057600080fd5b50610139610495565b604051610146919061224b565b60405180910390f35b34801561015b57600080fd5b5061017660048036038101906101719190612306565b6104d2565b6040516101839190612361565b60405180910390f35b34801561019857600080fd5b506101a16104f0565b6040516101ae91906123db565b60405180910390f35b3480156101c357600080fd5b506101cc610516565b6040516101d99190612405565b60405180910390f35b3480156101ee57600080fd5b5061020960048036038101906102049190612420565b61052a565b6040516102169190612361565b60405180910390f35b34801561022b57600080fd5b50610234610603565b6040516102419190612405565b60405180910390f35b34801561025657600080fd5b5061025f610609565b60405161026c919061248f565b60405180910390f35b34801561028157600080fd5b5061028a610612565b60405161029791906124b9565b60405180910390f35b3480156102ac57600080fd5b506102c760048036038101906102c291906124d4565b610638565b6040516102d49190612405565b60405180910390f35b3480156102e957600080fd5b506102f2610689565b005b34801561030057600080fd5b5061031b600480360381019061031691906124d4565b6107dc565b6040516103289190612405565b60405180910390f35b34801561033d57600080fd5b506103466107f4565b60405161035391906124b9565b60405180910390f35b34801561036857600080fd5b5061037161081d565b60405161037e9190612405565b60405180910390f35b34801561039357600080fd5b5061039c610823565b6040516103a9919061224b565b60405180910390f35b3480156103be57600080fd5b506103d960048036038101906103d49190612306565b610860565b6040516103e69190612361565b60405180910390f35b3480156103fb57600080fd5b5061041660048036038101906104119190612501565b61087e565b005b34801561042457600080fd5b5061042d61099c565b005b34801561043b57600080fd5b5061045660048036038101906104519190612568565b610a4e565b6040516104639190612405565b60405180910390f35b34801561047857600080fd5b50610493600480360381019061048e91906124d4565b610ad5565b005b60606040518060400160405280600c81526020017f536869626120496e752076330000000000000000000000000000000000000000815250905090565b60006104e66104df610c96565b8484610c9e565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006b169e43a85eb381aa58000000905090565b6000610537848484610e67565b6105f884610543610c96565b6105f38560405180606001604052806028815260200161302760289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105a9610c96565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116999092919063ffffffff16565b610c9e565b600190509392505050565b60155481565b60006012905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610682600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fd565b9050919050565b610691610c96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461071e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610715906125f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60106020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60145481565b60606040518060400160405280600681526020017f5348494276330000000000000000000000000000000000000000000000000000815250905090565b600061087461086d610c96565b8484610e67565b6001905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108bf610c96565b73ffffffffffffffffffffffffffffffffffffffff1614610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090c90612660565b60405180910390fd5b601e8183858761092591906126af565b61092f91906126af565b61093991906126af565b111561097a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097190612751565b60405180910390fd5b836008819055508260098190555081600a8190555080600b8190555050505050565b6109a4610c96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a28906125f4565b60405180910390fd5b6001601360146101000a81548160ff021916908315150217905550565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610add610c96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b61906125f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610bd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd0906127e3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0490612875565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7390612907565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e5a9190612405565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ed6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecd90612999565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3c90612a2b565b60405180910390fd5b60008111610f88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7f90612abd565b60405180910390fd5b610f906107f4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610ffe5750610fce6107f4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561139857601360149054906101000a900460ff166110f857600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806110b85750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6110f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ee90612b29565b60405180910390fd5b5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146111f757600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166111f657601454816111ab84610638565b6111b591906126af565b106111f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ec90612b95565b60405180910390fd5b5b5b600061120230610638565b905060006015548210159050601460155461121d9190612bb5565b82106112355760146015546112329190612bb5565b91505b80801561124f5750601360159054906101000a900460ff16155b80156112a95750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156112c15750601360169054906101000a900460ff165b80156113175750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561136d5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156113955761137b8261176b565b6000479050600081111561139357611392476119e4565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061143f5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806114f25750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156114f15750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156115005760009050611687565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156115ab5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156115c357600854600c81905550600954600d819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561166e5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561168657600a54600c81905550600b54600d819055505b5b61169384848484611a86565b50505050565b60008383111582906116e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d8919061224b565b60405180910390fd5b50600083856116f09190612c0f565b9050809150509392505050565b6000600654821115611744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173b90612cb5565b60405180910390fd5b600061174e611ab3565b90506117638184611ade90919063ffffffff16565b915050919050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156117a3576117a2612cd5565b5b6040519080825280602002602001820160405280156117d15781602001602082028036833780820191505090505b50905030816000815181106117e9576117e8612d04565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611890573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b49190612d48565b816001815181106118c8576118c7612d04565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061192f30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610c9e565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611993959493929190612e6e565b600060405180830381600087803b1580156119ad57600080fd5b505af11580156119c1573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b6001601360156101000a81548160ff021916908315150217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611a67573d6000803e3d6000fd5b506000601360156101000a81548160ff02191690831515021790555050565b80611a9457611a93611b28565b5b611a9f848484611b65565b80611aad57611aac611d30565b5b50505050565b6000806000611ac0611d44565b91509150611ad78183611ade90919063ffffffff16565b9250505090565b6000611b2083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611daf565b905092915050565b6000600c54148015611b3c57506000600d54145b611b6357600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080611b7787611e12565b955095509550955095509550611bd586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e7a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c6a85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ec490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611cb681611f22565b611cc08483611fdf565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611d1d9190612405565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b6000806000600654905060006b169e43a85eb381aa580000009050611d806b169e43a85eb381aa58000000600654611ade90919063ffffffff16565b821015611da2576006546b169e43a85eb381aa58000000935093505050611dab565b81819350935050505b9091565b60008083118290611df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ded919061224b565b60405180910390fd5b5060008385611e059190612ef7565b9050809150509392505050565b6000806000806000806000806000611e2f8a600c54600d54612019565b9250925092506000611e3f611ab3565b90506000806000611e528e8787876120af565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000611ebc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611699565b905092915050565b6000808284611ed391906126af565b905083811015611f18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0f90612f74565b60405180910390fd5b8091505092915050565b6000611f2c611ab3565b90506000611f43828461213890919063ffffffff16565b9050611f9781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ec490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b611ff482600654611e7a90919063ffffffff16565b60068190555061200f81600754611ec490919063ffffffff16565b6007819055505050565b6000806000806120456064612037888a61213890919063ffffffff16565b611ade90919063ffffffff16565b9050600061206f6064612061888b61213890919063ffffffff16565b611ade90919063ffffffff16565b905060006120988261208a858c611e7a90919063ffffffff16565b611e7a90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806120c8858961213890919063ffffffff16565b905060006120df868961213890919063ffffffff16565b905060006120f6878961213890919063ffffffff16565b9050600061211f826121118587611e7a90919063ffffffff16565b611e7a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080830361214a57600090506121ac565b600082846121589190612bb5565b90508284826121679190612ef7565b146121a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219e90613006565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156121ec5780820151818401526020810190506121d1565b838111156121fb576000848401525b50505050565b6000601f19601f8301169050919050565b600061221d826121b2565b61222781856121bd565b93506122378185602086016121ce565b61224081612201565b840191505092915050565b600060208201905081810360008301526122658184612212565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061229d82612272565b9050919050565b6122ad81612292565b81146122b857600080fd5b50565b6000813590506122ca816122a4565b92915050565b6000819050919050565b6122e3816122d0565b81146122ee57600080fd5b50565b600081359050612300816122da565b92915050565b6000806040838503121561231d5761231c61226d565b5b600061232b858286016122bb565b925050602061233c858286016122f1565b9150509250929050565b60008115159050919050565b61235b81612346565b82525050565b60006020820190506123766000830184612352565b92915050565b6000819050919050565b60006123a161239c61239784612272565b61237c565b612272565b9050919050565b60006123b382612386565b9050919050565b60006123c5826123a8565b9050919050565b6123d5816123ba565b82525050565b60006020820190506123f060008301846123cc565b92915050565b6123ff816122d0565b82525050565b600060208201905061241a60008301846123f6565b92915050565b6000806000606084860312156124395761243861226d565b5b6000612447868287016122bb565b9350506020612458868287016122bb565b9250506040612469868287016122f1565b9150509250925092565b600060ff82169050919050565b61248981612473565b82525050565b60006020820190506124a46000830184612480565b92915050565b6124b381612292565b82525050565b60006020820190506124ce60008301846124aa565b92915050565b6000602082840312156124ea576124e961226d565b5b60006124f8848285016122bb565b91505092915050565b6000806000806080858703121561251b5761251a61226d565b5b6000612529878288016122f1565b945050602061253a878288016122f1565b935050604061254b878288016122f1565b925050606061255c878288016122f1565b91505092959194509250565b6000806040838503121561257f5761257e61226d565b5b600061258d858286016122bb565b925050602061259e858286016122bb565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006125de6020836121bd565b91506125e9826125a8565b602082019050919050565b6000602082019050818103600083015261260d816125d1565b9050919050565b7f556e617574686f72697a65640000000000000000000000000000000000000000600082015250565b600061264a600c836121bd565b915061265582612614565b602082019050919050565b600060208201905081810360008301526126798161263d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006126ba826122d0565b91506126c5836122d0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156126fa576126f9612680565b5b828201905092915050565b7f526f756e6474726970203c3d2033302500000000000000000000000000000000600082015250565b600061273b6010836121bd565b915061274682612705565b602082019050919050565b6000602082019050818103600083015261276a8161272e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006127cd6026836121bd565b91506127d882612771565b604082019050919050565b600060208201905081810360008301526127fc816127c0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061285f6024836121bd565b915061286a82612803565b604082019050919050565b6000602082019050818103600083015261288e81612852565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006128f16022836121bd565b91506128fc82612895565b604082019050919050565b60006020820190508181036000830152612920816128e4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006129836025836121bd565b915061298e82612927565b604082019050919050565b600060208201905081810360008301526129b281612976565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612a156023836121bd565b9150612a20826129b9565b604082019050919050565b60006020820190508181036000830152612a4481612a08565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612aa76029836121bd565b9150612ab282612a4b565b604082019050919050565b60006020820190508181036000830152612ad681612a9a565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000612b136016836121bd565b9150612b1e82612add565b602082019050919050565b60006020820190508181036000830152612b4281612b06565b9050919050565b7f42616c616e63652065786365656473206d61782077616c6c65742073697a6521600082015250565b6000612b7f6020836121bd565b9150612b8a82612b49565b602082019050919050565b60006020820190508181036000830152612bae81612b72565b9050919050565b6000612bc0826122d0565b9150612bcb836122d0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612c0457612c03612680565b5b828202905092915050565b6000612c1a826122d0565b9150612c25836122d0565b925082821015612c3857612c37612680565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000612c9f602a836121bd565b9150612caa82612c43565b604082019050919050565b60006020820190508181036000830152612cce81612c92565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612d42816122a4565b92915050565b600060208284031215612d5e57612d5d61226d565b5b6000612d6c84828501612d33565b91505092915050565b6000819050919050565b6000612d9a612d95612d9084612d75565b61237c565b6122d0565b9050919050565b612daa81612d7f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612de581612292565b82525050565b6000612df78383612ddc565b60208301905092915050565b6000602082019050919050565b6000612e1b82612db0565b612e258185612dbb565b9350612e3083612dcc565b8060005b83811015612e61578151612e488882612deb565b9750612e5383612e03565b925050600181019050612e34565b5085935050505092915050565b600060a082019050612e8360008301886123f6565b612e906020830187612da1565b8181036040830152612ea28186612e10565b9050612eb160608301856124aa565b612ebe60808301846123f6565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612f02826122d0565b9150612f0d836122d0565b925082612f1d57612f1c612ec8565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612f5e601b836121bd565b9150612f6982612f28565b602082019050919050565b60006020820190508181036000830152612f8d81612f51565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612ff06021836121bd565b9150612ffb82612f94565b604082019050919050565b6000602082019050818103600083015261301f81612fe3565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220784d02adae11cf5170ac4e367df03f43345023e307753e5820a498d68950618164736f6c634300080e0033

Deployed Bytecode Sourcemap

4067:11616:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6300:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7225:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5214:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6577:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7426:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5469:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6486:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5262:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6680:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1554:148;;;;;;;;;;;;;:::i;:::-;;5113:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1340:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5404:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6391:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6826:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11848:424;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11774:68;;;;;;;;;;;;;:::i;:::-;;7033:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1710:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6300:83;6337:13;6370:5;;;;;;;;;;;;;;;;;6363:12;;6300:83;:::o;7225:193::-;7327:4;7349:39;7358:12;:10;:12::i;:::-;7372:7;7381:6;7349:8;:39::i;:::-;7406:4;7399:11;;7225:193;;;;:::o;5214:41::-;;;;;;;;;;;;;:::o;6577:95::-;6630:7;4619:14;6650;;6577:95;:::o;7426:446::-;7558:4;7575:36;7585:6;7593:9;7604:6;7575:9;:36::i;:::-;7622:220;7645:6;7666:12;:10;:12::i;:::-;7693:138;7749:6;7693:138;;;;;;;;;;;;;;;;;:11;:19;7705:6;7693:19;;;;;;;;;;;;;;;:33;7713:12;:10;:12::i;:::-;7693:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7622:8;:220::i;:::-;7860:4;7853:11;;7426:446;;;;;:::o;5469:51::-;;;;:::o;6486:83::-;6527:5;4292:2;6545:16;;6486:83;:::o;5262:28::-;;;;;;;;;;;;;:::o;6680:138::-;6746:7;6773:37;6793:7;:16;6801:7;6793:16;;;;;;;;;;;;;;;;6773:19;:37::i;:::-;6766:44;;6680:138;;;:::o;1554:148::-;1477:12;:10;:12::i;:::-;1467:22;;:6;;;;;;;;;;:22;;;1459:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1661:1:::1;1624:40;;1645:6;::::0;::::1;;;;;;;;1624:40;;;;;;;;;;;;1692:1;1675:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1554:148::o:0;5113:43::-;;;;;;;;;;;;;;;;;:::o;1340:79::-;1378:7;1405:6;;;;;;;;;;;1398:13;;1340:79;:::o;5404:58::-;;;;:::o;6391:87::-;6430:13;6463:7;;;;;;;;;;;;;;;;;6456:14;;6391:87;:::o;6826:199::-;6931:4;6953:42;6963:12;:10;:12::i;:::-;6977:9;6988:6;6953:9;:42::i;:::-;7013:4;7006:11;;6826:199;;;;:::o;11848:424::-;11996:16;;;;;;;;;;;11980:32;;:12;:10;:12::i;:::-;:32;;;11972:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12105:2;12089:12;12072:14;12058:11;12042:13;:27;;;;:::i;:::-;:44;;;;:::i;:::-;:59;;;;:::i;:::-;:65;;12034:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;12150:13;12133:14;:30;;;;12183:11;12168:12;:26;;;;12217:14;12199:15;:32;;;;12252:12;12236:13;:28;;;;11848:424;;;;:::o;11774:68::-;1477:12;:10;:12::i;:::-;1467:22;;:6;;;;;;;;;;:22;;;1459:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11833:4:::1;11819:11;;:18;;;;;;;;;;;;;;;;;;11774:68::o:0;7033:184::-;7150:7;7182:11;:18;7194:5;7182:18;;;;;;;;;;;;;;;:27;7201:7;7182:27;;;;;;;;;;;;;;;;7175:34;;7033:184;;;;:::o;1710:244::-;1477:12;:10;:12::i;:::-;1467:22;;:6;;;;;;;;;;:22;;;1459:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1819:1:::1;1799:22;;:8;:22;;::::0;1791:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1909:8;1880:38;;1901:6;::::0;::::1;;;;;;;;1880:38;;;;;;;;;;;;1938:8;1929:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1710:244:::0;:::o;99:98::-;152:7;179:10;172:17;;99:98;:::o;8563:369::-;8707:1;8690:19;;:5;:19;;;8682:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8788:1;8769:21;;:7;:21;;;8761:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8870:6;8840:11;:18;8852:5;8840:18;;;;;;;;;;;;;;;:27;8859:7;8840:27;;;;;;;;;;;;;;;:36;;;;8908:7;8892:32;;8901:5;8892:32;;;8917:6;8892:32;;;;;;:::i;:::-;;;;;;;;8563:369;;;:::o;8940:2211::-;9078:1;9062:18;;:4;:18;;;9054:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9155:1;9141:16;;:2;:16;;;9133:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9225:1;9216:6;:10;9208:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9297:7;:5;:7::i;:::-;9289:15;;:4;:15;;;;:32;;;;;9314:7;:5;:7::i;:::-;9308:13;;:2;:13;;;;9289:32;9285:1140;;;9379:11;;;;;;;;;;;9374:138;;9419:18;:24;9438:4;9419:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;9447:18;:22;9466:2;9447:22;;;;;;;;;;;;;;;;;;;;;;;;;9419:50;9411:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;9374:138;9537:13;;;;;;;;;;;9531:19;;:2;:19;;;9528:175;;9564:18;:22;9583:2;9564:22;;;;;;;;;;;;;;;;;;;;;;;;;9559:129;;9629:14;;9620:6;9604:13;9614:2;9604:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9596:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;9559:129;9528:175;9719:28;9750:24;9768:4;9750:9;:24::i;:::-;9719:55;;9789:12;9828:19;;9804:20;:43;;9789:58;;9913:2;9891:19;;:24;;;;:::i;:::-;9867:20;:48;9864:148;;9994:2;9972:19;;:24;;;;:::i;:::-;9949:47;;9864:148;10032:7;:18;;;;;10044:6;;;;;;;;;;;10043:7;10032:18;:43;;;;;10062:13;;;;;;;;;;;10054:21;;:4;:21;;;;10032:43;:58;;;;;10079:11;;;;;;;;;;;10032:58;:87;;;;;10095:18;:24;10114:4;10095:24;;;;;;;;;;;;;;;;;;;;;;;;;10094:25;10032:87;:114;;;;;10124:18;:22;10143:2;10124:22;;;;;;;;;;;;;;;;;;;;;;;;;10123:23;10032:114;10028:386;;;10167:38;10184:20;10167:16;:38::i;:::-;10224:26;10253:21;10224:50;;10318:1;10297:18;:22;10293:106;;;10344:35;10357:21;10344:12;:35::i;:::-;10293:106;10148:266;10028:386;9323:1102;;9285:1140;10437:12;10452:4;10437:19;;10501:18;:24;10520:4;10501:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10529:18;:22;10548:2;10529:22;;;;;;;;;;;;;;;;;;;;;;;;;10501:50;10500:102;;;;10565:13;;;;;;;;;;;10557:21;;:4;:21;;;;:44;;;;;10588:13;;;;;;;;;;;10582:19;;:2;:19;;;;10557:44;10500:102;10496:594;;;10629:5;10619:15;;10496:594;;;10712:13;;;;;;;;;;;10704:21;;:4;:21;;;:55;;;;;10743:15;;;;;;;;;;;10729:30;;:2;:30;;;;10704:55;10701:162;;;10792:14;;10780:9;:26;;;;10835:12;;10825:7;:22;;;;10701:162;10922:13;;;;;;;;;;;10916:19;;:2;:19;;;:55;;;;;10955:15;;;;;;;;;;;10939:32;;:4;:32;;;;10916:55;10912:165;;;11004:15;;10992:9;:27;;;;11048:13;;11038:7;:23;;;;10912:165;10496:594;11102:41;11117:4;11123:2;11127:6;11135:7;11102:14;:41::i;:::-;9043:2108;8940:2211;;;:::o;2318:224::-;2438:7;2471:1;2466;:6;;2474:12;2458:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2498:9;2514:1;2510;:5;;;;:::i;:::-;2498:17;;2533:1;2526:8;;;2318:224;;;;;:::o;7880:323::-;7975:7;8033;;8022;:18;;8000:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8121:19;8143:10;:8;:10::i;:::-;8121:32;;8171:24;8183:11;8171:7;:11;;:24;;;;:::i;:::-;8164:31;;;7880:323;;;:::o;11159:483::-;5570:4;5561:6;;:13;;;;;;;;;;;;;;;;;;11237:21:::1;11275:1;11261:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11237:40;;11306:4;11288;11293:1;11288:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11332:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11322:4;11327:1;11322:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11365:62;11382:4;11397:15;;;;;;;;;;;11415:11;11365:8;:62::i;:::-;11438:15;;;;;;;;;;;:66;;;11519:11;11545:1;11561:4;11588;11608:15;11438:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11226:416;5606:5:::0;5597:6;;:14;;;;;;;;;;;;;;;;;;11159:483;:::o;11650:119::-;5570:4;5561:6;;:13;;;;;;;;;;;;;;;;;;11727:16:::1;;;;;;;;;;;11719:34;;:42;11754:6;11719:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;5606:5:::0;5597:6;;:14;;;;;;;;;;;;;;;;;;11650:119;:::o;12282:282::-;12438:7;12433:28;;12447:14;:12;:14::i;:::-;12433:28;12472:44;12490:6;12498:9;12509:6;12472:17;:44::i;:::-;12532:7;12527:29;;12541:15;:13;:15::i;:::-;12527:29;12282:282;;;;:::o;15249:164::-;15291:7;15312:15;15329;15348:19;:17;:19::i;:::-;15311:56;;;;15385:20;15397:7;15385;:11;;:20;;;;:::i;:::-;15378:27;;;;15249:164;:::o;2804:132::-;2862:7;2889:39;2893:1;2896;2889:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2882:46;;2804:132;;;;:::o;8211:219::-;8271:1;8258:9;;:14;:30;;;;;8287:1;8276:7;;:12;8258:30;8290:7;8254:43;8329:9;;8309:17;:29;;;;8367:7;;8349:15;:25;;;;8399:1;8387:9;:13;;;;8421:1;8411:7;:11;;;;8211:219;:::o;12572:610::-;12719:15;12749:23;12787:12;12814:23;12852:12;12879:13;12906:19;12917:7;12906:10;:19::i;:::-;12704:221;;;;;;;;;;;;12954:28;12974:7;12954;:15;12962:6;12954:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;12936:7;:15;12944:6;12936:15;;;;;;;;;;;;;;;:46;;;;13014:39;13037:15;13014:7;:18;13022:9;13014:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;12993:7;:18;13001:9;12993:18;;;;;;;;;;;;;;;:60;;;;13064:16;13074:5;13064:9;:16::i;:::-;13091:23;13103:4;13109;13091:11;:23::i;:::-;13147:9;13130:44;;13139:6;13130:44;;;13158:15;13130:44;;;;;;:::i;:::-;;;;;;;;12693:489;;;;;;12572:610;;;:::o;8438:117::-;8494:17;;8482:9;:29;;;;8532:15;;8522:7;:25;;;;8438:117::o;15421:257::-;15472:7;15481;15501:15;15519:7;;15501:25;;15537:15;4619:14;15537:25;;15587:20;4619:14;15587:7;;:11;;:20;;;;:::i;:::-;15577:7;:30;15573:61;;;15617:7;;4619:14;15609:25;;;;;;;;15573:61;15653:7;15662;15645:25;;;;;;15421:257;;;:::o;2944:223::-;3064:7;3096:1;3092;:5;3099:12;3084:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3123:9;3139:1;3135;:5;;;;:::i;:::-;3123:17;;3158:1;3151:8;;;2944:223;;;;;:::o;13607:615::-;13707:7;13729;13751;13773;13795;13817;13853:23;13878:12;13892:13;13922:40;13934:7;13943:9;;13954:7;;13922:11;:40::i;:::-;13852:110;;;;;;13973:19;13995:10;:8;:10::i;:::-;13973:32;;14017:15;14034:23;14059:12;14088:46;14100:7;14109:4;14115:5;14122:11;14088;:46::i;:::-;14016:118;;;;;;14153:7;14162:15;14179:4;14185:15;14202:4;14208:5;14145:69;;;;;;;;;;;;;;;;;;;13607:615;;;;;;;:::o;2174:136::-;2232:7;2259:43;2263:1;2266;2259:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2252:50;;2174:136;;;;:::o;1987:179::-;2045:7;2065:9;2081:1;2077;:5;;;;:::i;:::-;2065:17;;2106:1;2101;:6;;2093:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2157:1;2150:8;;;1987:179;;;;:::o;13190:211::-;13243:19;13265:10;:8;:10::i;:::-;13243:32;;13286:13;13302:22;13312:11;13302:5;:9;;:22;;;;:::i;:::-;13286:38;;13360:33;13387:5;13360:7;:22;13376:4;13360:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13335:7;:22;13351:4;13335:22;;;;;;;;;;;;;;;:58;;;;13232:169;;13190:211;:::o;13409:147::-;13487:17;13499:4;13487:7;;:11;;:17;;;;:::i;:::-;13477:7;:27;;;;13528:20;13543:4;13528:10;;:14;;:20;;;;:::i;:::-;13515:10;:33;;;;13409:147;;:::o;14230:469::-;14399:7;14421;14443;14478:12;14493:30;14519:3;14493:21;14505:8;14493:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;14478:45;;14534:13;14550:28;14574:3;14550:19;14562:6;14550:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14534:44;;14589:23;14615:28;14637:5;14615:17;14627:4;14615:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14589:54;;14662:15;14679:4;14685:5;14654:37;;;;;;;;;14230:469;;;;;;;:::o;14707:534::-;14901:7;14923;14945;14980:15;14998:24;15010:11;14998:7;:11;;:24;;;;:::i;:::-;14980:42;;15033:12;15048:21;15057:11;15048:4;:8;;:21;;;;:::i;:::-;15033:36;;15080:13;15096:22;15106:11;15096:5;:9;;:22;;;;:::i;:::-;15080:38;;15129:23;15155:28;15177:5;15155:17;15167:4;15155:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15129:54;;15202:7;15211:15;15228:4;15194:39;;;;;;;;;;14707:534;;;;;;;;:::o;2550:246::-;2608:7;2637:1;2632;:6;2628:47;;2662:1;2655:8;;;;2628:47;2685:9;2701:1;2697;:5;;;;:::i;:::-;2685:17;;2730:1;2725;2721;:5;;;;:::i;:::-;:10;2713:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2787:1;2780:8;;;2550:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:60::-;3522:3;3543:5;3536:12;;3494:60;;;:::o;3560:142::-;3610:9;3643:53;3661:34;3670:24;3688:5;3670:24;:::i;:::-;3661:34;:::i;:::-;3643:53;:::i;:::-;3630:66;;3560:142;;;:::o;3708:126::-;3758:9;3791:37;3822:5;3791:37;:::i;:::-;3778:50;;3708:126;;;:::o;3840:152::-;3916:9;3949:37;3980:5;3949:37;:::i;:::-;3936:50;;3840:152;;;:::o;3998:183::-;4111:63;4168:5;4111:63;:::i;:::-;4106:3;4099:76;3998:183;;:::o;4187:274::-;4306:4;4344:2;4333:9;4329:18;4321:26;;4357:97;4451:1;4440:9;4436:17;4427:6;4357:97;:::i;:::-;4187:274;;;;:::o;4467:118::-;4554:24;4572:5;4554:24;:::i;:::-;4549:3;4542:37;4467:118;;:::o;4591:222::-;4684:4;4722:2;4711:9;4707:18;4699:26;;4735:71;4803:1;4792:9;4788:17;4779:6;4735:71;:::i;:::-;4591:222;;;;:::o;4819:619::-;4896:6;4904;4912;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;5214:2;5240:53;5285:7;5276:6;5265:9;5261:22;5240:53;:::i;:::-;5230:63;;5185:118;5342:2;5368:53;5413:7;5404:6;5393:9;5389:22;5368:53;:::i;:::-;5358:63;;5313:118;4819:619;;;;;:::o;5444:86::-;5479:7;5519:4;5512:5;5508:16;5497:27;;5444:86;;;:::o;5536:112::-;5619:22;5635:5;5619:22;:::i;:::-;5614:3;5607:35;5536:112;;:::o;5654:214::-;5743:4;5781:2;5770:9;5766:18;5758:26;;5794:67;5858:1;5847:9;5843:17;5834:6;5794:67;:::i;:::-;5654:214;;;;:::o;5874:118::-;5961:24;5979:5;5961:24;:::i;:::-;5956:3;5949:37;5874:118;;:::o;5998:222::-;6091:4;6129:2;6118:9;6114:18;6106:26;;6142:71;6210:1;6199:9;6195:17;6186:6;6142:71;:::i;:::-;5998:222;;;;:::o;6226:329::-;6285:6;6334:2;6322:9;6313:7;6309:23;6305:32;6302:119;;;6340:79;;:::i;:::-;6302:119;6460:1;6485:53;6530:7;6521:6;6510:9;6506:22;6485:53;:::i;:::-;6475:63;;6431:117;6226:329;;;;:::o;6561:765::-;6647:6;6655;6663;6671;6720:3;6708:9;6699:7;6695:23;6691:33;6688:120;;;6727:79;;:::i;:::-;6688:120;6847:1;6872:53;6917:7;6908:6;6897:9;6893:22;6872:53;:::i;:::-;6862:63;;6818:117;6974:2;7000:53;7045:7;7036:6;7025:9;7021:22;7000:53;:::i;:::-;6990:63;;6945:118;7102:2;7128:53;7173:7;7164:6;7153:9;7149:22;7128:53;:::i;:::-;7118:63;;7073:118;7230:2;7256:53;7301:7;7292:6;7281:9;7277:22;7256:53;:::i;:::-;7246:63;;7201:118;6561:765;;;;;;;:::o;7332:474::-;7400:6;7408;7457:2;7445:9;7436:7;7432:23;7428:32;7425:119;;;7463:79;;:::i;:::-;7425:119;7583:1;7608:53;7653:7;7644:6;7633:9;7629:22;7608:53;:::i;:::-;7598:63;;7554:117;7710:2;7736:53;7781:7;7772:6;7761:9;7757:22;7736:53;:::i;:::-;7726:63;;7681:118;7332:474;;;;;:::o;7812:182::-;7952:34;7948:1;7940:6;7936:14;7929:58;7812:182;:::o;8000:366::-;8142:3;8163:67;8227:2;8222:3;8163:67;:::i;:::-;8156:74;;8239:93;8328:3;8239:93;:::i;:::-;8357:2;8352:3;8348:12;8341:19;;8000:366;;;:::o;8372:419::-;8538:4;8576:2;8565:9;8561:18;8553:26;;8625:9;8619:4;8615:20;8611:1;8600:9;8596:17;8589:47;8653:131;8779:4;8653:131;:::i;:::-;8645:139;;8372:419;;;:::o;8797:162::-;8937:14;8933:1;8925:6;8921:14;8914:38;8797:162;:::o;8965:366::-;9107:3;9128:67;9192:2;9187:3;9128:67;:::i;:::-;9121:74;;9204:93;9293:3;9204:93;:::i;:::-;9322:2;9317:3;9313:12;9306:19;;8965:366;;;:::o;9337:419::-;9503:4;9541:2;9530:9;9526:18;9518:26;;9590:9;9584:4;9580:20;9576:1;9565:9;9561:17;9554:47;9618:131;9744:4;9618:131;:::i;:::-;9610:139;;9337:419;;;:::o;9762:180::-;9810:77;9807:1;9800:88;9907:4;9904:1;9897:15;9931:4;9928:1;9921:15;9948:305;9988:3;10007:20;10025:1;10007:20;:::i;:::-;10002:25;;10041:20;10059:1;10041:20;:::i;:::-;10036:25;;10195:1;10127:66;10123:74;10120:1;10117:81;10114:107;;;10201:18;;:::i;:::-;10114:107;10245:1;10242;10238:9;10231:16;;9948:305;;;;:::o;10259:166::-;10399:18;10395:1;10387:6;10383:14;10376:42;10259:166;:::o;10431:366::-;10573:3;10594:67;10658:2;10653:3;10594:67;:::i;:::-;10587:74;;10670:93;10759:3;10670:93;:::i;:::-;10788:2;10783:3;10779:12;10772:19;;10431:366;;;:::o;10803:419::-;10969:4;11007:2;10996:9;10992:18;10984:26;;11056:9;11050:4;11046:20;11042:1;11031:9;11027:17;11020:47;11084:131;11210:4;11084:131;:::i;:::-;11076:139;;10803:419;;;:::o;11228:225::-;11368:34;11364:1;11356:6;11352:14;11345:58;11437:8;11432:2;11424:6;11420:15;11413:33;11228:225;:::o;11459:366::-;11601:3;11622:67;11686:2;11681:3;11622:67;:::i;:::-;11615:74;;11698:93;11787:3;11698:93;:::i;:::-;11816:2;11811:3;11807:12;11800:19;;11459:366;;;:::o;11831:419::-;11997:4;12035:2;12024:9;12020:18;12012:26;;12084:9;12078:4;12074:20;12070:1;12059:9;12055:17;12048:47;12112:131;12238:4;12112:131;:::i;:::-;12104:139;;11831:419;;;:::o;12256:223::-;12396:34;12392:1;12384:6;12380:14;12373:58;12465:6;12460:2;12452:6;12448:15;12441:31;12256:223;:::o;12485:366::-;12627:3;12648:67;12712:2;12707:3;12648:67;:::i;:::-;12641:74;;12724:93;12813:3;12724:93;:::i;:::-;12842:2;12837:3;12833:12;12826:19;;12485:366;;;:::o;12857:419::-;13023:4;13061:2;13050:9;13046:18;13038:26;;13110:9;13104:4;13100:20;13096:1;13085:9;13081:17;13074:47;13138:131;13264:4;13138:131;:::i;:::-;13130:139;;12857:419;;;:::o;13282:221::-;13422:34;13418:1;13410:6;13406:14;13399:58;13491:4;13486:2;13478:6;13474:15;13467:29;13282:221;:::o;13509:366::-;13651:3;13672:67;13736:2;13731:3;13672:67;:::i;:::-;13665:74;;13748:93;13837:3;13748:93;:::i;:::-;13866:2;13861:3;13857:12;13850:19;;13509:366;;;:::o;13881:419::-;14047:4;14085:2;14074:9;14070:18;14062:26;;14134:9;14128:4;14124:20;14120:1;14109:9;14105:17;14098:47;14162:131;14288:4;14162:131;:::i;:::-;14154:139;;13881:419;;;:::o;14306:224::-;14446:34;14442:1;14434:6;14430:14;14423:58;14515:7;14510:2;14502:6;14498:15;14491:32;14306:224;:::o;14536:366::-;14678:3;14699:67;14763:2;14758:3;14699:67;:::i;:::-;14692:74;;14775:93;14864:3;14775:93;:::i;:::-;14893:2;14888:3;14884:12;14877:19;;14536:366;;;:::o;14908:419::-;15074:4;15112:2;15101:9;15097:18;15089:26;;15161:9;15155:4;15151:20;15147:1;15136:9;15132:17;15125:47;15189:131;15315:4;15189:131;:::i;:::-;15181:139;;14908:419;;;:::o;15333:222::-;15473:34;15469:1;15461:6;15457:14;15450:58;15542:5;15537:2;15529:6;15525:15;15518:30;15333:222;:::o;15561:366::-;15703:3;15724:67;15788:2;15783:3;15724:67;:::i;:::-;15717:74;;15800:93;15889:3;15800:93;:::i;:::-;15918:2;15913:3;15909:12;15902:19;;15561:366;;;:::o;15933:419::-;16099:4;16137:2;16126:9;16122:18;16114:26;;16186:9;16180:4;16176:20;16172:1;16161:9;16157:17;16150:47;16214:131;16340:4;16214:131;:::i;:::-;16206:139;;15933:419;;;:::o;16358:228::-;16498:34;16494:1;16486:6;16482:14;16475:58;16567:11;16562:2;16554:6;16550:15;16543:36;16358:228;:::o;16592:366::-;16734:3;16755:67;16819:2;16814:3;16755:67;:::i;:::-;16748:74;;16831:93;16920:3;16831:93;:::i;:::-;16949:2;16944:3;16940:12;16933:19;;16592:366;;;:::o;16964:419::-;17130:4;17168:2;17157:9;17153:18;17145:26;;17217:9;17211:4;17207:20;17203:1;17192:9;17188:17;17181:47;17245:131;17371:4;17245:131;:::i;:::-;17237:139;;16964:419;;;:::o;17389:172::-;17529:24;17525:1;17517:6;17513:14;17506:48;17389:172;:::o;17567:366::-;17709:3;17730:67;17794:2;17789:3;17730:67;:::i;:::-;17723:74;;17806:93;17895:3;17806:93;:::i;:::-;17924:2;17919:3;17915:12;17908:19;;17567:366;;;:::o;17939:419::-;18105:4;18143:2;18132:9;18128:18;18120:26;;18192:9;18186:4;18182:20;18178:1;18167:9;18163:17;18156:47;18220:131;18346:4;18220:131;:::i;:::-;18212:139;;17939:419;;;:::o;18364:182::-;18504:34;18500:1;18492:6;18488:14;18481:58;18364:182;:::o;18552:366::-;18694:3;18715:67;18779:2;18774:3;18715:67;:::i;:::-;18708:74;;18791:93;18880:3;18791:93;:::i;:::-;18909:2;18904:3;18900:12;18893:19;;18552:366;;;:::o;18924:419::-;19090:4;19128:2;19117:9;19113:18;19105:26;;19177:9;19171:4;19167:20;19163:1;19152:9;19148:17;19141:47;19205:131;19331:4;19205:131;:::i;:::-;19197:139;;18924:419;;;:::o;19349:348::-;19389:7;19412:20;19430:1;19412:20;:::i;:::-;19407:25;;19446:20;19464:1;19446:20;:::i;:::-;19441:25;;19634:1;19566:66;19562:74;19559:1;19556:81;19551:1;19544:9;19537:17;19533:105;19530:131;;;19641:18;;:::i;:::-;19530:131;19689:1;19686;19682:9;19671:20;;19349:348;;;;:::o;19703:191::-;19743:4;19763:20;19781:1;19763:20;:::i;:::-;19758:25;;19797:20;19815:1;19797:20;:::i;:::-;19792:25;;19836:1;19833;19830:8;19827:34;;;19841:18;;:::i;:::-;19827:34;19886:1;19883;19879:9;19871:17;;19703:191;;;;:::o;19900:229::-;20040:34;20036:1;20028:6;20024:14;20017:58;20109:12;20104:2;20096:6;20092:15;20085:37;19900:229;:::o;20135:366::-;20277:3;20298:67;20362:2;20357:3;20298:67;:::i;:::-;20291:74;;20374:93;20463:3;20374:93;:::i;:::-;20492:2;20487:3;20483:12;20476:19;;20135:366;;;:::o;20507:419::-;20673:4;20711:2;20700:9;20696:18;20688:26;;20760:9;20754:4;20750:20;20746:1;20735:9;20731:17;20724:47;20788:131;20914:4;20788:131;:::i;:::-;20780:139;;20507:419;;;:::o;20932:180::-;20980:77;20977:1;20970:88;21077:4;21074:1;21067:15;21101:4;21098:1;21091:15;21118:180;21166:77;21163:1;21156:88;21263:4;21260:1;21253:15;21287:4;21284:1;21277:15;21304:143;21361:5;21392:6;21386:13;21377:22;;21408:33;21435:5;21408:33;:::i;:::-;21304:143;;;;:::o;21453:351::-;21523:6;21572:2;21560:9;21551:7;21547:23;21543:32;21540:119;;;21578:79;;:::i;:::-;21540:119;21698:1;21723:64;21779:7;21770:6;21759:9;21755:22;21723:64;:::i;:::-;21713:74;;21669:128;21453:351;;;;:::o;21810:85::-;21855:7;21884:5;21873:16;;21810:85;;;:::o;21901:158::-;21959:9;21992:61;22010:42;22019:32;22045:5;22019:32;:::i;:::-;22010:42;:::i;:::-;21992:61;:::i;:::-;21979:74;;21901:158;;;:::o;22065:147::-;22160:45;22199:5;22160:45;:::i;:::-;22155:3;22148:58;22065:147;;:::o;22218:114::-;22285:6;22319:5;22313:12;22303:22;;22218:114;;;:::o;22338:184::-;22437:11;22471:6;22466:3;22459:19;22511:4;22506:3;22502:14;22487:29;;22338:184;;;;:::o;22528:132::-;22595:4;22618:3;22610:11;;22648:4;22643:3;22639:14;22631:22;;22528:132;;;:::o;22666:108::-;22743:24;22761:5;22743:24;:::i;:::-;22738:3;22731:37;22666:108;;:::o;22780:179::-;22849:10;22870:46;22912:3;22904:6;22870:46;:::i;:::-;22948:4;22943:3;22939:14;22925:28;;22780:179;;;;:::o;22965:113::-;23035:4;23067;23062:3;23058:14;23050:22;;22965:113;;;:::o;23114:732::-;23233:3;23262:54;23310:5;23262:54;:::i;:::-;23332:86;23411:6;23406:3;23332:86;:::i;:::-;23325:93;;23442:56;23492:5;23442:56;:::i;:::-;23521:7;23552:1;23537:284;23562:6;23559:1;23556:13;23537:284;;;23638:6;23632:13;23665:63;23724:3;23709:13;23665:63;:::i;:::-;23658:70;;23751:60;23804:6;23751:60;:::i;:::-;23741:70;;23597:224;23584:1;23581;23577:9;23572:14;;23537:284;;;23541:14;23837:3;23830:10;;23238:608;;;23114:732;;;;:::o;23852:831::-;24115:4;24153:3;24142:9;24138:19;24130:27;;24167:71;24235:1;24224:9;24220:17;24211:6;24167:71;:::i;:::-;24248:80;24324:2;24313:9;24309:18;24300:6;24248:80;:::i;:::-;24375:9;24369:4;24365:20;24360:2;24349:9;24345:18;24338:48;24403:108;24506:4;24497:6;24403:108;:::i;:::-;24395:116;;24521:72;24589:2;24578:9;24574:18;24565:6;24521:72;:::i;:::-;24603:73;24671:3;24660:9;24656:19;24647:6;24603:73;:::i;:::-;23852:831;;;;;;;;:::o;24689:180::-;24737:77;24734:1;24727:88;24834:4;24831:1;24824:15;24858:4;24855:1;24848:15;24875:185;24915:1;24932:20;24950:1;24932:20;:::i;:::-;24927:25;;24966:20;24984:1;24966:20;:::i;:::-;24961:25;;25005:1;24995:35;;25010:18;;:::i;:::-;24995:35;25052:1;25049;25045:9;25040:14;;24875:185;;;;:::o;25066:177::-;25206:29;25202:1;25194:6;25190:14;25183:53;25066:177;:::o;25249:366::-;25391:3;25412:67;25476:2;25471:3;25412:67;:::i;:::-;25405:74;;25488:93;25577:3;25488:93;:::i;:::-;25606:2;25601:3;25597:12;25590:19;;25249:366;;;:::o;25621:419::-;25787:4;25825:2;25814:9;25810:18;25802:26;;25874:9;25868:4;25864:20;25860:1;25849:9;25845:17;25838:47;25902:131;26028:4;25902:131;:::i;:::-;25894:139;;25621:419;;;:::o;26046:220::-;26186:34;26182:1;26174:6;26170:14;26163:58;26255:3;26250:2;26242:6;26238:15;26231:28;26046:220;:::o;26272:366::-;26414:3;26435:67;26499:2;26494:3;26435:67;:::i;:::-;26428:74;;26511:93;26600:3;26511:93;:::i;:::-;26629:2;26624:3;26620:12;26613:19;;26272:366;;;:::o;26644:419::-;26810:4;26848:2;26837:9;26833:18;26825:26;;26897:9;26891:4;26887:20;26883:1;26872:9;26868:17;26861:47;26925:131;27051:4;26925:131;:::i;:::-;26917:139;;26644:419;;;:::o

Swarm Source

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