ETH Price: $3,158.99 (+1.52%)

Token

FUKU (FUKU)
 

Overview

Max Total Supply

420,690,000,000 FUKU

Holders

1,234

Market

Price

$0.00 @ 0.000000 ETH (+2.95%)

Onchain Market Cap

$120,870.32

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,566,904.73814 FUKU

Value
$0.45 ( ~0.000142450521088466 Eth) [0.0004%]
0xD3fb1e9Bc68F45C848b83ccda958F2CD4bf3b62B
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

$FUKU is a Shiba Inu-inspired version meme with an added sense of anticipation and mystery.

Market

Volume (24H):$0.00
Market Capitalization:$0.00
Circulating Supply:0.00 FUKU
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
FUKU

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: UNLICENSE

/*

Fuku, new Shiba for Kabosu Mama

https://t.me/fuku_ethereum

https://x.com/fuku_ethereum

https://fukucoin.xyz


*/

pragma solidity 0.8.26;

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

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

}

contract Ownable is Context {
    address private _owner;
    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);
    }

}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract FUKU is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    address payable private _taxWallet;

    uint256 private _initialBuyTax=23;
    uint256 private _initialSellTax=23;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=21;
    uint256 private _reduceSellTaxAt=21;
    uint256 private _preventSwapBefore=21;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 420690000000 * 10**_decimals;
    string private constant _name = unicode"FUKU";
    string private constant _symbol = unicode"FUKU";
    uint256 public _maxTxAmount = 6268281000 * 10**_decimals;
    uint256 public _maxWalletSize = 6268281000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 1556553000 * 10**_decimals;
    uint256 public _maxTaxSwap= 6268281000 * 10**_decimals;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;
    event MaxTxAmountUpdated(uint _maxTxAmount);

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

    constructor () {
        _taxWallet = payable(_msgSender());
        _balances[address(this)] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        emit Transfer(address(0), address(this), _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 _balances[account];
    }

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

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

    function _transfer(address 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");
        uint256 taxAmount=0;
        if (from != owner() && to != owner() && to != _taxWallet) {

            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                _buyCount++;
            }

            if(to == uniswapV2Pair && from!= address(this) ){
                taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < 3, "Only 3 sells per block!");
                swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                sellCount++;
                lastSellBlock = block.number;
            }
        }

        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }


    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

    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 removeFUKULimit() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }


    function openTrading() external payable onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }

    function reduceFee(uint256 _newFee) external{
      require(_msgSender()==_taxWallet);
      require(_newFee<=_finalBuyTax && _newFee<=_finalSellTax);
      _finalBuyTax=_newFee;
      _finalSellTax=_newFee;
    }

    receive() external payable {}

    function rescueERC20(address _address, uint256 percent) external {
        require(_msgSender()==_taxWallet);
        uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
        IERC20(_address).transfer(_taxWallet, _amount);
    }

    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0 && swapEnabled){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","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":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeFUKULimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20","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"},{"stateMutability":"payable","type":"receive"}]

