ETH Price: $2,980.86 (+1.18%)
Gas: 30 Gwei

Token

MetaCode Platform (MTCC)
 

Overview

Max Total Supply

49,757,471 MTCC

Holders

49

Total Transfers

-

Market

Fully Diluted Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
MetaCode

Compiler Version
v0.5.6+commit.b259423e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

pragma solidity 0.5.6;

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
  address public owner;
  address public delegate;

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

  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  constructor() public {
    owner = msg.sender;
    emit OwnershipTransferred(address(0), owner);
  }

  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(msg.sender == owner, "You must be owner.");
    _;
  }

  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to.
   */
  function transferOwnership(address newOwner) public onlyOwner {
    require(newOwner != address(0), "Invalid new owner address.");
    delegate = newOwner;
  }

  function confirmChangeOwnership() public {
    require(msg.sender == delegate, "You must be delegate.");
    emit OwnershipTransferred(owner, delegate);
    owner = delegate;
    delegate = address(0);
  }
}






/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    require(c / a == b, "Multiplying uint256 overflow.");
    return c;
  }

  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b != 0, "Dividing by zero is not allowed.");
    uint256 c = a / b;
    return c;
  }

  /**
  * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b <= a, "Negative uint256 is now allowed.");
    return a - b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    require(c >= a, "Adding uint256 overflow.");
    return c;
  }
}







contract TransferFilter is Ownable {
  bool public isTransferable;
  mapping( address => bool ) internal mapAddressPass;
  mapping( address => bool ) internal mapAddressBlock;

  event LogSetTransferable(bool transferable);
  event LogFilterPass(address indexed target, bool status);
  event LogFilterBlock(address indexed target, bool status);

  // if Token transfer
  modifier checkTokenTransfer(address source) {
      if (isTransferable) {
          require(!mapAddressBlock[source], "Source address is in block filter.");
      }
      else {
          require(mapAddressPass[source], "Source address must be in pass filter.");
      }
      _;
  }

  constructor() public {
      isTransferable = true;
  }

  function setTransferable(bool transferable) external onlyOwner {
      isTransferable = transferable;
      emit LogSetTransferable(transferable);
  }

  function isInPassFilter(address user) external view returns (bool) {
    return mapAddressPass[user];
  }

  function isInBlockFilter(address user) external view returns (bool) {
    return mapAddressBlock[user];
  }

  function addressToPass(address[] calldata target, bool status)
  external
  onlyOwner
  {
    for( uint i = 0 ; i < target.length ; i++ ) {
        address targetAddress = target[i];
        bool old = mapAddressPass[targetAddress];
        if (old != status) {
            if (status) {
                mapAddressPass[targetAddress] = true;
                emit LogFilterPass(targetAddress, true);
            }
            else {
                delete mapAddressPass[targetAddress];
                emit LogFilterPass(targetAddress, false);
            }
        }
    }
  }

  function addressToBlock(address[] calldata target, bool status)
  external
  onlyOwner
  {
      for( uint i = 0 ; i < target.length ; i++ ) {
          address targetAddress = target[i];
          bool old = mapAddressBlock[targetAddress];
          if (old != status) {
              if (status) {
                  mapAddressBlock[targetAddress] = true;
                  emit LogFilterBlock(targetAddress, true);
              }
              else {
                  delete mapAddressBlock[targetAddress];
                  emit LogFilterBlock(targetAddress, false);
              }
          }
      }
  }
}


/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 {
  uint256 public totalSupply;
  function balanceOf(address who) public view returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
  function allowance(address owner, address spender) public view returns (uint256);
  function transferFrom(address from, address to, uint256 value) public returns (bool);
  function approve(address spender, uint256 value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}


/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * @dev https://github.com/ethereum/EIPs/issues/20
 * @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
 */
