ETH Price: $2,689.14 (+2.70%)

Token

ConnectVision (CVN)
 

Overview

Max Total Supply

3,000,000,000 CVN

Holders

30

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
599,036,800 CVN

Value
$0.00
0x882367db55ae19ad8157293b8a500410b89b974a
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:
ConnectVisionToken

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-09
*/

pragma solidity ^0.8.7;

interface IERC20 {
  /**
   * @dev Returns the amount of tokens in existence.
   */
  function totalSupply() external view returns (uint256);

  /**
   * @dev Returns the token decimals.
   */
  function decimals() external view returns (uint8);

  /**
   * @dev Returns the token symbol.
   */
  function symbol() external view returns (string memory);

  /**
  * @dev Returns the token name.
  */
  function name() external view returns (string memory);

  /**
   * @dev Returns the erc token owner.
   */
  function getOwner() external view returns (address);

  /**
   * @dev Returns the amount of tokens owned by `account`.
   */
  function balanceOf(address account) external view returns (uint256);

  /**
   * @dev Moves `amount` tokens from the caller's account to `recipient`.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * Emits a {Transfer} event.
   */
  function transfer(address recipient, uint256 amount) external returns (bool);

  /**
   * @dev Returns the remaining number of tokens that `spender` will be
   * allowed to spend on behalf of `owner` through {transferFrom}. This is
   * zero by default.
   *
   * This value changes when {approve} or {transferFrom} are called.
   */
  function allowance(address _owner, address spender) external view returns (uint256);

  /**
   * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * IMPORTANT: Beware that changing an allowance with this method brings the risk
   * that someone may use both the old and the new allowance by unfortunate
   * transaction ordering. One possible solution to mitigate this race
   * condition is to first reduce the spender's allowance to 0 and set the
   * desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   *
   * Emits an {Approval} event.
   */
  function approve(address spender, uint256 amount) external returns (bool);

  /**
   * @dev Moves `amount` tokens from `sender` to `recipient` using the
   * allowance mechanism. `amount` is then deducted from the caller's
   * allowance.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * Emits a {Transfer} event.
   */
  function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

  /**
   * @dev Emitted when `value` tokens are moved from one account (`from`) to
   * another (`to`).
   *
   * Note that `value` may be zero.
   */
  event Transfer(address indexed from, address indexed to, uint256 value);

  /**
   * @dev Emitted when the allowance of a `spender` for an `owner` is set by
   * a call to {approve}. `value` is the new allowance.
   */
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
  // Empty internal constructor, to prevent people from mistakenly deploying
  // an instance of this contract, which should be used via inheritance.
  constructor () internal { }

  function _msgSender() internal view returns (address) {
    return msg.sender;
  }

  function _msgData() internal view returns (bytes memory) {
    this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
    return msg.data;
  }
}

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
  /**
   * @dev Returns the addition of two unsigned integers, reverting on
   * overflow.
   *
   * Counterpart to Solidity's `+` operator.
   *
   * Requirements:
   * - Addition cannot overflow.
   */
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    require(c >= a, "SafeMath: addition overflow");

    return c;
  }

  /**
   * @dev Returns the subtraction of two unsigned integers, reverting on
   * overflow (when the result is negative).
   *
   * Counterpart to Solidity's `-` operator.
   *
   * Requirements:
   * - Subtraction cannot overflow.
   */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    return sub(a, b, "SafeMath: subtraction overflow");
  }

  /**
   * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
   * overflow (when the result is negative).
   *
   * Counterpart to Solidity's `-` operator.
   *
   * Requirements:
   * - Subtraction cannot overflow.
   */
  function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
    require(b <= a, errorMessage);
    uint256 c = a - b;

    return c;
  }

  /**
   * @dev Returns the multiplication of two unsigned integers, reverting on
   * overflow.
   *
   * Counterpart to Solidity's `*` operator.
   *
   * Requirements:
   * - Multiplication cannot overflow.
   */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
    // benefit is lost if 'b' is also tested.
    // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
    if (a == 0) {
      return 0;
    }

    uint256 c = a * b;
    require(c / a == b, "SafeMath: multiplication overflow");

    return c;
  }

  /**
   * @dev Returns the integer division of two unsigned integers. Reverts on
   * division by zero. The result is rounded towards zero.
   *
   * Counterpart to Solidity's `/` operator. Note: this function uses a
   * `revert` opcode (which leaves remaining gas untouched) while Solidity
   * uses an invalid opcode to revert (consuming all remaining gas).
   *
   * Requirements:
   * - The divisor cannot be zero.
   */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    return div(a, b, "SafeMath: division by zero");
  }

  /**
   * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
   * division by zero. The result is rounded towards zero.
   *
   * Counterpart to Solidity's `/` operator. Note: this function uses a
   * `revert` opcode (which leaves remaining gas untouched) while Solidity
   * uses an invalid opcode to revert (consuming all remaining gas).
   *
   * Requirements:
   * - The divisor cannot be zero.
   */
  function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
    // Solidity only automatically asserts when dividing by 0
    require(b > 0, errorMessage);
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold

    return c;
  }

  /**
   * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
   * Reverts when dividing by zero.
   *
   * Counterpart to Solidity's `%` operator. This function uses a `revert`
   * opcode (which leaves remaining gas untouched) while Solidity uses an
   * invalid opcode to revert (consuming all remaining gas).
   *
   * Requirements:
   * - The divisor cannot be zero.
   */
  function mod(uint256 a, uint256 b) internal pure returns (uint256) {
    return mod(a, b, "SafeMath: modulo by zero");
  }

  /**
   * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
   * Reverts with custom message when dividing by zero.
   *
   * Counterpart to Solidity's `%` operator. This function uses a `revert`
   * opcode (which leaves remaining gas untouched) while Solidity uses an
   * invalid opcode to revert (consuming all remaining gas).
   *
   * Requirements:
   * - The divisor cannot be zero.
   */
  function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
    require(b != 0, errorMessage);
    return a % b;
  }
}

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable is Context {
  address private _owner;

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

  /**
   * @dev Initializes the contract setting the deployer as the initial owner.
   */
  constructor () {
    address msgSender = _msgSender();
    _owner = msgSender;
    emit OwnershipTransferred(address(0), msgSender);
  }

  /**
   * @dev Returns the address of the current owner.
   */
  function owner() public view returns (address) {
    return _owner;
  }

  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(_owner == _msgSender(), "Ownable: caller is not the owner");
    _;
  }

  /**
   * @dev Leaves the contract without owner. It will not be possible to call
   * `onlyOwner` functions anymore. Can only be called by the current owner.
   *
   * NOTE: Renouncing ownership will leave the contract without an owner,
   * thereby removing any functionality that is only available to the owner.
   */
  function renounceOwnership() public onlyOwner {
    emit OwnershipTransferred(_owner, address(0));
    _owner = address(0);
  }

  /**
   * @dev Transfers ownership of the contract to a new account (`newOwner`).
   * Can only be called by the current owner.
   */
  function transferOwnership(address newOwner) public onlyOwner {
    _transferOwnership(newOwner);
  }

  /**
   * @dev Transfers ownership of the contract to a new account (`newOwner`).
   */
  function _transferOwnership(address newOwner) internal {
    require(newOwner != address(0), "Ownable: new owner is the zero address");
    emit OwnershipTransferred(_owner, newOwner);
    _owner = newOwner;
  }
}

