ETH Price: $3,668.06 (+1.87%)

Contract

0xC30510deFF07605f3c907b931F22cF37aD993567
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve212583252024-11-24 14:53:236 days ago1732460003IN
0xC30510de...7aD993567
0 ETH0.000464489.85302894
Approve212548032024-11-24 3:05:116 days ago1732417511IN
0xC30510de...7aD993567
0 ETH0.0005689512.13107454
Approve212113622024-11-18 1:38:1112 days ago1731893891IN
0xC30510de...7aD993567
0 ETH0.0005673112.10536232
Transfer211984032024-11-16 6:16:1114 days ago1731737771IN
0xC30510de...7aD993567
0 ETH0.0013531320.53685452
Approve211475122024-11-09 3:49:2321 days ago1731124163IN
0xC30510de...7aD993567
0 ETH0.000399448.47335619
Approve210958912024-11-01 22:50:1128 days ago1730501411IN
0xC30510de...7aD993567
0 ETH0.000315576.69428427
Transfer210900792024-11-01 3:22:5929 days ago1730431379IN
0xC30510de...7aD993567
0 ETH0.000418366.34729213
Approve210483032024-10-26 7:27:4735 days ago1729927667IN
0xC30510de...7aD993567
0 ETH0.000272925.78217956
Approve210237952024-10-22 21:26:3538 days ago1729632395IN
0xC30510de...7aD993567
0 ETH0.000376127.9787779
Approve210182082024-10-22 2:42:5939 days ago1729564979IN
0xC30510de...7aD993567
0 ETH0.0005019410.63692973
Approve210178952024-10-22 1:39:5939 days ago1729561199IN
0xC30510de...7aD993567
0 ETH0.000379268.03508982
Approve210165012024-10-21 20:59:2339 days ago1729544363IN
0xC30510de...7aD993567
0 ETH0.000366147.76712081
Approve210113452024-10-21 3:44:3540 days ago1729482275IN
0xC30510de...7aD993567
0 ETH0.000340387.22046914
Approve210081122024-10-20 16:54:2340 days ago1729443263IN
0xC30510de...7aD993567
0 ETH0.0008276817.55774568
Approve210076142024-10-20 15:13:4741 days ago1729437227IN
0xC30510de...7aD993567
0 ETH0.0007380115.65557169
Approve210044602024-10-20 4:40:2341 days ago1729399223IN
0xC30510de...7aD993567
0 ETH0.000392168.31888407
Approve210042232024-10-20 3:52:5941 days ago1729396379IN
0xC30510de...7aD993567
0 ETH0.000323376.8510885
Approve210042032024-10-20 3:48:5941 days ago1729396139IN
0xC30510de...7aD993567
0 ETH0.000329726.98564972
Approve210026642024-10-19 22:40:1141 days ago1729377611IN
0xC30510de...7aD993567
0 ETH0.000310246.60634394
Approve209956462024-10-18 23:10:4742 days ago1729293047IN
0xC30510de...7aD993567
0 ETH0.0005596511.87198119
Approve209946782024-10-18 19:56:1142 days ago1729281371IN
0xC30510de...7aD993567
0 ETH0.0007177715.22616647
Approve209946172024-10-18 19:43:5942 days ago1729280639IN
0xC30510de...7aD993567
0 ETH0.0006838414.48799833
Approve209893002024-10-18 1:55:3543 days ago1729216535IN
0xC30510de...7aD993567
0 ETH0.0006720114.25552824
Approve209830972024-10-17 5:08:4744 days ago1729141727IN
0xC30510de...7aD993567
0 ETH0.000412018.72898424
Approve209819822024-10-17 1:24:3544 days ago1729128275IN
0xC30510de...7aD993567
0 ETH0.000370937.90278533
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
209748512024-10-16 1:30:3545 days ago1729042235
0xC30510de...7aD993567
0.1 ETH
209735222024-10-15 21:03:2345 days ago1729026203
0xC30510de...7aD993567
0.00068532 ETH
209735222024-10-15 21:03:2345 days ago1729026203
0xC30510de...7aD993567
0.01302118 ETH
209735222024-10-15 21:03:2345 days ago1729026203
0xC30510de...7aD993567
0.0137065 ETH
209735222024-10-15 21:03:2345 days ago1729026203
0xC30510de...7aD993567
0.00069832 ETH
209735222024-10-15 21:03:2345 days ago1729026203
0xC30510de...7aD993567
0.01326808 ETH
209735222024-10-15 21:03:2345 days ago1729026203
0xC30510de...7aD993567
0.0139664 ETH
209735222024-10-15 21:03:2345 days ago1729026203
0xC30510de...7aD993567
0.00071168 ETH
209735222024-10-15 21:03:2345 days ago1729026203
0xC30510de...7aD993567
0.01352208 ETH
209735222024-10-15 21:03:2345 days ago1729026203
0xC30510de...7aD993567
0.01423377 ETH
209735222024-10-15 21:03:2345 days ago1729026203
0xC30510de...7aD993567
0.00072544 ETH
209735222024-10-15 21:03:2345 days ago1729026203
0xC30510de...7aD993567
0.01378345 ETH
209735222024-10-15 21:03:2345 days ago1729026203
0xC30510de...7aD993567
0.01450889 ETH
209735222024-10-15 21:03:2345 days ago1729026203
0xC30510de...7aD993567
0.0007396 ETH
209735222024-10-15 21:03:2345 days ago1729026203
0xC30510de...7aD993567
0.01405247 ETH
209735222024-10-15 21:03:2345 days ago1729026203
0xC30510de...7aD993567
0.01479208 ETH
209735222024-10-15 21:03:2345 days ago1729026203
0xC30510de...7aD993567
0.00075418 ETH
209735222024-10-15 21:03:2345 days ago1729026203
0xC30510de...7aD993567
0.01432945 ETH
209735222024-10-15 21:03:2345 days ago1729026203
0xC30510de...7aD993567
0.01508364 ETH
209735222024-10-15 21:03:2345 days ago1729026203
0xC30510de...7aD993567
0.00076919 ETH
209735222024-10-15 21:03:2345 days ago1729026203
0xC30510de...7aD993567
0.01461471 ETH
209735222024-10-15 21:03:2345 days ago1729026203
0xC30510de...7aD993567
0.01538391 ETH
209735222024-10-15 21:03:2345 days ago1729026203
0xC30510de...7aD993567
0.00078466 ETH
209735222024-10-15 21:03:2345 days ago1729026203
0xC30510de...7aD993567
0.01490858 ETH
209735222024-10-15 21:03:2345 days ago1729026203
0xC30510de...7aD993567
0.01569324 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
WIZPEPE

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

  /*
      Website: https://www.wizardpepe.com/
    X/Twitter: https://x.com/WizardPepeErc
    Telegram: https://t.me/WizardPepeErc20

    Wizard Pepe is forming a Cult.
  */
  
  pragma solidity ^0.8.26;

  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 to, 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 from,
          address to,
          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);
  }

  interface IERC20Metadata is IERC20 {
      function name() external view returns (string memory);
      function symbol() external view returns (string memory);
      function decimals() external view returns (uint8);
  }

  contract ERC20 is Context, IERC20, IERC20Metadata {
      mapping(address => uint256) private _balances;
      mapping(address => mapping(address => uint256)) private _allowances;

      uint256 private _totalSupply;

      string private _name;
      string private _symbol;

      constructor(string memory name_, string memory symbol_) {
          _name = name_;
          _symbol = symbol_;
      }

      function name() public view virtual override returns (string memory) {
          return _name;
      }

      function symbol() public view virtual override returns (string memory) {
          return _symbol;
      }

      function decimals() public view virtual override returns (uint8) {
          return 18;
      }

      function totalSupply() public view virtual override returns (uint256) {
          return _totalSupply;
      }

      function balanceOf(address account) public view virtual override returns (uint256) {
          return _balances[account];
      }

      function transfer(address to, uint256 amount) public virtual override returns (bool) {
          address owner = _msgSender();
          _transfer(owner, to, amount);
          return true;
      }

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

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

      function transferFrom(
          address from,
          address to,
          uint256 amount
      ) public virtual override returns (bool) {
          address spender = _msgSender();
          _spendAllowance(from, spender, amount);
          _transfer(from, to, amount);
          return true;
      }

      function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
          address owner = _msgSender();
          _approve(owner, spender, _allowances[owner][spender] + addedValue);
          return true;
      }

      function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
          address owner = _msgSender();
          uint256 currentAllowance = _allowances[owner][spender];
          require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
          unchecked {
              _approve(owner, spender, currentAllowance - subtractedValue);
          }

          return true;
      }

      function _transfer(
          address from,
          address to,
          uint256 amount
      ) internal virtual {
          require(from != address(0), "ERC20: transfer from the zero address");
          require(to != address(0), "ERC20: transfer to the zero address");

          _beforeTokenTransfer(from, to, amount);

          uint256 fromBalance = _balances[from];
          require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
          unchecked {
              _balances[from] = fromBalance - amount;
          }
          _balances[to] += amount;

          emit Transfer(from, to, amount);

          _afterTokenTransfer(from, to, amount);
      }

      function _mint(address account, uint256 amount) internal virtual {
          require(account != address(0), "ERC20: mint to the zero address");

          _beforeTokenTransfer(address(0), account, amount);

          _totalSupply += amount;
          _balances[account] += amount;
          emit Transfer(address(0), account, amount);

          _afterTokenTransfer(address(0), account, amount);
      }

      function _burn(address account, uint256 amount) internal virtual {
          require(account != address(0), "ERC20: burn from the zero address");

          _beforeTokenTransfer(account, address(0), amount);

          uint256 accountBalance = _balances[account];
          require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
          unchecked {
              _balances[account] = accountBalance - amount;
          }
          _totalSupply -= amount;

          emit Transfer(account, address(0), amount);

          _afterTokenTransfer(account, address(0), amount);
      }

      function _approve(
          address owner,
          address spender,
          uint256 amount
      ) internal virtual {
          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 _spendAllowance(
          address owner,
          address spender,
          uint256 amount
      ) internal virtual {
          uint256 currentAllowance = allowance(owner, spender);
          if (currentAllowance != type(uint256).max) {
              require(currentAllowance >= amount, "ERC20: insufficient allowance");
              unchecked {
                  _approve(owner, spender, currentAllowance - amount);
              }
          }
      }

      function _beforeTokenTransfer(
          address from,
          address to,
          uint256 amount
      ) internal virtual {}

      function _afterTokenTransfer(
          address from,
          address to,
          uint256 amount
      ) internal virtual {}
  }

  abstract contract Ownable is Context {
      address private _owner;

      event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

      constructor() {
          _transferOwnership(_msgSender());
      }

      function owner() public view virtual returns (address) {
          return _owner;
      }

      modifier onlyOwner() {
          require(owner() == _msgSender(), "Ownable: caller is not the owner");
          _;
      }

      function renounceOwnership() public virtual onlyOwner {
          _transferOwnership(address(0));
      }

      function transferOwnership(address newOwner) public virtual onlyOwner {
          require(newOwner != address(0), "Ownable: new owner is the zero address");
          _transferOwnership(newOwner);
      }

      function _transferOwnership(address newOwner) internal virtual {
          address oldOwner = _owner;
          _owner = newOwner;
          emit OwnershipTransferred(oldOwner, newOwner);
      }
  }

  library SafeMath {
      function add(uint256 a, uint256 b) internal pure returns (uint256) {
          return a + b;
      }

      function sub(uint256 a, uint256 b) internal pure returns (uint256) {
          return a - b;
      }

      function mul(uint256 a, uint256 b) internal pure returns (uint256) {
          return a * b;
      }

      function div(uint256 a, uint256 b) internal pure returns (uint256) {
          return a / b;
      }

      function sub(
          uint256 a,
          uint256 b,
          string memory errorMessage
      ) internal pure returns (uint256) {
          unchecked {
              require(b <= a, errorMessage);
              return a - b;
          }
      }

      function div(
          uint256 a,
          uint256 b,
          string memory errorMessage
      ) internal pure returns (uint256) {
          unchecked {
              require(b > 0, errorMessage);
              return a / b;
          }
      }
  }

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

  interface IUniswapV2Router02 {
      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);
      function swapExactTokensForETHSupportingFeeOnTransferTokens(
          uint amountIn,
          uint amountOutMin,
          address[] calldata path,
          address to,
          uint deadline
      ) external;
  }

