ETH Price: $3,506.95 (+2.63%)
Gas: 14 Gwei

Token

Novel Optimized Interchain Rebalancer (NOIR)
 

Overview

Max Total Supply

30,000,000 NOIR

Holders

220

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 10 Decimals)

Balance
0.0000000001 NOIR

Value
$0.00
0x4f5a7739eca9a550e4874fed0b909f330be98813
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:
NOIR

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : NOIR.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.25;

/*

NOIR
Novel Optimized Interchain Rebalancer

Website:
https://www.noir-protocol.org

Whitepaper:
https://tinyurl.com/2md5t43b

*/

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 NOIR is Context, IERC20, Ownable {
    using SafeMath for uint256;

    struct Asset {
        address tokenAddress;
        address priceFeed;
        uint256 decimals;
    }

    struct Position {
        uint256 collateral;
        uint256 debt;
        uint256 lastUpdateTimestamp;
    }

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
   
    mapping(address => uint256) public tokenBalance;
    mapping(address => uint256) public votingPower;
    mapping(address => mapping(uint256 => bool)) public hasVoted;
    mapping(uint256 => Proposal) public proposals;
    uint256 public proposalCount;

    mapping(address => mapping(address => Position)) public positions;
    mapping(address => Asset) public assets;
    address public noirTokenAddress;
    address public governor;

    uint256 public constant PRECISION = 1e18;
    uint256 public constant MIN_COLLATERAL_RATIO = 1.5e18;
    uint256 public constant LIQUIDATION_PENALTY = 0.1e18;
    uint256 public constant FEE_PRECISION = 1e6;
    uint256 public constant FUNDING_RATE_PRECISION = 1e18;

    event PositionUpdated(address indexed user, address indexed asset, uint256 collateral, uint256 debt);
    event PositionLiquidated(address indexed user, address indexed asset, uint256 collateral, uint256 debt, uint256 penalty);

    struct Proposal {
        uint256 id;
        address proposer;
        string description;
        uint256 deadline;
        uint256 votesFor;
        uint256 votesAgainst;
        bool executed;
    }
    address payable private _marketingPool = payable(0x6eF7A643578D42D461d2A5537f62c4A6987bD6fF);
    address payable private _developmentPool = payable(0x9f2Aaabf4DB3286CFf62156b72e0c31007465CE9);
    address payable private _liquidityPool = payable(0x125cf13df45389d4Ef8a086b23c1b7b23034591a);
    
    address private _vestingContract;

    address payable private _feeAddress;
    uint256 firstBlock;

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

    uint8 private constant _decimals = 10;
    uint256 private constant _tTotal = 30_000_000 * 10**_decimals;
    
    string private constant _name = unicode"Novel Optimized Interchain Rebalancer";
    string private constant _symbol = unicode"NOIR";

    uint256 public _maxTxAmount =   225_000 * 10**_decimals;
    uint256 public _maxWalletSize = 225_000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 20_000 * 10**_decimals;
    uint256 public _maxTaxSwap= 140_000 * 10**_decimals;

    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 () {

        _feeAddress = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[0x6eF7A643578D42D461d2A5537f62c4A6987bD6fF] = true;
        _isExcludedFromFee[0x9f2Aaabf4DB3286CFf62156b72e0c31007465CE9] = true;
        _isExcludedFromFee[0x125cf13df45389d4Ef8a086b23c1b7b23034591a] = true;
        _isExcludedFromFee[0xD152f549545093347A162Dce210e7293f1452150] = 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 getCollateralRatio(address _user, address _asset) private returns (uint256) {
        Asset memory asset = assets[_asset];
        Position memory position = positions[_user][_asset];

        uint256 debtValue = position.debt;

        if (debtValue == 0) {
            return type(uint256).max;
        } else {
        }
    }

    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 withdrawStuckETH() external onlyOwner {
        require(address(this).balance > 0, "No stuck ETH to withdraw");
        
        uint256 amount = address(this).balance;
        payable(owner()).transfer(amount);
    }

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

    function propose(string memory description, uint256 duration) external {
    require(votingPower[msg.sender] > 0, "No voting power to propose");

        proposalCount++;
        proposals[proposalCount] = Proposal({
        id: proposalCount,
        proposer: msg.sender,
        description: description,
        deadline: block.timestamp + duration,
        votesFor: 0,
        votesAgainst: 0,
        executed: false
    });

    emit ProposalCreated(proposalCount, msg.sender, description);
    }

    function vote(uint256 proposalId, bool inSupport) external {
    require(votingPower[msg.sender] > 0, "No voting power");
    require(!hasVoted[msg.sender][proposalId], "Already voted on this proposal");
    require(proposals[proposalId].deadline > block.timestamp, "Voting period has ended");

    Proposal storage proposal = proposals[proposalId];
    if (inSupport) {
        proposal.votesFor = proposal.votesFor.add(votingPower[msg.sender]);
    } else {
        proposal.votesAgainst = proposal.votesAgainst.add(votingPower[msg.sender]);
    }

    hasVoted[msg.sender][proposalId] = true;
    emit VoteCast(msg.sender, proposalId, inSupport);
    }

    function executeProposal(uint256 proposalId) external {
    require(proposals[proposalId].deadline <= block.timestamp, "Voting period has not ended");
    require(!proposals[proposalId].executed, "Proposal has already been executed");

    Proposal storage proposal = proposals[proposalId];
    if (proposal.votesFor > proposal.votesAgainst) {
        proposal.executed = true;
        emit ProposalExecuted(proposalId);
    }
    }

    function delegate(address delegatee) external {
    require(delegatee != address(0), "Cannot delegate to zero address");
    require(balanceOf(msg.sender) > 0, "Cannot delegate without any tokens");

    votingPower[delegatee] = votingPower[delegatee].add(balanceOf(msg.sender));
    emit DelegateChanged(msg.sender, delegatee);
    }

    event ProposalCreated(uint256 indexed proposalId, address indexed proposer, string description);
    event VoteCast(address indexed voter, uint256 indexed proposalId, bool indexed inSupport);
    event ProposalExecuted(uint256 indexed proposalId);
    event DelegateChanged(address indexed delegator, address indexed delegatee);

    function sendETHToFee(uint256 amount) private {
        uint256 marketingShare = amount.mul(20).div(50);
        uint256 developmentShare = amount.mul(20).div(50);
        uint256 liquidityShare = amount.sub(marketingShare).sub(developmentShare);

        _marketingPool.transfer(marketingShare);
        _developmentPool.transfer(developmentShare);
        _liquidityPool.transfer(liquidityShare);
    }
    
    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":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"delegatee","type":"address"}],"name":"DelegateChanged","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":"user","type":"address"},{"indexed":true,"internalType":"address","name":"asset","type":"address"},{"indexed":false,"internalType":"uint256","name":"collateral","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"debt","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"penalty","type":"uint256"}],"name":"PositionLiquidated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"asset","type":"address"},{"indexed":false,"internalType":"uint256","name":"collateral","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"debt","type":"uint256"}],"name":"PositionUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":true,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":true,"internalType":"bool","name":"inSupport","type":"bool"}],"name":"VoteCast","type":"event"},{"inputs":[],"name":"FEE_PRECISION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FUNDING_RATE_PRECISION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LIQUIDATION_PENALTY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_COLLATERAL_RATIO","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRECISION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":"","type":"address"}],"name":"assets","outputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"priceFeed","type":"address"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"view","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":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"executeProposal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"governor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"noirTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"positions","outputs":[{"internalType":"uint256","name":"collateral","type":"uint256"},{"internalType":"uint256","name":"debt","type":"uint256"},{"internalType":"uint256","name":"lastUpdateTimestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"string","name":"description","type":"string"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"votesFor","type":"uint256"},{"internalType":"uint256","name":"votesAgainst","type":"uint256"},{"internalType":"bool","name":"executed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"description","type":"string"},{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"propose","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokenBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"bool","name":"inSupport","type":"bool"}],"name":"vote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"votingPower","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052736ef7a643578d42d461d2a5537f62c4a6987bd6ff600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550739f2aaabf4db3286cff62156b72e0c31007465ce9600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073125cf13df45389d4ef8a086b23c1b7b23034591a600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506019601355601960145560056015556005601655601e601755603260185560286019555f601a55600a8061013491906107cc565b62036ee86101429190610816565b601b55600a8061015291906107cc565b62036ee86101609190610816565b601c55600a8061017091906107cc565b614e2061017d9190610816565b601d55600a8061018d91906107cc565b620222e061019b9190610816565b601e555f602060156101000a81548160ff0219169083151502179055505f602060166101000a81548160ff0219169083151502179055503480156101dd575f80fd5b505f6101ed61062d60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35061029761062d60201b60201c565b60115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a806102e391906107cc565b6301c9c3806102f29190610816565b60015f61030361062d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f61035361063460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f736ef7a643578d42d461d2a5537f62c4a6987bd6ff73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f739f2aaabf4db3286cff62156b72e0c31007465ce973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f73125cf13df45389d4ef8a086b23c1b7b23034591a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f73d152f549545093347a162dce210e7293f145215073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506105a961062d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a8061060491906107cc565b6301c9c3806106139190610816565b6040516106209190610866565b60405180910390a361087f565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156106dd578086048111156106b9576106b861065b565b5b60018516156106c85780820291505b80810290506106d685610688565b945061069d565b94509492505050565b5f826106f557600190506107b0565b81610702575f90506107b0565b8160018114610718576002811461072257610751565b60019150506107b0565b60ff8411156107345761073361065b565b5b8360020a91508482111561074b5761074a61065b565b5b506107b0565b5060208310610133831016604e8410600b84101617156107865782820a9050838111156107815761078061065b565b5b6107b0565b6107938484846001610694565b925090508184048111156107aa576107a961065b565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6107d6826107b7565b91506107e1836107c0565b925061080e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846106e6565b905092915050565b5f610820826107b7565b915061082b836107b7565b9250828202610839816107b7565b915082820484148315176108505761084f61065b565b5b5092915050565b610860816107b7565b82525050565b5f6020820190506108795f830184610857565b92915050565b6147c08061088c5f395ff3fe608060405260043610610212575f3560e01c80638d1cb8b511610117578063c9567bf91161009f578063dd62ed3e1161006e578063dd62ed3e14610787578063e63a391f146107c3578063eedc966a146107ed578063f11b818814610829578063f5648a4f1461086757610219565b8063c9567bf9146106f5578063c9d27afe1461070b578063d111736b14610733578063da35c6641461075d57610219565b80639b8621d5116100e65780639b8621d5146105ff578063a9059cbb14610629578063aaf5eb6814610665578063bf474bed1461068f578063c07473f6146106b957610219565b80638d1cb8b5146105595780638da5cb5b146105815780638f9a55c0146105ab57806395d89b41146105d557610219565b8063425458251161019a57806370a082311161016957806370a082311461049d578063715018a6146104d9578063751039fc146104ef5780637a9fffb7146105055780637d1db4a51461052f57610219565b806342545825146103d15780634bd214451461040d5780635c19a95c1461044b5780636be6026b1461047357610219565b80630d61b519116101e15780630d61b519146102ef5780630faee56f1461031757806318160ddd1461034157806323b872dd1461036b578063313ce567146103a757610219565b8063013cf08b1461021d57806306fdde031461025f578063095ea7b3146102895780630c340a24146102c557610219565b3661021957005b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e9190612fa0565b61087d565b60405161025697969594939291906130a3565b60405180910390f35b34801561026a575f80fd5b5061027361096c565b6040516102809190613117565b60405180910390f35b348015610294575f80fd5b506102af60048036038101906102aa9190613161565b61098c565b6040516102bc919061319f565b60405180910390f35b3480156102d0575f80fd5b506102d96109a9565b6040516102e691906131b8565b60405180910390f35b3480156102fa575f80fd5b5061031560048036038101906103109190612fa0565b6109ce565b005b348015610322575f80fd5b5061032b610af8565b60405161033891906131d1565b60405180910390f35b34801561034c575f80fd5b50610355610afe565b60405161036291906131d1565b60405180910390f35b348015610376575f80fd5b50610391600480360381019061038c91906131ea565b610b20565b60405161039e919061319f565b60405180910390f35b3480156103b2575f80fd5b506103bb610bf4565b6040516103c89190613255565b60405180910390f35b3480156103dc575f80fd5b506103f760048036038101906103f29190613161565b610bfc565b604051610404919061319f565b60405180910390f35b348015610418575f80fd5b50610433600480360381019061042e919061326e565b610c26565b604051610442939291906132ac565b60405180910390f35b348015610456575f80fd5b50610471600480360381019061046c91906132e1565b610c57565b005b34801561047e575f80fd5b50610487610e05565b60405161049491906131d1565b60405180910390f35b3480156104a8575f80fd5b506104c360048036038101906104be91906132e1565b610e11565b6040516104d091906131d1565b60405180910390f35b3480156104e4575f80fd5b506104ed610e57565b005b3480156104fa575f80fd5b50610503610fa5565b005b348015610510575f80fd5b506105196110d1565b60405161052691906131d1565b60405180910390f35b34801561053a575f80fd5b506105436110dd565b60405161055091906131d1565b60405180910390f35b348015610564575f80fd5b5061057f600480360381019061057a9190613438565b6110e3565b005b34801561058c575f80fd5b506105956112dd565b6040516105a291906131b8565b60405180910390f35b3480156105b6575f80fd5b506105bf611304565b6040516105cc91906131d1565b60405180910390f35b3480156105e0575f80fd5b506105e961130a565b6040516105f69190613117565b60405180910390f35b34801561060a575f80fd5b50610613611347565b60405161062091906131d1565b60405180910390f35b348015610634575f80fd5b5061064f600480360381019061064a9190613161565b611353565b60405161065c919061319f565b60405180910390f35b348015610670575f80fd5b50610679611370565b60405161068691906131d1565b60405180910390f35b34801561069a575f80fd5b506106a361137c565b6040516106b091906131d1565b60405180910390f35b3480156106c4575f80fd5b506106df60048036038101906106da91906132e1565b611382565b6040516106ec91906131d1565b60405180910390f35b348015610700575f80fd5b50610709611397565b005b348015610716575f80fd5b50610731600480360381019061072c91906134bc565b6118bf565b005b34801561073e575f80fd5b50610747611bb5565b60405161075491906131b8565b60405180910390f35b348015610768575f80fd5b50610771611bda565b60405161077e91906131d1565b60405180910390f35b348015610792575f80fd5b506107ad60048036038101906107a8919061326e565b611be0565b6040516107ba91906131d1565b60405180910390f35b3480156107ce575f80fd5b506107d7611c62565b6040516107e491906131d1565b60405180910390f35b3480156107f8575f80fd5b50610813600480360381019061080e91906132e1565b611c69565b60405161082091906131d1565b60405180910390f35b348015610834575f80fd5b5061084f600480360381019061084a91906132e1565b611c7e565b60405161085e939291906134fa565b60405180910390f35b348015610872575f80fd5b5061087b611ce2565b005b6007602052805f5260405f205f91509050805f015490806001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020180546108c79061355c565b80601f01602080910402602001604051908101604052809291908181526020018280546108f39061355c565b801561093e5780601f106109155761010080835404028352916020019161093e565b820191905f5260205f20905b81548152906001019060200180831161092157829003601f168201915b505050505090806003015490806004015490806005015490806006015f9054906101000a900460ff16905087565b606060405180606001604052806025815260200161476660259139905090565b5f61099f610998611e0a565b8484611e11565b6001905092915050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b4260075f8381526020019081526020015f20600301541115610a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1c906135d6565b60405180910390fd5b60075f8281526020019081526020015f206006015f9054906101000a900460ff1615610a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7d90613664565b60405180910390fd5b5f60075f8381526020019081526020015f209050806005015481600401541115610af4576001816006015f6101000a81548160ff021916908315150217905550817f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f60405160405180910390a25b5050565b601e5481565b5f600a80610b0c91906137de565b6301c9c380610b1b9190613828565b905090565b5f610b2c848484611fd4565b610be984610b38611e0a565b610be48560405180606001604052806028815260200161473e6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b9b611e0a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128ee9092919063ffffffff16565b611e11565b600190509392505050565b5f600a905090565b6006602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b6009602052815f5260405f20602052805f5260405f205f9150915050805f0154908060010154908060020154905083565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610cc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbc906138b3565b60405180910390fd5b5f610ccf33610e11565b11610d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0690613941565b60405180910390fd5b610d67610d1b33610e11565b60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461295090919063ffffffff16565b60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fef9fc1dee6010109e6e3b21e51d44028e246dbad8a5a71ea192a30b19e1f457f60405160405180910390a350565b670de0b6b3a764000081565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610e5f611e0a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee2906139a9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610fad611e0a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611039576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611030906139a9565b60405180910390fd5b600a8061104691906137de565b6301c9c3806110559190613828565b601b81905550600a8061106891906137de565b6301c9c3806110779190613828565b601c819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf600a806110ab91906137de565b6301c9c3806110ba9190613828565b6040516110c791906131d1565b60405180910390a1565b6714d1120d7b16000081565b601b5481565b5f60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411611162576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115990613a11565b60405180910390fd5b60085f81548092919061117490613a2f565b91905055506040518060e0016040528060085481526020013373ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182426111ba9190613a76565b81526020015f81526020015f81526020015f151581525060075f60085481526020019081526020015f205f820151815f01556020820151816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020190816112479190613c46565b50606082015181600301556080820151816004015560a0820151816005015560c0820151816006015f6101000a81548160ff0219169083151502179055509050503373ffffffffffffffffffffffffffffffffffffffff166008547f7585f467599d0f008985f231af99293be388626ac16ca59505c2f8f88969cd63846040516112d19190613117565b60405180910390a35050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601c5481565b60606040518060400160405280600481526020017f4e4f495200000000000000000000000000000000000000000000000000000000815250905090565b67016345785d8a000081565b5f61136661135f611e0a565b8484611fd4565b6001905092915050565b670de0b6b3a764000081565b601d5481565b6005602052805f5260405f205f915090505481565b61139f611e0a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461142b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611422906139a9565b60405180910390fd5b602060149054906101000a900460ff161561147b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147290613d5f565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d601f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061151630601f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a8061150291906137de565b6301c9c3806115119190613828565b611e11565b601f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611580573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115a49190613d91565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561162a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061164e9190613d91565b6040518363ffffffff1660e01b815260040161166b929190613dbc565b6020604051808303815f875af1158015611687573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116ab9190613d91565b60205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061173230610e11565b5f8061173c6112dd565b426040518863ffffffff1660e01b815260040161175e96959493929190613e1c565b60606040518083038185885af115801561177a573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061179f9190613e8f565b50505060205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161183f929190613edf565b6020604051808303815f875af115801561185b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061187f9190613f1a565b506001602060166101000a81548160ff0219169083151502179055506001602060146101000a81548160ff02191690831515021790555043601281905550565b5f60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541161193e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193590613f8f565b60405180910390fd5b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f205f9054906101000a900460ff16156119d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ce90613ff7565b60405180910390fd5b4260075f8481526020019081526020015f206003015411611a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a249061405f565b60405180910390fd5b5f60075f8481526020019081526020015f2090508115611aa857611a9b60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054826004015461295090919063ffffffff16565b8160040181905550611b05565b611afc60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054826005015461295090919063ffffffff16565b81600501819055505b600160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f205f6101000a81548160ff021916908315150217905550811515833373ffffffffffffffffffffffffffffffffffffffff167fd356173ae8eeea8691aee4c1be712c314a975a3d43ebc48b08ca54d0dac9122860405160405180910390a4505050565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b620f424081565b6004602052805f5260405f205f915090505481565b600a602052805f5260405f205f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154905083565b611cea611e0a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6d906139a9565b60405180910390fd5b5f4711611db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daf906140c7565b60405180910390fd5b5f479050611dc46112dd565b73ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611e06573d5f803e3d5ffd5b5050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7690614155565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611eed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee4906141e3565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611fc791906131d1565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612042576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203990614271565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a7906142ff565b60405180910390fd5b5f81116120f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e99061438d565b60405180910390fd5b5f6120fb6112dd565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561216957506121396112dd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561263e576121aa606461219c601754601a54116121895760135461218d565b6015545b856129ad90919063ffffffff16565b612a2490919063ffffffff16565b905060205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156122555750601f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156122a8575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561238b57601b548211156122f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e9906143f5565b60405180910390fd5b601c54826122ff85610e11565b6123099190613a76565b111561234a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123419061445d565b60405180910390fd5b43600360125461235a9190613a76565b11156123735761236983612a6d565b15612372575f80fd5b5b601a5f81548092919061238590613a2f565b91905055505b60205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561242f575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561248d57601c548261244185610e11565b61244b9190613a76565b111561248c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124839061445d565b60405180910390fd5b5b60205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561251557503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612559576125566064612548601854601a541161253557601454612539565b6016545b856129ad90919063ffffffff16565b612a2490919063ffffffff16565b90505b5f61256330610e11565b9050602060159054906101000a900460ff161580156125ce575060205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156125e65750602060169054906101000a900460ff165b80156125f35750601d5481115b80156126025750601954601a54115b1561263c5761262461261f8461261a84601e54612a7e565b612a7e565b612a96565b5f4790505f81111561263a5761263947612d01565b5b505b505b5f81111561273d576126968160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461295090919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161273491906131d1565b60405180910390a35b61278d8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612eb290919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506128306127e48284612eb290919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461295090919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6128d38486612eb290919063ffffffff16565b6040516128e091906131d1565b60405180910390a350505050565b5f838311158290612935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292c9190613117565b60405180910390fd5b505f8385612943919061447b565b9050809150509392505050565b5f80828461295e9190613a76565b9050838110156129a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299a906144f8565b60405180910390fd5b8091505092915050565b5f8083036129bd575f9050612a1e565b5f82846129ca9190613828565b90508284826129d99190614543565b14612a19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a10906145e3565b60405180910390fd5b809150505b92915050565b5f612a6583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612efb565b905092915050565b5f80823b90505f8111915050919050565b5f818311612a8c5782612a8e565b815b905092915050565b6001602060156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115612acd57612acc613314565b5b604051908082528060200260200182016040528015612afb5781602001602082028036833780820191505090505b50905030815f81518110612b1257612b11614601565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bb6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bda9190613d91565b81600181518110612bee57612bed614601565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612c5430601f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e11565b601f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612cb69594939291906146e5565b5f604051808303815f87803b158015612ccd575f80fd5b505af1158015612cdf573d5f803e3d5ffd5b50505050505f602060156101000a81548160ff02191690831515021790555050565b5f612d296032612d1b6014856129ad90919063ffffffff16565b612a2490919063ffffffff16565b90505f612d536032612d456014866129ad90919063ffffffff16565b612a2490919063ffffffff16565b90505f612d7b82612d6d8587612eb290919063ffffffff16565b612eb290919063ffffffff16565b9050600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8490811502906040515f60405180830381858888f19350505050158015612de1573d5f803e3d5ffd5b50600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015612e46573d5f803e3d5ffd5b50600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612eab573d5f803e3d5ffd5b5050505050565b5f612ef383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506128ee565b905092915050565b5f8083118290612f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f389190613117565b60405180910390fd5b505f8385612f4f9190614543565b9050809150509392505050565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b612f7f81612f6d565b8114612f89575f80fd5b50565b5f81359050612f9a81612f76565b92915050565b5f60208284031215612fb557612fb4612f65565b5b5f612fc284828501612f8c565b91505092915050565b612fd481612f6d565b82525050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61300382612fda565b9050919050565b61301381612ff9565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61305b82613019565b6130658185613023565b9350613075818560208601613033565b61307e81613041565b840191505092915050565b5f8115159050919050565b61309d81613089565b82525050565b5f60e0820190506130b65f83018a612fcb565b6130c3602083018961300a565b81810360408301526130d58188613051565b90506130e46060830187612fcb565b6130f16080830186612fcb565b6130fe60a0830185612fcb565b61310b60c0830184613094565b98975050505050505050565b5f6020820190508181035f83015261312f8184613051565b905092915050565b61314081612ff9565b811461314a575f80fd5b50565b5f8135905061315b81613137565b92915050565b5f806040838503121561317757613176612f65565b5b5f6131848582860161314d565b925050602061319585828601612f8c565b9150509250929050565b5f6020820190506131b25f830184613094565b92915050565b5f6020820190506131cb5f83018461300a565b92915050565b5f6020820190506131e45f830184612fcb565b92915050565b5f805f6060848603121561320157613200612f65565b5b5f61320e8682870161314d565b935050602061321f8682870161314d565b925050604061323086828701612f8c565b9150509250925092565b5f60ff82169050919050565b61324f8161323a565b82525050565b5f6020820190506132685f830184613246565b92915050565b5f806040838503121561328457613283612f65565b5b5f6132918582860161314d565b92505060206132a28582860161314d565b9150509250929050565b5f6060820190506132bf5f830186612fcb565b6132cc6020830185612fcb565b6132d96040830184612fcb565b949350505050565b5f602082840312156132f6576132f5612f65565b5b5f6133038482850161314d565b91505092915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61334a82613041565b810181811067ffffffffffffffff8211171561336957613368613314565b5b80604052505050565b5f61337b612f5c565b90506133878282613341565b919050565b5f67ffffffffffffffff8211156133a6576133a5613314565b5b6133af82613041565b9050602081019050919050565b828183375f83830152505050565b5f6133dc6133d78461338c565b613372565b9050828152602081018484840111156133f8576133f7613310565b5b6134038482856133bc565b509392505050565b5f82601f83011261341f5761341e61330c565b5b813561342f8482602086016133ca565b91505092915050565b5f806040838503121561344e5761344d612f65565b5b5f83013567ffffffffffffffff81111561346b5761346a612f69565b5b6134778582860161340b565b925050602061348885828601612f8c565b9150509250929050565b61349b81613089565b81146134a5575f80fd5b50565b5f813590506134b681613492565b92915050565b5f80604083850312156134d2576134d1612f65565b5b5f6134df85828601612f8c565b92505060206134f0858286016134a8565b9150509250929050565b5f60608201905061350d5f83018661300a565b61351a602083018561300a565b6135276040830184612fcb565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061357357607f821691505b6020821081036135865761358561352f565b5b50919050565b7f566f74696e6720706572696f6420686173206e6f7420656e64656400000000005f82015250565b5f6135c0601b83613023565b91506135cb8261358c565b602082019050919050565b5f6020820190508181035f8301526135ed816135b4565b9050919050565b7f50726f706f73616c2068617320616c7265616479206265656e206578656375745f8201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b5f61364e602283613023565b9150613659826135f4565b604082019050919050565b5f6020820190508181035f83015261367b81613642565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115613704578086048111156136e0576136df613682565b5b60018516156136ef5780820291505b80810290506136fd856136af565b94506136c4565b94509492505050565b5f8261371c57600190506137d7565b81613729575f90506137d7565b816001811461373f576002811461374957613778565b60019150506137d7565b60ff84111561375b5761375a613682565b5b8360020a91508482111561377257613771613682565b5b506137d7565b5060208310610133831016604e8410600b84101617156137ad5782820a9050838111156137a8576137a7613682565b5b6137d7565b6137ba84848460016136bb565b925090508184048111156137d1576137d0613682565b5b81810290505b9392505050565b5f6137e882612f6d565b91506137f38361323a565b92506138207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461370d565b905092915050565b5f61383282612f6d565b915061383d83612f6d565b925082820261384b81612f6d565b9150828204841483151761386257613861613682565b5b5092915050565b7f43616e6e6f742064656c656761746520746f207a65726f2061646472657373005f82015250565b5f61389d601f83613023565b91506138a882613869565b602082019050919050565b5f6020820190508181035f8301526138ca81613891565b9050919050565b7f43616e6e6f742064656c656761746520776974686f757420616e7920746f6b655f8201527f6e73000000000000000000000000000000000000000000000000000000000000602082015250565b5f61392b602283613023565b9150613936826138d1565b604082019050919050565b5f6020820190508181035f8301526139588161391f565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613993602083613023565b915061399e8261395f565b602082019050919050565b5f6020820190508181035f8301526139c081613987565b9050919050565b7f4e6f20766f74696e6720706f77657220746f2070726f706f73650000000000005f82015250565b5f6139fb601a83613023565b9150613a06826139c7565b602082019050919050565b5f6020820190508181035f830152613a28816139ef565b9050919050565b5f613a3982612f6d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613a6b57613a6a613682565b5b600182019050919050565b5f613a8082612f6d565b9150613a8b83612f6d565b9250828201905080821115613aa357613aa2613682565b5b92915050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302613b057fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613aca565b613b0f8683613aca565b95508019841693508086168417925050509392505050565b5f819050919050565b5f613b4a613b45613b4084612f6d565b613b27565b612f6d565b9050919050565b5f819050919050565b613b6383613b30565b613b77613b6f82613b51565b848454613ad6565b825550505050565b5f90565b613b8b613b7f565b613b96818484613b5a565b505050565b5b81811015613bb957613bae5f82613b83565b600181019050613b9c565b5050565b601f821115613bfe57613bcf81613aa9565b613bd884613abb565b81016020851015613be7578190505b613bfb613bf385613abb565b830182613b9b565b50505b505050565b5f82821c905092915050565b5f613c1e5f1984600802613c03565b1980831691505092915050565b5f613c368383613c0f565b9150826002028217905092915050565b613c4f82613019565b67ffffffffffffffff811115613c6857613c67613314565b5b613c72825461355c565b613c7d828285613bbd565b5f60209050601f831160018114613cae575f8415613c9c578287015190505b613ca68582613c2b565b865550613d0d565b601f198416613cbc86613aa9565b5f5b82811015613ce357848901518255600182019150602085019450602081019050613cbe565b86831015613d005784890151613cfc601f891682613c0f565b8355505b6001600288020188555050505b505050505050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613d49601783613023565b9150613d5482613d15565b602082019050919050565b5f6020820190508181035f830152613d7681613d3d565b9050919050565b5f81519050613d8b81613137565b92915050565b5f60208284031215613da657613da5612f65565b5b5f613db384828501613d7d565b91505092915050565b5f604082019050613dcf5f83018561300a565b613ddc602083018461300a565b9392505050565b5f819050919050565b5f613e06613e01613dfc84613de3565b613b27565b612f6d565b9050919050565b613e1681613dec565b82525050565b5f60c082019050613e2f5f83018961300a565b613e3c6020830188612fcb565b613e496040830187613e0d565b613e566060830186613e0d565b613e63608083018561300a565b613e7060a0830184612fcb565b979650505050505050565b5f81519050613e8981612f76565b92915050565b5f805f60608486031215613ea657613ea5612f65565b5b5f613eb386828701613e7b565b9350506020613ec486828701613e7b565b9250506040613ed586828701613e7b565b9150509250925092565b5f604082019050613ef25f83018561300a565b613eff6020830184612fcb565b9392505050565b5f81519050613f1481613492565b92915050565b5f60208284031215613f2f57613f2e612f65565b5b5f613f3c84828501613f06565b91505092915050565b7f4e6f20766f74696e6720706f77657200000000000000000000000000000000005f82015250565b5f613f79600f83613023565b9150613f8482613f45565b602082019050919050565b5f6020820190508181035f830152613fa681613f6d565b9050919050565b7f416c726561647920766f746564206f6e20746869732070726f706f73616c00005f82015250565b5f613fe1601e83613023565b9150613fec82613fad565b602082019050919050565b5f6020820190508181035f83015261400e81613fd5565b9050919050565b7f566f74696e6720706572696f642068617320656e6465640000000000000000005f82015250565b5f614049601783613023565b915061405482614015565b602082019050919050565b5f6020820190508181035f8301526140768161403d565b9050919050565b7f4e6f20737475636b2045544820746f20776974686472617700000000000000005f82015250565b5f6140b1601883613023565b91506140bc8261407d565b602082019050919050565b5f6020820190508181035f8301526140de816140a5565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61413f602483613023565b915061414a826140e5565b604082019050919050565b5f6020820190508181035f83015261416c81614133565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6141cd602283613023565b91506141d882614173565b604082019050919050565b5f6020820190508181035f8301526141fa816141c1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61425b602583613023565b915061426682614201565b604082019050919050565b5f6020820190508181035f8301526142888161424f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6142e9602383613023565b91506142f48261428f565b604082019050919050565b5f6020820190508181035f830152614316816142dd565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f614377602983613023565b91506143828261431d565b604082019050919050565b5f6020820190508181035f8301526143a48161436b565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6143df601983613023565b91506143ea826143ab565b602082019050919050565b5f6020820190508181035f83015261440c816143d3565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f614447601a83613023565b915061445282614413565b602082019050919050565b5f6020820190508181035f8301526144748161443b565b9050919050565b5f61448582612f6d565b915061449083612f6d565b92508282039050818111156144a8576144a7613682565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6144e2601b83613023565b91506144ed826144ae565b602082019050919050565b5f6020820190508181035f83015261450f816144d6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61454d82612f6d565b915061455883612f6d565b92508261456857614567614516565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6145cd602183613023565b91506145d882614573565b604082019050919050565b5f6020820190508181035f8301526145fa816145c1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61466081612ff9565b82525050565b5f6146718383614657565b60208301905092915050565b5f602082019050919050565b5f6146938261462e565b61469d8185614638565b93506146a883614648565b805f5b838110156146d85781516146bf8882614666565b97506146ca8361467d565b9250506001810190506146ab565b5085935050505092915050565b5f60a0820190506146f85f830188612fcb565b6147056020830187613e0d565b81810360408301526147178186614689565b9050614726606083018561300a565b6147336080830184612fcb565b969550505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654e6f76656c204f7074696d697a656420496e746572636861696e20526562616c616e636572a26469706673582212209e39b91dfae1a99d6e72298607228e7b195d5ee720824dee9a813236a47856d164736f6c63430008190033

Deployed Bytecode

0x608060405260043610610212575f3560e01c80638d1cb8b511610117578063c9567bf91161009f578063dd62ed3e1161006e578063dd62ed3e14610787578063e63a391f146107c3578063eedc966a146107ed578063f11b818814610829578063f5648a4f1461086757610219565b8063c9567bf9146106f5578063c9d27afe1461070b578063d111736b14610733578063da35c6641461075d57610219565b80639b8621d5116100e65780639b8621d5146105ff578063a9059cbb14610629578063aaf5eb6814610665578063bf474bed1461068f578063c07473f6146106b957610219565b80638d1cb8b5146105595780638da5cb5b146105815780638f9a55c0146105ab57806395d89b41146105d557610219565b8063425458251161019a57806370a082311161016957806370a082311461049d578063715018a6146104d9578063751039fc146104ef5780637a9fffb7146105055780637d1db4a51461052f57610219565b806342545825146103d15780634bd214451461040d5780635c19a95c1461044b5780636be6026b1461047357610219565b80630d61b519116101e15780630d61b519146102ef5780630faee56f1461031757806318160ddd1461034157806323b872dd1461036b578063313ce567146103a757610219565b8063013cf08b1461021d57806306fdde031461025f578063095ea7b3146102895780630c340a24146102c557610219565b3661021957005b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e9190612fa0565b61087d565b60405161025697969594939291906130a3565b60405180910390f35b34801561026a575f80fd5b5061027361096c565b6040516102809190613117565b60405180910390f35b348015610294575f80fd5b506102af60048036038101906102aa9190613161565b61098c565b6040516102bc919061319f565b60405180910390f35b3480156102d0575f80fd5b506102d96109a9565b6040516102e691906131b8565b60405180910390f35b3480156102fa575f80fd5b5061031560048036038101906103109190612fa0565b6109ce565b005b348015610322575f80fd5b5061032b610af8565b60405161033891906131d1565b60405180910390f35b34801561034c575f80fd5b50610355610afe565b60405161036291906131d1565b60405180910390f35b348015610376575f80fd5b50610391600480360381019061038c91906131ea565b610b20565b60405161039e919061319f565b60405180910390f35b3480156103b2575f80fd5b506103bb610bf4565b6040516103c89190613255565b60405180910390f35b3480156103dc575f80fd5b506103f760048036038101906103f29190613161565b610bfc565b604051610404919061319f565b60405180910390f35b348015610418575f80fd5b50610433600480360381019061042e919061326e565b610c26565b604051610442939291906132ac565b60405180910390f35b348015610456575f80fd5b50610471600480360381019061046c91906132e1565b610c57565b005b34801561047e575f80fd5b50610487610e05565b60405161049491906131d1565b60405180910390f35b3480156104a8575f80fd5b506104c360048036038101906104be91906132e1565b610e11565b6040516104d091906131d1565b60405180910390f35b3480156104e4575f80fd5b506104ed610e57565b005b3480156104fa575f80fd5b50610503610fa5565b005b348015610510575f80fd5b506105196110d1565b60405161052691906131d1565b60405180910390f35b34801561053a575f80fd5b506105436110dd565b60405161055091906131d1565b60405180910390f35b348015610564575f80fd5b5061057f600480360381019061057a9190613438565b6110e3565b005b34801561058c575f80fd5b506105956112dd565b6040516105a291906131b8565b60405180910390f35b3480156105b6575f80fd5b506105bf611304565b6040516105cc91906131d1565b60405180910390f35b3480156105e0575f80fd5b506105e961130a565b6040516105f69190613117565b60405180910390f35b34801561060a575f80fd5b50610613611347565b60405161062091906131d1565b60405180910390f35b348015610634575f80fd5b5061064f600480360381019061064a9190613161565b611353565b60405161065c919061319f565b60405180910390f35b348015610670575f80fd5b50610679611370565b60405161068691906131d1565b60405180910390f35b34801561069a575f80fd5b506106a361137c565b6040516106b091906131d1565b60405180910390f35b3480156106c4575f80fd5b506106df60048036038101906106da91906132e1565b611382565b6040516106ec91906131d1565b60405180910390f35b348015610700575f80fd5b50610709611397565b005b348015610716575f80fd5b50610731600480360381019061072c91906134bc565b6118bf565b005b34801561073e575f80fd5b50610747611bb5565b60405161075491906131b8565b60405180910390f35b348015610768575f80fd5b50610771611bda565b60405161077e91906131d1565b60405180910390f35b348015610792575f80fd5b506107ad60048036038101906107a8919061326e565b611be0565b6040516107ba91906131d1565b60405180910390f35b3480156107ce575f80fd5b506107d7611c62565b6040516107e491906131d1565b60405180910390f35b3480156107f8575f80fd5b50610813600480360381019061080e91906132e1565b611c69565b60405161082091906131d1565b60405180910390f35b348015610834575f80fd5b5061084f600480360381019061084a91906132e1565b611c7e565b60405161085e939291906134fa565b60405180910390f35b348015610872575f80fd5b5061087b611ce2565b005b6007602052805f5260405f205f91509050805f015490806001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020180546108c79061355c565b80601f01602080910402602001604051908101604052809291908181526020018280546108f39061355c565b801561093e5780601f106109155761010080835404028352916020019161093e565b820191905f5260205f20905b81548152906001019060200180831161092157829003601f168201915b505050505090806003015490806004015490806005015490806006015f9054906101000a900460ff16905087565b606060405180606001604052806025815260200161476660259139905090565b5f61099f610998611e0a565b8484611e11565b6001905092915050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b4260075f8381526020019081526020015f20600301541115610a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1c906135d6565b60405180910390fd5b60075f8281526020019081526020015f206006015f9054906101000a900460ff1615610a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7d90613664565b60405180910390fd5b5f60075f8381526020019081526020015f209050806005015481600401541115610af4576001816006015f6101000a81548160ff021916908315150217905550817f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f60405160405180910390a25b5050565b601e5481565b5f600a80610b0c91906137de565b6301c9c380610b1b9190613828565b905090565b5f610b2c848484611fd4565b610be984610b38611e0a565b610be48560405180606001604052806028815260200161473e6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b9b611e0a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128ee9092919063ffffffff16565b611e11565b600190509392505050565b5f600a905090565b6006602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b6009602052815f5260405f20602052805f5260405f205f9150915050805f0154908060010154908060020154905083565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610cc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbc906138b3565b60405180910390fd5b5f610ccf33610e11565b11610d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0690613941565b60405180910390fd5b610d67610d1b33610e11565b60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461295090919063ffffffff16565b60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fef9fc1dee6010109e6e3b21e51d44028e246dbad8a5a71ea192a30b19e1f457f60405160405180910390a350565b670de0b6b3a764000081565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610e5f611e0a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee2906139a9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610fad611e0a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611039576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611030906139a9565b60405180910390fd5b600a8061104691906137de565b6301c9c3806110559190613828565b601b81905550600a8061106891906137de565b6301c9c3806110779190613828565b601c819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf600a806110ab91906137de565b6301c9c3806110ba9190613828565b6040516110c791906131d1565b60405180910390a1565b6714d1120d7b16000081565b601b5481565b5f60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411611162576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115990613a11565b60405180910390fd5b60085f81548092919061117490613a2f565b91905055506040518060e0016040528060085481526020013373ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182426111ba9190613a76565b81526020015f81526020015f81526020015f151581525060075f60085481526020019081526020015f205f820151815f01556020820151816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020190816112479190613c46565b50606082015181600301556080820151816004015560a0820151816005015560c0820151816006015f6101000a81548160ff0219169083151502179055509050503373ffffffffffffffffffffffffffffffffffffffff166008547f7585f467599d0f008985f231af99293be388626ac16ca59505c2f8f88969cd63846040516112d19190613117565b60405180910390a35050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601c5481565b60606040518060400160405280600481526020017f4e4f495200000000000000000000000000000000000000000000000000000000815250905090565b67016345785d8a000081565b5f61136661135f611e0a565b8484611fd4565b6001905092915050565b670de0b6b3a764000081565b601d5481565b6005602052805f5260405f205f915090505481565b61139f611e0a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461142b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611422906139a9565b60405180910390fd5b602060149054906101000a900460ff161561147b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147290613d5f565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d601f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061151630601f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a8061150291906137de565b6301c9c3806115119190613828565b611e11565b601f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611580573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115a49190613d91565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561162a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061164e9190613d91565b6040518363ffffffff1660e01b815260040161166b929190613dbc565b6020604051808303815f875af1158015611687573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116ab9190613d91565b60205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061173230610e11565b5f8061173c6112dd565b426040518863ffffffff1660e01b815260040161175e96959493929190613e1c565b60606040518083038185885af115801561177a573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061179f9190613e8f565b50505060205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161183f929190613edf565b6020604051808303815f875af115801561185b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061187f9190613f1a565b506001602060166101000a81548160ff0219169083151502179055506001602060146101000a81548160ff02191690831515021790555043601281905550565b5f60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541161193e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193590613f8f565b60405180910390fd5b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f205f9054906101000a900460ff16156119d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ce90613ff7565b60405180910390fd5b4260075f8481526020019081526020015f206003015411611a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a249061405f565b60405180910390fd5b5f60075f8481526020019081526020015f2090508115611aa857611a9b60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054826004015461295090919063ffffffff16565b8160040181905550611b05565b611afc60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054826005015461295090919063ffffffff16565b81600501819055505b600160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f205f6101000a81548160ff021916908315150217905550811515833373ffffffffffffffffffffffffffffffffffffffff167fd356173ae8eeea8691aee4c1be712c314a975a3d43ebc48b08ca54d0dac9122860405160405180910390a4505050565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b620f424081565b6004602052805f5260405f205f915090505481565b600a602052805f5260405f205f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154905083565b611cea611e0a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6d906139a9565b60405180910390fd5b5f4711611db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daf906140c7565b60405180910390fd5b5f479050611dc46112dd565b73ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611e06573d5f803e3d5ffd5b5050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7690614155565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611eed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee4906141e3565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611fc791906131d1565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612042576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203990614271565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a7906142ff565b60405180910390fd5b5f81116120f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e99061438d565b60405180910390fd5b5f6120fb6112dd565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561216957506121396112dd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561263e576121aa606461219c601754601a54116121895760135461218d565b6015545b856129ad90919063ffffffff16565b612a2490919063ffffffff16565b905060205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156122555750601f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156122a8575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561238b57601b548211156122f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e9906143f5565b60405180910390fd5b601c54826122ff85610e11565b6123099190613a76565b111561234a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123419061445d565b60405180910390fd5b43600360125461235a9190613a76565b11156123735761236983612a6d565b15612372575f80fd5b5b601a5f81548092919061238590613a2f565b91905055505b60205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561242f575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561248d57601c548261244185610e11565b61244b9190613a76565b111561248c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124839061445d565b60405180910390fd5b5b60205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561251557503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612559576125566064612548601854601a541161253557601454612539565b6016545b856129ad90919063ffffffff16565b612a2490919063ffffffff16565b90505b5f61256330610e11565b9050602060159054906101000a900460ff161580156125ce575060205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156125e65750602060169054906101000a900460ff165b80156125f35750601d5481115b80156126025750601954601a54115b1561263c5761262461261f8461261a84601e54612a7e565b612a7e565b612a96565b5f4790505f81111561263a5761263947612d01565b5b505b505b5f81111561273d576126968160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461295090919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161273491906131d1565b60405180910390a35b61278d8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612eb290919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506128306127e48284612eb290919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461295090919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6128d38486612eb290919063ffffffff16565b6040516128e091906131d1565b60405180910390a350505050565b5f838311158290612935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292c9190613117565b60405180910390fd5b505f8385612943919061447b565b9050809150509392505050565b5f80828461295e9190613a76565b9050838110156129a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299a906144f8565b60405180910390fd5b8091505092915050565b5f8083036129bd575f9050612a1e565b5f82846129ca9190613828565b90508284826129d99190614543565b14612a19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a10906145e3565b60405180910390fd5b809150505b92915050565b5f612a6583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612efb565b905092915050565b5f80823b90505f8111915050919050565b5f818311612a8c5782612a8e565b815b905092915050565b6001602060156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115612acd57612acc613314565b5b604051908082528060200260200182016040528015612afb5781602001602082028036833780820191505090505b50905030815f81518110612b1257612b11614601565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bb6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bda9190613d91565b81600181518110612bee57612bed614601565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612c5430601f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e11565b601f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612cb69594939291906146e5565b5f604051808303815f87803b158015612ccd575f80fd5b505af1158015612cdf573d5f803e3d5ffd5b50505050505f602060156101000a81548160ff02191690831515021790555050565b5f612d296032612d1b6014856129ad90919063ffffffff16565b612a2490919063ffffffff16565b90505f612d536032612d456014866129ad90919063ffffffff16565b612a2490919063ffffffff16565b90505f612d7b82612d6d8587612eb290919063ffffffff16565b612eb290919063ffffffff16565b9050600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8490811502906040515f60405180830381858888f19350505050158015612de1573d5f803e3d5ffd5b50600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015612e46573d5f803e3d5ffd5b50600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612eab573d5f803e3d5ffd5b5050505050565b5f612ef383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506128ee565b905092915050565b5f8083118290612f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f389190613117565b60405180910390fd5b505f8385612f4f9190614543565b9050809150509392505050565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b612f7f81612f6d565b8114612f89575f80fd5b50565b5f81359050612f9a81612f76565b92915050565b5f60208284031215612fb557612fb4612f65565b5b5f612fc284828501612f8c565b91505092915050565b612fd481612f6d565b82525050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61300382612fda565b9050919050565b61301381612ff9565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61305b82613019565b6130658185613023565b9350613075818560208601613033565b61307e81613041565b840191505092915050565b5f8115159050919050565b61309d81613089565b82525050565b5f60e0820190506130b65f83018a612fcb565b6130c3602083018961300a565b81810360408301526130d58188613051565b90506130e46060830187612fcb565b6130f16080830186612fcb565b6130fe60a0830185612fcb565b61310b60c0830184613094565b98975050505050505050565b5f6020820190508181035f83015261312f8184613051565b905092915050565b61314081612ff9565b811461314a575f80fd5b50565b5f8135905061315b81613137565b92915050565b5f806040838503121561317757613176612f65565b5b5f6131848582860161314d565b925050602061319585828601612f8c565b9150509250929050565b5f6020820190506131b25f830184613094565b92915050565b5f6020820190506131cb5f83018461300a565b92915050565b5f6020820190506131e45f830184612fcb565b92915050565b5f805f6060848603121561320157613200612f65565b5b5f61320e8682870161314d565b935050602061321f8682870161314d565b925050604061323086828701612f8c565b9150509250925092565b5f60ff82169050919050565b61324f8161323a565b82525050565b5f6020820190506132685f830184613246565b92915050565b5f806040838503121561328457613283612f65565b5b5f6132918582860161314d565b92505060206132a28582860161314d565b9150509250929050565b5f6060820190506132bf5f830186612fcb565b6132cc6020830185612fcb565b6132d96040830184612fcb565b949350505050565b5f602082840312156132f6576132f5612f65565b5b5f6133038482850161314d565b91505092915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61334a82613041565b810181811067ffffffffffffffff8211171561336957613368613314565b5b80604052505050565b5f61337b612f5c565b90506133878282613341565b919050565b5f67ffffffffffffffff8211156133a6576133a5613314565b5b6133af82613041565b9050602081019050919050565b828183375f83830152505050565b5f6133dc6133d78461338c565b613372565b9050828152602081018484840111156133f8576133f7613310565b5b6134038482856133bc565b509392505050565b5f82601f83011261341f5761341e61330c565b5b813561342f8482602086016133ca565b91505092915050565b5f806040838503121561344e5761344d612f65565b5b5f83013567ffffffffffffffff81111561346b5761346a612f69565b5b6134778582860161340b565b925050602061348885828601612f8c565b9150509250929050565b61349b81613089565b81146134a5575f80fd5b50565b5f813590506134b681613492565b92915050565b5f80604083850312156134d2576134d1612f65565b5b5f6134df85828601612f8c565b92505060206134f0858286016134a8565b9150509250929050565b5f60608201905061350d5f83018661300a565b61351a602083018561300a565b6135276040830184612fcb565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061357357607f821691505b6020821081036135865761358561352f565b5b50919050565b7f566f74696e6720706572696f6420686173206e6f7420656e64656400000000005f82015250565b5f6135c0601b83613023565b91506135cb8261358c565b602082019050919050565b5f6020820190508181035f8301526135ed816135b4565b9050919050565b7f50726f706f73616c2068617320616c7265616479206265656e206578656375745f8201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b5f61364e602283613023565b9150613659826135f4565b604082019050919050565b5f6020820190508181035f83015261367b81613642565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115613704578086048111156136e0576136df613682565b5b60018516156136ef5780820291505b80810290506136fd856136af565b94506136c4565b94509492505050565b5f8261371c57600190506137d7565b81613729575f90506137d7565b816001811461373f576002811461374957613778565b60019150506137d7565b60ff84111561375b5761375a613682565b5b8360020a91508482111561377257613771613682565b5b506137d7565b5060208310610133831016604e8410600b84101617156137ad5782820a9050838111156137a8576137a7613682565b5b6137d7565b6137ba84848460016136bb565b925090508184048111156137d1576137d0613682565b5b81810290505b9392505050565b5f6137e882612f6d565b91506137f38361323a565b92506138207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461370d565b905092915050565b5f61383282612f6d565b915061383d83612f6d565b925082820261384b81612f6d565b9150828204841483151761386257613861613682565b5b5092915050565b7f43616e6e6f742064656c656761746520746f207a65726f2061646472657373005f82015250565b5f61389d601f83613023565b91506138a882613869565b602082019050919050565b5f6020820190508181035f8301526138ca81613891565b9050919050565b7f43616e6e6f742064656c656761746520776974686f757420616e7920746f6b655f8201527f6e73000000000000000000000000000000000000000000000000000000000000602082015250565b5f61392b602283613023565b9150613936826138d1565b604082019050919050565b5f6020820190508181035f8301526139588161391f565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613993602083613023565b915061399e8261395f565b602082019050919050565b5f6020820190508181035f8301526139c081613987565b9050919050565b7f4e6f20766f74696e6720706f77657220746f2070726f706f73650000000000005f82015250565b5f6139fb601a83613023565b9150613a06826139c7565b602082019050919050565b5f6020820190508181035f830152613a28816139ef565b9050919050565b5f613a3982612f6d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613a6b57613a6a613682565b5b600182019050919050565b5f613a8082612f6d565b9150613a8b83612f6d565b9250828201905080821115613aa357613aa2613682565b5b92915050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302613b057fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613aca565b613b0f8683613aca565b95508019841693508086168417925050509392505050565b5f819050919050565b5f613b4a613b45613b4084612f6d565b613b27565b612f6d565b9050919050565b5f819050919050565b613b6383613b30565b613b77613b6f82613b51565b848454613ad6565b825550505050565b5f90565b613b8b613b7f565b613b96818484613b5a565b505050565b5b81811015613bb957613bae5f82613b83565b600181019050613b9c565b5050565b601f821115613bfe57613bcf81613aa9565b613bd884613abb565b81016020851015613be7578190505b613bfb613bf385613abb565b830182613b9b565b50505b505050565b5f82821c905092915050565b5f613c1e5f1984600802613c03565b1980831691505092915050565b5f613c368383613c0f565b9150826002028217905092915050565b613c4f82613019565b67ffffffffffffffff811115613c6857613c67613314565b5b613c72825461355c565b613c7d828285613bbd565b5f60209050601f831160018114613cae575f8415613c9c578287015190505b613ca68582613c2b565b865550613d0d565b601f198416613cbc86613aa9565b5f5b82811015613ce357848901518255600182019150602085019450602081019050613cbe565b86831015613d005784890151613cfc601f891682613c0f565b8355505b6001600288020188555050505b505050505050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613d49601783613023565b9150613d5482613d15565b602082019050919050565b5f6020820190508181035f830152613d7681613d3d565b9050919050565b5f81519050613d8b81613137565b92915050565b5f60208284031215613da657613da5612f65565b5b5f613db384828501613d7d565b91505092915050565b5f604082019050613dcf5f83018561300a565b613ddc602083018461300a565b9392505050565b5f819050919050565b5f613e06613e01613dfc84613de3565b613b27565b612f6d565b9050919050565b613e1681613dec565b82525050565b5f60c082019050613e2f5f83018961300a565b613e3c6020830188612fcb565b613e496040830187613e0d565b613e566060830186613e0d565b613e63608083018561300a565b613e7060a0830184612fcb565b979650505050505050565b5f81519050613e8981612f76565b92915050565b5f805f60608486031215613ea657613ea5612f65565b5b5f613eb386828701613e7b565b9350506020613ec486828701613e7b565b9250506040613ed586828701613e7b565b9150509250925092565b5f604082019050613ef25f83018561300a565b613eff6020830184612fcb565b9392505050565b5f81519050613f1481613492565b92915050565b5f60208284031215613f2f57613f2e612f65565b5b5f613f3c84828501613f06565b91505092915050565b7f4e6f20766f74696e6720706f77657200000000000000000000000000000000005f82015250565b5f613f79600f83613023565b9150613f8482613f45565b602082019050919050565b5f6020820190508181035f830152613fa681613f6d565b9050919050565b7f416c726561647920766f746564206f6e20746869732070726f706f73616c00005f82015250565b5f613fe1601e83613023565b9150613fec82613fad565b602082019050919050565b5f6020820190508181035f83015261400e81613fd5565b9050919050565b7f566f74696e6720706572696f642068617320656e6465640000000000000000005f82015250565b5f614049601783613023565b915061405482614015565b602082019050919050565b5f6020820190508181035f8301526140768161403d565b9050919050565b7f4e6f20737475636b2045544820746f20776974686472617700000000000000005f82015250565b5f6140b1601883613023565b91506140bc8261407d565b602082019050919050565b5f6020820190508181035f8301526140de816140a5565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61413f602483613023565b915061414a826140e5565b604082019050919050565b5f6020820190508181035f83015261416c81614133565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6141cd602283613023565b91506141d882614173565b604082019050919050565b5f6020820190508181035f8301526141fa816141c1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61425b602583613023565b915061426682614201565b604082019050919050565b5f6020820190508181035f8301526142888161424f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6142e9602383613023565b91506142f48261428f565b604082019050919050565b5f6020820190508181035f830152614316816142dd565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f614377602983613023565b91506143828261431d565b604082019050919050565b5f6020820190508181035f8301526143a48161436b565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6143df601983613023565b91506143ea826143ab565b602082019050919050565b5f6020820190508181035f83015261440c816143d3565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f614447601a83613023565b915061445282614413565b602082019050919050565b5f6020820190508181035f8301526144748161443b565b9050919050565b5f61448582612f6d565b915061449083612f6d565b92508282039050818111156144a8576144a7613682565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6144e2601b83613023565b91506144ed826144ae565b602082019050919050565b5f6020820190508181035f83015261450f816144d6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61454d82612f6d565b915061455883612f6d565b92508261456857614567614516565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6145cd602183613023565b91506145d882614573565b604082019050919050565b5f6020820190508181035f8301526145fa816145c1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61466081612ff9565b82525050565b5f6146718383614657565b60208301905092915050565b5f602082019050919050565b5f6146938261462e565b61469d8185614638565b93506146a883614648565b805f5b838110156146d85781516146bf8882614666565b97506146ca8361467d565b9250506001810190506146ab565b5085935050505092915050565b5f60a0820190506146f85f830188612fcb565b6147056020830187613e0d565b81810360408301526147178186614689565b9050614726606083018561300a565b6147336080830184612fcb565b969550505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654e6f76656c204f7074696d697a656420496e746572636861696e20526562616c616e636572a26469706673582212209e39b91dfae1a99d6e72298607228e7b195d5ee720824dee9a813236a47856d164736f6c63430008190033

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.