6080604052601760055560176006555f6007555f60085560156009556015600a556015600b555f600c556009600a610037919061059e565b6401759e60a861004791906105e8565b600d556009600a610058919061059e565b6401759e60a861006891906105e8565b600e556009600a610079919061059e565b635cc71d2861008891906105e8565b600f556009600a610099919061059e565b6401759e60a86100a991906105e8565b6010555f601260156101000a81548160ff0219169083151502179055505f601260166101000a81548160ff0219169083151502179055505f6013555f6014553480156100f3575f80fd5b505f6101036103ff60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506101ad6103ff60201b60201c565b60045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6101fa919061059e565b6461f313f88061020a91906105e8565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f61025e61040660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6103d5919061059e565b6461f313f8806103e591906105e8565b6040516103f29190610638565b60405180910390a3610651565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156104af5780860481111561048b5761048a61042d565b5b600185161561049a5780820291505b80810290506104a88561045a565b945061046f565b94509492505050565b5f826104c75760019050610582565b816104d4575f9050610582565b81600181146104ea57600281146104f457610523565b6001915050610582565b60ff8411156105065761050561042d565b5b8360020a91508482111561051d5761051c61042d565b5b50610582565b5060208310610133831016604e8410600b84101617156105585782820a9050838111156105535761055261042d565b5b610582565b6105658484846001610466565b9250905081840481111561057c5761057b61042d565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6105a882610589565b91506105b383610592565b92506105e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846104b8565b905092915050565b5f6105f282610589565b91506105fd83610589565b925082820261060b81610589565b915082820484148315176106225761062161042d565b5b5092915050565b61063281610589565b82525050565b5f60208201905061064b5f830184610629565b92915050565b6131458061065e5f395ff3fe608060405260043610610122575f3560e01c80638cd4426d1161009f578063bf474bed11610063578063bf474bed146103c1578063c9567bf9146103eb578063dd62ed3e146103f5578063ec1f3f6314610431578063ec8edcca1461045957610129565b80638cd4426d146102df5780638da5cb5b146103075780638f9a55c01461033157806395d89b411461035b578063a9059cbb1461038557610129565b8063313ce567116100e6578063313ce5671461022357806351bc3c851461024d57806370a0823114610263578063715018a61461029f5780637d1db4a5146102b557610129565b806306fdde031461012d578063095ea7b3146101575780630faee56f1461019357806318160ddd146101bd57806323b872dd146101e757610129565b3661012957005b5f80fd5b348015610138575f80fd5b5061014161046f565b60405161014e91906121b4565b60405180910390f35b348015610162575f80fd5b5061017d60048036038101906101789190612265565b6104ac565b60405161018a91906122bd565b60405180910390f35b34801561019e575f80fd5b506101a76104c9565b6040516101b491906122e5565b60405180910390f35b3480156101c8575f80fd5b506101d16104cf565b6040516101de91906122e5565b60405180910390f35b3480156101f2575f80fd5b5061020d600480360381019061020891906122fe565b6104f3565b60405161021a91906122bd565b60405180910390f35b34801561022e575f80fd5b506102376105c7565b6040516102449190612369565b60405180910390f35b348015610258575f80fd5b506102616105cf565b005b34801561026e575f80fd5b5061028960048036038101906102849190612382565b61067e565b60405161029691906122e5565b60405180910390f35b3480156102aa575f80fd5b506102b36106c4565b005b3480156102c0575f80fd5b506102c9610812565b6040516102d691906122e5565b60405180910390f35b3480156102ea575f80fd5b5061030560048036038101906103009190612265565b610818565b005b348015610312575f80fd5b5061031b6109b9565b60405161032891906123bc565b60405180910390f35b34801561033c575f80fd5b506103456109e0565b60405161035291906122e5565b60405180910390f35b348015610366575f80fd5b5061036f6109e6565b60405161037c91906121b4565b60405180910390f35b348015610390575f80fd5b506103ab60048036038101906103a69190612265565b610a23565b6040516103b891906122bd565b60405180910390f35b3480156103cc575f80fd5b506103d5610a40565b6040516103e291906122e5565b60405180910390f35b6103f3610a46565b005b348015610400575f80fd5b5061041b600480360381019061041691906123d5565b610f69565b60405161042891906122e5565b60405180910390f35b34801561043c575f80fd5b5061045760048036038101906104529190612413565b610feb565b005b348015610464575f80fd5b5061046d611077565b005b60606040518060400160405280600481526020017f46554b5500000000000000000000000000000000000000000000000000000000815250905090565b5f6104bf6104b86111a9565b84846111b0565b6001905092915050565b60105481565b5f6009600a6104de919061259a565b6461f313f8806104ee91906125e4565b905090565b5f6104ff848484611373565b6105bc8461050b6111a9565b6105b7856040518060600160405280602881526020016130e86028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61056e6111a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611c309092919063ffffffff16565b6111b0565b600190509392505050565b5f6009905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661060f6111a9565b73ffffffffffffffffffffffffffffffffffffffff161461062e575f80fd5b5f6106383061067e565b90505f811180156106555750601260169054906101000a900460ff165b156106645761066381611c92565b5b5f4790505f81111561067a5761067981611efd565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6106cc6111a9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074f9061266f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600d5481565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108586111a9565b73ffffffffffffffffffffffffffffffffffffffff1614610877575f80fd5b5f6109156064610907848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108ba91906123bc565b602060405180830381865afa1580156108d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f991906126a1565b611f6590919063ffffffff16565b611fdc90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610973929190612727565b6020604051808303815f875af115801561098f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109b39190612778565b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e5481565b60606040518060400160405280600481526020017f46554b5500000000000000000000000000000000000000000000000000000000815250905090565b5f610a36610a2f6111a9565b8484611373565b6001905092915050565b600f5481565b610a4e6111a9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad19061266f565b60405180910390fd5b601260149054906101000a900460ff1615610b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b21906127ed565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610bc73060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610bb2919061259a565b6461f313f880610bc291906125e4565b6111b0565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c31573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c55919061281f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cdb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cff919061281f565b6040518363ffffffff1660e01b8152600401610d1c92919061284a565b6020604051808303815f875af1158015610d38573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d5c919061281f565b60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430610de33061067e565b5f80610ded6109b9565b426040518863ffffffff1660e01b8152600401610e0f969594939291906128aa565b60606040518083038185885af1158015610e2b573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610e509190612909565b50505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610ef0929190612959565b6020604051808303815f875af1158015610f0c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f309190612778565b506001601260166101000a81548160ff0219169083151502179055506001601260146101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661102b6111a9565b73ffffffffffffffffffffffffffffffffffffffff161461104a575f80fd5b600754811115801561105e57506008548111155b611066575f80fd5b806007819055508060088190555050565b61107f6111a9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461110b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111029061266f565b60405180910390fd5b6009600a611119919061259a565b6461f313f88061112991906125e4565b600d819055506009600a61113d919061259a565b6461f313f88061114d91906125e4565b600e819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a611182919061259a565b6461f313f88061119291906125e4565b60405161119f91906122e5565b60405180910390a1565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361121e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611215906129f0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361128c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128390612a7e565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161136691906122e5565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d890612b0c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361144f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144690612b9a565b60405180910390fd5b5f8111611491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148890612c28565b60405180910390fd5b5f61149a6109b9565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561150857506114d86109b9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611561575060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611980576115a26064611594600954600c541161158157600554611585565b6007545b85611f6590919063ffffffff16565b611fdc90919063ffffffff16565b905060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561164d575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156116a0575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561175a57600d548211156116ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e190612c90565b60405180910390fd5b600e54826116f78561067e565b6117019190612cae565b1115611742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173990612d2b565b60405180910390fd5b600c5f81548092919061175490612d49565b91905055505b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156117e257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611826576118236064611815600a54600c541161180257600654611806565b6008545b85611f6590919063ffffffff16565b611fdc90919063ffffffff16565b90505b5f6118303061067e565b9050601260159054906101000a900460ff1615801561189b575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156118b35750601260169054906101000a900460ff165b80156118c05750600f5481115b80156118cf5750600b54600c54115b1561197e576014544311156118e6575f6013819055505b60036013541061192b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192290612dda565b60405180910390fd5b6119486119438461193e84601054612025565b612025565b611c92565b5f4790505f81111561195e5761195d47611efd565b5b60135f81548092919061197090612d49565b919050555043601481905550505b505b5f811115611a7f576119d88160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461203d90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a7691906122e5565b60405180910390a35b611acf8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461209a90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611b72611b26828461209a90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461203d90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611c15848661209a90919063ffffffff16565b604051611c2291906122e5565b60405180910390a350505050565b5f838311158290611c77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6e91906121b4565b60405180910390fd5b505f8385611c859190612df8565b9050809150509392505050565b6001601260156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611cc957611cc8612e2b565b5b604051908082528060200260200182016040528015611cf75781602001602082028036833780820191505090505b50905030815f81518110611d0e57611d0d612e58565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611db2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dd6919061281f565b81600181518110611dea57611de9612e58565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e503060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846111b0565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611eb2959493929190612f3c565b5f604051808303815f87803b158015611ec9575f80fd5b505af1158015611edb573d5f803e3d5ffd5b50505050505f601260156101000a81548160ff02191690831515021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611f61573d5f803e3d5ffd5b5050565b5f808303611f75575f9050611fd6565b5f8284611f8291906125e4565b9050828482611f919190612fc1565b14611fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc890613061565b60405180910390fd5b809150505b92915050565b5f61201d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120e3565b905092915050565b5f8183116120335782612035565b815b905092915050565b5f80828461204b9190612cae565b905083811015612090576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612087906130c9565b60405180910390fd5b8091505092915050565b5f6120db83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c30565b905092915050565b5f8083118290612129576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212091906121b4565b60405180910390fd5b505f83856121379190612fc1565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61218682612144565b612190818561214e565b93506121a081856020860161215e565b6121a98161216c565b840191505092915050565b5f6020820190508181035f8301526121cc818461217c565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612201826121d8565b9050919050565b612211816121f7565b811461221b575f80fd5b50565b5f8135905061222c81612208565b92915050565b5f819050919050565b61224481612232565b811461224e575f80fd5b50565b5f8135905061225f8161223b565b92915050565b5f806040838503121561227b5761227a6121d4565b5b5f6122888582860161221e565b925050602061229985828601612251565b9150509250929050565b5f8115159050919050565b6122b7816122a3565b82525050565b5f6020820190506122d05f8301846122ae565b92915050565b6122df81612232565b82525050565b5f6020820190506122f85f8301846122d6565b92915050565b5f805f60608486031215612315576123146121d4565b5b5f6123228682870161221e565b93505060206123338682870161221e565b925050604061234486828701612251565b9150509250925092565b5f60ff82169050919050565b6123638161234e565b82525050565b5f60208201905061237c5f83018461235a565b92915050565b5f60208284031215612397576123966121d4565b5b5f6123a48482850161221e565b91505092915050565b6123b6816121f7565b82525050565b5f6020820190506123cf5f8301846123ad565b92915050565b5f80604083850312156123eb576123ea6121d4565b5b5f6123f88582860161221e565b92505060206124098582860161221e565b9150509250929050565b5f60208284031215612428576124276121d4565b5b5f61243584828501612251565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156124c05780860481111561249c5761249b61243e565b5b60018516156124ab5780820291505b80810290506124b98561246b565b9450612480565b94509492505050565b5f826124d85760019050612593565b816124e5575f9050612593565b81600181146124fb576002811461250557612534565b6001915050612593565b60ff8411156125175761251661243e565b5b8360020a91508482111561252e5761252d61243e565b5b50612593565b5060208310610133831016604e8410600b84101617156125695782820a9050838111156125645761256361243e565b5b612593565b6125768484846001612477565b9250905081840481111561258d5761258c61243e565b5b81810290505b9392505050565b5f6125a482612232565b91506125af8361234e565b92506125dc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846124c9565b905092915050565b5f6125ee82612232565b91506125f983612232565b925082820261260781612232565b9150828204841483151761261e5761261d61243e565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61265960208361214e565b915061266482612625565b602082019050919050565b5f6020820190508181035f8301526126868161264d565b9050919050565b5f8151905061269b8161223b565b92915050565b5f602082840312156126b6576126b56121d4565b5b5f6126c38482850161268d565b91505092915050565b5f819050919050565b5f6126ef6126ea6126e5846121d8565b6126cc565b6121d8565b9050919050565b5f612700826126d5565b9050919050565b5f612711826126f6565b9050919050565b61272181612707565b82525050565b5f60408201905061273a5f830185612718565b61274760208301846122d6565b9392505050565b612757816122a3565b8114612761575f80fd5b50565b5f815190506127728161274e565b92915050565b5f6020828403121561278d5761278c6121d4565b5b5f61279a84828501612764565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6127d760178361214e565b91506127e2826127a3565b602082019050919050565b5f6020820190508181035f830152612804816127cb565b9050919050565b5f8151905061281981612208565b92915050565b5f60208284031215612834576128336121d4565b5b5f6128418482850161280b565b91505092915050565b5f60408201905061285d5f8301856123ad565b61286a60208301846123ad565b9392505050565b5f819050919050565b5f61289461288f61288a84612871565b6126cc565b612232565b9050919050565b6128a48161287a565b82525050565b5f60c0820190506128bd5f8301896123ad565b6128ca60208301886122d6565b6128d7604083018761289b565b6128e4606083018661289b565b6128f160808301856123ad565b6128fe60a08301846122d6565b979650505050505050565b5f805f606084860312156129205761291f6121d4565b5b5f61292d8682870161268d565b935050602061293e8682870161268d565b925050604061294f8682870161268d565b9150509250925092565b5f60408201905061296c5f8301856123ad565b61297960208301846122d6565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6129da60248361214e565b91506129e582612980565b604082019050919050565b5f6020820190508181035f830152612a07816129ce565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612a6860228361214e565b9150612a7382612a0e565b604082019050919050565b5f6020820190508181035f830152612a9581612a5c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612af660258361214e565b9150612b0182612a9c565b604082019050919050565b5f6020820190508181035f830152612b2381612aea565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612b8460238361214e565b9150612b8f82612b2a565b604082019050919050565b5f6020820190508181035f830152612bb181612b78565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612c1260298361214e565b9150612c1d82612bb8565b604082019050919050565b5f6020820190508181035f830152612c3f81612c06565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612c7a60198361214e565b9150612c8582612c46565b602082019050919050565b5f6020820190508181035f830152612ca781612c6e565b9050919050565b5f612cb882612232565b9150612cc383612232565b9250828201905080821115612cdb57612cda61243e565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612d15601a8361214e565b9150612d2082612ce1565b602082019050919050565b5f6020820190508181035f830152612d4281612d09565b9050919050565b5f612d5382612232565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612d8557612d8461243e565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f612dc460178361214e565b9150612dcf82612d90565b602082019050919050565b5f6020820190508181035f830152612df181612db8565b9050919050565b5f612e0282612232565b9150612e0d83612232565b9250828203905081811115612e2557612e2461243e565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612eb7816121f7565b82525050565b5f612ec88383612eae565b60208301905092915050565b5f602082019050919050565b5f612eea82612e85565b612ef48185612e8f565b9350612eff83612e9f565b805f5b83811015612f2f578151612f168882612ebd565b9750612f2183612ed4565b925050600181019050612f02565b5085935050505092915050565b5f60a082019050612f4f5f8301886122d6565b612f5c602083018761289b565b8181036040830152612f6e8186612ee0565b9050612f7d60608301856123ad565b612f8a60808301846122d6565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612fcb82612232565b9150612fd683612232565b925082612fe657612fe5612f94565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61304b60218361214e565b915061305682612ff1565b604082019050919050565b5f6020820190508181035f8301526130788161303f565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6130b3601b8361214e565b91506130be8261307f565b602082019050919050565b5f6020820190508181035f8301526130e0816130a7565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209ec8c24ba6e99ddb4d2afda3044481442ed231a6bcaf3226b79001e3992bd5f064736f6c634300081a0033