contract WIZPEPE is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 private constant _router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

    address public uniV2Pair;
    address public immutable feeAddress;

    uint256 public maxHoldingsLimit;
    uint256 public feeThresholdSize;

    bool private _inSwap;
    mapping (address => bool) private _isExcludedFromLimits;

    constructor() ERC20("Wizard Pepe", "WIZPEPE") payable {
        uint256 totalSupply = 420000000000 * 1e18;

        uint256 caSupply = totalSupply.mul(22).div(100);

        maxHoldingsLimit = totalSupply.mul(2).div(100);
        feeThresholdSize = totalSupply.mul(5).div(1000);

        feeAddress = 0x5aE09d9449351F7403DF16706cD12BeDE8e6e276;

        _isExcludedFromLimits[feeAddress] = true;
        _isExcludedFromLimits[msg.sender] = true;
        _isExcludedFromLimits[tx.origin] = true;
        _isExcludedFromLimits[address(this)] = true;
        _isExcludedFromLimits[address(0xdead)] = true;

        _mint(address(this), caSupply);

        _mint(tx.origin, totalSupply.sub(caSupply));

    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "Transfer from the zero address not allowed.");
        require(to != address(0), "Transfer to the zero address not allowed.");
        require(amount > 0, 'Transfer amount must be greater than zero.');

        bool excluded = _isExcludedFromLimits[from] || _isExcludedFromLimits[to];
        require(uniV2Pair != address(0) || excluded, "Liquidity pair not yet created.");

        bool isSell = to == uniV2Pair;

        if (!isSell && maxHoldingsLimit > 0 && !excluded)
            require(balanceOf(to) + amount <= maxHoldingsLimit, "Balance exceeds max holdings amount, consider using a second wallet.");

        if (
          balanceOf(address(this)) >= feeThresholdSize &&
          !_inSwap && isSell &&
          !excluded 
        ) {
            _inSwap = true;
            _swapBackTokenFee();
            _inSwap = false;
        }

        super._transfer(from, to, amount);
    }

    function _swapBackTokenFee() private {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance == 0) return;
        if (contractBalance > feeThresholdSize) contractBalance = feeThresholdSize;

        uint256 initETHBal = address(this).balance;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _router.WETH();

        _approve(address(this), address(_router), contractBalance);

        _router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractBalance,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 ethFee = address(this).balance.sub(initETHBal);
        uint256 splitFee = ethFee.mul(5).div(100);

        ethFee = ethFee.sub(splitFee);
        payable(feeAddress).transfer(ethFee);
        payable(0xA1869bA2eB2FcDF0ad724eFb69e5f971d192d16E).transfer(splitFee);

    }

    function openTrading() external onlyOwner {
        uniV2Pair = IUniswapV2Factory(_router.factory()).getPair(address(this), _router.WETH());
    }

    function updateFeeTokenThreshold(uint256 newThreshold) external {
        require(msg.sender == feeAddress || msg.sender == owner());
        require(newThreshold >= totalSupply().mul(1).div(100000), "Swap threshold cannot be lower than 0.001% total supply.");
        require(newThreshold <= totalSupply().mul(2).div(100), "Swap threshold cannot be higher than 2% total supply.");
        feeThresholdSize = newThreshold;
    }

    function disableWalletLimit() external onlyOwner {
        maxHoldingsLimit = 0;
    }

    function recoverStuckEther() external  {
        require(msg.sender == feeAddress || msg.sender == owner());
        payable(msg.sender).transfer(address(this).balance);
    }

    function recoverStuckTokens(IERC20 token) external  {
      require(msg.sender == feeAddress || msg.sender == owner());
        token.transfer(msg.sender, token.balanceOf(address(this)));
    }

    receive() external payable {}
  }

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"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":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeThresholdSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxHoldingsLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":[],"name":"recoverStuckEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"recoverStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateFeeTokenThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526040518060400160405280600b81526020017f57697a61726420506570650000000000000000000000000000000000000000008152506040518060400160405280600781526020017f57495a5045504500000000000000000000000000000000000000000000000000815250816003908161007f9190610822565b50806004908161008f9190610822565b5050506100ae6100a361037260201b60201c565b61037960201b60201c565b5f6c054d17db76321263eca000000090505f6100e760646100d960168561043c60201b90919060201c565b61045160201b90919060201c565b9050610110606461010260028561043c60201b90919060201c565b61045160201b90919060201c565b60078190555061013e6103e861013060058561043c60201b90919060201c565b61045160201b90919060201c565b600881905550735ae09d9449351f7403df16706cd12bede8e6e27673ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506001600a5f60805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610349308261046660201b60201c565b61036b3261036083856105c960201b90919060201c565b61046660201b60201c565b5050610ac2565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f8183610449919061091e565b905092915050565b5f818361045e919061098c565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036104d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104cb90610a16565b60405180910390fd5b6104e55f83836105de60201b60201c565b8060025f8282546104f69190610a34565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546105489190610a34565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105ac9190610a76565b60405180910390a36105c55f83836105e360201b60201c565b5050565b5f81836105d69190610a8f565b905092915050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061066357607f821691505b6020821081036106765761067561061f565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026106d87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261069d565b6106e2868361069d565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61072661072161071c846106fa565b610703565b6106fa565b9050919050565b5f819050919050565b61073f8361070c565b61075361074b8261072d565b8484546106a9565b825550505050565b5f90565b61076761075b565b610772818484610736565b505050565b5b818110156107955761078a5f8261075f565b600181019050610778565b5050565b601f8211156107da576107ab8161067c565b6107b48461068e565b810160208510156107c3578190505b6107d76107cf8561068e565b830182610777565b50505b505050565b5f82821c905092915050565b5f6107fa5f19846008026107df565b1980831691505092915050565b5f61081283836107eb565b9150826002028217905092915050565b61082b826105e8565b67ffffffffffffffff811115610844576108436105f2565b5b61084e825461064c565b610859828285610799565b5f60209050601f83116001811461088a575f8415610878578287015190505b6108828582610807565b8655506108e9565b601f1984166108988661067c565b5f5b828110156108bf5784890151825560018201915060208501945060208101905061089a565b868310156108dc57848901516108d8601f8916826107eb565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610928826106fa565b9150610933836106fa565b9250828202610941816106fa565b91508282048414831517610958576109576108f1565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610996826106fa565b91506109a1836106fa565b9250826109b1576109b061095f565b5b828204905092915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f610a00601f836109bc565b9150610a0b826109cc565b602082019050919050565b5f6020820190508181035f830152610a2d816109f4565b9050919050565b5f610a3e826106fa565b9150610a49836106fa565b9250828201905080821115610a6157610a606108f1565b5b92915050565b610a70816106fa565b82525050565b5f602082019050610a895f830184610a67565b92915050565b5f610a99826106fa565b9150610aa4836106fa565b9250828203905081811115610abc57610abb6108f1565b5b92915050565b608051612f1e610af65f395f81816106da015281816106fe01528181610a260152818161104b0152611b440152612f1e5ff3fe608060405260043610610143575f3560e01c8063715018a6116100b5578063a9059cbb1161006e578063a9059cbb14610434578063c9567bf914610470578063dd62ed3e14610486578063e91284d4146104c2578063f2fde38b146104ec578063f442d3fb146105145761014a565b8063715018a61461034e5780638bcea939146103645780638da5cb5b1461038e57806394e53d36146103b857806395d89b41146103ce578063a457c2d7146103f85761014a565b8063313ce56711610107578063313ce56714610244578063395093511461026e57806341275358146102aa5780634be55d1f146102d4578063697cfc19146102fc57806370a08231146103125761014a565b806306fdde031461014e578063095ea7b3146101785780630f51076f146101b457806318160ddd146101de57806323b872dd146102085761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b5061016261053c565b60405161016f9190611f0a565b60405180910390f35b348015610183575f80fd5b5061019e60048036038101906101999190611fbb565b6105cc565b6040516101ab9190612013565b60405180910390f35b3480156101bf575f80fd5b506101c86105ee565b6040516101d5919061203b565b60405180910390f35b3480156101e9575f80fd5b506101f26105f4565b6040516101ff919061203b565b60405180910390f35b348015610213575f80fd5b5061022e60048036038101906102299190612054565b6105fd565b60405161023b9190612013565b60405180910390f35b34801561024f575f80fd5b5061025861062b565b60405161026591906120bf565b60405180910390f35b348015610279575f80fd5b50610294600480360381019061028f9190611fbb565b610633565b6040516102a19190612013565b60405180910390f35b3480156102b5575f80fd5b506102be6106d8565b6040516102cb91906120e7565b60405180910390f35b3480156102df575f80fd5b506102fa60048036038101906102f5919061213b565b6106fc565b005b348015610307575f80fd5b50610310610886565b005b34801561031d575f80fd5b5061033860048036038101906103339190612166565b61090b565b604051610345919061203b565b60405180910390f35b348015610359575f80fd5b50610362610950565b005b34801561036f575f80fd5b506103786109d7565b60405161038591906120e7565b60405180910390f35b348015610399575f80fd5b506103a26109fc565b6040516103af91906120e7565b60405180910390f35b3480156103c3575f80fd5b506103cc610a24565b005b3480156103d9575f80fd5b506103e2610afe565b6040516103ef9190611f0a565b60405180910390f35b348015610403575f80fd5b5061041e60048036038101906104199190611fbb565b610b8e565b60405161042b9190612013565b60405180910390f35b34801561043f575f80fd5b5061045a60048036038101906104559190611fbb565b610c72565b6040516104679190612013565b60405180910390f35b34801561047b575f80fd5b50610484610c94565b005b348015610491575f80fd5b506104ac60048036038101906104a79190612191565b610ecb565b6040516104b9919061203b565b60405180910390f35b3480156104cd575f80fd5b506104d6610f4d565b6040516104e3919061203b565b60405180910390f35b3480156104f7575f80fd5b50610512600480360381019061050d9190612166565b610f53565b005b34801561051f575f80fd5b5061053a600480360381019061053591906121cf565b611049565b005b60606003805461054b90612227565b80601f016020809104026020016040519081016040528092919081815260200182805461057790612227565b80156105c25780601f10610599576101008083540402835291602001916105c2565b820191905f5260205f20905b8154815290600101906020018083116105a557829003601f168201915b5050505050905090565b5f806105d66111c9565b90506105e38185856111d0565b600191505092915050565b60075481565b5f600254905090565b5f806106076111c9565b9050610614858285611393565b61061f85858561141e565b60019150509392505050565b5f6012905090565b5f8061063d6111c9565b90506106cd81858560015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546106c89190612284565b6111d0565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061078857506107596109fc565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610790575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016107e691906120e7565b602060405180830381865afa158015610801573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061082591906122cb565b6040518363ffffffff1660e01b81526004016108429291906122f6565b6020604051808303815f875af115801561085e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108829190612347565b5050565b61088e6111c9565b73ffffffffffffffffffffffffffffffffffffffff166108ac6109fc565b73ffffffffffffffffffffffffffffffffffffffff1614610902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f9906123bc565b60405180910390fd5b5f600781905550565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6109586111c9565b73ffffffffffffffffffffffffffffffffffffffff166109766109fc565b73ffffffffffffffffffffffffffffffffffffffff16146109cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c3906123bc565b60405180910390fd5b6109d55f6117c8565b565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610ab05750610a816109fc565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610ab8575f80fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610afb573d5f803e3d5ffd5b50565b606060048054610b0d90612227565b80601f0160208091040260200160405190810160405280929190818152602001828054610b3990612227565b8015610b845780601f10610b5b57610100808354040283529160200191610b84565b820191905f5260205f20905b815481529060010190602001808311610b6757829003601f168201915b5050505050905090565b5f80610b986111c9565b90505f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905083811015610c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c509061244a565b60405180910390fd5b610c6682868684036111d0565b60019250505092915050565b5f80610c7c6111c9565b9050610c8981858561141e565b600191505092915050565b610c9c6111c9565b73ffffffffffffffffffffffffffffffffffffffff16610cba6109fc565b73ffffffffffffffffffffffffffffffffffffffff1614610d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d07906123bc565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d6d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d91919061247c565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e0a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e2e919061247c565b6040518363ffffffff1660e01b8152600401610e4b9291906124a7565b602060405180830381865afa158015610e66573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e8a919061247c565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085481565b610f5b6111c9565b73ffffffffffffffffffffffffffffffffffffffff16610f796109fc565b73ffffffffffffffffffffffffffffffffffffffff1614610fcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc6906123bc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361103d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110349061253e565b60405180910390fd5b611046816117c8565b50565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806110d557506110a66109fc565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6110dd575f80fd5b61110d620186a06110ff60016110f16105f4565b61188b90919063ffffffff16565b6118a090919063ffffffff16565b81101561114f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611146906125cc565b60405180910390fd5b61117d606461116f60026111616105f4565b61188b90919063ffffffff16565b6118a090919063ffffffff16565b8111156111bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b69061265a565b60405180910390fd5b8060088190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361123e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611235906126e8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a390612776565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611386919061203b565b60405180910390a3505050565b5f61139e8484610ecb565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611418578181101561140a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611401906127de565b60405180910390fd5b61141784848484036111d0565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361148c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114839061286c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f1906128fa565b60405180910390fd5b5f811161153c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153390612988565b60405180910390fd5b5f600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806115d85750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b90505f73ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415806116335750805b611672576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611669906129f0565b60405180910390fd5b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16149050801580156116d457505f600754115b80156116de575081155b1561173c57600754836116f08661090b565b6116fa9190612284565b111561173b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173290612aa4565b60405180910390fd5b5b6008546117483061090b565b10158015611762575060095f9054906101000a900460ff16155b801561176b5750805b8015611775575081155b156117b657600160095f6101000a81548160ff02191690831515021790555061179c6118b5565b5f60095f6101000a81548160ff0219169083151502179055505b6117c1858585611c06565b5050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81836118989190612ac2565b905092915050565b5f81836118ad9190612b30565b905092915050565b5f6118bf3061090b565b90505f81036118ce5750611c04565b6008548111156118de5760085490505b5f4790505f600267ffffffffffffffff8111156118fe576118fd612b60565b5b60405190808252806020026020018201604052801561192c5781602001602082028036833780820191505090505b50905030815f8151811061194357611942612b8d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119fe919061247c565b81600181518110611a1257611a11612b8d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611a6b30737a250d5630b4cf539739df2c5dacb4c659f2488d856111d0565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b8152600401611ac0959493929190612cb3565b5f604051808303815f87803b158015611ad7575f80fd5b505af1158015611ae9573d5f803e3d5ffd5b505050505f611b018347611e7b90919063ffffffff16565b90505f611b2b6064611b1d60058561188b90919063ffffffff16565b6118a090919063ffffffff16565b9050611b408183611e7b90919063ffffffff16565b91507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015611ba5573d5f803e3d5ffd5b5073a1869ba2eb2fcdf0ad724efb69e5f971d192d16e73ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611bfd573d5f803e3d5ffd5b5050505050505b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6b90612d7b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ce2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd990612e09565b60405180910390fd5b611ced838383611e90565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611d70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6790612e97565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611dfe9190612284565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e62919061203b565b60405180910390a3611e75848484611e95565b50505050565b5f8183611e889190612eb5565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611edc82611e9a565b611ee68185611ea4565b9350611ef6818560208601611eb4565b611eff81611ec2565b840191505092915050565b5f6020820190508181035f830152611f228184611ed2565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611f5782611f2e565b9050919050565b611f6781611f4d565b8114611f71575f80fd5b50565b5f81359050611f8281611f5e565b92915050565b5f819050919050565b611f9a81611f88565b8114611fa4575f80fd5b50565b5f81359050611fb581611f91565b92915050565b5f8060408385031215611fd157611fd0611f2a565b5b5f611fde85828601611f74565b9250506020611fef85828601611fa7565b9150509250929050565b5f8115159050919050565b61200d81611ff9565b82525050565b5f6020820190506120265f830184612004565b92915050565b61203581611f88565b82525050565b5f60208201905061204e5f83018461202c565b92915050565b5f805f6060848603121561206b5761206a611f2a565b5b5f61207886828701611f74565b935050602061208986828701611f74565b925050604061209a86828701611fa7565b9150509250925092565b5f60ff82169050919050565b6120b9816120a4565b82525050565b5f6020820190506120d25f8301846120b0565b92915050565b6120e181611f4d565b82525050565b5f6020820190506120fa5f8301846120d8565b92915050565b5f61210a82611f4d565b9050919050565b61211a81612100565b8114612124575f80fd5b50565b5f8135905061213581612111565b92915050565b5f602082840312156121505761214f611f2a565b5b5f61215d84828501612127565b91505092915050565b5f6020828403121561217b5761217a611f2a565b5b5f61218884828501611f74565b91505092915050565b5f80604083850312156121a7576121a6611f2a565b5b5f6121b485828601611f74565b92505060206121c585828601611f74565b9150509250929050565b5f602082840312156121e4576121e3611f2a565b5b5f6121f184828501611fa7565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061223e57607f821691505b602082108103612251576122506121fa565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61228e82611f88565b915061229983611f88565b92508282019050808211156122b1576122b0612257565b5b92915050565b5f815190506122c581611f91565b92915050565b5f602082840312156122e0576122df611f2a565b5b5f6122ed848285016122b7565b91505092915050565b5f6040820190506123095f8301856120d8565b612316602083018461202c565b9392505050565b61232681611ff9565b8114612330575f80fd5b50565b5f815190506123418161231d565b92915050565b5f6020828403121561235c5761235b611f2a565b5b5f61236984828501612333565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6123a6602083611ea4565b91506123b182612372565b602082019050919050565b5f6020820190508181035f8301526123d38161239a565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612434602583611ea4565b915061243f826123da565b604082019050919050565b5f6020820190508181035f83015261246181612428565b9050919050565b5f8151905061247681611f5e565b92915050565b5f6020828403121561249157612490611f2a565b5b5f61249e84828501612468565b91505092915050565b5f6040820190506124ba5f8301856120d8565b6124c760208301846120d8565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612528602683611ea4565b9150612533826124ce565b604082019050919050565b5f6020820190508181035f8301526125558161251c565b9050919050565b7f53776170207468726573686f6c642063616e6e6f74206265206c6f77657220745f8201527f68616e20302e3030312520746f74616c20737570706c792e0000000000000000602082015250565b5f6125b6603883611ea4565b91506125c18261255c565b604082019050919050565b5f6020820190508181035f8301526125e3816125aa565b9050919050565b7f53776170207468726573686f6c642063616e6e6f7420626520686967686572205f8201527f7468616e20322520746f74616c20737570706c792e0000000000000000000000602082015250565b5f612644603583611ea4565b915061264f826125ea565b604082019050919050565b5f6020820190508181035f83015261267181612638565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6126d2602483611ea4565b91506126dd82612678565b604082019050919050565b5f6020820190508181035f8301526126ff816126c6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612760602283611ea4565b915061276b82612706565b604082019050919050565b5f6020820190508181035f83015261278d81612754565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f6127c8601d83611ea4565b91506127d382612794565b602082019050919050565b5f6020820190508181035f8301526127f5816127bc565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f2061646472657373206e5f8201527f6f7420616c6c6f7765642e000000000000000000000000000000000000000000602082015250565b5f612856602b83611ea4565b9150612861826127fc565b604082019050919050565b5f6020820190508181035f8301526128838161284a565b9050919050565b7f5472616e7366657220746f20746865207a65726f2061646472657373206e6f745f8201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000602082015250565b5f6128e4602983611ea4565b91506128ef8261288a565b604082019050919050565b5f6020820190508181035f830152612911816128d8565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f2e00000000000000000000000000000000000000000000602082015250565b5f612972602a83611ea4565b915061297d82612918565b604082019050919050565b5f6020820190508181035f83015261299f81612966565b9050919050565b7f4c69717569646974792070616972206e6f742079657420637265617465642e005f82015250565b5f6129da601f83611ea4565b91506129e5826129a6565b602082019050919050565b5f6020820190508181035f830152612a07816129ce565b9050919050565b7f42616c616e63652065786365656473206d617820686f6c64696e677320616d6f5f8201527f756e742c20636f6e7369646572207573696e672061207365636f6e642077616c60208201527f6c65742e00000000000000000000000000000000000000000000000000000000604082015250565b5f612a8e604483611ea4565b9150612a9982612a0e565b606082019050919050565b5f6020820190508181035f830152612abb81612a82565b9050919050565b5f612acc82611f88565b9150612ad783611f88565b9250828202612ae581611f88565b91508282048414831517612afc57612afb612257565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612b3a82611f88565b9150612b4583611f88565b925082612b5557612b54612b03565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f819050919050565b5f612be6612be1612bdc84612bba565b612bc3565b611f88565b9050919050565b612bf681612bcc565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612c2e81611f4d565b82525050565b5f612c3f8383612c25565b60208301905092915050565b5f602082019050919050565b5f612c6182612bfc565b612c6b8185612c06565b9350612c7683612c16565b805f5b83811015612ca6578151612c8d8882612c34565b9750612c9883612c4b565b925050600181019050612c79565b5085935050505092915050565b5f60a082019050612cc65f83018861202c565b612cd36020830187612bed565b8181036040830152612ce58186612c57565b9050612cf460608301856120d8565b612d01608083018461202c565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612d65602583611ea4565b9150612d7082612d0b565b604082019050919050565b5f6020820190508181035f830152612d9281612d59565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612df3602383611ea4565b9150612dfe82612d99565b604082019050919050565b5f6020820190508181035f830152612e2081612de7565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f612e81602683611ea4565b9150612e8c82612e27565b604082019050919050565b5f6020820190508181035f830152612eae81612e75565b9050919050565b5f612ebf82611f88565b9150612eca83611f88565b9250828203905081811115612ee257612ee1612257565b5b9291505056fea2646970667358221220f06e88697654c3084cc11ca34dacd1c28c6f096394fff4c17619cdb98135450764736f6c634300081a0033

