ETH Price: $2,474.61 (-1.84%)
Gas: 0.57 Gwei

Token

Nominator Open Market Operating System (NOMOS)
 

Overview

Max Total Supply

248,000,000 NOMOS

Holders

29

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000019023268 NOMOS

Value
$0.00
0xfa388c8459ecd6fc6b8959aecd3182ea46013f87
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:
NOMOS

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

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

NOMOS
Nominator Open Market Operating System 

https://www.nomos.team
https://twitter.com/nomos_ton
https://t.me/NomosPortal

*/

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

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

interface TonUtils {
    struct TonAddress {
        int8 workchain;
        bytes32 address_hash;
    }
    struct TonTxID {
        TonAddress address_;
        bytes32 tx_hash;
        uint64 lt;
    }

  struct SwapData {
        address receiver;
        uint64 amount;
        TonTxID tx;
  }
  struct Signature {
        address signer;
        bytes signature;
  }

}

interface ITonBridge {
    function lock(address account, uint256 amount) external;
}

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 NOMOS 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;
    address private _nominatorRewardsDistributor;
    address private _tonBridge;
    address private _burn;

    address payable private _marketingPool = payable(0x8092e279d0386c688Ecc6448f2029e3b86b95e46);
    address payable private _developmentPool = payable(0x7DD327bB4B1E36980CB2813295EABD9B1EF6E164);
    address payable private _nominatorPool = payable(0x4e450866418c22958B98bd52B81f32A3efF9Dc89);

    uint256 private constant NOMINATOR_REWARDS_ALLOCATION = 12400000 * 10**_decimals; // 5% of total supply
    uint256 private _nominatorRewardsBalance = NOMINATOR_REWARDS_ALLOCATION;

    uint256 firstBlock;
    
    uint256 private _initialBuyTax=20;
    uint256 private _initialSellTax=20;
    uint256 private _finalBuyTax=5;
    uint256 private _finalSellTax=5;
    uint256 private _reduceBuyTaxAt=40;
    uint256 private _reduceSellTaxAt=50;
    uint256 private _preventSwapBefore=40;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 18;
    
    uint256 private constant _tTotal = 248_000_000 * 10**_decimals;
    string private constant _name = unicode"Nominator Open Market Operating System";
    string private constant _symbol = unicode"NOMOS";

    uint256 public _maxTxAmount =   2_000_000 * 10**_decimals;
    uint256 public _maxWalletSize = 2_000_000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 100_000 * 10**_decimals;
    uint256 public _maxTaxSwap= 950_000 * 10**_decimals;

    event NominatorRewardsDistributorChanged(address indexed newDistributor);
    event NominatorRewardsDistributed(address[] nominators, uint256[] amounts);

    event TonBridgeChanged(address indexed tonBridge);
    event BridgedToTon(address indexed account, uint256 amount);

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

    event MaxTxAmountUpdated(uint _maxTxAmount);

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

    constructor () {

        _taxWallet = payable(_msgSender());
        _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) && ! _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(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        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 setNominatorRewardsDistributor(address newDistributor) external onlyOwner {
        require(newDistributor != address(0), "NOMOS: Nominator rewards distributor cannot be the zero address");
        _nominatorRewardsDistributor = newDistributor;
        emit NominatorRewardsDistributorChanged(newDistributor);
    }

    function distributeNominatorRewards(address[] calldata nominators, uint256[] calldata amounts) external {
    require(msg.sender == _nominatorRewardsDistributor, "NOMOS: Only nominator rewards distributor can distribute rewards");
    require(nominators.length == amounts.length, "NOMOS: Nominators and amounts arrays must have the same length");

    uint256 totalAmount = 0;
    for (uint256 i = 0; i < amounts.length; i++) {
        totalAmount += amounts[i];
    }
    require(totalAmount <= _nominatorRewardsBalance, "NOMOS: Insufficient funds for nominator rewards");

    for (uint256 i = 0; i < nominators.length; i++) {
        _transfer(address(this), nominators[i], amounts[i]);
    }
    _nominatorRewardsBalance -= totalAmount;
    emit NominatorRewardsDistributed(nominators, amounts);
    }

    function setTonBridge(address tonBridge) external onlyOwner {
    require(tonBridge != address(0), "NOMOS: TON bridge cannot be the zero address");
    _tonBridge = tonBridge;
    emit TonBridgeChanged(tonBridge);
    }

    function bridgeToTon(uint256 amount) internal {
        require(_tonBridge != address(0), "NOMOS: TON bridge not set");
        require(amount > 0, "NOMOS: Bridge amount must be greater than zero");
    
        emit BridgedToTon(msg.sender, amount);
    }

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

    function sendETHToFee(uint256 amount) private {
        uint256 marketingShare = amount.mul(2).div(5);
        uint256 developmentShare = amount.mul(2).div(5);
        uint256 nominatorShare = amount.sub(marketingShare).sub(developmentShare);

        _marketingPool.transfer(marketingShare);
        _developmentPool.transfer(developmentShare);
        _nominatorPool.transfer(nominatorShare);
    }

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

    receive() external payable {}
}

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BridgedToTon","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"nominators","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"NominatorRewardsDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newDistributor","type":"address"}],"name":"NominatorRewardsDistributorChanged","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":"tonBridge","type":"address"}],"name":"TonBridgeChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"nominators","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"distributeNominatorRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newDistributor","type":"address"}],"name":"setNominatorRewardsDistributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tonBridge","type":"address"}],"name":"setTonBridge","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"}]