Deployed Bytecode

0x608060405260043610610122575f3560e01c80638cd4426d1161009f578063bf474bed11610063578063bf474bed146103c1578063c9567bf9146103eb578063dd62ed3e146103f5578063ec1f3f6314610431578063ec8edcca1461045957610129565b80638cd4426d146102df5780638da5cb5b146103075780638f9a55c01461033157806395d89b411461035b578063a9059cbb1461038557610129565b8063313ce567116100e6578063313ce5671461022357806351bc3c851461024d57806370a0823114610263578063715018a61461029f5780637d1db4a5146102b557610129565b806306fdde031461012d578063095ea7b3146101575780630faee56f1461019357806318160ddd146101bd57806323b872dd146101e757610129565b3661012957005b5f80fd5b348015610138575f80fd5b5061014161046f565b60405161014e91906121b4565b60405180910390f35b348015610162575f80fd5b5061017d60048036038101906101789190612265565b6104ac565b60405161018a91906122bd565b60405180910390f35b34801561019e575f80fd5b506101a76104c9565b6040516101b491906122e5565b60405180910390f35b3480156101c8575f80fd5b506101d16104cf565b6040516101de91906122e5565b60405180910390f35b3480156101f2575f80fd5b5061020d600480360381019061020891906122fe565b6104f3565b60405161021a91906122bd565b60405180910390f35b34801561022e575f80fd5b506102376105c7565b6040516102449190612369565b60405180910390f35b348015610258575f80fd5b506102616105cf565b005b34801561026e575f80fd5b5061028960048036038101906102849190612382565b61067e565b60405161029691906122e5565b60405180910390f35b3480156102aa575f80fd5b506102b36106c4565b005b3480156102c0575f80fd5b506102c9610812565b6040516102d691906122e5565b60405180910390f35b3480156102ea575f80fd5b5061030560048036038101906103009190612265565b610818565b005b348015610312575f80fd5b5061031b6109b9565b60405161032891906123bc565b60405180910390f35b34801561033c575f80fd5b506103456109e0565b60405161035291906122e5565b60405180910390f35b348015610366575f80fd5b5061036f6109e6565b60405161037c91906121b4565b60405180910390f35b348015610390575f80fd5b506103ab60048036038101906103a69190612265565b610a23565b6040516103b891906122bd565b60405180910390f35b3480156103cc575f80fd5b506103d5610a40565b6040516103e291906122e5565b60405180910390f35b6103f3610a46565b005b348015610400575f80fd5b5061041b600480360381019061041691906123d5565b610f69565b60405161042891906122e5565b60405180910390f35b34801561043c575f80fd5b5061045760048036038101906104529190612413565b610feb565b005b348015610464575f80fd5b5061046d611077565b005b60606040518060400160405280600481526020017f46554b5500000000000000000000000000000000000000000000000000000000815250905090565b5f6104bf6104b86111a9565b84846111b0565b6001905092915050565b60105481565b5f6009600a6104de919061259a565b6461f313f8806104ee91906125e4565b905090565b5f6104ff848484611373565b6105bc8461050b6111a9565b6105b7856040518060600160405280602881526020016130e86028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61056e6111a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611c309092919063ffffffff16565b6111b0565b600190509392505050565b5f6009905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661060f6111a9565b73ffffffffffffffffffffffffffffffffffffffff161461062e575f80fd5b5f6106383061067e565b90505f811180156106555750601260169054906101000a900460ff165b156106645761066381611c92565b5b5f4790505f81111561067a5761067981611efd565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6106cc6111a9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074f9061266f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600d5481565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108586111a9565b73ffffffffffffffffffffffffffffffffffffffff1614610877575f80fd5b5f6109156064610907848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108ba91906123bc565b602060405180830381865afa1580156108d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f991906126a1565b611f6590919063ffffffff16565b611fdc90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610973929190612727565b6020604051808303815f875af115801561098f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109b39190612778565b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e5481565b60606040518060400160405280600481526020017f46554b5500000000000000000000000000000000000000000000000000000000815250905090565b5f610a36610a2f6111a9565b8484611373565b6001905092915050565b600f5481565b610a4e6111a9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad19061266f565b60405180910390fd5b601260149054906101000a900460ff1615610b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b21906127ed565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610bc73060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610bb2919061259a565b6461f313f880610bc291906125e4565b6111b0565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c31573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c55919061281f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cdb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cff919061281f565b6040518363ffffffff1660e01b8152600401610d1c92919061284a565b6020604051808303815f875af1158015610d38573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d5c919061281f565b60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430610de33061067e565b5f80610ded6109b9565b426040518863ffffffff1660e01b8152600401610e0f969594939291906128aa565b60606040518083038185885af1158015610e2b573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610e509190612909565b50505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610ef0929190612959565b6020604051808303815f875af1158015610f0c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f309190612778565b506001601260166101000a81548160ff0219169083151502179055506001601260146101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661102b6111a9565b73ffffffffffffffffffffffffffffffffffffffff161461104a575f80fd5b600754811115801561105e57506008548111155b611066575f80fd5b806007819055508060088190555050565b61107f6111a9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461110b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111029061266f565b60405180910390fd5b6009600a611119919061259a565b6461f313f88061112991906125e4565b600d819055506009600a61113d919061259a565b6461f313f88061114d91906125e4565b600e819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a611182919061259a565b6461f313f88061119291906125e4565b60405161119f91906122e5565b60405180910390a1565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361121e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611215906129f0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361128c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128390612a7e565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161136691906122e5565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d890612b0c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361144f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144690612b9a565b60405180910390fd5b5f8111611491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148890612c28565b60405180910390fd5b5f61149a6109b9565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561150857506114d86109b9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611561575060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611980576115a26064611594600954600c541161158157600554611585565b6007545b85611f6590919063ffffffff16565b611fdc90919063ffffffff16565b905060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561164d575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156116a0575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561175a57600d548211156116ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e190612c90565b60405180910390fd5b600e54826116f78561067e565b6117019190612cae565b1115611742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173990612d2b565b60405180910390fd5b600c5f81548092919061175490612d49565b91905055505b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156117e257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611826576118236064611815600a54600c541161180257600654611806565b6008545b85611f6590919063ffffffff16565b611fdc90919063ffffffff16565b90505b5f6118303061067e565b9050601260159054906101000a900460ff1615801561189b575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156118b35750601260169054906101000a900460ff165b80156118c05750600f5481115b80156118cf5750600b54600c54115b1561197e576014544311156118e6575f6013819055505b60036013541061192b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192290612dda565b60405180910390fd5b6119486119438461193e84601054612025565b612025565b611c92565b5f4790505f81111561195e5761195d47611efd565b5b60135f81548092919061197090612d49565b919050555043601481905550505b505b5f811115611a7f576119d88160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461203d90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a7691906122e5565b60405180910390a35b611acf8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461209a90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611b72611b26828461209a90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461203d90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611c15848661209a90919063ffffffff16565b604051611c2291906122e5565b60405180910390a350505050565b5f838311158290611c77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6e91906121b4565b60405180910390fd5b505f8385611c859190612df8565b9050809150509392505050565b6001601260156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611cc957611cc8612e2b565b5b604051908082528060200260200182016040528015611cf75781602001602082028036833780820191505090505b50905030815f81518110611d0e57611d0d612e58565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611db2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dd6919061281f565b81600181518110611dea57611de9612e58565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e503060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846111b0565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611eb2959493929190612f3c565b5f604051808303815f87803b158015611ec9575f80fd5b505af1158015611edb573d5f803e3d5ffd5b50505050505f601260156101000a81548160ff02191690831515021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611f61573d5f803e3d5ffd5b5050565b5f808303611f75575f9050611fd6565b5f8284611f8291906125e4565b9050828482611f919190612fc1565b14611fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc890613061565b60405180910390fd5b809150505b92915050565b5f61201d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120e3565b905092915050565b5f8183116120335782612035565b815b905092915050565b5f80828461204b9190612cae565b905083811015612090576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612087906130c9565b60405180910390fd5b8091505092915050565b5f6120db83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c30565b905092915050565b5f8083118290612129576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212091906121b4565b60405180910390fd5b505f83856121379190612fc1565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61218682612144565b612190818561214e565b93506121a081856020860161215e565b6121a98161216c565b840191505092915050565b5f6020820190508181035f8301526121cc818461217c565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612201826121d8565b9050919050565b612211816121f7565b811461221b575f80fd5b50565b5f8135905061222c81612208565b92915050565b5f819050919050565b61224481612232565b811461224e575f80fd5b50565b5f8135905061225f8161223b565b92915050565b5f806040838503121561227b5761227a6121d4565b5b5f6122888582860161221e565b925050602061229985828601612251565b9150509250929050565b5f8115159050919050565b6122b7816122a3565b82525050565b5f6020820190506122d05f8301846122ae565b92915050565b6122df81612232565b82525050565b5f6020820190506122f85f8301846122d6565b92915050565b5f805f60608486031215612315576123146121d4565b5b5f6123228682870161221e565b93505060206123338682870161221e565b925050604061234486828701612251565b9150509250925092565b5f60ff82169050919050565b6123638161234e565b82525050565b5f60208201905061237c5f83018461235a565b92915050565b5f60208284031215612397576123966121d4565b5b5f6123a48482850161221e565b91505092915050565b6123b6816121f7565b82525050565b5f6020820190506123cf5f8301846123ad565b92915050565b5f80604083850312156123eb576123ea6121d4565b5b5f6123f88582860161221e565b92505060206124098582860161221e565b9150509250929050565b5f60208284031215612428576124276121d4565b5b5f61243584828501612251565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156124c05780860481111561249c5761249b61243e565b5b60018516156124ab5780820291505b80810290506124b98561246b565b9450612480565b94509492505050565b5f826124d85760019050612593565b816124e5575f9050612593565b81600181146124fb576002811461250557612534565b6001915050612593565b60ff8411156125175761251661243e565b5b8360020a91508482111561252e5761252d61243e565b5b50612593565b5060208310610133831016604e8410600b84101617156125695782820a9050838111156125645761256361243e565b5b612593565b6125768484846001612477565b9250905081840481111561258d5761258c61243e565b5b81810290505b9392505050565b5f6125a482612232565b91506125af8361234e565b92506125dc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846124c9565b905092915050565b5f6125ee82612232565b91506125f983612232565b925082820261260781612232565b9150828204841483151761261e5761261d61243e565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61265960208361214e565b915061266482612625565b602082019050919050565b5f6020820190508181035f8301526126868161264d565b9050919050565b5f8151905061269b8161223b565b92915050565b5f602082840312156126b6576126b56121d4565b5b5f6126c38482850161268d565b91505092915050565b5f819050919050565b5f6126ef6126ea6126e5846121d8565b6126cc565b6121d8565b9050919050565b5f612700826126d5565b9050919050565b5f612711826126f6565b9050919050565b61272181612707565b82525050565b5f60408201905061273a5f830185612718565b61274760208301846122d6565b9392505050565b612757816122a3565b8114612761575f80fd5b50565b5f815190506127728161274e565b92915050565b5f6020828403121561278d5761278c6121d4565b5b5f61279a84828501612764565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6127d760178361214e565b91506127e2826127a3565b602082019050919050565b5f6020820190508181035f830152612804816127cb565b9050919050565b5f8151905061281981612208565b92915050565b5f60208284031215612834576128336121d4565b5b5f6128418482850161280b565b91505092915050565b5f60408201905061285d5f8301856123ad565b61286a60208301846123ad565b9392505050565b5f819050919050565b5f61289461288f61288a84612871565b6126cc565b612232565b9050919050565b6128a48161287a565b82525050565b5f60c0820190506128bd5f8301896123ad565b6128ca60208301886122d6565b6128d7604083018761289b565b6128e4606083018661289b565b6128f160808301856123ad565b6128fe60a08301846122d6565b979650505050505050565b5f805f606084860312156129205761291f6121d4565b5b5f61292d8682870161268d565b935050602061293e8682870161268d565b925050604061294f8682870161268d565b9150509250925092565b5f60408201905061296c5f8301856123ad565b61297960208301846122d6565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6129da60248361214e565b91506129e582612980565b604082019050919050565b5f6020820190508181035f830152612a07816129ce565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612a6860228361214e565b9150612a7382612a0e565b604082019050919050565b5f6020820190508181035f830152612a9581612a5c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612af660258361214e565b9150612b0182612a9c565b604082019050919050565b5f6020820190508181035f830152612b2381612aea565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612b8460238361214e565b9150612b8f82612b2a565b604082019050919050565b5f6020820190508181035f830152612bb181612b78565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612c1260298361214e565b9150612c1d82612bb8565b604082019050919050565b5f6020820190508181035f830152612c3f81612c06565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612c7a60198361214e565b9150612c8582612c46565b602082019050919050565b5f6020820190508181035f830152612ca781612c6e565b9050919050565b5f612cb882612232565b9150612cc383612232565b9250828201905080821115612cdb57612cda61243e565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612d15601a8361214e565b9150612d2082612ce1565b602082019050919050565b5f6020820190508181035f830152612d4281612d09565b9050919050565b5f612d5382612232565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612d8557612d8461243e565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f612dc460178361214e565b9150612dcf82612d90565b602082019050919050565b5f6020820190508181035f830152612df181612db8565b9050919050565b5f612e0282612232565b9150612e0d83612232565b9250828203905081811115612e2557612e2461243e565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612eb7816121f7565b82525050565b5f612ec88383612eae565b60208301905092915050565b5f602082019050919050565b5f612eea82612e85565b612ef48185612e8f565b9350612eff83612e9f565b805f5b83811015612f2f578151612f168882612ebd565b9750612f2183612ed4565b925050600181019050612f02565b5085935050505092915050565b5f60a082019050612f4f5f8301886122d6565b612f5c602083018761289b565b8181036040830152612f6e8186612ee0565b9050612f7d60608301856123ad565b612f8a60808301846122d6565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612fcb82612232565b9150612fd683612232565b925082612fe657612fe5612f94565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61304b60218361214e565b915061305682612ff1565b604082019050919050565b5f6020820190508181035f8301526130788161303f565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6130b3601b8361214e565b91506130be8261307f565b602082019050919050565b5f6020820190508181035f8301526130e0816130a7565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209ec8c24ba6e99ddb4d2afda3044481442ed231a6bcaf3226b79001e3992bd5f064736f6c634300081a0033