Deployed Bytecode

0x608060405260043610610143575f3560e01c8063715018a6116100b5578063a9059cbb1161006e578063a9059cbb14610434578063c9567bf914610470578063dd62ed3e14610486578063e91284d4146104c2578063f2fde38b146104ec578063f442d3fb146105145761014a565b8063715018a61461034e5780638bcea939146103645780638da5cb5b1461038e57806394e53d36146103b857806395d89b41146103ce578063a457c2d7146103f85761014a565b8063313ce56711610107578063313ce56714610244578063395093511461026e57806341275358146102aa5780634be55d1f146102d4578063697cfc19146102fc57806370a08231146103125761014a565b806306fdde031461014e578063095ea7b3146101785780630f51076f146101b457806318160ddd146101de57806323b872dd146102085761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b5061016261053c565b60405161016f9190611f0a565b60405180910390f35b348015610183575f80fd5b5061019e60048036038101906101999190611fbb565b6105cc565b6040516101ab9190612013565b60405180910390f35b3480156101bf575f80fd5b506101c86105ee565b6040516101d5919061203b565b60405180910390f35b3480156101e9575f80fd5b506101f26105f4565b6040516101ff919061203b565b60405180910390f35b348015610213575f80fd5b5061022e60048036038101906102299190612054565b6105fd565b60405161023b9190612013565b60405180910390f35b34801561024f575f80fd5b5061025861062b565b60405161026591906120bf565b60405180910390f35b348015610279575f80fd5b50610294600480360381019061028f9190611fbb565b610633565b6040516102a19190612013565b60405180910390f35b3480156102b5575f80fd5b506102be6106d8565b6040516102cb91906120e7565b60405180910390f35b3480156102df575f80fd5b506102fa60048036038101906102f5919061213b565b6106fc565b005b348015610307575f80fd5b50610310610886565b005b34801561031d575f80fd5b5061033860048036038101906103339190612166565b61090b565b604051610345919061203b565b60405180910390f35b348015610359575f80fd5b50610362610950565b005b34801561036f575f80fd5b506103786109d7565b60405161038591906120e7565b60405180910390f35b348015610399575f80fd5b506103a26109fc565b6040516103af91906120e7565b60405180910390f35b3480156103c3575f80fd5b506103cc610a24565b005b3480156103d9575f80fd5b506103e2610afe565b6040516103ef9190611f0a565b60405180910390f35b348015610403575f80fd5b5061041e60048036038101906104199190611fbb565b610b8e565b60405161042b9190612013565b60405180910390f35b34801561043f575f80fd5b5061045a60048036038101906104559190611fbb565b610c72565b6040516104679190612013565b60405180910390f35b34801561047b575f80fd5b50610484610c94565b005b348015610491575f80fd5b506104ac60048036038101906104a79190612191565b610ecb565b6040516104b9919061203b565b60405180910390f35b3480156104cd575f80fd5b506104d6610f4d565b6040516104e3919061203b565b60405180910390f35b3480156104f7575f80fd5b50610512600480360381019061050d9190612166565b610f53565b005b34801561051f575f80fd5b5061053a600480360381019061053591906121cf565b611049565b005b60606003805461054b90612227565b80601f016020809104026020016040519081016040528092919081815260200182805461057790612227565b80156105c25780601f10610599576101008083540402835291602001916105c2565b820191905f5260205f20905b8154815290600101906020018083116105a557829003601f168201915b5050505050905090565b5f806105d66111c9565b90506105e38185856111d0565b600191505092915050565b60075481565b5f600254905090565b5f806106076111c9565b9050610614858285611393565b61061f85858561141e565b60019150509392505050565b5f6012905090565b5f8061063d6111c9565b90506106cd81858560015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546106c89190612284565b6111d0565b600191505092915050565b7f0000000000000000000000005ae09d9449351f7403df16706cd12bede8e6e27681565b7f0000000000000000000000005ae09d9449351f7403df16706cd12bede8e6e27673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061078857506107596109fc565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610790575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016107e691906120e7565b602060405180830381865afa158015610801573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061082591906122cb565b6040518363ffffffff1660e01b81526004016108429291906122f6565b6020604051808303815f875af115801561085e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108829190612347565b5050565b61088e6111c9565b73ffffffffffffffffffffffffffffffffffffffff166108ac6109fc565b73ffffffffffffffffffffffffffffffffffffffff1614610902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f9906123bc565b60405180910390fd5b5f600781905550565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6109586111c9565b73ffffffffffffffffffffffffffffffffffffffff166109766109fc565b73ffffffffffffffffffffffffffffffffffffffff16146109cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c3906123bc565b60405180910390fd5b6109d55f6117c8565b565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f0000000000000000000000005ae09d9449351f7403df16706cd12bede8e6e27673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610ab05750610a816109fc565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610ab8575f80fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610afb573d5f803e3d5ffd5b50565b606060048054610b0d90612227565b80601f0160208091040260200160405190810160405280929190818152602001828054610b3990612227565b8015610b845780601f10610b5b57610100808354040283529160200191610b84565b820191905f5260205f20905b815481529060010190602001808311610b6757829003601f168201915b5050505050905090565b5f80610b986111c9565b90505f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905083811015610c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c509061244a565b60405180910390fd5b610c6682868684036111d0565b60019250505092915050565b5f80610c7c6111c9565b9050610c8981858561141e565b600191505092915050565b610c9c6111c9565b73ffffffffffffffffffffffffffffffffffffffff16610cba6109fc565b73ffffffffffffffffffffffffffffffffffffffff1614610d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d07906123bc565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d6d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d91919061247c565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e0a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e2e919061247c565b6040518363ffffffff1660e01b8152600401610e4b9291906124a7565b602060405180830381865afa158015610e66573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e8a919061247c565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085481565b610f5b6111c9565b73ffffffffffffffffffffffffffffffffffffffff16610f796109fc565b73ffffffffffffffffffffffffffffffffffffffff1614610fcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc6906123bc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361103d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110349061253e565b60405180910390fd5b611046816117c8565b50565b7f0000000000000000000000005ae09d9449351f7403df16706cd12bede8e6e27673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806110d557506110a66109fc565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6110dd575f80fd5b61110d620186a06110ff60016110f16105f4565b61188b90919063ffffffff16565b6118a090919063ffffffff16565b81101561114f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611146906125cc565b60405180910390fd5b61117d606461116f60026111616105f4565b61188b90919063ffffffff16565b6118a090919063ffffffff16565b8111156111bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b69061265a565b60405180910390fd5b8060088190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361123e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611235906126e8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a390612776565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611386919061203b565b60405180910390a3505050565b5f61139e8484610ecb565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611418578181101561140a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611401906127de565b60405180910390fd5b61141784848484036111d0565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361148c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114839061286c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f1906128fa565b60405180910390fd5b5f811161153c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153390612988565b60405180910390fd5b5f600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806115d85750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b90505f73ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415806116335750805b611672576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611669906129f0565b60405180910390fd5b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16149050801580156116d457505f600754115b80156116de575081155b1561173c57600754836116f08661090b565b6116fa9190612284565b111561173b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173290612aa4565b60405180910390fd5b5b6008546117483061090b565b10158015611762575060095f9054906101000a900460ff16155b801561176b5750805b8015611775575081155b156117b657600160095f6101000a81548160ff02191690831515021790555061179c6118b5565b5f60095f6101000a81548160ff0219169083151502179055505b6117c1858585611c06565b5050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81836118989190612ac2565b905092915050565b5f81836118ad9190612b30565b905092915050565b5f6118bf3061090b565b90505f81036118ce5750611c04565b6008548111156118de5760085490505b5f4790505f600267ffffffffffffffff8111156118fe576118fd612b60565b5b60405190808252806020026020018201604052801561192c5781602001602082028036833780820191505090505b50905030815f8151811061194357611942612b8d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119fe919061247c565b81600181518110611a1257611a11612b8d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611a6b30737a250d5630b4cf539739df2c5dacb4c659f2488d856111d0565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b8152600401611ac0959493929190612cb3565b5f604051808303815f87803b158015611ad7575f80fd5b505af1158015611ae9573d5f803e3d5ffd5b505050505f611b018347611e7b90919063ffffffff16565b90505f611b2b6064611b1d60058561188b90919063ffffffff16565b6118a090919063ffffffff16565b9050611b408183611e7b90919063ffffffff16565b91507f0000000000000000000000005ae09d9449351f7403df16706cd12bede8e6e27673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015611ba5573d5f803e3d5ffd5b5073a1869ba2eb2fcdf0ad724efb69e5f971d192d16e73ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611bfd573d5f803e3d5ffd5b5050505050505b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6b90612d7b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ce2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd990612e09565b60405180910390fd5b611ced838383611e90565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611d70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6790612e97565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611dfe9190612284565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e62919061203b565b60405180910390a3611e75848484611e95565b50505050565b5f8183611e889190612eb5565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611edc82611e9a565b611ee68185611ea4565b9350611ef6818560208601611eb4565b611eff81611ec2565b840191505092915050565b5f6020820190508181035f830152611f228184611ed2565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611f5782611f2e565b9050919050565b611f6781611f4d565b8114611f71575f80fd5b50565b5f81359050611f8281611f5e565b92915050565b5f819050919050565b611f9a81611f88565b8114611fa4575f80fd5b50565b5f81359050611fb581611f91565b92915050565b5f8060408385031215611fd157611fd0611f2a565b5b5f611fde85828601611f74565b9250506020611fef85828601611fa7565b9150509250929050565b5f8115159050919050565b61200d81611ff9565b82525050565b5f6020820190506120265f830184612004565b92915050565b61203581611f88565b82525050565b5f60208201905061204e5f83018461202c565b92915050565b5f805f6060848603121561206b5761206a611f2a565b5b5f61207886828701611f74565b935050602061208986828701611f74565b925050604061209a86828701611fa7565b9150509250925092565b5f60ff82169050919050565b6120b9816120a4565b82525050565b5f6020820190506120d25f8301846120b0565b92915050565b6120e181611f4d565b82525050565b5f6020820190506120fa5f8301846120d8565b92915050565b5f61210a82611f4d565b9050919050565b61211a81612100565b8114612124575f80fd5b50565b5f8135905061213581612111565b92915050565b5f602082840312156121505761214f611f2a565b5b5f61215d84828501612127565b91505092915050565b5f6020828403121561217b5761217a611f2a565b5b5f61218884828501611f74565b91505092915050565b5f80604083850312156121a7576121a6611f2a565b5b5f6121b485828601611f74565b92505060206121c585828601611f74565b9150509250929050565b5f602082840312156121e4576121e3611f2a565b5b5f6121f184828501611fa7565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061223e57607f821691505b602082108103612251576122506121fa565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61228e82611f88565b915061229983611f88565b92508282019050808211156122b1576122b0612257565b5b92915050565b5f815190506122c581611f91565b92915050565b5f602082840312156122e0576122df611f2a565b5b5f6122ed848285016122b7565b91505092915050565b5f6040820190506123095f8301856120d8565b612316602083018461202c565b9392505050565b61232681611ff9565b8114612330575f80fd5b50565b5f815190506123418161231d565b92915050565b5f6020828403121561235c5761235b611f2a565b5b5f61236984828501612333565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6123a6602083611ea4565b91506123b182612372565b602082019050919050565b5f6020820190508181035f8301526123d38161239a565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612434602583611ea4565b915061243f826123da565b604082019050919050565b5f6020820190508181035f83015261246181612428565b9050919050565b5f8151905061247681611f5e565b92915050565b5f6020828403121561249157612490611f2a565b5b5f61249e84828501612468565b91505092915050565b5f6040820190506124ba5f8301856120d8565b6124c760208301846120d8565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612528602683611ea4565b9150612533826124ce565b604082019050919050565b5f6020820190508181035f8301526125558161251c565b9050919050565b7f53776170207468726573686f6c642063616e6e6f74206265206c6f77657220745f8201527f68616e20302e3030312520746f74616c20737570706c792e0000000000000000602082015250565b5f6125b6603883611ea4565b91506125c18261255c565b604082019050919050565b5f6020820190508181035f8301526125e3816125aa565b9050919050565b7f53776170207468726573686f6c642063616e6e6f7420626520686967686572205f8201527f7468616e20322520746f74616c20737570706c792e0000000000000000000000602082015250565b5f612644603583611ea4565b915061264f826125ea565b604082019050919050565b5f6020820190508181035f83015261267181612638565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6126d2602483611ea4565b91506126dd82612678565b604082019050919050565b5f6020820190508181035f8301526126ff816126c6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612760602283611ea4565b915061276b82612706565b604082019050919050565b5f6020820190508181035f83015261278d81612754565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f6127c8601d83611ea4565b91506127d382612794565b602082019050919050565b5f6020820190508181035f8301526127f5816127bc565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f2061646472657373206e5f8201527f6f7420616c6c6f7765642e000000000000000000000000000000000000000000602082015250565b5f612856602b83611ea4565b9150612861826127fc565b604082019050919050565b5f6020820190508181035f8301526128838161284a565b9050919050565b7f5472616e7366657220746f20746865207a65726f2061646472657373206e6f745f8201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000602082015250565b5f6128e4602983611ea4565b91506128ef8261288a565b604082019050919050565b5f6020820190508181035f830152612911816128d8565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f2e00000000000000000000000000000000000000000000602082015250565b5f612972602a83611ea4565b915061297d82612918565b604082019050919050565b5f6020820190508181035f83015261299f81612966565b9050919050565b7f4c69717569646974792070616972206e6f742079657420637265617465642e005f82015250565b5f6129da601f83611ea4565b91506129e5826129a6565b602082019050919050565b5f6020820190508181035f830152612a07816129ce565b9050919050565b7f42616c616e63652065786365656473206d617820686f6c64696e677320616d6f5f8201527f756e742c20636f6e7369646572207573696e672061207365636f6e642077616c60208201527f6c65742e00000000000000000000000000000000000000000000000000000000604082015250565b5f612a8e604483611ea4565b9150612a9982612a0e565b606082019050919050565b5f6020820190508181035f830152612abb81612a82565b9050919050565b5f612acc82611f88565b9150612ad783611f88565b9250828202612ae581611f88565b91508282048414831517612afc57612afb612257565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612b3a82611f88565b9150612b4583611f88565b925082612b5557612b54612b03565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f819050919050565b5f612be6612be1612bdc84612bba565b612bc3565b611f88565b9050919050565b612bf681612bcc565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612c2e81611f4d565b82525050565b5f612c3f8383612c25565b60208301905092915050565b5f602082019050919050565b5f612c6182612bfc565b612c6b8185612c06565b9350612c7683612c16565b805f5b83811015612ca6578151612c8d8882612c34565b9750612c9883612c4b565b925050600181019050612c79565b5085935050505092915050565b5f60a082019050612cc65f83018861202c565b612cd36020830187612bed565b8181036040830152612ce58186612c57565b9050612cf460608301856120d8565b612d01608083018461202c565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612d65602583611ea4565b9150612d7082612d0b565b604082019050919050565b5f6020820190508181035f830152612d9281612d59565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612df3602383611ea4565b9150612dfe82612d99565b604082019050919050565b5f6020820190508181035f830152612e2081612de7565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f612e81602683611ea4565b9150612e8c82612e27565b604082019050919050565b5f6020820190508181035f830152612eae81612e75565b9050919050565b5f612ebf82611f88565b9150612eca83611f88565b9250828203905081811115612ee257612ee1612257565b5b9291505056fea2646970667358221220f06e88697654c3084cc11ca34dacd1c28c6f096394fff4c17619cdb98135450764736f6c634300081a0033

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.