contract StandardToken is ERC20, TransferFilter {
  using SafeMath for uint256;

  mapping(address => uint256) internal balances;

  mapping (address => mapping (address => uint256)) internal allowed;

  modifier onlyPayloadSize(uint8 param) {
    // Check payload size to prevent short address attack.
    // Payload size must be longer than sum of methodID length and size of parameters.
    require(msg.data.length >= param * 32 + 4);
    _;
  }

  /**
  * @dev transfer token for a specified address
  * @param _to The address to transfer to.
  * @param _value The amount to be transferred.
  */
  function transfer(address _to, uint256 _value)
  onlyPayloadSize(2) // number of parameters
  checkTokenTransfer(msg.sender)
  public returns (bool) {
    require(_to != address(0), "Invalid destination address.");

    // SafeMath.sub will throw if there is not enough balance.
    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    emit Transfer(msg.sender, _to, _value);
    return true;
  }

  /**
  * @dev Gets the balance of the specified address.
  * @param _owner The address to query the the balance of.
  * @return An uint256 representing the amount owned by the passed address.
  */
  function balanceOf(address _owner) public view returns (uint256 balance) {
    return balances[_owner];
  }

  /**
   * @dev Transfer tokens from one address to another
   * @param _from address The address which you want to send tokens from
   * @param _to address The address which you want to transfer to
   * @param _value uint256 the amount of tokens to be transferred
   */
  function transferFrom(address _from, address _to, uint256 _value)
  onlyPayloadSize(3) // number of parameters
  checkTokenTransfer(_from)
  public returns (bool) {
    require(_from != address(0), "Invalid source address.");
    require(_to != address(0), "Invalid destination address.");

    balances[_from] = balances[_from].sub(_value);
    balances[_to] = balances[_to].add(_value);
    uint256 _allowedValue = allowed[_from][msg.sender].sub(_value);
    allowed[_from][msg.sender] = _allowedValue;
    emit Transfer(_from, _to, _value);
    emit Approval(_from, msg.sender, _allowedValue);
    return true;
  }

  function approve(address _spender, uint256 _value)
  onlyPayloadSize(2) // number of parameters
  checkTokenTransfer(msg.sender)
  public returns (bool) {
    require(_spender != address(0), "Invalid spender address.");

    // To change the approve amount you first have to reduce the addresses`
    //  allowance to zero by calling `approve(_spender,0)` if it is not
    //  already 0 to mitigate the race condition described here:
    //  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
    require((_value == 0) || (allowed[msg.sender][_spender] == 0), "Already approved.");

    allowed[msg.sender][_spender] = _value;
    emit Approval(msg.sender, _spender, _value);
    return true;
  }

  /**
   * @dev Function to check the amount of tokens that an owner allowed to a spender.
   * @param _owner address The address which owns the funds.
   * @param _spender address The address which will spend the funds.
   * @return A uint256 specifying the amount of tokens still available for the spender.
   */
  function allowance(address _owner, address _spender) public view returns (uint256) {
    return allowed[_owner][_spender];
  }
}

/**
 * @title Mintable token
 * @dev Simple ERC20 Token example, with mintable token creation
 * @dev Issue: * https://github.com/OpenZeppelin/zeppelin-solidity/issues/120
 * Based on code by TokenMarketNet: https://github.com/TokenMarketNet/ico/blob/master/contracts/MintableToken.sol
 */

contract MintableToken is StandardToken {
  event MinterTransferred(address indexed previousMinter, address indexed newMinter);
  event Mint(address indexed to, uint256 amount);
  event MintFinished();
  event Burn(address indexed from, uint256 value);

  bool public mintingFinished = false;
  address public minter;

  constructor() public {
    minter = msg.sender;
    emit MinterTransferred(address(0), minter);
  }

  modifier canMint() {
    require(!mintingFinished, "Minting is already finished.");
    _;
  }

  modifier hasPermission() {
    require(msg.sender == owner || msg.sender == minter, "You must be either owner or minter.");
    _;
  }

  /**
   * @dev Function to mint tokens
   * @param _to The address that will receive the minted tokens.
   * @param _amount The amount of tokens to mint.
   * @return A boolean that indicates if the operation was successful.
   */
  function mint(address _to, uint256 _amount) canMint hasPermission external returns (bool) {
    require(_to != address(0), "Invalid destination address.");

    totalSupply = totalSupply.add(_amount);
    balances[_to] = balances[_to].add(_amount);
    emit Mint(_to, _amount);
    emit Transfer(address(0), _to, _amount);
    return true;
  }

  /**
   * @dev Function to stop minting new tokens.
   * @return True if the operation was successful.
   */
  function finishMinting() canMint onlyOwner external returns (bool) {
    mintingFinished = true;
    emit MintFinished();
    return true;
  }

  function transferMinter(address newMinter) public onlyOwner {
    require(newMinter != address(0), "Invalid new minter address.");
    address prevMinter = minter;
    minter = newMinter;
    emit MinterTransferred(prevMinter, minter);
  }

  function burn(address _from, uint256 _amount) external hasPermission {
    require(_from != address(0), "Invalid source address.");

    balances[_from] = balances[_from].sub(_amount);
    totalSupply = totalSupply.sub(_amount);
    emit Transfer(_from, address(0), _amount);
    emit Burn(_from, _amount);
  }

  function recoverErc20(address tokenAddress, uint256 tokenAmount, address recipient) public onlyOwner {
    ERC20(tokenAddress).transfer(recipient, tokenAmount);
  }
}


contract MetaCode is MintableToken {
  string public constant name = "MetaCode Platform"; // solium-disable-line uppercase
  string public constant symbol = "MTCC"; // solium-disable-line uppercase
  uint8 public constant decimals = 18; // solium-disable-line uppercase
  /**
   * @dev Constructor that initialize token.
   */
  constructor() public {
    //totalSupply = 0;
  }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"mintingFinished","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minter","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isTransferable","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"isInPassFilter","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finishMinting","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"tokenAmount","type":"uint256"},{"name":"recipient","type":"address"}],"name":"recoverErc20","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address[]"},{"name":"status","type":"bool"}],"name":"addressToBlock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"transferable","type":"bool"}],"name":"setTransferable","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"isInBlockFilter","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address[]"},{"name":"status","type":"bool"}],"name":"addressToPass","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"delegate","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"confirmChangeOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newMinter","type":"address"}],"name":"transferMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousMinter","type":"address"},{"indexed":true,"name":"newMinter","type":"address"}],"name":"MinterTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[],"name":"MintFinished","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"transferable","type":"bool"}],"name":"LogSetTransferable","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"target","type":"address"},{"indexed":false,"name":"status","type":"bool"}],"name":"LogFilterPass","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"target","type":"address"},{"indexed":false,"name":"status","type":"bool"}],"name":"LogFilterBlock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]