contract ConnectVisionToken is Context, IERC20, Ownable {
  using SafeMath for uint256;

  mapping (address => uint256) private _balances;

  mapping (address => mapping (address => uint256)) private _allowances;

  uint256 private _totalSupply;
  uint8 private _decimals;
  string private _symbol;
  string private _name;

  constructor() public {
    _name = "ConnectVision";
    _symbol = "CVN";
    _decimals = 18;
    _totalSupply = 3 * 10 ** 9 * 10 ** 18;
    _balances[msg.sender] = _totalSupply;

    emit Transfer(address(0), msg.sender, _totalSupply);
  }

  /**
   * @dev Returns the erc token owner.
   */
  function getOwner() external override view returns (address) {
    return owner();
  }

  /**
   * @dev Returns the token decimals.
   */
  function decimals() external override view returns (uint8) {
    return _decimals;
  }

  /**
   * @dev Returns the token symbol.
   */
  function symbol() external override view returns (string memory) {
    return _symbol;
  }

  /**
  * @dev Returns the token name.
  */
  function name() external override view returns (string memory) {
    return _name;
  }

  /**
   * @dev See {ERC20-totalSupply}.
   */
  function totalSupply() external override view returns (uint256) {
    return _totalSupply;
  }

  /**
   * @dev See {ERC20-balanceOf}.
   */
  function balanceOf(address account) external override view returns (uint256) {
    return _balances[account];
  }

  /**
   * @dev See {ERC20-transfer}.
   *
   * Requirements:
   *
   * - `recipient` cannot be the zero address.
   * - the caller must have a balance of at least `amount`.
   */
  function transfer(address recipient, uint256 amount) external override returns (bool) {
    _transfer(_msgSender(), recipient, amount);
    return true;
  }

  /**
   * @dev See {ERC20-allowance}.
   */
  function allowance(address owner, address spender) external override view returns (uint256) {
    return _allowances[owner][spender];
  }

  /**
   * @dev See {ERC20-approve}.
   *
   * Requirements:
   *
   * - `spender` cannot be the zero address.
   */
  function approve(address spender, uint256 amount) external override returns (bool) {
    _approve(_msgSender(), spender, amount);
    return true;
  }

  /**
   * @dev See {ERC20-transferFrom}.
   *
   * Emits an {Approval} event indicating the updated allowance. This is not
   * required by the EIP. See the note at the beginning of {ERC20};
   *
   * Requirements:
   * - `sender` and `recipient` cannot be the zero address.
   * - `sender` must have a balance of at least `amount`.
   * - the caller must have allowance for `sender`'s tokens of at least
   * `amount`.
   */
  function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
    _transfer(sender, recipient, amount);
    _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
    return true;
  }

  /**
   * @dev Atomically increases the allowance granted to `spender` by the caller.
   *
   * This is an alternative to {approve} that can be used as a mitigation for
   * problems described in {ERC20-approve}.
   *
   * Emits an {Approval} event indicating the updated allowance.
   *
   * Requirements:
   *
   * - `spender` cannot be the zero address.
   */
  function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
    _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
    return true;
  }

  /**
   * @dev Atomically decreases the allowance granted to `spender` by the caller.
   *
   * This is an alternative to {approve} that can be used as a mitigation for
   * problems described in {ERC20-approve}.
   *
   * Emits an {Approval} event indicating the updated allowance.
   *
   * Requirements:
   *
   * - `spender` cannot be the zero address.
   * - `spender` must have allowance for the caller of at least
   * `subtractedValue`.
   */
  function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
    _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
    return true;
  }

  /**
   * @dev Creates `amount` tokens and assigns them to `msg.sender`, increasing
   * the total supply.
   *
   * Requirements
   *
   * - `msg.sender` must be the token owner
   */
  function mint(uint256 amount) public onlyOwner returns (bool) {
    _mint(_msgSender(), amount);
    return true;
  }

  /**
   * @dev Moves tokens `amount` from `sender` to `recipient`.
   *
   * This is internal function is equivalent to {transfer}, and can be used to
   * e.g. implement automatic token fees, slashing mechanisms, etc.
   *
   * Emits a {Transfer} event.
   *
   * Requirements:
   *
   * - `sender` cannot be the zero address.
   * - `recipient` cannot be the zero address.
   * - `sender` must have a balance of at least `amount`.
   */
  function _transfer(address sender, address recipient, uint256 amount) internal {
    require(sender != address(0), "ERC20: transfer from the zero address");
    require(recipient != address(0), "ERC20: transfer to the zero address");

    _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
    _balances[recipient] = _balances[recipient].add(amount);
    emit Transfer(sender, recipient, amount);
  }

  /** @dev Creates `amount` tokens and assigns them to `account`, increasing
   * the total supply.
   *
   * Emits a {Transfer} event with `from` set to the zero address.
   *
   * Requirements
   *
   * - `to` cannot be the zero address.
   */
  function _mint(address account, uint256 amount) internal {
    require(account != address(0), "ERC20: mint to the zero address");

    _totalSupply = _totalSupply.add(amount);
    _balances[account] = _balances[account].add(amount);
    emit Transfer(address(0), account, amount);
  }

  /**
   * @dev Destroys `amount` tokens from `account`, reducing the
   * total supply.
   *
   * Emits a {Transfer} event with `to` set to the zero address.
   *
   * Requirements
   *
   * - `account` cannot be the zero address.
   * - `account` must have at least `amount` tokens.
   */
  function _burn(address account, uint256 amount) internal {
    require(account != address(0), "ERC20: burn from the zero address");

    _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
    _totalSupply = _totalSupply.sub(amount);
    emit Transfer(account, address(0), amount);
  }

  /**
   * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.
   *
   * This is internal function is equivalent to `approve`, and can be used to
   * e.g. set automatic allowances for certain subsystems, etc.
   *
   * Emits an {Approval} event.
   *
   * Requirements:
   *
   * - `owner` cannot be the zero address.
   * - `spender` cannot be the zero address.
   */
  function _approve(address owner, address spender, uint256 amount) internal {
    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);
  }

  /**
   * @dev Destroys `amount` tokens from `account`.`amount` is then deducted
   * from the caller's allowance.
   *
   * See {_burn} and {_approve}.
   */
  function _burnFrom(address account, uint256 amount) internal {
    _burn(account, amount);
    _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, "ERC20: burn amount exceeds allowance"));
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506000620000246200024360201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506040518060400160405280600d81526020017f436f6e6e656374566973696f6e00000000000000000000000000000000000000815250600690805190602001906200010f9291906200024b565b506040518060400160405280600381526020017f43564e0000000000000000000000000000000000000000000000000000000000815250600590805190602001906200015d9291906200024b565b506012600460006101000a81548160ff021916908360ff1602179055506b09b18ab5df7180b6b8000000600381905550600354600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6003546040516200023591906200030c565b60405180910390a362000398565b600033905090565b828054620002599062000333565b90600052602060002090601f0160209004810192826200027d5760008555620002c9565b82601f106200029857805160ff1916838001178555620002c9565b82800160010185558215620002c9579182015b82811115620002c8578251825591602001919060010190620002ab565b5b509050620002d89190620002dc565b5090565b5b80821115620002f7576000816000905550600101620002dd565b5090565b620003068162000329565b82525050565b6000602082019050620003236000830184620002fb565b92915050565b6000819050919050565b600060028204905060018216806200034c57607f821691505b6020821081141562000363576200036262000369565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b611be380620003a86000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063893d20e811610097578063a457c2d711610066578063a457c2d7146102b3578063a9059cbb146102e3578063dd62ed3e14610313578063f2fde38b1461034357610100565b8063893d20e8146102295780638da5cb5b1461024757806395d89b4114610265578063a0712d681461028357610100565b8063313ce567116100d3578063313ce567146101a157806339509351146101bf57806370a08231146101ef578063715018a61461021f57610100565b806306fdde0314610105578063095ea7b31461012357806318160ddd1461015357806323b872dd14610171575b600080fd5b61010d61035f565b60405161011a91906115da565b60405180910390f35b61013d600480360381019061013891906113aa565b6103f1565b60405161014a91906115bf565b60405180910390f35b61015b61040f565b60405161016891906116fc565b60405180910390f35b61018b60048036038101906101869190611357565b610419565b60405161019891906115bf565b60405180910390f35b6101a96104f2565b6040516101b69190611717565b60405180910390f35b6101d960048036038101906101d491906113aa565b610509565b6040516101e691906115bf565b60405180910390f35b610209600480360381019061020491906112ea565b6105bc565b60405161021691906116fc565b60405180910390f35b610227610605565b005b610231610758565b60405161023e91906115a4565b60405180910390f35b61024f610767565b60405161025c91906115a4565b60405180910390f35b61026d610790565b60405161027a91906115da565b60405180910390f35b61029d600480360381019061029891906113ea565b610822565b6040516102aa91906115bf565b60405180910390f35b6102cd60048036038101906102c891906113aa565b6108d3565b6040516102da91906115bf565b60405180910390f35b6102fd60048036038101906102f891906113aa565b6109a0565b60405161030a91906115bf565b60405180910390f35b61032d60048036038101906103289190611317565b6109be565b60405161033a91906116fc565b60405180910390f35b61035d600480360381019061035891906112ea565b610a45565b005b60606006805461036e90611860565b80601f016020809104026020016040519081016040528092919081815260200182805461039a90611860565b80156103e75780601f106103bc576101008083540402835291602001916103e7565b820191906000526020600020905b8154815290600101906020018083116103ca57829003601f168201915b5050505050905090565b60006104056103fe610ae6565b8484610aee565b6001905092915050565b6000600354905090565b6000610426848484610cb9565b6104e784610432610ae6565b6104e285604051806060016040528060288152602001611b6160289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610498610ae6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f479092919063ffffffff16565b610aee565b600190509392505050565b6000600460009054906101000a900460ff16905090565b60006105b2610516610ae6565b846105ad8560026000610527610ae6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fab90919063ffffffff16565b610aee565b6001905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61060d610ae6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106919061167c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000610762610767565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606005805461079f90611860565b80601f01602080910402602001604051908101604052809291908181526020018280546107cb90611860565b80156108185780601f106107ed57610100808354040283529160200191610818565b820191906000526020600020905b8154815290600101906020018083116107fb57829003601f168201915b5050505050905090565b600061082c610ae6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b09061167c565b60405180910390fd5b6108ca6108c4610ae6565b83611009565b60019050919050565b60006109966108e0610ae6565b8461099185604051806060016040528060258152602001611b89602591396002600061090a610ae6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f479092919063ffffffff16565b610aee565b6001905092915050565b60006109b46109ad610ae6565b8484610cb9565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610a4d610ae6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad19061167c565b60405180910390fd5b610ae381611193565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b55906116bc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc59061163c565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610cac91906116fc565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d209061169c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d90906115fc565b60405180910390fd5b610e0581604051806060016040528060268152602001611b3b60269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f479092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e9a81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fab90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610f3a91906116fc565b60405180910390a3505050565b6000838311158290610f8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8691906115da565b60405180910390fd5b5060008385610f9e91906117a4565b9050809150509392505050565b6000808284610fba919061174e565b905083811015610fff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff69061165c565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611079576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611070906116dc565b60405180910390fd5b61108e81600354610fab90919063ffffffff16565b6003819055506110e681600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fab90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161118791906116fc565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fa9061161c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000813590506112cf81611b0c565b92915050565b6000813590506112e481611b23565b92915050565b600060208284031215611300576112ff6118f0565b5b600061130e848285016112c0565b91505092915050565b6000806040838503121561132e5761132d6118f0565b5b600061133c858286016112c0565b925050602061134d858286016112c0565b9150509250929050565b6000806000606084860312156113705761136f6118f0565b5b600061137e868287016112c0565b935050602061138f868287016112c0565b92505060406113a0868287016112d5565b9150509250925092565b600080604083850312156113c1576113c06118f0565b5b60006113cf858286016112c0565b92505060206113e0858286016112d5565b9150509250929050565b600060208284031215611400576113ff6118f0565b5b600061140e848285016112d5565b91505092915050565b611420816117d8565b82525050565b61142f816117ea565b82525050565b600061144082611732565b61144a818561173d565b935061145a81856020860161182d565b611463816118f5565b840191505092915050565b600061147b60238361173d565b915061148682611906565b604082019050919050565b600061149e60268361173d565b91506114a982611955565b604082019050919050565b60006114c160228361173d565b91506114cc826119a4565b604082019050919050565b60006114e4601b8361173d565b91506114ef826119f3565b602082019050919050565b600061150760208361173d565b915061151282611a1c565b602082019050919050565b600061152a60258361173d565b915061153582611a45565b604082019050919050565b600061154d60248361173d565b915061155882611a94565b604082019050919050565b6000611570601f8361173d565b915061157b82611ae3565b602082019050919050565b61158f81611816565b82525050565b61159e81611820565b82525050565b60006020820190506115b96000830184611417565b92915050565b60006020820190506115d46000830184611426565b92915050565b600060208201905081810360008301526115f48184611435565b905092915050565b600060208201905081810360008301526116158161146e565b9050919050565b6000602082019050818103600083015261163581611491565b9050919050565b60006020820190508181036000830152611655816114b4565b9050919050565b60006020820190508181036000830152611675816114d7565b9050919050565b60006020820190508181036000830152611695816114fa565b9050919050565b600060208201905081810360008301526116b58161151d565b9050919050565b600060208201905081810360008301526116d581611540565b9050919050565b600060208201905081810360008301526116f581611563565b9050919050565b60006020820190506117116000830184611586565b92915050565b600060208201905061172c6000830184611595565b92915050565b600081519050919050565b600082825260208201905092915050565b600061175982611816565b915061176483611816565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561179957611798611892565b5b828201905092915050565b60006117af82611816565b91506117ba83611816565b9250828210156117cd576117cc611892565b5b828203905092915050565b60006117e3826117f6565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561184b578082015181840152602081019050611830565b8381111561185a576000848401525b50505050565b6000600282049050600182168061187857607f821691505b6020821081141561188c5761188b6118c1565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b611b15816117d8565b8114611b2057600080fd5b50565b611b2c81611816565b8114611b3757600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e0060ed511c5ddbeeb12f494c81a8c43909fcdca7bffd9fa435978373894e2f964736f6c63430008070033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101005760003560e01c8063893d20e811610097578063a457c2d711610066578063a457c2d7146102b3578063a9059cbb146102e3578063dd62ed3e14610313578063f2fde38b1461034357610100565b8063893d20e8146102295780638da5cb5b1461024757806395d89b4114610265578063a0712d681461028357610100565b8063313ce567116100d3578063313ce567146101a157806339509351146101bf57806370a08231146101ef578063715018a61461021f57610100565b806306fdde0314610105578063095ea7b31461012357806318160ddd1461015357806323b872dd14610171575b600080fd5b61010d61035f565b60405161011a91906115da565b60405180910390f35b61013d600480360381019061013891906113aa565b6103f1565b60405161014a91906115bf565b60405180910390f35b61015b61040f565b60405161016891906116fc565b60405180910390f35b61018b60048036038101906101869190611357565b610419565b60405161019891906115bf565b60405180910390f35b6101a96104f2565b6040516101b69190611717565b60405180910390f35b6101d960048036038101906101d491906113aa565b610509565b6040516101e691906115bf565b60405180910390f35b610209600480360381019061020491906112ea565b6105bc565b60405161021691906116fc565b60405180910390f35b610227610605565b005b610231610758565b60405161023e91906115a4565b60405180910390f35b61024f610767565b60405161025c91906115a4565b60405180910390f35b61026d610790565b60405161027a91906115da565b60405180910390f35b61029d600480360381019061029891906113ea565b610822565b6040516102aa91906115bf565b60405180910390f35b6102cd60048036038101906102c891906113aa565b6108d3565b6040516102da91906115bf565b60405180910390f35b6102fd60048036038101906102f891906113aa565b6109a0565b60405161030a91906115bf565b60405180910390f35b61032d60048036038101906103289190611317565b6109be565b60405161033a91906116fc565b60405180910390f35b61035d600480360381019061035891906112ea565b610a45565b005b60606006805461036e90611860565b80601f016020809104026020016040519081016040528092919081815260200182805461039a90611860565b80156103e75780601f106103bc576101008083540402835291602001916103e7565b820191906000526020600020905b8154815290600101906020018083116103ca57829003601f168201915b5050505050905090565b60006104056103fe610ae6565b8484610aee565b6001905092915050565b6000600354905090565b6000610426848484610cb9565b6104e784610432610ae6565b6104e285604051806060016040528060288152602001611b6160289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610498610ae6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f479092919063ffffffff16565b610aee565b600190509392505050565b6000600460009054906101000a900460ff16905090565b60006105b2610516610ae6565b846105ad8560026000610527610ae6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fab90919063ffffffff16565b610aee565b6001905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61060d610ae6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106919061167c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000610762610767565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606005805461079f90611860565b80601f01602080910402602001604051908101604052809291908181526020018280546107cb90611860565b80156108185780601f106107ed57610100808354040283529160200191610818565b820191906000526020600020905b8154815290600101906020018083116107fb57829003601f168201915b5050505050905090565b600061082c610ae6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b09061167c565b60405180910390fd5b6108ca6108c4610ae6565b83611009565b60019050919050565b60006109966108e0610ae6565b8461099185604051806060016040528060258152602001611b89602591396002600061090a610ae6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f479092919063ffffffff16565b610aee565b6001905092915050565b60006109b46109ad610ae6565b8484610cb9565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610a4d610ae6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad19061167c565b60405180910390fd5b610ae381611193565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b55906116bc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc59061163c565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610cac91906116fc565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d209061169c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d90906115fc565b60405180910390fd5b610e0581604051806060016040528060268152602001611b3b60269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f479092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e9a81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fab90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610f3a91906116fc565b60405180910390a3505050565b6000838311158290610f8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8691906115da565b60405180910390fd5b5060008385610f9e91906117a4565b9050809150509392505050565b6000808284610fba919061174e565b905083811015610fff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff69061165c565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611079576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611070906116dc565b60405180910390fd5b61108e81600354610fab90919063ffffffff16565b6003819055506110e681600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fab90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161118791906116fc565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fa9061161c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000813590506112cf81611b0c565b92915050565b6000813590506112e481611b23565b92915050565b600060208284031215611300576112ff6118f0565b5b600061130e848285016112c0565b91505092915050565b6000806040838503121561132e5761132d6118f0565b5b600061133c858286016112c0565b925050602061134d858286016112c0565b9150509250929050565b6000806000606084860312156113705761136f6118f0565b5b600061137e868287016112c0565b935050602061138f868287016112c0565b92505060406113a0868287016112d5565b9150509250925092565b600080604083850312156113c1576113c06118f0565b5b60006113cf858286016112c0565b92505060206113e0858286016112d5565b9150509250929050565b600060208284031215611400576113ff6118f0565b5b600061140e848285016112d5565b91505092915050565b611420816117d8565b82525050565b61142f816117ea565b82525050565b600061144082611732565b61144a818561173d565b935061145a81856020860161182d565b611463816118f5565b840191505092915050565b600061147b60238361173d565b915061148682611906565b604082019050919050565b600061149e60268361173d565b91506114a982611955565b604082019050919050565b60006114c160228361173d565b91506114cc826119a4565b604082019050919050565b60006114e4601b8361173d565b91506114ef826119f3565b602082019050919050565b600061150760208361173d565b915061151282611a1c565b602082019050919050565b600061152a60258361173d565b915061153582611a45565b604082019050919050565b600061154d60248361173d565b915061155882611a94565b604082019050919050565b6000611570601f8361173d565b915061157b82611ae3565b602082019050919050565b61158f81611816565b82525050565b61159e81611820565b82525050565b60006020820190506115b96000830184611417565b92915050565b60006020820190506115d46000830184611426565b92915050565b600060208201905081810360008301526115f48184611435565b905092915050565b600060208201905081810360008301526116158161146e565b9050919050565b6000602082019050818103600083015261163581611491565b9050919050565b60006020820190508181036000830152611655816114b4565b9050919050565b60006020820190508181036000830152611675816114d7565b9050919050565b60006020820190508181036000830152611695816114fa565b9050919050565b600060208201905081810360008301526116b58161151d565b9050919050565b600060208201905081810360008301526116d581611540565b9050919050565b600060208201905081810360008301526116f581611563565b9050919050565b60006020820190506117116000830184611586565b92915050565b600060208201905061172c6000830184611595565b92915050565b600081519050919050565b600082825260208201905092915050565b600061175982611816565b915061176483611816565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561179957611798611892565b5b828201905092915050565b60006117af82611816565b91506117ba83611816565b9250828210156117cd576117cc611892565b5b828203905092915050565b60006117e3826117f6565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561184b578082015181840152602081019050611830565b8381111561185a576000848401525b50505050565b6000600282049050600182168061187857607f821691505b6020821081141561188c5761188b6118c1565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b611b15816117d8565b8114611b2057600080fd5b50565b611b2c81611816565b8114611b3757600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e0060ed511c5ddbeeb12f494c81a8c43909fcdca7bffd9fa435978373894e2f964736f6c63430008070033