6080604052738092e279d0386c688ecc6448f2029e3b86b95e4660085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737dd327bb4b1e36980cb2813295eabd9b1ef6e16460095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734e450866418c22958b98bd52b81f32a3eff9dc89600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a61010e91906106c4565b62bd358061011c919061070e565b600b556014600d556014600e556005600f5560056010556028601155603260125560286013555f6014556012600a61015491906106c4565b621e8480610162919061070e565b6015556012600a61017391906106c4565b621e8480610181919061070e565b6016556012600a61019291906106c4565b620186a06101a0919061070e565b6017556012600a6101b191906106c4565b620e7ef06101bf919061070e565b6018555f601a60156101000a81548160ff0219169083151502179055505f601a60166101000a81548160ff021916908315150217905550348015610201575f80fd5b505f61021161052560201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506102bb61052560201b60201c565b60045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a61030891906106c4565b630ec82e00610317919061070e565b60015f61032861052560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f61037861052c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506104a061052560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a6104fc91906106c4565b630ec82e0061050b919061070e565b604051610518919061075e565b60405180910390a3610777565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156105d5578086048111156105b1576105b0610553565b5b60018516156105c05780820291505b80810290506105ce85610580565b9450610595565b94509492505050565b5f826105ed57600190506106a8565b816105fa575f90506106a8565b8160018114610610576002811461061a57610649565b60019150506106a8565b60ff84111561062c5761062b610553565b5b8360020a91508482111561064357610642610553565b5b506106a8565b5060208310610133831016604e8410600b841016171561067e5782820a90508381111561067957610678610553565b5b6106a8565b61068b848484600161058c565b925090508184048111156106a2576106a1610553565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6106ce826106af565b91506106d9836106b8565b92506107067fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846105de565b905092915050565b5f610718826106af565b9150610723836106af565b9250828202610731816106af565b9150828204841483151761074857610747610553565b5b5092915050565b610758816106af565b82525050565b5f6020820190506107715f83018461074f565b92915050565b613978806107845f395ff3fe608060405260043610610122575f3560e01c8063751039fc1161009f578063a9059cbb11610063578063a9059cbb146103ad578063bf474bed146103e9578063c8ad53bf14610413578063c9567bf91461043b578063dd62ed3e1461045157610129565b8063751039fc146102ef5780637d1db4a5146103055780638da5cb5b1461032f5780638f9a55c01461035957806395d89b411461038357610129565b8063313ce567116100e6578063313ce5671461022357806333aaf2cf1461024d57806346681cde1461027557806370a082311461029d578063715018a6146102d957610129565b806306fdde031461012d578063095ea7b3146101575780630faee56f1461019357806318160ddd146101bd57806323b872dd146101e757610129565b3661012957005b5f80fd5b348015610138575f80fd5b5061014161048d565b60405161014e91906125c3565b60405180910390f35b348015610162575f80fd5b5061017d60048036038101906101789190612678565b6104ad565b60405161018a91906126d0565b60405180910390f35b34801561019e575f80fd5b506101a76104ca565b6040516101b491906126f8565b60405180910390f35b3480156101c8575f80fd5b506101d16104d0565b6040516101de91906126f8565b60405180910390f35b3480156101f2575f80fd5b5061020d60048036038101906102089190612711565b6104f3565b60405161021a91906126d0565b60405180910390f35b34801561022e575f80fd5b506102376105c7565b604051610244919061277c565b60405180910390f35b348015610258575f80fd5b50610273600480360381019061026e9190612795565b6105cf565b005b348015610280575f80fd5b5061029b60048036038101906102969190612795565b610757565b005b3480156102a8575f80fd5b506102c360048036038101906102be9190612795565b6108df565b6040516102d091906126f8565b60405180910390f35b3480156102e4575f80fd5b506102ed610925565b005b3480156102fa575f80fd5b50610303610a73565b005b348015610310575f80fd5b50610319610ba2565b60405161032691906126f8565b60405180910390f35b34801561033a575f80fd5b50610343610ba8565b60405161035091906127cf565b60405180910390f35b348015610364575f80fd5b5061036d610bcf565b60405161037a91906126f8565b60405180910390f35b34801561038e575f80fd5b50610397610bd5565b6040516103a491906125c3565b60405180910390f35b3480156103b8575f80fd5b506103d360048036038101906103ce9190612678565b610c12565b6040516103e091906126d0565b60405180910390f35b3480156103f4575f80fd5b506103fd610c2f565b60405161040a91906126f8565b60405180910390f35b34801561041e575f80fd5b506104396004803603810190610434919061289e565b610c35565b005b348015610446575f80fd5b5061044f610e56565b005b34801561045c575f80fd5b506104776004803603810190610472919061291c565b61137f565b60405161048491906126f8565b60405180910390f35b60606040518060600160405280602681526020016138f560269139905090565b5f6104c06104b9611401565b8484611408565b6001905092915050565b60185481565b5f6012600a6104df9190612ab6565b630ec82e006104ee9190612b00565b905090565b5f6104ff8484846115cb565b6105bc8461050b611401565b6105b78560405180606001604052806028815260200161391b6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61056e611401565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ee59092919063ffffffff16565b611408565b600190509392505050565b5f6012905090565b6105d7611401565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610663576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065a90612b8b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c890612c19565b60405180910390fd5b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f3cd2ee6197d160fc7770d1bb3bb24da290a7a9dab7e065c1dd370f90b96a27d860405160405180910390a250565b61075f611401565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e290612b8b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085090612ca7565b60405180910390fd5b8060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fa3bf2f1f9f6c8702c378b4425da37fa0dcb828b9297f74b907100099b291aa0c60405160405180910390a250565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61092d611401565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b090612b8b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a7b611401565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afe90612b8b565b60405180910390fd5b6012600a610b159190612ab6565b630ec82e00610b249190612b00565b6015819055506012600a610b389190612ab6565b630ec82e00610b479190612b00565b6016819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a610b7c9190612ab6565b630ec82e00610b8b9190612b00565b604051610b9891906126f8565b60405180910390a1565b60155481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60165481565b60606040518060400160405280600581526020017f4e4f4d4f53000000000000000000000000000000000000000000000000000000815250905090565b5f610c25610c1e611401565b84846115cb565b6001905092915050565b60175481565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbb90612d35565b60405180910390fd5b818190508484905014610d0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0390612dc3565b60405180910390fd5b5f805b83839050811015610d4e57838382818110610d2d57610d2c612de1565b5b9050602002013582610d3f9190612e0e565b91508080600101915050610d0f565b50600b54811115610d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8b90612eb1565b60405180910390fd5b5f5b85859050811015610df957610dec30878784818110610db857610db7612de1565b5b9050602002016020810190610dcd9190612795565b868685818110610de057610ddf612de1565b5b905060200201356115cb565b8080600101915050610d96565b5080600b5f828254610e0b9190612ecf565b925050819055507fb7380a50e538266181bfde0fbef437995e355048046f9ca2b62ed845615e3f9685858585604051610e479493929190613036565b60405180910390a15050505050565b610e5e611401565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee190612b8b565b60405180910390fd5b601a60149054906101000a900460ff1615610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f31906130b9565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fd63060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a610fc29190612ab6565b630ec82e00610fd19190612b00565b611408565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611040573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061106491906130eb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061110e91906130eb565b6040518363ffffffff1660e01b815260040161112b929190613116565b6020604051808303815f875af1158015611147573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061116b91906130eb565b601a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306111f2306108df565b5f806111fc610ba8565b426040518863ffffffff1660e01b815260040161121e9695949392919061317f565b60606040518083038185885af115801561123a573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061125f91906131f2565b505050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016112ff929190613242565b6020604051808303815f875af115801561131b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061133f9190613293565b506001601a60166101000a81548160ff0219169083151502179055506001601a60146101000a81548160ff02191690831515021790555043600c81905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146d9061332e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114db906133bc565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115be91906126f8565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611639576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116309061344a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169e906134d8565b60405180910390fd5b5f81116116e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e090613566565b60405180910390fd5b5f6116f2610ba8565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156117605750611730610ba8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611c35576117a160646117936011546014541161178057600d54611784565b600f545b85611f4790919063ffffffff16565b611fbe90919063ffffffff16565b9050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561184c575060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561189f575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611982576015548211156118e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e0906135ce565b60405180910390fd5b601654826118f6856108df565b6119009190612e0e565b1115611941576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193890613636565b60405180910390fd5b436003600c546119519190612e0e565b111561196a5761196083612007565b15611969575f80fd5b5b60145f81548092919061197c90613654565b91905055505b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a26575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611a845760165482611a38856108df565b611a429190612e0e565b1115611a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7a90613636565b60405180910390fd5b5b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b0c57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611b5057611b4d6064611b3f60125460145411611b2c57600e54611b30565b6010545b85611f4790919063ffffffff16565b611fbe90919063ffffffff16565b90505b5f611b5a306108df565b9050601a60159054906101000a900460ff16158015611bc55750601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611bdd5750601a60169054906101000a900460ff165b8015611bea575060175481115b8015611bf95750601354601454115b15611c3357611c1b611c1684611c1184601854612018565b612018565b612030565b5f4790505f811115611c3157611c304761229b565b5b505b505b5f811115611d3457611c8d8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461244c90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d2b91906126f8565b60405180910390a35b611d848260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124a990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611e27611ddb82846124a990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461244c90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611eca84866124a990919063ffffffff16565b604051611ed791906126f8565b60405180910390a350505050565b5f838311158290611f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2391906125c3565b60405180910390fd5b505f8385611f3a9190612ecf565b9050809150509392505050565b5f808303611f57575f9050611fb8565b5f8284611f649190612b00565b9050828482611f7391906136c8565b14611fb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611faa90613768565b60405180910390fd5b809150505b92915050565b5f611fff83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506124f2565b905092915050565b5f80823b90505f8111915050919050565b5f8183116120265782612028565b815b905092915050565b6001601a60156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561206757612066613786565b5b6040519080825280602002602001820160405280156120955781602001602082028036833780820191505090505b50905030815f815181106120ac576120ab612de1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612150573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061217491906130eb565b8160018151811061218857612187612de1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121ee3060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611408565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612250959493929190613834565b5f604051808303815f87803b158015612267575f80fd5b505af1158015612279573d5f803e3d5ffd5b50505050505f601a60156101000a81548160ff02191690831515021790555050565b5f6122c360056122b5600285611f4790919063ffffffff16565b611fbe90919063ffffffff16565b90505f6122ed60056122df600286611f4790919063ffffffff16565b611fbe90919063ffffffff16565b90505f6123158261230785876124a990919063ffffffff16565b6124a990919063ffffffff16565b905060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8490811502906040515f60405180830381858888f1935050505015801561237b573d5f803e3d5ffd5b5060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f193505050501580156123e0573d5f803e3d5ffd5b50600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612445573d5f803e3d5ffd5b5050505050565b5f80828461245a9190612e0e565b90508381101561249f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612496906138d6565b60405180910390fd5b8091505092915050565b5f6124ea83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ee5565b905092915050565b5f8083118290612538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252f91906125c3565b60405180910390fd5b505f838561254691906136c8565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61259582612553565b61259f818561255d565b93506125af81856020860161256d565b6125b88161257b565b840191505092915050565b5f6020820190508181035f8301526125db818461258b565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612614826125eb565b9050919050565b6126248161260a565b811461262e575f80fd5b50565b5f8135905061263f8161261b565b92915050565b5f819050919050565b61265781612645565b8114612661575f80fd5b50565b5f813590506126728161264e565b92915050565b5f806040838503121561268e5761268d6125e3565b5b5f61269b85828601612631565b92505060206126ac85828601612664565b9150509250929050565b5f8115159050919050565b6126ca816126b6565b82525050565b5f6020820190506126e35f8301846126c1565b92915050565b6126f281612645565b82525050565b5f60208201905061270b5f8301846126e9565b92915050565b5f805f60608486031215612728576127276125e3565b5b5f61273586828701612631565b935050602061274686828701612631565b925050604061275786828701612664565b9150509250925092565b5f60ff82169050919050565b61277681612761565b82525050565b5f60208201905061278f5f83018461276d565b92915050565b5f602082840312156127aa576127a96125e3565b5b5f6127b784828501612631565b91505092915050565b6127c98161260a565b82525050565b5f6020820190506127e25f8301846127c0565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612809576128086127e8565b5b8235905067ffffffffffffffff811115612826576128256127ec565b5b602083019150836020820283011115612842576128416127f0565b5b9250929050565b5f8083601f84011261285e5761285d6127e8565b5b8235905067ffffffffffffffff81111561287b5761287a6127ec565b5b602083019150836020820283011115612897576128966127f0565b5b9250929050565b5f805f80604085870312156128b6576128b56125e3565b5b5f85013567ffffffffffffffff8111156128d3576128d26125e7565b5b6128df878288016127f4565b9450945050602085013567ffffffffffffffff811115612902576129016125e7565b5b61290e87828801612849565b925092505092959194509250565b5f8060408385031215612932576129316125e3565b5b5f61293f85828601612631565b925050602061295085828601612631565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156129dc578086048111156129b8576129b761295a565b5b60018516156129c75780820291505b80810290506129d585612987565b945061299c565b94509492505050565b5f826129f45760019050612aaf565b81612a01575f9050612aaf565b8160018114612a175760028114612a2157612a50565b6001915050612aaf565b60ff841115612a3357612a3261295a565b5b8360020a915084821115612a4a57612a4961295a565b5b50612aaf565b5060208310610133831016604e8410600b8410161715612a855782820a905083811115612a8057612a7f61295a565b5b612aaf565b612a928484846001612993565b92509050818404811115612aa957612aa861295a565b5b81810290505b9392505050565b5f612ac082612645565b9150612acb83612761565b9250612af87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846129e5565b905092915050565b5f612b0a82612645565b9150612b1583612645565b9250828202612b2381612645565b91508282048414831517612b3a57612b3961295a565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612b7560208361255d565b9150612b8082612b41565b602082019050919050565b5f6020820190508181035f830152612ba281612b69565b9050919050565b7f4e4f4d4f533a20544f4e206272696467652063616e6e6f7420626520746865205f8201527f7a65726f20616464726573730000000000000000000000000000000000000000602082015250565b5f612c03602c8361255d565b9150612c0e82612ba9565b604082019050919050565b5f6020820190508181035f830152612c3081612bf7565b9050919050565b7f4e4f4d4f533a204e6f6d696e61746f72207265776172647320646973747269625f8201527f75746f722063616e6e6f7420626520746865207a65726f206164647265737300602082015250565b5f612c91603f8361255d565b9150612c9c82612c37565b604082019050919050565b5f6020820190508181035f830152612cbe81612c85565b9050919050565b7f4e4f4d4f533a204f6e6c79206e6f6d696e61746f7220726577617264732064695f8201527f737472696275746f722063616e20646973747269627574652072657761726473602082015250565b5f612d1f60408361255d565b9150612d2a82612cc5565b604082019050919050565b5f6020820190508181035f830152612d4c81612d13565b9050919050565b7f4e4f4d4f533a204e6f6d696e61746f727320616e6420616d6f756e74732061725f8201527f72617973206d7573742068617665207468652073616d65206c656e6774680000602082015250565b5f612dad603e8361255d565b9150612db882612d53565b604082019050919050565b5f6020820190508181035f830152612dda81612da1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612e1882612645565b9150612e2383612645565b9250828201905080821115612e3b57612e3a61295a565b5b92915050565b7f4e4f4d4f533a20496e73756666696369656e742066756e647320666f72206e6f5f8201527f6d696e61746f7220726577617264730000000000000000000000000000000000602082015250565b5f612e9b602f8361255d565b9150612ea682612e41565b604082019050919050565b5f6020820190508181035f830152612ec881612e8f565b9050919050565b5f612ed982612645565b9150612ee483612645565b9250828203905081811115612efc57612efb61295a565b5b92915050565b5f82825260208201905092915050565b5f819050919050565b612f248161260a565b82525050565b5f612f358383612f1b565b60208301905092915050565b5f612f4f6020840184612631565b905092915050565b5f602082019050919050565b5f612f6e8385612f02565b9350612f7982612f12565b805f5b85811015612fb157612f8e8284612f41565b612f988882612f2a565b9750612fa383612f57565b925050600181019050612f7c565b5085925050509392505050565b5f82825260208201905092915050565b5f80fd5b82818337505050565b5f612fe68385612fbe565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561301957613018612fce565b5b60208302925061302a838584612fd2565b82840190509392505050565b5f6040820190508181035f83015261304f818688612f63565b90508181036020830152613064818486612fdb565b905095945050505050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6130a360178361255d565b91506130ae8261306f565b602082019050919050565b5f6020820190508181035f8301526130d081613097565b9050919050565b5f815190506130e58161261b565b92915050565b5f60208284031215613100576130ff6125e3565b5b5f61310d848285016130d7565b91505092915050565b5f6040820190506131295f8301856127c0565b61313660208301846127c0565b9392505050565b5f819050919050565b5f819050919050565b5f61316961316461315f8461313d565b613146565b612645565b9050919050565b6131798161314f565b82525050565b5f60c0820190506131925f8301896127c0565b61319f60208301886126e9565b6131ac6040830187613170565b6131b96060830186613170565b6131c660808301856127c0565b6131d360a08301846126e9565b979650505050505050565b5f815190506131ec8161264e565b92915050565b5f805f60608486031215613209576132086125e3565b5b5f613216868287016131de565b9350506020613227868287016131de565b9250506040613238868287016131de565b9150509250925092565b5f6040820190506132555f8301856127c0565b61326260208301846126e9565b9392505050565b613272816126b6565b811461327c575f80fd5b50565b5f8151905061328d81613269565b92915050565b5f602082840312156132a8576132a76125e3565b5b5f6132b58482850161327f565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61331860248361255d565b9150613323826132be565b604082019050919050565b5f6020820190508181035f8301526133458161330c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6133a660228361255d565b91506133b18261334c565b604082019050919050565b5f6020820190508181035f8301526133d38161339a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61343460258361255d565b915061343f826133da565b604082019050919050565b5f6020820190508181035f83015261346181613428565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6134c260238361255d565b91506134cd82613468565b604082019050919050565b5f6020820190508181035f8301526134ef816134b6565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61355060298361255d565b915061355b826134f6565b604082019050919050565b5f6020820190508181035f83015261357d81613544565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6135b860198361255d565b91506135c382613584565b602082019050919050565b5f6020820190508181035f8301526135e5816135ac565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613620601a8361255d565b915061362b826135ec565b602082019050919050565b5f6020820190508181035f83015261364d81613614565b9050919050565b5f61365e82612645565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136905761368f61295a565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6136d282612645565b91506136dd83612645565b9250826136ed576136ec61369b565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61375260218361255d565b915061375d826136f8565b604082019050919050565b5f6020820190508181035f83015261377f81613746565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050919050565b5f819050602082019050919050565b5f602082019050919050565b5f6137e2826137b3565b6137ec8185612f02565b93506137f7836137bd565b805f5b8381101561382757815161380e8882612f2a565b9750613819836137cc565b9250506001810190506137fa565b5085935050505092915050565b5f60a0820190506138475f8301886126e9565b6138546020830187613170565b818103604083015261386681866137d8565b905061387560608301856127c0565b61388260808301846126e9565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6138c0601b8361255d565b91506138cb8261388c565b602082019050919050565b5f6020820190508181035f8301526138ed816138b4565b905091905056fe4e6f6d696e61746f72204f70656e204d61726b6574204f7065726174696e672053797374656d45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205fb9cdfaa192f21da7079342afa263fbd53bfa2d0397c5455a61517ae09952fe64736f6c634300081a0033