60806040526000600760006101000a81548160ff02191690831515021790555034801561002b57600080fd5b5033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36001600260146101000a81548160ff02191690831515021790555033600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f02ad39e5173f89bdd5497202bd74024b5da045106c3163ddb078d2e89ff6d6de60405160405180910390a3613234806101d26000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c80638da5cb5b116100de578063afbdaa0511610097578063dd62ed3e11610071578063dd62ed3e146108dd578063e602af0614610955578063f2fde38b1461095f578063fe99ad5a146109a35761018e565b8063afbdaa05146107b2578063b57874ce1461080e578063c89e4361146108935761018e565b80638da5cb5b1461057c57806394b44f3e146105c657806395d89b411461064b5780639cd23707146106ce5780639dc29fac146106fe578063a9059cbb1461074c5761018e565b806323b872dd1161014b578063483b1a7611610125578063483b1a761461043857806370a08231146104945780637d64bcb4146104ec578063819bea4b1461050e5761018e565b806323b872dd14610328578063313ce567146103ae57806340c10f19146103d25761018e565b806305d2035b1461019357806306fdde03146101b55780630754617214610238578063095ea7b31461028257806318160ddd146102e85780632121dc7514610306575b600080fd5b61019b6109e7565b604051808215151515815260200191505060405180910390f35b6101bd6109fa565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101fd5780820151818401526020810190506101e2565b50505050905090810190601f16801561022a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610240610a33565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ce6004803603604081101561029857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a59565b604051808215151515815260200191505060405180910390f35b6102f0610e6a565b6040518082815260200191505060405180910390f35b61030e610e70565b604051808215151515815260200191505060405180910390f35b6103946004803603606081101561033e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e83565b604051808215151515815260200191505060405180910390f35b6103b661145e565b604051808260ff1660ff16815260200191505060405180910390f35b61041e600480360360408110156103e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611463565b604051808215151515815260200191505060405180910390f35b61047a6004803603602081101561044e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117f7565b604051808215151515815260200191505060405180910390f35b6104d6600480360360208110156104aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061184d565b6040518082815260200191505060405180910390f35b6104f4611896565b604051808215151515815260200191505060405180910390f35b61057a6004803603606081101561052457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a2c565b005b610584611bb7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610649600480360360408110156105dc57600080fd5b81019080803590602001906401000000008111156105f957600080fd5b82018360208201111561060b57600080fd5b8035906020019184602083028401116401000000008311171561062d57600080fd5b9091929391929390803515159060200190929190505050611bdd565b005b610653611ea9565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610693578082015181840152602081019050610678565b50505050905090810190601f1680156106c05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106fc600480360360208110156106e457600080fd5b81019080803515159060200190929190505050611ee2565b005b61074a6004803603604081101561071457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ffd565b005b6107986004803603604081101561076257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612306565b604051808215151515815260200191505060405180910390f35b6107f4600480360360208110156107c857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126c3565b604051808215151515815260200191505060405180910390f35b6108916004803603604081101561082457600080fd5b810190808035906020019064010000000081111561084157600080fd5b82018360208201111561085357600080fd5b8035906020019184602083028401116401000000008311171561087557600080fd5b9091929391929390803515159060200190929190505050612719565b005b61089b6129e5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61093f600480360360408110156108f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a0b565b6040518082815260200191505060405180910390f35b61095d612a92565b005b6109a16004803603602081101561097557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c9a565b005b6109e5600480360360208110156109b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e44565b005b600760009054906101000a900460ff1681565b6040518060400160405280601181526020017f4d657461436f646520506c6174666f726d00000000000000000000000000000081525081565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060026004602082020160ff1660003690501015610a7757600080fd5b33600260149054906101000a900460ff1615610b3557600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061319e6022913960400191505060405180910390fd5b610bd8565b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610bd7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806131c06026913960400191505060405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415610c7b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c6964207370656e64657220616464726573732e000000000000000081525060200191505060405180910390fd5b6000841480610d0657506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b610d78576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f416c726561647920617070726f7665642e00000000000000000000000000000081525060200191505060405180910390fd5b83600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925866040518082815260200191505060405180910390a360019250505092915050565b60005481565b600260149054906101000a900460ff1681565b600060036004602082020160ff1660003690501015610ea157600080fd5b84600260149054906101000a900460ff1615610f5f57600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610f5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061319e6022913960400191505060405180910390fd5b611002565b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611001576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806131c06026913960400191505060405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156110a5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f496e76616c696420736f7572636520616464726573732e00000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496e76616c69642064657374696e6174696f6e20616464726573732e0000000081525060200191505060405180910390fd5b61119a84600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461309290919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061122f84600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461311590919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061130385600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461309290919063ffffffff16565b905080600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a33373ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3600193505050509392505050565b601281565b6000600760009054906101000a900460ff16156114e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d696e74696e6720697320616c72656164792066696e69736865642e0000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806115915750600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6115e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806131e66023913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611689576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496e76616c69642064657374696e6174696f6e20616464726573732e0000000081525060200191505060405180910390fd5b61169e8260005461311590919063ffffffff16565b6000819055506116f682600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461311590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885836040518082815260200191505060405180910390a28273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600760009054906101000a900460ff161561191b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d696e74696e6720697320616c72656164792066696e69736865642e0000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f596f75206d757374206265206f776e65722e000000000000000000000000000081525060200191505060405180910390fd5b6001600760006101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a16001905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611aef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f596f75206d757374206265206f776e65722e000000000000000000000000000081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611b7657600080fd5b505af1158015611b8a573d6000803e3d6000fd5b505050506040513d6020811015611ba057600080fd5b810190808051906020019092919050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ca0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f596f75206d757374206265206f776e65722e000000000000000000000000000081525060200191505060405180910390fd5b60008090505b83839050811015611ea3576000848483818110611cbf57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1690506000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905083151581151514611e94578315611df0576001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fa09e978c90f25c2a977904ade347948ac4761e23cf07a17f87c8b77ef301e89c6001604051808215151515815260200191505060405180910390a2611e93565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558173ffffffffffffffffffffffffffffffffffffffff167fa09e978c90f25c2a977904ade347948ac4761e23cf07a17f87c8b77ef301e89c6000604051808215151515815260200191505060405180910390a25b5b50508080600101915050611ca6565b50505050565b6040518060400160405280600481526020017f4d5443430000000000000000000000000000000000000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fa5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f596f75206d757374206265206f776e65722e000000000000000000000000000081525060200191505060405180910390fd5b80600260146101000a81548160ff0219169083151502179055507f4d49befdca73a4dc2f0a3a9ed2dd8ddd7a76d19758d7e27dbb88c5a576d6f92e81604051808215151515815260200191505060405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806120a65750600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6120fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806131e66023913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561219e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f496e76616c696420736f7572636520616464726573732e00000000000000000081525060200191505060405180910390fd5b6121f081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461309290919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122488160005461309290919063ffffffff16565b600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a38173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040518082815260200191505060405180910390a25050565b600060026004602082020160ff166000369050101561232457600080fd5b33600260149054906101000a900460ff16156123e257600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156123dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061319e6022913960400191505060405180910390fd5b612485565b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612484576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806131c06026913960400191505060405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496e76616c69642064657374696e6174696f6e20616464726573732e0000000081525060200191505060405180910390fd5b61257a84600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461309290919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061260f84600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461311590919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a360019250505092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146127dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f596f75206d757374206265206f776e65722e000000000000000000000000000081525060200191505060405180910390fd5b60008090505b838390508110156129df5760008484838181106127fb57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1690506000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050831515811515146129d057831561292c576001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f369e0b70fff47e7b3ceb33e2f6f5d67c3d85ab70974ae25e5b2ef2516863d1996001604051808215151515815260200191505060405180910390a26129cf565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558173ffffffffffffffffffffffffffffffffffffffff167f369e0b70fff47e7b3ceb33e2f6f5d67c3d85ab70974ae25e5b2ef2516863d1996000604051808215151515815260200191505060405180910390a25b5b505080806001019150506127e2565b50505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612b55576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f596f75206d7573742062652064656c65676174652e000000000000000000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612d5d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f596f75206d757374206265206f776e65722e000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612e00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496e76616c6964206e6577206f776e657220616464726573732e00000000000081525060200191505060405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612f07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f596f75206d757374206265206f776e65722e000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612faa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f496e76616c6964206e6577206d696e74657220616464726573732e000000000081525060200191505060405180910390fd5b6000600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f02ad39e5173f89bdd5497202bd74024b5da045106c3163ddb078d2e89ff6d6de60405160405180910390a35050565b60008282111561310a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4e656761746976652075696e74323536206973206e6f7720616c6c6f7765642e81525060200191505060405180910390fd5b818303905092915050565b600080828401905083811015613193576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f416464696e672075696e74323536206f766572666c6f772e000000000000000081525060200191505060405180910390fd5b809150509291505056fe536f75726365206164647265737320697320696e20626c6f636b2066696c7465722e536f757263652061646472657373206d75737420626520696e20706173732066696c7465722e596f75206d75737420626520656974686572206f776e6572206f72206d696e7465722ea165627a7a72305820b04a1beaab7e2493f1c1c5d66f7e1eec25bac85c8f21674567f76f90a90685540029

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061018e5760003560e01c80638da5cb5b116100de578063afbdaa0511610097578063dd62ed3e11610071578063dd62ed3e146108dd578063e602af0614610955578063f2fde38b1461095f578063fe99ad5a146109a35761018e565b8063afbdaa05146107b2578063b57874ce1461080e578063c89e4361146108935761018e565b80638da5cb5b1461057c57806394b44f3e146105c657806395d89b411461064b5780639cd23707146106ce5780639dc29fac146106fe578063a9059cbb1461074c5761018e565b806323b872dd1161014b578063483b1a7611610125578063483b1a761461043857806370a08231146104945780637d64bcb4146104ec578063819bea4b1461050e5761018e565b806323b872dd14610328578063313ce567146103ae57806340c10f19146103d25761018e565b806305d2035b1461019357806306fdde03146101b55780630754617214610238578063095ea7b31461028257806318160ddd146102e85780632121dc7514610306575b600080fd5b61019b6109e7565b604051808215151515815260200191505060405180910390f35b6101bd6109fa565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101fd5780820151818401526020810190506101e2565b50505050905090810190601f16801561022a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610240610a33565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ce6004803603604081101561029857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a59565b604051808215151515815260200191505060405180910390f35b6102f0610e6a565b6040518082815260200191505060405180910390f35b61030e610e70565b604051808215151515815260200191505060405180910390f35b6103946004803603606081101561033e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e83565b604051808215151515815260200191505060405180910390f35b6103b661145e565b604051808260ff1660ff16815260200191505060405180910390f35b61041e600480360360408110156103e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611463565b604051808215151515815260200191505060405180910390f35b61047a6004803603602081101561044e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117f7565b604051808215151515815260200191505060405180910390f35b6104d6600480360360208110156104aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061184d565b6040518082815260200191505060405180910390f35b6104f4611896565b604051808215151515815260200191505060405180910390f35b61057a6004803603606081101561052457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a2c565b005b610584611bb7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610649600480360360408110156105dc57600080fd5b81019080803590602001906401000000008111156105f957600080fd5b82018360208201111561060b57600080fd5b8035906020019184602083028401116401000000008311171561062d57600080fd5b9091929391929390803515159060200190929190505050611bdd565b005b610653611ea9565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610693578082015181840152602081019050610678565b50505050905090810190601f1680156106c05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106fc600480360360208110156106e457600080fd5b81019080803515159060200190929190505050611ee2565b005b61074a6004803603604081101561071457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ffd565b005b6107986004803603604081101561076257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612306565b604051808215151515815260200191505060405180910390f35b6107f4600480360360208110156107c857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126c3565b604051808215151515815260200191505060405180910390f35b6108916004803603604081101561082457600080fd5b810190808035906020019064010000000081111561084157600080fd5b82018360208201111561085357600080fd5b8035906020019184602083028401116401000000008311171561087557600080fd5b9091929391929390803515159060200190929190505050612719565b005b61089b6129e5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61093f600480360360408110156108f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a0b565b6040518082815260200191505060405180910390f35b61095d612a92565b005b6109a16004803603602081101561097557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c9a565b005b6109e5600480360360208110156109b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e44565b005b600760009054906101000a900460ff1681565b6040518060400160405280601181526020017f4d657461436f646520506c6174666f726d00000000000000000000000000000081525081565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060026004602082020160ff1660003690501015610a7757600080fd5b33600260149054906101000a900460ff1615610b3557600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061319e6022913960400191505060405180910390fd5b610bd8565b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610bd7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806131c06026913960400191505060405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415610c7b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c6964207370656e64657220616464726573732e000000000000000081525060200191505060405180910390fd5b6000841480610d0657506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b610d78576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f416c726561647920617070726f7665642e00000000000000000000000000000081525060200191505060405180910390fd5b83600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925866040518082815260200191505060405180910390a360019250505092915050565b60005481565b600260149054906101000a900460ff1681565b600060036004602082020160ff1660003690501015610ea157600080fd5b84600260149054906101000a900460ff1615610f5f57600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610f5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061319e6022913960400191505060405180910390fd5b611002565b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611001576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806131c06026913960400191505060405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156110a5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f496e76616c696420736f7572636520616464726573732e00000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496e76616c69642064657374696e6174696f6e20616464726573732e0000000081525060200191505060405180910390fd5b61119a84600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461309290919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061122f84600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461311590919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061130385600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461309290919063ffffffff16565b905080600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a33373ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3600193505050509392505050565b601281565b6000600760009054906101000a900460ff16156114e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d696e74696e6720697320616c72656164792066696e69736865642e0000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806115915750600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6115e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806131e66023913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611689576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496e76616c69642064657374696e6174696f6e20616464726573732e0000000081525060200191505060405180910390fd5b61169e8260005461311590919063ffffffff16565b6000819055506116f682600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461311590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885836040518082815260200191505060405180910390a28273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600760009054906101000a900460ff161561191b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d696e74696e6720697320616c72656164792066696e69736865642e0000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f596f75206d757374206265206f776e65722e000000000000000000000000000081525060200191505060405180910390fd5b6001600760006101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a16001905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611aef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f596f75206d757374206265206f776e65722e000000000000000000000000000081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611b7657600080fd5b505af1158015611b8a573d6000803e3d6000fd5b505050506040513d6020811015611ba057600080fd5b810190808051906020019092919050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ca0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f596f75206d757374206265206f776e65722e000000000000000000000000000081525060200191505060405180910390fd5b60008090505b83839050811015611ea3576000848483818110611cbf57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1690506000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905083151581151514611e94578315611df0576001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fa09e978c90f25c2a977904ade347948ac4761e23cf07a17f87c8b77ef301e89c6001604051808215151515815260200191505060405180910390a2611e93565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558173ffffffffffffffffffffffffffffffffffffffff167fa09e978c90f25c2a977904ade347948ac4761e23cf07a17f87c8b77ef301e89c6000604051808215151515815260200191505060405180910390a25b5b50508080600101915050611ca6565b50505050565b6040518060400160405280600481526020017f4d5443430000000000000000000000000000000000000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fa5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f596f75206d757374206265206f776e65722e000000000000000000000000000081525060200191505060405180910390fd5b80600260146101000a81548160ff0219169083151502179055507f4d49befdca73a4dc2f0a3a9ed2dd8ddd7a76d19758d7e27dbb88c5a576d6f92e81604051808215151515815260200191505060405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806120a65750600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6120fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806131e66023913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561219e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f496e76616c696420736f7572636520616464726573732e00000000000000000081525060200191505060405180910390fd5b6121f081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461309290919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122488160005461309290919063ffffffff16565b600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a38173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040518082815260200191505060405180910390a25050565b600060026004602082020160ff166000369050101561232457600080fd5b33600260149054906101000a900460ff16156123e257600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156123dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061319e6022913960400191505060405180910390fd5b612485565b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612484576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806131c06026913960400191505060405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496e76616c69642064657374696e6174696f6e20616464726573732e0000000081525060200191505060405180910390fd5b61257a84600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461309290919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061260f84600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461311590919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a360019250505092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146127dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f596f75206d757374206265206f776e65722e000000000000000000000000000081525060200191505060405180910390fd5b60008090505b838390508110156129df5760008484838181106127fb57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1690506000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050831515811515146129d057831561292c576001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f369e0b70fff47e7b3ceb33e2f6f5d67c3d85ab70974ae25e5b2ef2516863d1996001604051808215151515815260200191505060405180910390a26129cf565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558173ffffffffffffffffffffffffffffffffffffffff167f369e0b70fff47e7b3ceb33e2f6f5d67c3d85ab70974ae25e5b2ef2516863d1996000604051808215151515815260200191505060405180910390a25b5b505080806001019150506127e2565b50505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612b55576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f596f75206d7573742062652064656c65676174652e000000000000000000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612d5d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f596f75206d757374206265206f776e65722e000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612e00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496e76616c6964206e6577206f776e657220616464726573732e00000000000081525060200191505060405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612f07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f596f75206d757374206265206f776e65722e000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612faa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f496e76616c6964206e6577206d696e74657220616464726573732e000000000081525060200191505060405180910390fd5b6000600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f02ad39e5173f89bdd5497202bd74024b5da045106c3163ddb078d2e89ff6d6de60405160405180910390a35050565b60008282111561310a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4e656761746976652075696e74323536206973206e6f7720616c6c6f7765642e81525060200191505060405180910390fd5b818303905092915050565b600080828401905083811015613193576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f416464696e672075696e74323536206f766572666c6f772e000000000000000081525060200191505060405180910390fd5b809150509291505056fe536f75726365206164647265737320697320696e20626c6f636b2066696c7465722e536f757263652061646472657373206d75737420626520696e20706173732066696c7465722e596f75206d75737420626520656974686572206f776e6572206f72206d696e7465722ea165627a7a72305820b04a1beaab7e2493f1c1c5d66f7e1eec25bac85c8f21674567f76f90a90685540029