Deployed Bytecode Sourcemap

11298:7918:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12380:88;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13465:153;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12524:96;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14063:301;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12090:88;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14746:200;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12674:115;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10600:130;;;:::i;:::-;;11943:88;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9998:73;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12235:92;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15869:120;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15418:251;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12983:159;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13196:139;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10875:103;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12380:88;12428:13;12457:5;12450:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12380:88;:::o;13465:153::-;13542:4;13555:39;13564:12;:10;:12::i;:::-;13578:7;13587:6;13555:8;:39::i;:::-;13608:4;13601:11;;13465:153;;;;:::o;12524:96::-;12579:7;12602:12;;12595:19;;12524:96;:::o;14063:301::-;14163:4;14176:36;14186:6;14194:9;14205:6;14176:9;:36::i;:::-;14219:121;14228:6;14236:12;:10;:12::i;:::-;14250:89;14288:6;14250:89;;;;;;;;;;;;;;;;;:11;:19;14262:6;14250:19;;;;;;;;;;;;;;;:33;14270:12;:10;:12::i;:::-;14250:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;14219:8;:121::i;:::-;14354:4;14347:11;;14063:301;;;;;:::o;12090:88::-;12142:5;12163:9;;;;;;;;;;;12156:16;;12090:88;:::o;14746:200::-;14826:4;14839:83;14848:12;:10;:12::i;:::-;14862:7;14871:50;14910:10;14871:11;:25;14883:12;:10;:12::i;:::-;14871:25;;;;;;;;;;;;;;;:34;14897:7;14871:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;14839:8;:83::i;:::-;14936:4;14929:11;;14746:200;;;;:::o;12674:115::-;12742:7;12765:9;:18;12775:7;12765:18;;;;;;;;;;;;;;;;12758:25;;12674:115;;;:::o;10600:130::-;10202:12;:10;:12::i;:::-;10192:22;;:6;;;;;;;;;;:22;;;10184:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10695:1:::1;10658:40;;10679:6;::::0;::::1;;;;;;;;10658:40;;;;;;;;;;;;10722:1;10705:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;10600:130::o:0;11943:88::-;11995:7;12018;:5;:7::i;:::-;12011:14;;11943:88;:::o;9998:73::-;10036:7;10059:6;;;;;;;;;;;10052:13;;9998:73;:::o;12235:92::-;12285:13;12314:7;12307:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12235:92;:::o;15869:120::-;15925:4;10202:12;:10;:12::i;:::-;10192:22;;:6;;;;;;;;;;:22;;;10184:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15938:27:::1;15944:12;:10;:12::i;:::-;15958:6;15938:5;:27::i;:::-;15979:4;15972:11;;15869:120:::0;;;:::o;15418:251::-;15503:4;15516:129;15525:12;:10;:12::i;:::-;15539:7;15548:96;15587:15;15548:96;;;;;;;;;;;;;;;;;:11;:25;15560:12;:10;:12::i;:::-;15548:25;;;;;;;;;;;;;;;:34;15574:7;15548:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;15516:8;:129::i;:::-;15659:4;15652:11;;15418:251;;;;:::o;12983:159::-;13063:4;13076:42;13086:12;:10;:12::i;:::-;13100:9;13111:6;13076:9;:42::i;:::-;13132:4;13125:11;;12983:159;;;;:::o;13196:139::-;13279:7;13302:11;:18;13314:5;13302:18;;;;;;;;;;;;;;;:27;13321:7;13302:27;;;;;;;;;;;;;;;;13295:34;;13196:139;;;;:::o;10875:103::-;10202:12;:10;:12::i;:::-;10192:22;;:6;;;;;;;;;;:22;;;10184:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10944:28:::1;10963:8;10944:18;:28::i;:::-;10875:103:::0;:::o;3712:84::-;3757:7;3780:10;3773:17;;3712:84;:::o;18499:320::-;18606:1;18589:19;;:5;:19;;;;18581:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18683:1;18664:21;;:7;:21;;;;18656:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18763:6;18733:11;:18;18745:5;18733:18;;;;;;;;;;;;;;;:27;18752:7;18733:27;;;;;;;;;;;;;;;:36;;;;18797:7;18781:32;;18790:5;18781:32;;;18806:6;18781:32;;;;;;:::i;:::-;;;;;;;;18499:320;;;:::o;16449:449::-;16561:1;16543:20;;:6;:20;;;;16535:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;16641:1;16620:23;;:9;:23;;;;16612:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16712;16734:6;16712:71;;;;;;;;;;;;;;;;;:9;:17;16722:6;16712:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;16692:9;:17;16702:6;16692:17;;;;;;;;;;;;;;;:91;;;;16813:32;16838:6;16813:9;:20;16823:9;16813:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;16790:9;:20;16800:9;16790:20;;;;;;;;;;;;;;;:55;;;;16874:9;16857:35;;16866:6;16857:35;;;16885:6;16857:35;;;;;;:::i;:::-;;;;;;;;16449:449;;;:::o;5663:178::-;5749:7;5778:1;5773;:6;;5781:12;5765:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5801:9;5817:1;5813;:5;;;;:::i;:::-;5801:17;;5834:1;5827:8;;;5663:178;;;;;:::o;4836:167::-;4894:7;4910:9;4926:1;4922;:5;;;;:::i;:::-;4910:17;;4947:1;4942;:6;;4934:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;4996:1;4989:8;;;4836:167;;;;:::o;17159:290::-;17250:1;17231:21;;:7;:21;;;;17223:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;17312:24;17329:6;17312:12;;:16;;:24;;;;:::i;:::-;17297:12;:39;;;;17364:30;17387:6;17364:9;:18;17374:7;17364:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;17343:9;:18;17353:7;17343:18;;;;;;;;;;;;;;;:51;;;;17427:7;17406:37;;17423:1;17406:37;;;17436:6;17406:37;;;;;;:::i;:::-;;;;;;;;17159:290;;:::o;11076:215::-;11166:1;11146:22;;:8;:22;;;;11138:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11252:8;11223:38;;11244:6;;;;;;;;;;11223:38;;;;;;;;;;;;11277:8;11268:6;;:17;;;;;;;;;;;;;;;;;;11076:215;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:::-;198:5;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;152:139;;;;:::o;297:329::-;356:6;405:2;393:9;384:7;380:23;376:32;373:119;;;411:79;;:::i;:::-;373:119;531:1;556:53;601:7;592:6;581:9;577:22;556:53;:::i;:::-;546:63;;502:117;297:329;;;;:::o;632:474::-;700:6;708;757:2;745:9;736:7;732:23;728:32;725:119;;;763:79;;:::i;:::-;725:119;883:1;908:53;953:7;944:6;933:9;929:22;908:53;:::i;:::-;898:63;;854:117;1010:2;1036:53;1081:7;1072:6;1061:9;1057:22;1036:53;:::i;:::-;1026:63;;981:118;632:474;;;;;:::o;1112:619::-;1189:6;1197;1205;1254:2;1242:9;1233:7;1229:23;1225:32;1222:119;;;1260:79;;:::i;:::-;1222:119;1380:1;1405:53;1450:7;1441:6;1430:9;1426:22;1405:53;:::i;:::-;1395:63;;1351:117;1507:2;1533:53;1578:7;1569:6;1558:9;1554:22;1533:53;:::i;:::-;1523:63;;1478:118;1635:2;1661:53;1706:7;1697:6;1686:9;1682:22;1661:53;:::i;:::-;1651:63;;1606:118;1112:619;;;;;:::o;1737:474::-;1805:6;1813;1862:2;1850:9;1841:7;1837:23;1833:32;1830:119;;;1868:79;;:::i;:::-;1830:119;1988:1;2013:53;2058:7;2049:6;2038:9;2034:22;2013:53;:::i;:::-;2003:63;;1959:117;2115:2;2141:53;2186:7;2177:6;2166:9;2162:22;2141:53;:::i;:::-;2131:63;;2086:118;1737:474;;;;;:::o;2217:329::-;2276:6;2325:2;2313:9;2304:7;2300:23;2296:32;2293:119;;;2331:79;;:::i;:::-;2293:119;2451:1;2476:53;2521:7;2512:6;2501:9;2497:22;2476:53;:::i;:::-;2466:63;;2422:117;2217:329;;;;:::o;2552:118::-;2639:24;2657:5;2639:24;:::i;:::-;2634:3;2627:37;2552:118;;:::o;2676:109::-;2757:21;2772:5;2757:21;:::i;:::-;2752:3;2745:34;2676:109;;:::o;2791:364::-;2879:3;2907:39;2940:5;2907:39;:::i;:::-;2962:71;3026:6;3021:3;2962:71;:::i;:::-;2955:78;;3042:52;3087:6;3082:3;3075:4;3068:5;3064:16;3042:52;:::i;:::-;3119:29;3141:6;3119:29;:::i;:::-;3114:3;3110:39;3103:46;;2883:272;2791:364;;;;:::o;3161:366::-;3303:3;3324:67;3388:2;3383:3;3324:67;:::i;:::-;3317:74;;3400:93;3489:3;3400:93;:::i;:::-;3518:2;3513:3;3509:12;3502:19;;3161:366;;;:::o;3533:::-;3675:3;3696:67;3760:2;3755:3;3696:67;:::i;:::-;3689:74;;3772:93;3861:3;3772:93;:::i;:::-;3890:2;3885:3;3881:12;3874:19;;3533:366;;;:::o;3905:::-;4047:3;4068:67;4132:2;4127:3;4068:67;:::i;:::-;4061:74;;4144:93;4233:3;4144:93;:::i;:::-;4262:2;4257:3;4253:12;4246:19;;3905:366;;;:::o;4277:::-;4419:3;4440:67;4504:2;4499:3;4440:67;:::i;:::-;4433:74;;4516:93;4605:3;4516:93;:::i;:::-;4634:2;4629:3;4625:12;4618:19;;4277:366;;;:::o;4649:::-;4791:3;4812:67;4876:2;4871:3;4812:67;:::i;:::-;4805:74;;4888:93;4977:3;4888:93;:::i;:::-;5006:2;5001:3;4997:12;4990:19;;4649:366;;;:::o;5021:::-;5163:3;5184:67;5248:2;5243:3;5184:67;:::i;:::-;5177:74;;5260:93;5349:3;5260:93;:::i;:::-;5378:2;5373:3;5369:12;5362:19;;5021:366;;;:::o;5393:::-;5535:3;5556:67;5620:2;5615:3;5556:67;:::i;:::-;5549:74;;5632:93;5721:3;5632:93;:::i;:::-;5750:2;5745:3;5741:12;5734:19;;5393:366;;;:::o;5765:::-;5907:3;5928:67;5992:2;5987:3;5928:67;:::i;:::-;5921:74;;6004:93;6093:3;6004:93;:::i;:::-;6122:2;6117:3;6113:12;6106:19;;5765:366;;;:::o;6137:118::-;6224:24;6242:5;6224:24;:::i;:::-;6219:3;6212:37;6137:118;;:::o;6261:112::-;6344:22;6360:5;6344:22;:::i;:::-;6339:3;6332:35;6261:112;;:::o;6379:222::-;6472:4;6510:2;6499:9;6495:18;6487:26;;6523:71;6591:1;6580:9;6576:17;6567:6;6523:71;:::i;:::-;6379:222;;;;:::o;6607:210::-;6694:4;6732:2;6721:9;6717:18;6709:26;;6745:65;6807:1;6796:9;6792:17;6783:6;6745:65;:::i;:::-;6607:210;;;;:::o;6823:313::-;6936:4;6974:2;6963:9;6959:18;6951:26;;7023:9;7017:4;7013:20;7009:1;6998:9;6994:17;6987:47;7051:78;7124:4;7115:6;7051:78;:::i;:::-;7043:86;;6823:313;;;;:::o;7142:419::-;7308:4;7346:2;7335:9;7331:18;7323:26;;7395:9;7389:4;7385:20;7381:1;7370:9;7366:17;7359:47;7423:131;7549:4;7423:131;:::i;:::-;7415:139;;7142:419;;;:::o;7567:::-;7733:4;7771:2;7760:9;7756:18;7748:26;;7820:9;7814:4;7810:20;7806:1;7795:9;7791:17;7784:47;7848:131;7974:4;7848:131;:::i;:::-;7840:139;;7567:419;;;:::o;7992:::-;8158:4;8196:2;8185:9;8181:18;8173:26;;8245:9;8239:4;8235:20;8231:1;8220:9;8216:17;8209:47;8273:131;8399:4;8273:131;:::i;:::-;8265:139;;7992:419;;;:::o;8417:::-;8583:4;8621:2;8610:9;8606:18;8598:26;;8670:9;8664:4;8660:20;8656:1;8645:9;8641:17;8634:47;8698:131;8824:4;8698:131;:::i;:::-;8690:139;;8417:419;;;:::o;8842:::-;9008:4;9046:2;9035:9;9031:18;9023:26;;9095:9;9089:4;9085:20;9081:1;9070:9;9066:17;9059:47;9123:131;9249:4;9123:131;:::i;:::-;9115:139;;8842:419;;;:::o;9267:::-;9433:4;9471:2;9460:9;9456:18;9448:26;;9520:9;9514:4;9510:20;9506:1;9495:9;9491:17;9484:47;9548:131;9674:4;9548:131;:::i;:::-;9540:139;;9267:419;;;:::o;9692:::-;9858:4;9896:2;9885:9;9881:18;9873:26;;9945:9;9939:4;9935:20;9931:1;9920:9;9916:17;9909:47;9973:131;10099:4;9973:131;:::i;:::-;9965:139;;9692:419;;;:::o;10117:::-;10283:4;10321:2;10310:9;10306:18;10298:26;;10370:9;10364:4;10360:20;10356:1;10345:9;10341:17;10334:47;10398:131;10524:4;10398:131;:::i;:::-;10390:139;;10117:419;;;:::o;10542:222::-;10635:4;10673:2;10662:9;10658:18;10650:26;;10686:71;10754:1;10743:9;10739:17;10730:6;10686:71;:::i;:::-;10542:222;;;;:::o;10770:214::-;10859:4;10897:2;10886:9;10882:18;10874:26;;10910:67;10974:1;10963:9;10959:17;10950:6;10910:67;:::i;:::-;10770:214;;;;:::o;11071:99::-;11123:6;11157:5;11151:12;11141:22;;11071:99;;;:::o;11176:169::-;11260:11;11294:6;11289:3;11282:19;11334:4;11329:3;11325:14;11310:29;;11176:169;;;;:::o;11351:305::-;11391:3;11410:20;11428:1;11410:20;:::i;:::-;11405:25;;11444:20;11462:1;11444:20;:::i;:::-;11439:25;;11598:1;11530:66;11526:74;11523:1;11520:81;11517:107;;;11604:18;;:::i;:::-;11517:107;11648:1;11645;11641:9;11634:16;;11351:305;;;;:::o;11662:191::-;11702:4;11722:20;11740:1;11722:20;:::i;:::-;11717:25;;11756:20;11774:1;11756:20;:::i;:::-;11751:25;;11795:1;11792;11789:8;11786:34;;;11800:18;;:::i;:::-;11786:34;11845:1;11842;11838:9;11830:17;;11662:191;;;;:::o;11859:96::-;11896:7;11925:24;11943:5;11925:24;:::i;:::-;11914:35;;11859:96;;;:::o;11961:90::-;11995:7;12038:5;12031:13;12024:21;12013:32;;11961:90;;;:::o;12057:126::-;12094:7;12134:42;12127:5;12123:54;12112:65;;12057:126;;;:::o;12189:77::-;12226:7;12255:5;12244:16;;12189:77;;;:::o;12272:86::-;12307:7;12347:4;12340:5;12336:16;12325:27;;12272:86;;;:::o;12364:307::-;12432:1;12442:113;12456:6;12453:1;12450:13;12442:113;;;12541:1;12536:3;12532:11;12526:18;12522:1;12517:3;12513:11;12506:39;12478:2;12475:1;12471:10;12466:15;;12442:113;;;12573:6;12570:1;12567:13;12564:101;;;12653:1;12644:6;12639:3;12635:16;12628:27;12564:101;12413:258;12364:307;;;:::o;12677:320::-;12721:6;12758:1;12752:4;12748:12;12738:22;;12805:1;12799:4;12795:12;12826:18;12816:81;;12882:4;12874:6;12870:17;12860:27;;12816:81;12944:2;12936:6;12933:14;12913:18;12910:38;12907:84;;;12963:18;;:::i;:::-;12907:84;12728:269;12677:320;;;:::o;13003:180::-;13051:77;13048:1;13041:88;13148:4;13145:1;13138:15;13172:4;13169:1;13162:15;13189:180;13237:77;13234:1;13227:88;13334:4;13331:1;13324:15;13358:4;13355:1;13348:15;13498:117;13607:1;13604;13597:12;13621:102;13662:6;13713:2;13709:7;13704:2;13697:5;13693:14;13689:28;13679:38;;13621:102;;;:::o;13729:222::-;13869:34;13865:1;13857:6;13853:14;13846:58;13938:5;13933:2;13925:6;13921:15;13914:30;13729:222;:::o;13957:225::-;14097:34;14093:1;14085:6;14081:14;14074:58;14166:8;14161:2;14153:6;14149:15;14142:33;13957:225;:::o;14188:221::-;14328:34;14324:1;14316:6;14312:14;14305:58;14397:4;14392:2;14384:6;14380:15;14373:29;14188:221;:::o;14415:177::-;14555:29;14551:1;14543:6;14539:14;14532:53;14415:177;:::o;14598:182::-;14738:34;14734:1;14726:6;14722:14;14715:58;14598:182;:::o;14786:224::-;14926:34;14922:1;14914:6;14910:14;14903:58;14995:7;14990:2;14982:6;14978:15;14971:32;14786:224;:::o;15016:223::-;15156:34;15152:1;15144:6;15140:14;15133:58;15225:6;15220:2;15212:6;15208:15;15201:31;15016:223;:::o;15245:181::-;15385:33;15381:1;15373:6;15369:14;15362:57;15245:181;:::o;15432:122::-;15505:24;15523:5;15505:24;:::i;:::-;15498:5;15495:35;15485:63;;15544:1;15541;15534:12;15485:63;15432:122;:::o;15560:::-;15633:24;15651:5;15633:24;:::i;:::-;15626:5;15623:35;15613:63;;15672:1;15669;15662:12;15613:63;15560:122;:::o

Swarm Source

ipfs://e0060ed511c5ddbeeb12f494c81a8c43909fcdca7bffd9fa435978373894e2f9
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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