Deployed Bytecode Sourcemap

3613:8132:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5468:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6301:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4659:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5745:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6470:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5654:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11379:363;;;;;;;;;;;;;:::i;:::-;;5848:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2694:148;;;;;;;;;;;;;:::i;:::-;;4464:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11105:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2480:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4527:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5559:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5975:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4592:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10167:667;;;:::i;:::-;;6150:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10842:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9895:162;;;;;;;;;;;;;:::i;:::-;;5468:83;5505:13;5538:5;;;;;;;;;;;;;;;;;5531:12;;5468:83;:::o;6301:161::-;6376:4;6393:39;6402:12;:10;:12::i;:::-;6416:7;6425:6;6393:8;:39::i;:::-;6450:4;6443:11;;6301:161;;;;:::o;4659:54::-;;;;:::o;5745:95::-;5798:7;4280:1;4338:2;:13;;;;:::i;:::-;4323:12;:28;;;;:::i;:::-;5818:14;;5745:95;:::o;6470:313::-;6568:4;6585:36;6595:6;6603:9;6614:6;6585:9;:36::i;:::-;6632:121;6641:6;6649:12;:10;:12::i;:::-;6663:89;6701:6;6663:89;;;;;;;;;;;;;;;;;:11;:19;6675:6;6663:19;;;;;;;;;;;;;;;:33;6683:12;:10;:12::i;:::-;6663:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6632:8;:121::i;:::-;6771:4;6764:11;;6470:313;;;;;:::o;5654:83::-;5695:5;4280:1;5713:16;;5654:83;:::o;11379:363::-;11443:10;;;;;;;;;;;11429:24;;:12;:10;:12::i;:::-;:24;;;11421:33;;;;;;11465:20;11486:24;11504:4;11486:9;:24::i;:::-;11465:45;;11537:1;11524:12;:14;:29;;;;;11542:11;;;;;;;;;;;11524:29;11521:88;;;11567:30;11584:12;11567:16;:30::i;:::-;11521:88;11619:18;11638:21;11619:40;;11684:1;11673:10;:12;11670:65;;;11699:24;11712:10;11699:12;:24::i;:::-;11670:65;11410:332;;11379:363::o;5848:119::-;5914:7;5941:9;:18;5951:7;5941:18;;;;;;;;;;;;;;;;5934:25;;5848:119;;;:::o;2694:148::-;2617:12;:10;:12::i;:::-;2607:22;;:6;;;;;;;;;;:22;;;2599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2801:1:::1;2764:40;;2785:6;::::0;::::1;;;;;;;;2764:40;;;;;;;;;;;;2832:1;2815:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2694:148::o:0;4464:56::-;;;;:::o;11105:266::-;11203:10;;;;;;;;;;;11189:24;;:12;:10;:12::i;:::-;:24;;;11181:33;;;;;;11225:15;11243:63;11302:3;11243:54;11289:7;11250:8;11243:26;;;11278:4;11243:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;:54;;;;:::i;:::-;:58;;:63;;;;:::i;:::-;11225:81;;11324:8;11317:25;;;11343:10;;;;;;;;;;;11355:7;11317:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11170:201;11105:266;;:::o;2480:79::-;2518:7;2545:6;;;;;;;;;;;2538:13;;2480:79;:::o;4527:58::-;;;;:::o;5559:87::-;5598:13;5631:7;;;;;;;;;;;;;;;;;5624:14;;5559:87;:::o;5975:167::-;6053:4;6070:42;6080:12;:10;:12::i;:::-;6094:9;6105:6;6070:9;:42::i;:::-;6130:4;6123:11;;5975:167;;;;:::o;4592:60::-;;;;:::o;10167:667::-;2617:12;:10;:12::i;:::-;2607:22;;:6;;;;;;;;;;:22;;;2599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10239:11:::1;;;;;;;;;;;10238:12;10230:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;10325:42;10288:15;;:80;;;;;;;;;;;;;;;;;;10379:58;10396:4;10411:15;;;;;;;;;;;4280:1;4338:2;:13;;;;:::i;:::-;4323:12;:28;;;;:::i;:::-;10379:8;:58::i;:::-;10482:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10464:55;;;10528:4;10535:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10464:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10448:13;;:110;;;;;;;;;;;;;;;;;;10569:15;;;;;;;;;;;:31;;;10608:9;10627:4;10633:24;10651:4;10633:9;:24::i;:::-;10658:1;10660::::0;10662:7:::1;:5;:7::i;:::-;10670:15;10569:117;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;10704:13;;;;;;;;;;;10697:29;;;10735:15;;;;;;;;;;;10753:14;10697:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10793:4;10779:11;;:18;;;;;;;;;;;;;;;;;;10822:4;10808:11;;:18;;;;;;;;;;;;;;;;;;10167:667::o:0;6150:143::-;6231:7;6258:11;:18;6270:5;6258:18;;;;;;;;;;;;;;;:27;6277:7;6258:27;;;;;;;;;;;;;;;;6251:34;;6150:143;;;;:::o;10842:218::-;10917:10;;;;;;;;;;;10903:24;;:12;:10;:12::i;:::-;:24;;;10895:33;;;;;;10954:12;;10945:7;:21;;:47;;;;;10979:13;;10970:7;:22;;10945:47;10937:56;;;;;;11015:7;11002:12;:20;;;;11045:7;11031:13;:21;;;;10842:218;:::o;9895:162::-;2617:12;:10;:12::i;:::-;2607:22;;:6;;;;;;;;;;:22;;;2599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4280:1:::1;4338:2;:13;;;;:::i;:::-;4323:12;:28;;;;:::i;:::-;9951:12;:22;;;;4280:1;4338:2;:13;;;;:::i;:::-;4323:12;:28;;;;:::i;:::-;9984:14;:22;;;;10022:27;4280:1;4338:2;:13;;;;:::i;:::-;4323:12;:28;;;;:::i;:::-;10022:27;;;;;;:::i;:::-;;;;;;;;9895:162::o:0;235:98::-;288:7;315:10;308:17;;235:98;:::o;6791:335::-;6901:1;6884:19;;:5;:19;;;6876:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6982:1;6963:21;;:7;:21;;;6955:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7064:6;7034:11;:18;7046:5;7034:18;;;;;;;;;;;;;;;:27;7053:7;7034:27;;;;;;;;;;;;;;;:36;;;;7102:7;7086:32;;7095:5;7086:32;;;7111:6;7086:32;;;;;;:::i;:::-;;;;;;;;6791:335;;;:::o;7134:2154::-;7238:1;7222:18;;:4;:18;;;7214:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7315:1;7301:16;;:2;:16;;;7293:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7385:1;7376:6;:10;7368:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7443:17;7485:7;:5;:7::i;:::-;7477:15;;:4;:15;;;;:32;;;;;7502:7;:5;:7::i;:::-;7496:13;;:2;:13;;;;7477:32;:52;;;;;7519:10;;;;;;;;;;;7513:16;;:2;:16;;;;7477:52;7473:1459;;;7560:76;7632:3;7560:67;7582:15;;7572:9;;:25;7571:55;;7612:14;;7571:55;;;7599:12;;7571:55;7560:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;7548:88;;7665:13;;;;;;;;;;;7657:21;;:4;:21;;;:55;;;;;7696:15;;;;;;;;;;;7682:30;;:2;:30;;;;7657:55;:83;;;;;7718:18;:22;7737:2;7718:22;;;;;;;;;;;;;;;;;;;;;;;;;7716:24;7657:83;7653:313;;;7780:12;;7770:6;:22;;7762:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;7875:14;;7865:6;7849:13;7859:2;7849:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;7841:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;7939:9;;:11;;;;;;;;;:::i;:::-;;;;;;7653:313;7991:13;;;;;;;;;;;7985:19;;:2;:19;;;:43;;;;;8023:4;8008:20;;:4;:20;;;;7985:43;7982:174;;;8061:79;8136:3;8061:70;8083:16;;8073:9;;:26;8072:58;;8115:15;;8072:58;;;8101:13;;8072:58;8061:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;8049:91;;7982:174;8172:28;8203:24;8221:4;8203:9;:24::i;:::-;8172:55;;8247:6;;;;;;;;;;;8246:7;:30;;;;;8263:13;;;;;;;;;;;8257:19;;:2;:19;;;8246:30;:45;;;;;8280:11;;;;;;;;;;;8246:45;:89;;;;;8318:17;;8295:20;:40;8246:89;:123;;;;;8351:18;;8339:9;;:30;8246:123;8242:679;;;8409:13;;8394:12;:28;8390:90;;;8459:1;8447:9;:13;;;;8390:90;8518:1;8506:9;;:13;8498:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;8566:69;8583:51;8587:6;8595:38;8599:20;8621:11;;8595:3;:38::i;:::-;8583:3;:51::i;:::-;8566:16;:69::i;:::-;8654:26;8683:21;8654:50;;8748:1;8727:18;:22;8723:106;;;8774:35;8787:21;8774:12;:35::i;:::-;8723:106;8847:9;;:11;;;;;;;;;:::i;:::-;;;;;;8893:12;8877:13;:28;;;;8371:550;8242:679;7531:1401;7473:1459;8957:1;8947:9;:11;8944:161;;;8997:39;9026:9;8997;:24;9015:4;8997:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;8972:9;:24;8990:4;8972:24;;;;;;;;;;;;;;;:64;;;;9077:4;9054:39;;9063:4;9054:39;;;9083:9;9054:39;;;;;;:::i;:::-;;;;;;;;8944:161;9131:27;9151:6;9131:9;:15;9141:4;9131:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9115:9;:15;9125:4;9115:15;;;;;;;;;;;;;;;:43;;;;9183:40;9201:21;9212:9;9201:6;:10;;:21;;;;:::i;:::-;9183:9;:13;9193:2;9183:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9169:9;:13;9179:2;9169:13;;;;;;;;;;;;;;;:54;;;;9254:2;9239:41;;9248:4;9239:41;;;9258:21;9269:9;9258:6;:10;;:21;;;;:::i;:::-;9239:41;;;;;;:::i;:::-;;;;;;;;7203:2085;7134:2154;;;:::o;1372:190::-;1458:7;1491:1;1486;:6;;1494:12;1478:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1518:9;1534:1;1530;:5;;;;:::i;:::-;1518:17;;1553:1;1546:8;;;1372:190;;;;;:::o;9404:483::-;5084:4;5075:6;;:13;;;;;;;;;;;;;;;;;;9482:21:::1;9520:1;9506:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9482:40;;9551:4;9533;9538:1;9533:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9577:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9567:4;9572:1;9567:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;9610:62;9627:4;9642:15;;;;;;;;;;;9660:11;9610:8;:62::i;:::-;9683:15;;;;;;;;;;;:66;;;9764:11;9790:1;9806:4;9833;9853:15;9683:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9471:416;5120:5:::0;5111:6;;:14;;;;;;;;;;;;;;;;;;9404:483;:::o;10065:92::-;10122:10;;;;;;;;;;;:19;;:27;10142:6;10122:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10065:92;:::o;1570:246::-;1628:7;1657:1;1652;:6;1648:47;;1682:1;1675:8;;;;1648:47;1705:9;1721:1;1717;:5;;;;:::i;:::-;1705:17;;1750:1;1745;1741;:5;;;;:::i;:::-;:10;1733:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1807:1;1800:8;;;1570:246;;;;;:::o;1824:132::-;1882:7;1909:39;1913:1;1916;1909:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1902:46;;1824:132;;;;:::o;9298:98::-;9355:7;9382:1;9380;:3;9379:9;;9387:1;9379:9;;;9385:1;9379:9;9372:16;;9298:98;;;;:::o;1041:179::-;1099:7;1119:9;1135:1;1131;:5;;;;:::i;:::-;1119:17;;1160:1;1155;:6;;1147:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1211:1;1204:8;;;1041:179;;;;:::o;1228:136::-;1286:7;1313:43;1317:1;1320;1313:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1306:50;;1228:136;;;;:::o;1964:189::-;2050:7;2082:1;2078;:5;2085:12;2070:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2109:9;2125:1;2121;:5;;;;:::i;:::-;2109:17;;2144:1;2137:8;;;1964:189;;;;;:::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:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:329::-;4805:6;4854:2;4842:9;4833:7;4829:23;4825:32;4822:119;;;4860:79;;:::i;:::-;4822:119;4980:1;5005:53;5050:7;5041:6;5030:9;5026:22;5005:53;:::i;:::-;4995:63;;4951:117;4746:329;;;;:::o;5081:118::-;5168:24;5186:5;5168:24;:::i;:::-;5163:3;5156:37;5081:118;;:::o;5205:222::-;5298:4;5336:2;5325:9;5321:18;5313:26;;5349:71;5417:1;5406:9;5402:17;5393:6;5349:71;:::i;:::-;5205:222;;;;:::o;5433:474::-;5501:6;5509;5558:2;5546:9;5537:7;5533:23;5529:32;5526:119;;;5564:79;;:::i;:::-;5526:119;5684:1;5709:53;5754:7;5745:6;5734:9;5730:22;5709:53;:::i;:::-;5699:63;;5655:117;5811:2;5837:53;5882:7;5873:6;5862:9;5858:22;5837:53;:::i;:::-;5827:63;;5782:118;5433:474;;;;;:::o;5913:329::-;5972:6;6021:2;6009:9;6000:7;5996:23;5992:32;5989:119;;;6027:79;;:::i;:::-;5989:119;6147:1;6172:53;6217:7;6208:6;6197:9;6193:22;6172:53;:::i;:::-;6162:63;;6118:117;5913:329;;;;:::o;6248:180::-;6296:77;6293:1;6286:88;6393:4;6390:1;6383:15;6417:4;6414:1;6407:15;6434:102;6476:8;6523:5;6520:1;6516:13;6495:34;;6434:102;;;:::o;6542:848::-;6603:5;6610:4;6634:6;6625:15;;6658:5;6649:14;;6672:712;6693:1;6683:8;6680:15;6672:712;;;6788:4;6783:3;6779:14;6773:4;6770:24;6767:50;;;6797:18;;:::i;:::-;6767:50;6847:1;6837:8;6833:16;6830:451;;;7262:4;7255:5;7251:16;7242:25;;6830:451;7312:4;7306;7302:15;7294:23;;7342:32;7365:8;7342:32;:::i;:::-;7330:44;;6672:712;;;6542:848;;;;;;;:::o;7396:1073::-;7450:5;7641:8;7631:40;;7662:1;7653:10;;7664:5;;7631:40;7690:4;7680:36;;7707:1;7698:10;;7709:5;;7680:36;7776:4;7824:1;7819:27;;;;7860:1;7855:191;;;;7769:277;;7819:27;7837:1;7828:10;;7839:5;;;7855:191;7900:3;7890:8;7887:17;7884:43;;;7907:18;;:::i;:::-;7884:43;7956:8;7953:1;7949:16;7940:25;;7991:3;7984:5;7981:14;7978:40;;;7998:18;;:::i;:::-;7978:40;8031:5;;;7769:277;;8155:2;8145:8;8142:16;8136:3;8130:4;8127:13;8123:36;8105:2;8095:8;8092:16;8087:2;8081:4;8078:12;8074:35;8058:111;8055:246;;;8211:8;8205:4;8201:19;8192:28;;8246:3;8239:5;8236:14;8233:40;;;8253:18;;:::i;:::-;8233:40;8286:5;;8055:246;8326:42;8364:3;8354:8;8348:4;8345:1;8326:42;:::i;:::-;8311:57;;;;8400:4;8395:3;8391:14;8384:5;8381:25;8378:51;;;8409:18;;:::i;:::-;8378:51;8458:4;8451:5;8447:16;8438:25;;7396:1073;;;;;;:::o;8475:281::-;8533:5;8557:23;8575:4;8557:23;:::i;:::-;8549:31;;8601:25;8617:8;8601:25;:::i;:::-;8589:37;;8645:104;8682:66;8672:8;8666:4;8645:104;:::i;:::-;8636:113;;8475:281;;;;:::o;8762:410::-;8802:7;8825:20;8843:1;8825:20;:::i;:::-;8820:25;;8859:20;8877:1;8859:20;:::i;:::-;8854:25;;8914:1;8911;8907:9;8936:30;8954:11;8936:30;:::i;:::-;8925:41;;9115:1;9106:7;9102:15;9099:1;9096:22;9076:1;9069:9;9049:83;9026:139;;9145:18;;:::i;:::-;9026:139;8810:362;8762:410;;;;:::o;9178:182::-;9318:34;9314:1;9306:6;9302:14;9295:58;9178:182;:::o;9366:366::-;9508:3;9529:67;9593:2;9588:3;9529:67;:::i;:::-;9522:74;;9605:93;9694:3;9605:93;:::i;:::-;9723:2;9718:3;9714:12;9707:19;;9366:366;;;:::o;9738:419::-;9904:4;9942:2;9931:9;9927:18;9919:26;;9991:9;9985:4;9981:20;9977:1;9966:9;9962:17;9955:47;10019:131;10145:4;10019:131;:::i;:::-;10011:139;;9738:419;;;:::o;10163:143::-;10220:5;10251:6;10245:13;10236:22;;10267:33;10294:5;10267:33;:::i;:::-;10163:143;;;;:::o;10312:351::-;10382:6;10431:2;10419:9;10410:7;10406:23;10402:32;10399:119;;;10437:79;;:::i;:::-;10399:119;10557:1;10582:64;10638:7;10629:6;10618:9;10614:22;10582:64;:::i;:::-;10572:74;;10528:128;10312:351;;;;:::o;10669:60::-;10697:3;10718:5;10711:12;;10669:60;;;:::o;10735:142::-;10785:9;10818:53;10836:34;10845:24;10863:5;10845:24;:::i;:::-;10836:34;:::i;:::-;10818:53;:::i;:::-;10805:66;;10735:142;;;:::o;10883:126::-;10933:9;10966:37;10997:5;10966:37;:::i;:::-;10953:50;;10883:126;;;:::o;11015:134::-;11073:9;11106:37;11137:5;11106:37;:::i;:::-;11093:50;;11015:134;;;:::o;11155:147::-;11250:45;11289:5;11250:45;:::i;:::-;11245:3;11238:58;11155:147;;:::o;11308:348::-;11437:4;11475:2;11464:9;11460:18;11452:26;;11488:79;11564:1;11553:9;11549:17;11540:6;11488:79;:::i;:::-;11577:72;11645:2;11634:9;11630:18;11621:6;11577:72;:::i;:::-;11308:348;;;;;:::o;11662:116::-;11732:21;11747:5;11732:21;:::i;:::-;11725:5;11722:32;11712:60;;11768:1;11765;11758:12;11712:60;11662:116;:::o;11784:137::-;11838:5;11869:6;11863:13;11854:22;;11885:30;11909:5;11885:30;:::i;:::-;11784:137;;;;:::o;11927:345::-;11994:6;12043:2;12031:9;12022:7;12018:23;12014:32;12011:119;;;12049:79;;:::i;:::-;12011:119;12169:1;12194:61;12247:7;12238:6;12227:9;12223:22;12194:61;:::i;:::-;12184:71;;12140:125;11927:345;;;;:::o;12278:173::-;12418:25;12414:1;12406:6;12402:14;12395:49;12278:173;:::o;12457:366::-;12599:3;12620:67;12684:2;12679:3;12620:67;:::i;:::-;12613:74;;12696:93;12785:3;12696:93;:::i;:::-;12814:2;12809:3;12805:12;12798:19;;12457:366;;;:::o;12829:419::-;12995:4;13033:2;13022:9;13018:18;13010:26;;13082:9;13076:4;13072:20;13068:1;13057:9;13053:17;13046:47;13110:131;13236:4;13110:131;:::i;:::-;13102:139;;12829:419;;;:::o;13254:143::-;13311:5;13342:6;13336:13;13327:22;;13358:33;13385:5;13358:33;:::i;:::-;13254:143;;;;:::o;13403:351::-;13473:6;13522:2;13510:9;13501:7;13497:23;13493:32;13490:119;;;13528:79;;:::i;:::-;13490:119;13648:1;13673:64;13729:7;13720:6;13709:9;13705:22;13673:64;:::i;:::-;13663:74;;13619:128;13403:351;;;;:::o;13760:332::-;13881:4;13919:2;13908:9;13904:18;13896:26;;13932:71;14000:1;13989:9;13985:17;13976:6;13932:71;:::i;:::-;14013:72;14081:2;14070:9;14066:18;14057:6;14013:72;:::i;:::-;13760:332;;;;;:::o;14098:85::-;14143:7;14172:5;14161:16;;14098:85;;;:::o;14189:158::-;14247:9;14280:61;14298:42;14307:32;14333:5;14307:32;:::i;:::-;14298:42;:::i;:::-;14280:61;:::i;:::-;14267:74;;14189:158;;;:::o;14353:147::-;14448:45;14487:5;14448:45;:::i;:::-;14443:3;14436:58;14353:147;;:::o;14506:807::-;14755:4;14793:3;14782:9;14778:19;14770:27;;14807:71;14875:1;14864:9;14860:17;14851:6;14807:71;:::i;:::-;14888:72;14956:2;14945:9;14941:18;14932:6;14888:72;:::i;:::-;14970:80;15046:2;15035:9;15031:18;15022:6;14970:80;:::i;:::-;15060;15136:2;15125:9;15121:18;15112:6;15060:80;:::i;:::-;15150:73;15218:3;15207:9;15203:19;15194:6;15150:73;:::i;:::-;15233;15301:3;15290:9;15286:19;15277:6;15233:73;:::i;:::-;14506:807;;;;;;;;;:::o;15319:663::-;15407:6;15415;15423;15472:2;15460:9;15451:7;15447:23;15443:32;15440:119;;;15478:79;;:::i;:::-;15440:119;15598:1;15623:64;15679:7;15670:6;15659:9;15655:22;15623:64;:::i;:::-;15613:74;;15569:128;15736:2;15762:64;15818:7;15809:6;15798:9;15794:22;15762:64;:::i;:::-;15752:74;;15707:129;15875:2;15901:64;15957:7;15948:6;15937:9;15933:22;15901:64;:::i;:::-;15891:74;;15846:129;15319:663;;;;;:::o;15988:332::-;16109:4;16147:2;16136:9;16132:18;16124:26;;16160:71;16228:1;16217:9;16213:17;16204:6;16160:71;:::i;:::-;16241:72;16309:2;16298:9;16294:18;16285:6;16241:72;:::i;:::-;15988:332;;;;;:::o;16326:223::-;16466:34;16462:1;16454:6;16450:14;16443:58;16535:6;16530:2;16522:6;16518:15;16511:31;16326:223;:::o;16555:366::-;16697:3;16718:67;16782:2;16777:3;16718:67;:::i;:::-;16711:74;;16794:93;16883:3;16794:93;:::i;:::-;16912:2;16907:3;16903:12;16896:19;;16555:366;;;:::o;16927:419::-;17093:4;17131:2;17120:9;17116:18;17108:26;;17180:9;17174:4;17170:20;17166:1;17155:9;17151:17;17144:47;17208:131;17334:4;17208:131;:::i;:::-;17200:139;;16927:419;;;:::o;17352:221::-;17492:34;17488:1;17480:6;17476:14;17469:58;17561:4;17556:2;17548:6;17544:15;17537:29;17352:221;:::o;17579:366::-;17721:3;17742:67;17806:2;17801:3;17742:67;:::i;:::-;17735:74;;17818:93;17907:3;17818:93;:::i;:::-;17936:2;17931:3;17927:12;17920:19;;17579:366;;;:::o;17951:419::-;18117:4;18155:2;18144:9;18140:18;18132:26;;18204:9;18198:4;18194:20;18190:1;18179:9;18175:17;18168:47;18232:131;18358:4;18232:131;:::i;:::-;18224:139;;17951:419;;;:::o;18376:224::-;18516:34;18512:1;18504:6;18500:14;18493:58;18585:7;18580:2;18572:6;18568:15;18561:32;18376:224;:::o;18606:366::-;18748:3;18769:67;18833:2;18828:3;18769:67;:::i;:::-;18762:74;;18845:93;18934:3;18845:93;:::i;:::-;18963:2;18958:3;18954:12;18947:19;;18606:366;;;:::o;18978:419::-;19144:4;19182:2;19171:9;19167:18;19159:26;;19231:9;19225:4;19221:20;19217:1;19206:9;19202:17;19195:47;19259:131;19385:4;19259:131;:::i;:::-;19251:139;;18978:419;;;:::o;19403:222::-;19543:34;19539:1;19531:6;19527:14;19520:58;19612:5;19607:2;19599:6;19595:15;19588:30;19403:222;:::o;19631:366::-;19773:3;19794:67;19858:2;19853:3;19794:67;:::i;:::-;19787:74;;19870:93;19959:3;19870:93;:::i;:::-;19988:2;19983:3;19979:12;19972:19;;19631:366;;;:::o;20003:419::-;20169:4;20207:2;20196:9;20192:18;20184:26;;20256:9;20250:4;20246:20;20242:1;20231:9;20227:17;20220:47;20284:131;20410:4;20284:131;:::i;:::-;20276:139;;20003:419;;;:::o;20428:228::-;20568:34;20564:1;20556:6;20552:14;20545:58;20637:11;20632:2;20624:6;20620:15;20613:36;20428:228;:::o;20662:366::-;20804:3;20825:67;20889:2;20884:3;20825:67;:::i;:::-;20818:74;;20901:93;20990:3;20901:93;:::i;:::-;21019:2;21014:3;21010:12;21003:19;;20662:366;;;:::o;21034:419::-;21200:4;21238:2;21227:9;21223:18;21215:26;;21287:9;21281:4;21277:20;21273:1;21262:9;21258:17;21251:47;21315:131;21441:4;21315:131;:::i;:::-;21307:139;;21034:419;;;:::o;21459:175::-;21599:27;21595:1;21587:6;21583:14;21576:51;21459:175;:::o;21640:366::-;21782:3;21803:67;21867:2;21862:3;21803:67;:::i;:::-;21796:74;;21879:93;21968:3;21879:93;:::i;:::-;21997:2;21992:3;21988:12;21981:19;;21640:366;;;:::o;22012:419::-;22178:4;22216:2;22205:9;22201:18;22193:26;;22265:9;22259:4;22255:20;22251:1;22240:9;22236:17;22229:47;22293:131;22419:4;22293:131;:::i;:::-;22285:139;;22012:419;;;:::o;22437:191::-;22477:3;22496:20;22514:1;22496:20;:::i;:::-;22491:25;;22530:20;22548:1;22530:20;:::i;:::-;22525:25;;22573:1;22570;22566:9;22559:16;;22594:3;22591:1;22588:10;22585:36;;;22601:18;;:::i;:::-;22585:36;22437:191;;;;:::o;22634:176::-;22774:28;22770:1;22762:6;22758:14;22751:52;22634:176;:::o;22816:366::-;22958:3;22979:67;23043:2;23038:3;22979:67;:::i;:::-;22972:74;;23055:93;23144:3;23055:93;:::i;:::-;23173:2;23168:3;23164:12;23157:19;;22816:366;;;:::o;23188:419::-;23354:4;23392:2;23381:9;23377:18;23369:26;;23441:9;23435:4;23431:20;23427:1;23416:9;23412:17;23405:47;23469:131;23595:4;23469:131;:::i;:::-;23461:139;;23188:419;;;:::o;23613:233::-;23652:3;23675:24;23693:5;23675:24;:::i;:::-;23666:33;;23721:66;23714:5;23711:77;23708:103;;23791:18;;:::i;:::-;23708:103;23838:1;23831:5;23827:13;23820:20;;23613:233;;;:::o;23852:173::-;23992:25;23988:1;23980:6;23976:14;23969:49;23852:173;:::o;24031:366::-;24173:3;24194:67;24258:2;24253:3;24194:67;:::i;:::-;24187:74;;24270:93;24359:3;24270:93;:::i;:::-;24388:2;24383:3;24379:12;24372:19;;24031:366;;;:::o;24403:419::-;24569:4;24607:2;24596:9;24592:18;24584:26;;24656:9;24650:4;24646:20;24642:1;24631:9;24627:17;24620:47;24684:131;24810:4;24684:131;:::i;:::-;24676:139;;24403:419;;;:::o;24828:194::-;24868:4;24888:20;24906:1;24888:20;:::i;:::-;24883:25;;24922:20;24940:1;24922:20;:::i;:::-;24917:25;;24966:1;24963;24959:9;24951:17;;24990:1;24984:4;24981:11;24978:37;;;24995:18;;:::i;:::-;24978:37;24828:194;;;;:::o;25028:180::-;25076:77;25073:1;25066:88;25173:4;25170:1;25163:15;25197:4;25194:1;25187:15;25214:180;25262:77;25259:1;25252:88;25359:4;25356:1;25349:15;25383:4;25380:1;25373:15;25400:114;25467:6;25501:5;25495:12;25485:22;;25400:114;;;:::o;25520:184::-;25619:11;25653:6;25648:3;25641:19;25693:4;25688:3;25684:14;25669:29;;25520:184;;;;:::o;25710:132::-;25777:4;25800:3;25792:11;;25830:4;25825:3;25821:14;25813:22;;25710:132;;;:::o;25848:108::-;25925:24;25943:5;25925:24;:::i;:::-;25920:3;25913:37;25848:108;;:::o;25962:179::-;26031:10;26052:46;26094:3;26086:6;26052:46;:::i;:::-;26130:4;26125:3;26121:14;26107:28;;25962:179;;;;:::o;26147:113::-;26217:4;26249;26244:3;26240:14;26232:22;;26147:113;;;:::o;26296:732::-;26415:3;26444:54;26492:5;26444:54;:::i;:::-;26514:86;26593:6;26588:3;26514:86;:::i;:::-;26507:93;;26624:56;26674:5;26624:56;:::i;:::-;26703:7;26734:1;26719:284;26744:6;26741:1;26738:13;26719:284;;;26820:6;26814:13;26847:63;26906:3;26891:13;26847:63;:::i;:::-;26840:70;;26933:60;26986:6;26933:60;:::i;:::-;26923:70;;26779:224;26766:1;26763;26759:9;26754:14;;26719:284;;;26723:14;27019:3;27012:10;;26420:608;;;26296:732;;;;:::o;27034:831::-;27297:4;27335:3;27324:9;27320:19;27312:27;;27349:71;27417:1;27406:9;27402:17;27393:6;27349:71;:::i;:::-;27430:80;27506:2;27495:9;27491:18;27482:6;27430:80;:::i;:::-;27557:9;27551:4;27547:20;27542:2;27531:9;27527:18;27520:48;27585:108;27688:4;27679:6;27585:108;:::i;:::-;27577:116;;27703:72;27771:2;27760:9;27756:18;27747:6;27703:72;:::i;:::-;27785:73;27853:3;27842:9;27838:19;27829:6;27785:73;:::i;:::-;27034:831;;;;;;;;:::o;27871:180::-;27919:77;27916:1;27909:88;28016:4;28013:1;28006:15;28040:4;28037:1;28030:15;28057:185;28097:1;28114:20;28132:1;28114:20;:::i;:::-;28109:25;;28148:20;28166:1;28148:20;:::i;:::-;28143:25;;28187:1;28177:35;;28192:18;;:::i;:::-;28177:35;28234:1;28231;28227:9;28222:14;;28057:185;;;;:::o;28248:220::-;28388:34;28384:1;28376:6;28372:14;28365:58;28457:3;28452:2;28444:6;28440:15;28433:28;28248:220;:::o;28474:366::-;28616:3;28637:67;28701:2;28696:3;28637:67;:::i;:::-;28630:74;;28713:93;28802:3;28713:93;:::i;:::-;28831:2;28826:3;28822:12;28815:19;;28474:366;;;:::o;28846:419::-;29012:4;29050:2;29039:9;29035:18;29027:26;;29099:9;29093:4;29089:20;29085:1;29074:9;29070:17;29063:47;29127:131;29253:4;29127:131;:::i;:::-;29119:139;;28846:419;;;:::o;29271:177::-;29411:29;29407:1;29399:6;29395:14;29388:53;29271:177;:::o;29454:366::-;29596:3;29617:67;29681:2;29676:3;29617:67;:::i;:::-;29610:74;;29693:93;29782:3;29693:93;:::i;:::-;29811:2;29806:3;29802:12;29795:19;;29454:366;;;:::o;29826:419::-;29992:4;30030:2;30019:9;30015:18;30007:26;;30079:9;30073:4;30069:20;30065:1;30054:9;30050:17;30043:47;30107:131;30233:4;30107:131;:::i;:::-;30099:139;;29826:419;;;:::o

Swarm Source

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