Deployed Bytecode Sourcemap

11956:390:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11956:390:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9925:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11996:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;11996:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9965:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8177:726;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8177:726:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5002:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2562;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7540:631;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7540:631:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12159:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10585:351;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10585:351:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3422:107;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3422:107:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7148:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7148:109:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11056:146;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11781:166;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11781:166:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;243:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4251:629;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4251:629:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;4251:629:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4251:629:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;4251:629:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12083:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;12083:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3263:153;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3263:153:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;11458:317;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11458:317:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6477:462;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6477:462:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3535:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3535:109:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3650:595;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3650:595:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;3650:595:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3650:595:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;3650:595:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;268:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9230:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9230:128:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1123:210;;;:::i;:::-;;955:162;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;955:162:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;11208:244;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11208:244:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;9925:35;;;;;;;;;;;;;:::o;11996:49::-;;;;;;;;;;;;;;;;;;;:::o;9965:21::-;;;;;;;;;;;;;:::o;8177:726::-;8327:4;8247:1;6300;6295:2;6287:5;:10;:14;6268:33;;:8;;:15;;:33;;6260:42;;;;;;8296:10;2960:14;;;;;;;;;;;2956:223;;;2998:15;:23;3014:6;2998:23;;;;;;;;;;;;;;;;;;;;;;;;;2997:24;2989:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2956:223;;;3104:14;:22;3119:6;3104:22;;;;;;;;;;;;;;;;;;;;;;;;;3096:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2956:223;8368:1;8348:22;;:8;:22;;;;8340:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8718:1;8708:6;:11;8707:53;;;;8758:1;8725:7;:19;8733:10;8725:19;;;;;;;;;;;;;;;:29;8745:8;8725:29;;;;;;;;;;;;;;;;:34;8707:53;8699:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8823:6;8791:7;:19;8799:10;8791:19;;;;;;;;;;;;;;;:29;8811:8;8791:29;;;;;;;;;;;;;;;:38;;;;8862:8;8841:38;;8850:10;8841:38;;;8872:6;8841:38;;;;;;;;;;;;;;;;;;8893:4;8886:11;;6309:1;8177:726;;;;;:::o;5002:26::-;;;;:::o;2562:::-;;;;;;;;;;;;;:::o;7540:631::-;7700:4;7625:1;6300;6295:2;6287:5;:10;:14;6268:33;;:8;;:15;;:33;;6260:42;;;;;;7674:5;2960:14;;;;;;;;;;;2956:223;;;2998:15;:23;3014:6;2998:23;;;;;;;;;;;;;;;;;;;;;;;;;2997:24;2989:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2956:223;;;3104:14;:22;3119:6;3104:22;;;;;;;;;;;;;;;;;;;;;;;;;3096:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2956:223;7738:1;7721:19;;:5;:19;;;;7713:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7798:1;7783:17;;:3;:17;;;;7775:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7860:27;7880:6;7860:8;:15;7869:5;7860:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;7842:8;:15;7851:5;7842:15;;;;;;;;;;;;;;;:45;;;;7910:25;7928:6;7910:8;:13;7919:3;7910:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;7894:8;:13;7903:3;7894:13;;;;;;;;;;;;;;;:41;;;;7942:21;7966:38;7997:6;7966:7;:14;7974:5;7966:14;;;;;;;;;;;;;;;:26;7981:10;7966:26;;;;;;;;;;;;;;;;:30;;:38;;;;:::i;:::-;7942:62;;8040:13;8011:7;:14;8019:5;8011:14;;;;;;;;;;;;;;;:26;8026:10;8011:26;;;;;;;;;;;;;;;:42;;;;8081:3;8065:28;;8074:5;8065:28;;;8086:6;8065:28;;;;;;;;;;;;;;;;;;8121:10;8105:42;;8114:5;8105:42;;;8133:13;8105:42;;;;;;;;;;;;;;;;;;8161:4;8154:11;;;6309:1;7540:631;;;;;;:::o;12159:35::-;12192:2;12159:35;:::o;10585:351::-;10669:4;10136:15;;;;;;;;;;;10135:16;10127:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10258:5;;;;;;;;;;;10244:19;;:10;:19;;;:43;;;;10281:6;;;;;;;;;;;10267:20;;:10;:20;;;10244:43;10236:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10705:1;10690:17;;:3;:17;;;;10682:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10763:24;10779:7;10763:11;;:15;;:24;;;;:::i;:::-;10749:11;:38;;;;10810:26;10828:7;10810:8;:13;10819:3;10810:13;;;;;;;;;;;;;;;;:17;;:26;;;;:::i;:::-;10794:8;:13;10803:3;10794:13;;;;;;;;;;;;;;;:42;;;;10853:3;10848:18;;;10858:7;10848:18;;;;;;;;;;;;;;;;;;10899:3;10878:34;;10895:1;10878:34;;;10904:7;10878:34;;;;;;;;;;;;;;;;;;10926:4;10919:11;;10585:351;;;;:::o;3422:107::-;3483:4;3503:14;:20;3518:4;3503:20;;;;;;;;;;;;;;;;;;;;;;;;;3496:27;;3422:107;;;:::o;7148:109::-;7204:15;7235:8;:16;7244:6;7235:16;;;;;;;;;;;;;;;;7228:23;;7148:109;;;:::o;11056:146::-;11117:4;10136:15;;;;;;;;;;;10135:16;10127:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;746:5;;;;;;;;;;;732:19;;:10;:19;;;724:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11148:4;11130:15;;:22;;;;;;;;;;;;;;;;;;11164:14;;;;;;;;;;11192:4;11185:11;;11056:146;:::o;11781:166::-;746:5;;;;;;;;;;;732:19;;:10;:19;;;724:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11895:12;11889:28;;;11918:9;11929:11;11889:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11889:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11889:52:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11889:52:0;;;;;;;;;;;;;;;;;11781:166;;;:::o;243:20::-;;;;;;;;;;;;;:::o;4251:629::-;746:5;;;;;;;;;;;732:19;;:10;:19;;;724:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4357:6;4366:1;4357:10;;4352:523;4374:6;;:13;;4370:1;:17;4352:523;;;4409:21;4433:6;;4440:1;4433:9;;;;;;;;;;;;;;;4409:33;;4455:8;4466:15;:30;4482:13;4466:30;;;;;;;;;;;;;;;;;;;;;;;;;4455:41;;4520:6;4513:13;;:3;:13;;;4509:357;;4549:6;4545:308;;;4611:4;4578:15;:30;4594:13;4578:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;4656:13;4641:35;;;4671:4;4641:35;;;;;;;;;;;;;;;;;;;;;;4545:308;;;4743:15;:30;4759:13;4743:30;;;;;;;;;;;;;;;;4736:37;;;;;;;;;;;4814:13;4799:36;;;4829:5;4799:36;;;;;;;;;;;;;;;;;;;;;;4545:308;4509:357;4352:523;;4390:3;;;;;;;4352:523;;;;4251:629;;;:::o;12083:38::-;;;;;;;;;;;;;;;;;;;:::o;3263:153::-;746:5;;;;;;;;;;;732:19;;:10;:19;;;724:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3352:12;3335:14;;:29;;;;;;;;;;;;;;;;;;3378:32;3397:12;3378:32;;;;;;;;;;;;;;;;;;;;;;3263:153;:::o;11458:317::-;10258:5;;;;;;;;;;;10244:19;;:10;:19;;;:43;;;;10281:6;;;;;;;;;;;10267:20;;:10;:20;;;10244:43;10236:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11559:1;11542:19;;:5;:19;;;;11534:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11616:28;11636:7;11616:8;:15;11625:5;11616:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;11598:8;:15;11607:5;11598:15;;;;;;;;;;;;;;;:46;;;;11665:24;11681:7;11665:11;;:15;;:24;;;;:::i;:::-;11651:11;:38;;;;11725:1;11701:36;;11710:5;11701:36;;;11729:7;11701:36;;;;;;;;;;;;;;;;;;11754:5;11749:20;;;11761:7;11749:20;;;;;;;;;;;;;;;;;;11458:317;;:::o;6477:462::-;6623:4;6543:1;6300;6295:2;6287:5;:10;:14;6268:33;;:8;;:15;;:33;;6260:42;;;;;;6592:10;2960:14;;;;;;;;;;;2956:223;;;2998:15;:23;3014:6;2998:23;;;;;;;;;;;;;;;;;;;;;;;;;2997:24;2989:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2956:223;;;3104:14;:22;3119:6;3104:22;;;;;;;;;;;;;;;;;;;;;;;;;3096:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2956:223;6659:1;6644:17;;:3;:17;;;;6636:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6790:32;6815:6;6790:8;:20;6799:10;6790:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;6767:8;:20;6776:10;6767:20;;;;;;;;;;;;;;;:55;;;;6845:25;6863:6;6845:8;:13;6854:3;6845:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;6829:8;:13;6838:3;6829:13;;;;;;;;;;;;;;;:41;;;;6903:3;6882:33;;6891:10;6882:33;;;6908:6;6882:33;;;;;;;;;;;;;;;;;;6929:4;6922:11;;6309:1;6477:462;;;;;:::o;3535:109::-;3597:4;3617:15;:21;3633:4;3617:21;;;;;;;;;;;;;;;;;;;;;;;;;3610:28;;3535:109;;;:::o;3650:595::-;746:5;;;;;;;;;;;732:19;;:10;:19;;;724:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3753:6;3762:1;3753:10;;3748:492;3770:6;;:13;;3766:1;:17;3748:492;;;3803:21;3827:6;;3834:1;3827:9;;;;;;;;;;;;;;;3803:33;;3847:8;3858:14;:29;3873:13;3858:29;;;;;;;;;;;;;;;;;;;;;;;;;3847:40;;3909:6;3902:13;;:3;:13;;;3898:335;;3936:6;3932:290;;;3995:4;3963:14;:29;3978:13;3963:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;4037:13;4023:34;;;4052:4;4023:34;;;;;;;;;;;;;;;;;;;;;;3932:290;;;4118:14;:29;4133:13;4118:29;;;;;;;;;;;;;;;;4111:36;;;;;;;;;;;4185:13;4171:35;;;4200:5;4171:35;;;;;;;;;;;;;;;;;;;;;;3932:290;3898:335;3748:492;;3786:3;;;;;;;3748:492;;;;3650:595;;;:::o;268:23::-;;;;;;;;;;;;;:::o;9230:128::-;9304:7;9327;:15;9335:6;9327:15;;;;;;;;;;;;;;;:25;9343:8;9327:25;;;;;;;;;;;;;;;;9320:32;;9230:128;;;;:::o;1123:210::-;1193:8;;;;;;;;;;;1179:22;;:10;:22;;;1171:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1267:8;;;;;;;;;;;1239:37;;1260:5;;;;;;;;;;;1239:37;;;;;;;;;;;;1291:8;;;;;;;;;;;1283:5;;:16;;;;;;;;;;;;;;;;;;1325:1;1306:8;;:21;;;;;;;;;;;;;;;;;;1123:210::o;955:162::-;746:5;;;;;;;;;;;732:19;;:10;:19;;;724:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1052:1;1032:22;;:8;:22;;;;1024:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1103:8;1092;;:19;;;;;;;;;;;;;;;;;;955:162;:::o;11208:244::-;746:5;;;;;;;;;;;732:19;;:10;:19;;;724:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11304:1;11283:23;;:9;:23;;;;11275:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11345:18;11366:6;;;;;;;;;;;11345:27;;11388:9;11379:6;;:18;;;;;;;;;;;;;;;;;;11439:6;;;;;;;;;;;11409:37;;11427:10;11409:37;;;;;;;;;;;;781:1;11208:244;:::o;2124:150::-;2182:7;2211:1;2206;:6;;2198:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2267:1;2263;:5;2256:12;;2124:150;;;;:::o;2341:162::-;2399:7;2415:9;2431:1;2427;:5;2415:17;;2452:1;2447;:6;;2439:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2496:1;2489:8;;;2341:162;;;;:::o

Swarm Source

bzzr://b04a1beaab7e2493f1c1c5d66f7e1eec25bac85c8f21674567f76f90a9068554
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.