Deployed Bytecode

0x608060405260043610610122575f3560e01c8063751039fc1161009f578063a9059cbb11610063578063a9059cbb146103ad578063bf474bed146103e9578063c8ad53bf14610413578063c9567bf91461043b578063dd62ed3e1461045157610129565b8063751039fc146102ef5780637d1db4a5146103055780638da5cb5b1461032f5780638f9a55c01461035957806395d89b411461038357610129565b8063313ce567116100e6578063313ce5671461022357806333aaf2cf1461024d57806346681cde1461027557806370a082311461029d578063715018a6146102d957610129565b806306fdde031461012d578063095ea7b3146101575780630faee56f1461019357806318160ddd146101bd57806323b872dd146101e757610129565b3661012957005b5f80fd5b348015610138575f80fd5b5061014161048d565b60405161014e91906125c3565b60405180910390f35b348015610162575f80fd5b5061017d60048036038101906101789190612678565b6104ad565b60405161018a91906126d0565b60405180910390f35b34801561019e575f80fd5b506101a76104ca565b6040516101b491906126f8565b60405180910390f35b3480156101c8575f80fd5b506101d16104d0565b6040516101de91906126f8565b60405180910390f35b3480156101f2575f80fd5b5061020d60048036038101906102089190612711565b6104f3565b60405161021a91906126d0565b60405180910390f35b34801561022e575f80fd5b506102376105c7565b604051610244919061277c565b60405180910390f35b348015610258575f80fd5b50610273600480360381019061026e9190612795565b6105cf565b005b348015610280575f80fd5b5061029b60048036038101906102969190612795565b610757565b005b3480156102a8575f80fd5b506102c360048036038101906102be9190612795565b6108df565b6040516102d091906126f8565b60405180910390f35b3480156102e4575f80fd5b506102ed610925565b005b3480156102fa575f80fd5b50610303610a73565b005b348015610310575f80fd5b50610319610ba2565b60405161032691906126f8565b60405180910390f35b34801561033a575f80fd5b50610343610ba8565b60405161035091906127cf565b60405180910390f35b348015610364575f80fd5b5061036d610bcf565b60405161037a91906126f8565b60405180910390f35b34801561038e575f80fd5b50610397610bd5565b6040516103a491906125c3565b60405180910390f35b3480156103b8575f80fd5b506103d360048036038101906103ce9190612678565b610c12565b6040516103e091906126d0565b60405180910390f35b3480156103f4575f80fd5b506103fd610c2f565b60405161040a91906126f8565b60405180910390f35b34801561041e575f80fd5b506104396004803603810190610434919061289e565b610c35565b005b348015610446575f80fd5b5061044f610e56565b005b34801561045c575f80fd5b506104776004803603810190610472919061291c565b61137f565b60405161048491906126f8565b60405180910390f35b60606040518060600160405280602681526020016138f560269139905090565b5f6104c06104b9611401565b8484611408565b6001905092915050565b60185481565b5f6012600a6104df9190612ab6565b630ec82e006104ee9190612b00565b905090565b5f6104ff8484846115cb565b6105bc8461050b611401565b6105b78560405180606001604052806028815260200161391b6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61056e611401565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ee59092919063ffffffff16565b611408565b600190509392505050565b5f6012905090565b6105d7611401565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610663576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065a90612b8b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c890612c19565b60405180910390fd5b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f3cd2ee6197d160fc7770d1bb3bb24da290a7a9dab7e065c1dd370f90b96a27d860405160405180910390a250565b61075f611401565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e290612b8b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085090612ca7565b60405180910390fd5b8060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fa3bf2f1f9f6c8702c378b4425da37fa0dcb828b9297f74b907100099b291aa0c60405160405180910390a250565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61092d611401565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b090612b8b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a7b611401565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afe90612b8b565b60405180910390fd5b6012600a610b159190612ab6565b630ec82e00610b249190612b00565b6015819055506012600a610b389190612ab6565b630ec82e00610b479190612b00565b6016819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a610b7c9190612ab6565b630ec82e00610b8b9190612b00565b604051610b9891906126f8565b60405180910390a1565b60155481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60165481565b60606040518060400160405280600581526020017f4e4f4d4f53000000000000000000000000000000000000000000000000000000815250905090565b5f610c25610c1e611401565b84846115cb565b6001905092915050565b60175481565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbb90612d35565b60405180910390fd5b818190508484905014610d0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0390612dc3565b60405180910390fd5b5f805b83839050811015610d4e57838382818110610d2d57610d2c612de1565b5b9050602002013582610d3f9190612e0e565b91508080600101915050610d0f565b50600b54811115610d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8b90612eb1565b60405180910390fd5b5f5b85859050811015610df957610dec30878784818110610db857610db7612de1565b5b9050602002016020810190610dcd9190612795565b868685818110610de057610ddf612de1565b5b905060200201356115cb565b8080600101915050610d96565b5080600b5f828254610e0b9190612ecf565b925050819055507fb7380a50e538266181bfde0fbef437995e355048046f9ca2b62ed845615e3f9685858585604051610e479493929190613036565b60405180910390a15050505050565b610e5e611401565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee190612b8b565b60405180910390fd5b601a60149054906101000a900460ff1615610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f31906130b9565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fd63060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a610fc29190612ab6565b630ec82e00610fd19190612b00565b611408565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611040573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061106491906130eb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061110e91906130eb565b6040518363ffffffff1660e01b815260040161112b929190613116565b6020604051808303815f875af1158015611147573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061116b91906130eb565b601a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306111f2306108df565b5f806111fc610ba8565b426040518863ffffffff1660e01b815260040161121e9695949392919061317f565b60606040518083038185885af115801561123a573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061125f91906131f2565b505050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016112ff929190613242565b6020604051808303815f875af115801561131b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061133f9190613293565b506001601a60166101000a81548160ff0219169083151502179055506001601a60146101000a81548160ff02191690831515021790555043600c81905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146d9061332e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114db906133bc565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115be91906126f8565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611639576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116309061344a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169e906134d8565b60405180910390fd5b5f81116116e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e090613566565b60405180910390fd5b5f6116f2610ba8565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156117605750611730610ba8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611c35576117a160646117936011546014541161178057600d54611784565b600f545b85611f4790919063ffffffff16565b611fbe90919063ffffffff16565b9050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561184c575060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561189f575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611982576015548211156118e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e0906135ce565b60405180910390fd5b601654826118f6856108df565b6119009190612e0e565b1115611941576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193890613636565b60405180910390fd5b436003600c546119519190612e0e565b111561196a5761196083612007565b15611969575f80fd5b5b60145f81548092919061197c90613654565b91905055505b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a26575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611a845760165482611a38856108df565b611a429190612e0e565b1115611a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7a90613636565b60405180910390fd5b5b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b0c57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611b5057611b4d6064611b3f60125460145411611b2c57600e54611b30565b6010545b85611f4790919063ffffffff16565b611fbe90919063ffffffff16565b90505b5f611b5a306108df565b9050601a60159054906101000a900460ff16158015611bc55750601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611bdd5750601a60169054906101000a900460ff165b8015611bea575060175481115b8015611bf95750601354601454115b15611c3357611c1b611c1684611c1184601854612018565b612018565b612030565b5f4790505f811115611c3157611c304761229b565b5b505b505b5f811115611d3457611c8d8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461244c90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d2b91906126f8565b60405180910390a35b611d848260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124a990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611e27611ddb82846124a990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461244c90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611eca84866124a990919063ffffffff16565b604051611ed791906126f8565b60405180910390a350505050565b5f838311158290611f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2391906125c3565b60405180910390fd5b505f8385611f3a9190612ecf565b9050809150509392505050565b5f808303611f57575f9050611fb8565b5f8284611f649190612b00565b9050828482611f7391906136c8565b14611fb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611faa90613768565b60405180910390fd5b809150505b92915050565b5f611fff83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506124f2565b905092915050565b5f80823b90505f8111915050919050565b5f8183116120265782612028565b815b905092915050565b6001601a60156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561206757612066613786565b5b6040519080825280602002602001820160405280156120955781602001602082028036833780820191505090505b50905030815f815181106120ac576120ab612de1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612150573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061217491906130eb565b8160018151811061218857612187612de1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121ee3060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611408565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612250959493929190613834565b5f604051808303815f87803b158015612267575f80fd5b505af1158015612279573d5f803e3d5ffd5b50505050505f601a60156101000a81548160ff02191690831515021790555050565b5f6122c360056122b5600285611f4790919063ffffffff16565b611fbe90919063ffffffff16565b90505f6122ed60056122df600286611f4790919063ffffffff16565b611fbe90919063ffffffff16565b90505f6123158261230785876124a990919063ffffffff16565b6124a990919063ffffffff16565b905060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8490811502906040515f60405180830381858888f1935050505015801561237b573d5f803e3d5ffd5b5060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f193505050501580156123e0573d5f803e3d5ffd5b50600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612445573d5f803e3d5ffd5b5050505050565b5f80828461245a9190612e0e565b90508381101561249f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612496906138d6565b60405180910390fd5b8091505092915050565b5f6124ea83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ee5565b905092915050565b5f8083118290612538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252f91906125c3565b60405180910390fd5b505f838561254691906136c8565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61259582612553565b61259f818561255d565b93506125af81856020860161256d565b6125b88161257b565b840191505092915050565b5f6020820190508181035f8301526125db818461258b565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612614826125eb565b9050919050565b6126248161260a565b811461262e575f80fd5b50565b5f8135905061263f8161261b565b92915050565b5f819050919050565b61265781612645565b8114612661575f80fd5b50565b5f813590506126728161264e565b92915050565b5f806040838503121561268e5761268d6125e3565b5b5f61269b85828601612631565b92505060206126ac85828601612664565b9150509250929050565b5f8115159050919050565b6126ca816126b6565b82525050565b5f6020820190506126e35f8301846126c1565b92915050565b6126f281612645565b82525050565b5f60208201905061270b5f8301846126e9565b92915050565b5f805f60608486031215612728576127276125e3565b5b5f61273586828701612631565b935050602061274686828701612631565b925050604061275786828701612664565b9150509250925092565b5f60ff82169050919050565b61277681612761565b82525050565b5f60208201905061278f5f83018461276d565b92915050565b5f602082840312156127aa576127a96125e3565b5b5f6127b784828501612631565b91505092915050565b6127c98161260a565b82525050565b5f6020820190506127e25f8301846127c0565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612809576128086127e8565b5b8235905067ffffffffffffffff811115612826576128256127ec565b5b602083019150836020820283011115612842576128416127f0565b5b9250929050565b5f8083601f84011261285e5761285d6127e8565b5b8235905067ffffffffffffffff81111561287b5761287a6127ec565b5b602083019150836020820283011115612897576128966127f0565b5b9250929050565b5f805f80604085870312156128b6576128b56125e3565b5b5f85013567ffffffffffffffff8111156128d3576128d26125e7565b5b6128df878288016127f4565b9450945050602085013567ffffffffffffffff811115612902576129016125e7565b5b61290e87828801612849565b925092505092959194509250565b5f8060408385031215612932576129316125e3565b5b5f61293f85828601612631565b925050602061295085828601612631565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156129dc578086048111156129b8576129b761295a565b5b60018516156129c75780820291505b80810290506129d585612987565b945061299c565b94509492505050565b5f826129f45760019050612aaf565b81612a01575f9050612aaf565b8160018114612a175760028114612a2157612a50565b6001915050612aaf565b60ff841115612a3357612a3261295a565b5b8360020a915084821115612a4a57612a4961295a565b5b50612aaf565b5060208310610133831016604e8410600b8410161715612a855782820a905083811115612a8057612a7f61295a565b5b612aaf565b612a928484846001612993565b92509050818404811115612aa957612aa861295a565b5b81810290505b9392505050565b5f612ac082612645565b9150612acb83612761565b9250612af87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846129e5565b905092915050565b5f612b0a82612645565b9150612b1583612645565b9250828202612b2381612645565b91508282048414831517612b3a57612b3961295a565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612b7560208361255d565b9150612b8082612b41565b602082019050919050565b5f6020820190508181035f830152612ba281612b69565b9050919050565b7f4e4f4d4f533a20544f4e206272696467652063616e6e6f7420626520746865205f8201527f7a65726f20616464726573730000000000000000000000000000000000000000602082015250565b5f612c03602c8361255d565b9150612c0e82612ba9565b604082019050919050565b5f6020820190508181035f830152612c3081612bf7565b9050919050565b7f4e4f4d4f533a204e6f6d696e61746f72207265776172647320646973747269625f8201527f75746f722063616e6e6f7420626520746865207a65726f206164647265737300602082015250565b5f612c91603f8361255d565b9150612c9c82612c37565b604082019050919050565b5f6020820190508181035f830152612cbe81612c85565b9050919050565b7f4e4f4d4f533a204f6e6c79206e6f6d696e61746f7220726577617264732064695f8201527f737472696275746f722063616e20646973747269627574652072657761726473602082015250565b5f612d1f60408361255d565b9150612d2a82612cc5565b604082019050919050565b5f6020820190508181035f830152612d4c81612d13565b9050919050565b7f4e4f4d4f533a204e6f6d696e61746f727320616e6420616d6f756e74732061725f8201527f72617973206d7573742068617665207468652073616d65206c656e6774680000602082015250565b5f612dad603e8361255d565b9150612db882612d53565b604082019050919050565b5f6020820190508181035f830152612dda81612da1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612e1882612645565b9150612e2383612645565b9250828201905080821115612e3b57612e3a61295a565b5b92915050565b7f4e4f4d4f533a20496e73756666696369656e742066756e647320666f72206e6f5f8201527f6d696e61746f7220726577617264730000000000000000000000000000000000602082015250565b5f612e9b602f8361255d565b9150612ea682612e41565b604082019050919050565b5f6020820190508181035f830152612ec881612e8f565b9050919050565b5f612ed982612645565b9150612ee483612645565b9250828203905081811115612efc57612efb61295a565b5b92915050565b5f82825260208201905092915050565b5f819050919050565b612f248161260a565b82525050565b5f612f358383612f1b565b60208301905092915050565b5f612f4f6020840184612631565b905092915050565b5f602082019050919050565b5f612f6e8385612f02565b9350612f7982612f12565b805f5b85811015612fb157612f8e8284612f41565b612f988882612f2a565b9750612fa383612f57565b925050600181019050612f7c565b5085925050509392505050565b5f82825260208201905092915050565b5f80fd5b82818337505050565b5f612fe68385612fbe565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561301957613018612fce565b5b60208302925061302a838584612fd2565b82840190509392505050565b5f6040820190508181035f83015261304f818688612f63565b90508181036020830152613064818486612fdb565b905095945050505050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6130a360178361255d565b91506130ae8261306f565b602082019050919050565b5f6020820190508181035f8301526130d081613097565b9050919050565b5f815190506130e58161261b565b92915050565b5f60208284031215613100576130ff6125e3565b5b5f61310d848285016130d7565b91505092915050565b5f6040820190506131295f8301856127c0565b61313660208301846127c0565b9392505050565b5f819050919050565b5f819050919050565b5f61316961316461315f8461313d565b613146565b612645565b9050919050565b6131798161314f565b82525050565b5f60c0820190506131925f8301896127c0565b61319f60208301886126e9565b6131ac6040830187613170565b6131b96060830186613170565b6131c660808301856127c0565b6131d360a08301846126e9565b979650505050505050565b5f815190506131ec8161264e565b92915050565b5f805f60608486031215613209576132086125e3565b5b5f613216868287016131de565b9350506020613227868287016131de565b9250506040613238868287016131de565b9150509250925092565b5f6040820190506132555f8301856127c0565b61326260208301846126e9565b9392505050565b613272816126b6565b811461327c575f80fd5b50565b5f8151905061328d81613269565b92915050565b5f602082840312156132a8576132a76125e3565b5b5f6132b58482850161327f565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61331860248361255d565b9150613323826132be565b604082019050919050565b5f6020820190508181035f8301526133458161330c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6133a660228361255d565b91506133b18261334c565b604082019050919050565b5f6020820190508181035f8301526133d38161339a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61343460258361255d565b915061343f826133da565b604082019050919050565b5f6020820190508181035f83015261346181613428565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6134c260238361255d565b91506134cd82613468565b604082019050919050565b5f6020820190508181035f8301526134ef816134b6565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61355060298361255d565b915061355b826134f6565b604082019050919050565b5f6020820190508181035f83015261357d81613544565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6135b860198361255d565b91506135c382613584565b602082019050919050565b5f6020820190508181035f8301526135e5816135ac565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613620601a8361255d565b915061362b826135ec565b602082019050919050565b5f6020820190508181035f83015261364d81613614565b9050919050565b5f61365e82612645565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136905761368f61295a565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6136d282612645565b91506136dd83612645565b9250826136ed576136ec61369b565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61375260218361255d565b915061375d826136f8565b604082019050919050565b5f6020820190508181035f83015261377f81613746565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050919050565b5f819050602082019050919050565b5f602082019050919050565b5f6137e2826137b3565b6137ec8185612f02565b93506137f7836137bd565b805f5b8381101561382757815161380e8882612f2a565b9750613819836137cc565b9250506001810190506137fa565b5085935050505092915050565b5f60a0820190506138475f8301886126e9565b6138546020830187613170565b818103604083015261386681866137d8565b905061387560608301856127c0565b61388260808301846126e9565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6138c0601b8361255d565b91506138cb8261388c565b602082019050919050565b5f6020820190508181035f8301526138ed816138b4565b905091905056fe4e6f6d696e61746f72204f70656e204d61726b6574204f7065726174696e672053797374656d45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205fb9cdfaa192f21da7079342afa263fbd53bfa2d0397c5455a61517ae09952fe64736f6c634300081a0033

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.