ETH Price: $2,973.81 (-1.44%)
 

Overview

Max Total Supply

1,000,000,000 CREV

Holders

6

Transfers

-
0

Market

Onchain Market Cap

-

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:
CrevAi

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2024-04-24
*/

// SPDX-License-Identifier: MIT
  pragma solidity ^0.8.9;
  
  /**
   * @dev Interface of the ERC20 standard as defined in the EIP.
   */
  interface IERC20 {
      /**
       * @dev Returns the amount of tokens in existence.
       */
      function totalSupply() external view returns (uint256);
  
      /**
       * @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 Interface for the optional metadata functions from the ERC20 standard.
   *
   * _Available since v4.1._
   */
  interface IERC20Metadata is IERC20 {
      /**
       * @dev Returns the name of the token.
       */
      function name() external view returns (string memory);
  
      /**
       * @dev Returns the symbol of the token.
       */
      function symbol() external view returns (string memory);
  
      /**
       * @dev Returns the decimals places of the token.
       */
      function decimals() external view returns (uint8);
  }
  
  /*
   * @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 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 {
      function _msgSender() internal view virtual returns (address) {
          return msg.sender;
      }
  
      function _msgData() internal view virtual returns (bytes calldata) {
          return msg.data;
      }
  }
  
  /**
   * @dev Implementation of the {IERC20} interface.
   *
   * This implementation is agnostic to the way tokens are created. This means
   * that a supply mechanism has to be added in a derived contract using {_mint}.
   * For a generic mechanism see {ERC20PresetMinterPauser}.
   *
   * TIP: For a detailed writeup see our guide
   * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
   * to implement supply mechanisms].
   *
   * We have followed general OpenZeppelin guidelines: functions revert instead
   * of returning 'false' on failure. This behavior is nonetheless conventional
   * and does not conflict with the expectations of ERC20 applications.
   *
   * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
   * This allows applications to reconstruct the allowance for all accounts just
   * by listening to said events. Other implementations of the EIP may not emit
   * these events, as it isn't required by the specification.
   *
   * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
   * functions have been added to mitigate the well-known issues around setting
   * allowances. See {IERC20-approve}.
   */
  contract ERC20 is Context, IERC20, IERC20Metadata {
      mapping(address => uint256) private _balances;
  
      mapping(address => mapping(address => uint256)) private _allowances;
  
      uint256 private _totalSupply;
  
      string private _name;
      string private _symbol;
      uint8 private _decimals;
  
      /**
       * @dev Sets the values for {name} and {symbol}.
       *
       * The default value of {decimals} is 18. To select a different value for
       * {decimals} you should overload it.
       *
       * All two of these values are immutable: they can only be set once during
       * construction.
       */
      constructor(string memory name_, string memory symbol_,uint8 decimals_) {
          _name = name_;
          _symbol = symbol_;
          _decimals = decimals_;
      }
  
      /**
       * @dev Returns the name of the token.
       */
      function name() public view virtual override returns (string memory) {
          return _name;
      }
  
      /**
       * @dev Returns the symbol of the token, usually a shorter version of the
       * name.
       */
      function symbol() public view virtual override returns (string memory) {
          return _symbol;
      }
  
      /**
       * @dev Returns the number of decimals used to get its user representation.
       * For example, if 'decimals' equals '2', a balance of '505' tokens should
       * be displayed to a user as '5,05' ('505 / 10 ** 2').
       *
       * Tokens usually opt for a value of 18, imitating the relationship between
       * Ether and Wei. This is the value {ERC20} uses, unless this function is
       * overridden;
       *
       * NOTE: This information is only used for _display_ purposes: it in
       * no way affects any of the arithmetic of the contract, including
       * {IERC20-balanceOf} and {IERC20-transfer}.
       */
      function decimals() public view virtual override returns (uint8) {
          return _decimals;
      }
  
      /**
       * @dev See {IERC20-totalSupply}.
       */
      function totalSupply() public view virtual override returns (uint256) {
          return _totalSupply;
      }
  
      /**
       * @dev See {IERC20-balanceOf}.
       */
      function balanceOf(address account) public view virtual override returns (uint256) {
          return _balances[account];
      }
  
      /**
       * @dev See {IERC20-transfer}.
       *
       * Requirements:
       *
       * - 'recipient' cannot be the zero address.
       * - the caller must have a balance of at least 'amount'.
       */
      function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
          _transfer(_msgSender(), recipient, amount);
          return true;
      }
  
      /**
       * @dev See {IERC20-allowance}.
       */
      function allowance(address owner, address spender) public view virtual override returns (uint256) {
          return _allowances[owner][spender];
      }
  
      /**
       * @dev See {IERC20-approve}.
       *
       * Requirements:
       *
       * - 'spender' cannot be the zero address.
       */
      function approve(address spender, uint256 amount) public virtual override returns (bool) {
          _approve(_msgSender(), spender, amount);
          return true;
      }
  
      /**
       * @dev See {IERC20-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
      ) public virtual override returns (bool) {
          _transfer(sender, recipient, amount);
  
          uint256 currentAllowance = _allowances[sender][_msgSender()];
          require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
          unchecked {
              _approve(sender, _msgSender(), currentAllowance - amount);
          }
  
          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 {IERC20-approve}.
       *
       * Emits an {Approval} event indicating the updated allowance.
       *
       * Requirements:
       *
       * - 'spender' cannot be the zero address.
       */
      function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
          _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + 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 {IERC20-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 virtual returns (bool) {
          uint256 currentAllowance = _allowances[_msgSender()][spender];
          require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
          unchecked {
              _approve(_msgSender(), spender, currentAllowance - subtractedValue);
          }
  
          return true;
      }
  
      /**
       * @dev Moves 'amount' of tokens from 'sender' to 'recipient'.
       *
       * This 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 virtual {
          require(sender != address(0), "ERC20: transfer from the zero address");
          require(recipient != address(0), "ERC20: transfer to the zero address");
  
          _beforeTokenTransfer(sender, recipient, amount);
  
          uint256 senderBalance = _balances[sender];
          require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
          unchecked {
              _balances[sender] = senderBalance - amount;
          }
          _balances[recipient] += amount;
  
          emit Transfer(sender, recipient, amount);
  
          _afterTokenTransfer(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:
       *
       * - 'account' cannot be the zero address.
       */
      function _mint(address account, uint256 amount) internal virtual {
          require(account != address(0), "ERC20: mint to the zero address");
  
          _beforeTokenTransfer(address(0), account, amount);
  
          _totalSupply += amount;
          _balances[account] += amount;
          emit Transfer(address(0), account, amount);
  
          _afterTokenTransfer(address(0), account, amount);
      }
  
      /**
       * @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 virtual {
          require(account != address(0), "ERC20: burn from the zero address");
  
          _beforeTokenTransfer(account, address(0), amount);
  
          uint256 accountBalance = _balances[account];
          require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
          unchecked {
              _balances[account] = accountBalance - amount;
          }
          _totalSupply -= amount;
  
          emit Transfer(account, address(0), amount);
  
          _afterTokenTransfer(account, address(0), amount);
      }
  
      /**
       * @dev Sets 'amount' as the allowance of 'spender' over the 'owner' s tokens.
       *
       * This 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 virtual {
          require(owner != address(0), "ERC20: approve from the zero address");
          require(spender != address(0), "ERC20: approve to the zero address");
  
          _allowances[owner][spender] = amount;
          emit Approval(owner, spender, amount);
      }
  
      /**
       * @dev Hook that is called before any transfer of tokens. This includes
       * minting and burning.
       *
       * Calling conditions:
       *
       * - when 'from' and 'to' are both non-zero, 'amount' of ''from'''s tokens
       * will be transferred to 'to'.
       * - when 'from' is zero, 'amount' tokens will be minted for 'to'.
       * - when 'to' is zero, 'amount' of ''from'''s tokens will be burned.
       * - 'from' and 'to' are never both zero.
       *
       * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
       */
      function _beforeTokenTransfer(
          address from,
          address to,
          uint256 amount
      ) internal virtual {}
  
      /**
       * @dev Hook that is called after any transfer of tokens. This includes
       * minting and burning.
       *
       * Calling conditions:
       *
       * - when 'from' and 'to' are both non-zero, 'amount' of ''from'''s tokens
       * has been transferred to 'to'.
       * - when 'from' is zero, 'amount' tokens have been minted for 'to'.
       * - when 'to' is zero, 'amount' of ''from'''s tokens have been burned.
       * - 'from' and 'to' are never both zero.
       *
       * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
       */
      function _afterTokenTransfer(
          address from,
          address to,
          uint256 amount
      ) internal virtual {}
  }
  
  /**
   * @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.
   */
  abstract 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() {
      }
  
      /**
       * @dev Returns the address of the current owner.
       */
      function owner() public view virtual returns (address) {
          return _owner;
      }
  
      /**
       * @dev Throws if called by any account other than the owner.
       */
      modifier onlyOwner() {
          require(owner() == tx.origin, "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 virtual onlyOwner {
          _setOwner(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 virtual onlyOwner {
          require(newOwner != address(0), "Ownable: new owner is the zero address");
          _setOwner(newOwner);
      }
  
      function _setOwner(address newOwner) internal {
          address oldOwner = _owner;
          _owner = newOwner;
          emit OwnershipTransferred(oldOwner, newOwner);
      }
  }
  
  /**
   * @dev Contract module which allows children to implement an emergency stop
   * mechanism that can be triggered by an authorized account.
   *
   * This module is used through inheritance. It will make available the
   * modifiers 'whenNotPaused' and 'whenPaused', which can be applied to
   * the functions of your contract. Note that they will not be pausable by
   * simply including this module, only once the modifiers are put in place.
   */
  abstract contract Pausable is Context {
      /**
       * @dev Emitted when the pause is triggered by 'account'.
       */
      event Paused(address account);
  
      /**
       * @dev Emitted when the pause is lifted by 'account'.
       */
      event Unpaused(address account);
  
      bool private _paused;
  
      /**
       * @dev Initializes the contract in unpaused state.
       */
      constructor() {
          _paused = false;
      }
  
      /**
       * @dev Returns true if the contract is paused, and false otherwise.
       */
      function paused() public view virtual returns (bool) {
          return _paused;
      }
  
      /**
       * @dev Modifier to make a function callable only when the contract is not paused.
       *
       * Requirements:
       *
       * - The contract must not be paused.
       */
      modifier whenNotPaused() {
          require(!paused(), "Pausable: paused");
          _;
      }
  
      /**
       * @dev Modifier to make a function callable only when the contract is paused.
       *
       * Requirements:
       *
       * - The contract must be paused.
       */
      modifier whenPaused() {
          require(paused(), "Pausable: not paused");
          _;
      }
  
      /**
       * @dev Triggers stopped state.
       *
       * Requirements:
       *
       * - The contract must not be paused.
       */
      function _pause() internal virtual whenNotPaused {
          _paused = true;
          emit Paused(_msgSender());
      }
  
      /**
       * @dev Returns to normal state.
       *
       * Requirements:
       *
       * - The contract must be paused.
       */
      function _unpause() internal virtual whenPaused {
          _paused = false;
          emit Unpaused(_msgSender());
      }
  }
  
  interface IUniswapV2Pair {
      event Approval(address indexed owner, address indexed spender, uint value);
      event Transfer(address indexed from, address indexed to, uint value);
  
      function name() external pure returns (string memory);
      function symbol() external pure returns (string memory);
      function decimals() external pure returns (uint8);
      function totalSupply() external view returns (uint);
      function balanceOf(address owner) external view returns (uint);
      function allowance(address owner, address spender) external view returns (uint);
  
      function approve(address spender, uint value) external returns (bool);
      function transfer(address to, uint value) external returns (bool);
      function transferFrom(address from, address to, uint value) external returns (bool);
  
      function DOMAIN_SEPARATOR() external view returns (bytes32);
      function PERMIT_TYPEHASH() external pure returns (bytes32);
      function nonces(address owner) external view returns (uint);
  
      function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
  
      event Mint(address indexed sender, uint amount0, uint amount1);
      event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
      event Swap(
          address indexed sender,
          uint amount0In,
          uint amount1In,
          uint amount0Out,
          uint amount1Out,
          address indexed to
      );
      event Sync(uint112 reserve0, uint112 reserve1);
  
      function MINIMUM_LIQUIDITY() external pure returns (uint);
      function factory() external view returns (address);
      function token0() external view returns (address);
      function token1() external view returns (address);
      function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
      function price0CumulativeLast() external view returns (uint);
      function price1CumulativeLast() external view returns (uint);
      function kLast() external view returns (uint);
  
      function mint(address to) external returns (uint liquidity);
      function burn(address to) external returns (uint amount0, uint amount1);
      function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
      function skim(address to) external;
      function sync() external;
  
      function initialize(address, address) external;
  }
  
  interface IUniswapV2Factory {
      event PairCreated(address indexed token0, address indexed token1, address pair, uint);
  
      function feeTo() external view returns (address);
      function feeToSetter() external view returns (address);
  
      function getPair(address tokenA, address tokenB) external view returns (address pair);
      function allPairs(uint) external view returns (address pair);
      function allPairsLength() external view returns (uint);
  
      function createPair(address tokenA, address tokenB) external returns (address pair);
  
      function setFeeTo(address) external;
      function setFeeToSetter(address) external;
  }
  
  interface IUniswapV2Router01 {
      function factory() external pure returns (address);
      function WETH() external pure returns (address);
  
      function addLiquidity(
          address tokenA,
          address tokenB,
          uint amountADesired,
          uint amountBDesired,
          uint amountAMin,
          uint amountBMin,
          address to,
          uint deadline
      ) external returns (uint amountA, uint amountB, uint liquidity);
      function addLiquidityETH(
          address token,
          uint amountTokenDesired,
          uint amountTokenMin,
          uint amountETHMin,
          address to,
          uint deadline
      ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
      function removeLiquidity(
          address tokenA,
          address tokenB,
          uint liquidity,
          uint amountAMin,
          uint amountBMin,
          address to,
          uint deadline
      ) external returns (uint amountA, uint amountB);
      function removeLiquidityETH(
          address token,
          uint liquidity,
          uint amountTokenMin,
          uint amountETHMin,
          address to,
          uint deadline
      ) external returns (uint amountToken, uint amountETH);
      function removeLiquidityWithPermit(
          address tokenA,
          address tokenB,
          uint liquidity,
          uint amountAMin,
          uint amountBMin,
          address to,
          uint deadline,
          bool approveMax, uint8 v, bytes32 r, bytes32 s
      ) external returns (uint amountA, uint amountB);
      function removeLiquidityETHWithPermit(
          address token,
          uint liquidity,
          uint amountTokenMin,
          uint amountETHMin,
          address to,
          uint deadline,
          bool approveMax, uint8 v, bytes32 r, bytes32 s
      ) external returns (uint amountToken, uint amountETH);
      function swapExactTokensForTokens(
          uint amountIn,
          uint amountOutMin,
          address[] calldata path,
          address to,
          uint deadline
      ) external returns (uint[] memory amounts);
      function swapTokensForExactTokens(
          uint amountOut,
          uint amountInMax,
          address[] calldata path,
          address to,
          uint deadline
      ) external returns (uint[] memory amounts);
      function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
          external
          payable
          returns (uint[] memory amounts);
      function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
          external
          returns (uint[] memory amounts);
      function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
          external
          returns (uint[] memory amounts);
      function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
          external
          payable
          returns (uint[] memory amounts);
  
      function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
      function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
      function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
      function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
      function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
  }
  
  interface IUniswapV2Router02 is IUniswapV2Router01 {
      function removeLiquidityETHSupportingFeeOnTransferTokens(
          address token,
          uint liquidity,
          uint amountTokenMin,
          uint amountETHMin,
          address to,
          uint deadline
      ) external returns (uint amountETH);
      function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
          address token,
          uint liquidity,
          uint amountTokenMin,
          uint amountETHMin,
          address to,
          uint deadline,
          bool approveMax, uint8 v, bytes32 r, bytes32 s
      ) external returns (uint amountETH);
  
      function swapExactTokensForTokensSupportingFeeOnTransferTokens(
          uint amountIn,
          uint amountOutMin,
          address[] calldata path,
          address to,
          uint deadline
      ) external;
      function swapExactETHForTokensSupportingFeeOnTransferTokens(
          uint amountOutMin,
          address[] calldata path,
          address to,
          uint deadline
      ) external payable;
      function swapExactTokensForETHSupportingFeeOnTransferTokens(
          uint amountIn,
          uint amountOutMin,
          address[] calldata path,
          address to,
          uint deadline
      ) external;
  }
  
  contract CrevAi is ERC20, Ownable, Pausable {
  
      // CONFIG START
      
      uint256 private initialSupply;
     
      uint256 private denominator = 100;
  
      uint256 private swapThreshold = 0.0000005 ether; // The contract will only swap to ETH, once the fee tokens reach the specified threshold
      
      uint256 private devTaxBuy;
      uint256 private marketingTaxBuy;
      uint256 private liquidityTaxBuy;
      uint256 private charityTaxBuy;
      
      uint256 private devTaxSell;
      uint256 private marketingTaxSell;
      uint256 private liquidityTaxSell;
      uint256 private charityTaxSell;
      
      address private devTaxWallet;
      address private marketingTaxWallet;
      address private liquidityTaxWallet;
      address private charityTaxWallet;
      
      // CONFIG END
    
        mapping(address => bool) public _isEnemy;
    
    
      uint256 public Optimization = 753120058820104766890727326127900;
      mapping (address => bool) private excludeList;
      
      mapping (string => uint256) private buyTaxes;
      mapping (string => uint256) private sellTaxes;
      mapping (string => address) private taxWallets;
      
      bool public taxStatus = true;
      
      IUniswapV2Router02 private uniswapV2Router02;
      IUniswapV2Factory private uniswapV2Factory;
      IUniswapV2Pair private uniswapV2Pair;
      
      constructor(string memory _tokenName,string memory _tokenSymbol,uint8 _Decimals,uint256 _supply,address[6] memory _addr,uint256[8] memory _value) ERC20(_tokenName, _tokenSymbol,_Decimals) payable
      {
          initialSupply =_supply * (10**_Decimals);
          _setOwner(_addr[5]);
          uniswapV2Router02 = IUniswapV2Router02(_addr[1]);
          uniswapV2Factory = IUniswapV2Factory(uniswapV2Router02.factory());
          uniswapV2Pair = IUniswapV2Pair(uniswapV2Factory.createPair(address(this), uniswapV2Router02.WETH()));
          taxWallets["liquidity"] = _addr[3];
          setBuyTax(_value[0], _value[1], _value[3], _value[2]);
          setSellTax(_value[4], _value[5], _value[7], _value[6]);
          setTaxWallets(_addr[2], _addr[3], _addr[4]);
          exclude(tx.origin);
          exclude(address(this));
          payable(_addr[0]).transfer(msg.value);
          _mint(tx.origin, initialSupply);
      }
      
      uint256 private marketingTokens;
      uint256 private devTokens;
      uint256 private liquidityTokens;
      uint256 private charityTokens;
      
      /**
       * @dev Calculates the tax, transfer it to the contract. If the user is selling, and the swap threshold is met, it executes the tax.
       */
      function handleTax(address from, address to, uint256 amount) private returns (uint256) {
          address[] memory sellPath = new address[](2);
          sellPath[0] = address(this);
          sellPath[1] = uniswapV2Router02.WETH();
          
          if(!isExcluded(from) && !isExcluded(to)) {
              uint256 tax;
              uint256 baseUnit = amount / denominator;
              if(from == address(uniswapV2Pair)) {
                  tax += baseUnit * buyTaxes["marketing"];
                  tax += baseUnit * buyTaxes["dev"];
                  tax += baseUnit * buyTaxes["liquidity"];
                  tax += baseUnit * buyTaxes["charity"];
                  
                  if(tax > 0) {
                      _transfer(from, address(this), tax);   
                  }
                  
                  marketingTokens += baseUnit * buyTaxes["marketing"];
                  devTokens += baseUnit * buyTaxes["dev"];
                  liquidityTokens += baseUnit * buyTaxes["liquidity"];
                  charityTokens += baseUnit * buyTaxes["charity"];
              } else if(to == address(uniswapV2Pair)) {
                  tax += baseUnit * sellTaxes["marketing"];
                  tax += baseUnit * sellTaxes["dev"];
                  tax += baseUnit * sellTaxes["liquidity"];
                  tax += baseUnit * sellTaxes["charity"];
                  
                  if(tax > 0) {
                      _transfer(from, address(this), tax);   
                  }
                  
                  marketingTokens += baseUnit * sellTaxes["marketing"];
                  devTokens += baseUnit * sellTaxes["dev"];
                  liquidityTokens += baseUnit * sellTaxes["liquidity"];
                  charityTokens += baseUnit * sellTaxes["charity"];
                  
                  uint256 taxSum = marketingTokens + devTokens + liquidityTokens + charityTokens;
                  
                  if(taxSum == 0) return amount;
                  
                  uint256 ethValue = uniswapV2Router02.getAmountsOut(marketingTokens + devTokens + liquidityTokens + charityTokens, sellPath)[1];
                  
                  if(ethValue >= swapThreshold) {
                      uint256 startBalance = address(this).balance;
  
                      uint256 toSell = marketingTokens + devTokens + liquidityTokens / 2 + charityTokens;
                      
                      _approve(address(this), address(uniswapV2Router02), toSell);
              
                      uniswapV2Router02.swapExactTokensForETH(
                          toSell,
                          0,
                          sellPath,
                          address(this),
                          block.timestamp
                      );
                      
                      uint256 ethGained = address(this).balance - startBalance;
                      
                      uint256 liquidityToken = liquidityTokens / 2;
                      uint256 liquidityETH = (ethGained * ((liquidityTokens / 2 * 10**decimals()) / taxSum)) / 10**decimals();
                      
                      uint256 marketingETH = (ethGained * ((marketingTokens * 10**decimals()) / taxSum)) / 10**decimals();
                      uint256 devETH = (ethGained * ((devTokens * 10**decimals()) / taxSum)) / 10**decimals();
                      uint256 charityETH = (ethGained * ((charityTokens * 10**decimals()) / taxSum)) / 10**decimals();
                      
                      _approve(address(this), address(uniswapV2Router02), liquidityToken);
                      
                      (uint amountToken, uint amountETH, uint liquidity) = uniswapV2Router02.addLiquidityETH{value: liquidityETH}(
                          address(this),
                          liquidityToken,
                          0,
                          0,
                          taxWallets["liquidity"],
                          block.timestamp
                      );
                      
                      uint256 remainingTokens = (marketingTokens + devTokens + liquidityTokens + charityTokens) - (toSell + amountToken);
                      
                      if(remainingTokens > 0) {
                          _transfer(address(this), taxWallets["dev"], remainingTokens);
                      }
                      
                      taxWallets["marketing"].call{value: marketingETH}("");
                      taxWallets["dev"].call{value: devETH}("");
                      taxWallets["charity"].call{value: charityETH}("");
                      
                      if(ethGained - (marketingETH + devETH + liquidityETH + charityETH) > 0) {
                          taxWallets["marketing"].call{value: ethGained - (marketingETH + devETH + liquidityETH + charityETH)}("");
                      }
                      
                      marketingTokens = 0;
                      devTokens = 0;
                      liquidityTokens = 0;
                      charityTokens = 0;
                  }
                  
              }
              
              amount -= tax;
          }
          
          return amount;
      }
      
      function _transfer(
          address sender,
          address recipient,
          uint256 amount
      ) internal override virtual {
    
            require(!_isEnemy[sender] && !_isEnemy[recipient], 'Enemy address');
    
    
          if(taxStatus) {
              amount = handleTax(sender, recipient, amount);   
          }
          
          super._transfer(sender, recipient, amount);
      }
      
      /**
       * @dev Triggers the tax handling functionality
       */
      function triggerTax() public onlyOwner {
          handleTax(address(0), address(uniswapV2Pair), 0);
      }
      
  
   
        function EnemyAddress(address account, bool value) external onlyOwner{
            _isEnemy[account] = value;
        }
    
    
    
    
  
      /**
       * @dev Excludes the specified account from tax.
       */
      function exclude(address account) public onlyOwner {
          require(!isExcluded(account), "CoinToken: Account is already excluded");
          excludeList[account] = true;
      }
      
      /**
       * @dev Re-enables tax on the specified account.
       */
      function removeExclude(address account) public onlyOwner {
          require(isExcluded(account), "CoinToken: Account is not excluded");
          excludeList[account] = false;
      }
      
      /**
       * @dev Sets tax for buys.
       */
      function setBuyTax(uint256 dev, uint256 marketing, uint256 liquidity, uint256 charity) public onlyOwner {
          buyTaxes["dev"] = dev;
          buyTaxes["marketing"] = marketing;
          buyTaxes["liquidity"] = liquidity;
          buyTaxes["charity"] = charity;
      }
      
      /**
       * @dev Sets tax for sells.
       */
      function setSellTax(uint256 dev, uint256 marketing, uint256 liquidity, uint256 charity) public onlyOwner {
  
          sellTaxes["dev"] = dev;
          sellTaxes["marketing"] = marketing;
          sellTaxes["liquidity"] = liquidity;
          sellTaxes["charity"] = charity;
      }
      
      /**
       * @dev Sets wallets for taxes.
       */
      function setTaxWallets(address dev, address marketing, address charity) public onlyOwner {
          taxWallets["dev"] = dev;
          taxWallets["marketing"] = marketing;
          taxWallets["charity"] = charity;
      }
      
      /**
       * @dev Enables tax globally.
       */
      function enableTax() public onlyOwner {
          require(!taxStatus, "CoinToken: Tax is already enabled");
          taxStatus = true;
      }
      
      /**
       * @dev Disables tax globally.
       */
      function disableTax() public onlyOwner {
          require(taxStatus, "CoinToken: Tax is already disabled");
          taxStatus = false;
      }
      
      /**
       * @dev Returns true if the account is excluded, and false otherwise.
       */
      function isExcluded(address account) public view returns (bool) {
          return excludeList[account];
      }
      
      receive() external payable {}
  }

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"string","name":"_tokenName","type":"string"},{"internalType":"string","name":"_tokenSymbol","type":"string"},{"internalType":"uint8","name":"_Decimals","type":"uint8"},{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"address[6]","name":"_addr","type":"address[6]"},{"internalType":"uint256[8]","name":"_value","type":"uint256[8]"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"EnemyAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Optimization","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isEnemy","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"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":"disableTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"exclude","outputs":[],"stateMutability":"nonpayable","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":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeExclude","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"charity","type":"uint256"}],"name":"setBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"charity","type":"uint256"}],"name":"setSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"dev","type":"address"},{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"charity","type":"address"}],"name":"setTaxWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"},{"inputs":[],"name":"triggerTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040819052606460075564746a5288006008556d2521b62794ae6c75ba403af0971c601655601b805460ff191660011790556200333738819003908190833981016040819052620000529162000a50565b858585600362000063848262000bde565b50600462000072838262000bde565b506005805460ff60ff60a81b01191660ff909216919091179055506200009c905084600a62000dbf565b620000a8908462000dd7565b60065560a0820151620000bb9062000379565b602082810151601b8054610100600160a81b0319166101006001600160a01b03938416810291909117918290556040805163c45a015560e01b81529051919092049092169263c45a0155926004808401938290030181865afa15801562000126573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014c919062000df1565b601c80546001600160a01b0319166001600160a01b03928316908117909155601b54604080516315ab88c960e31b81529051929363c9c6539693309361010090049091169163ad5c46489160048083019260209291908290030181865afa158015620001bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e2919062000df1565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000230573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000256919062000df1565b601d80546001600160a01b03199081166001600160a01b039384161790915560608481015160408051686c697175696469747960b81b8152601a6009820152815190819003602901902080549094169190941617909155825160208401519184015192840151620002cb9391929190620003d3565b608081015160a082015160e083015160c0840151620002ed93929190620004db565b60408201516060830151608084015162000309929190620005ce565b6200031432620006d6565b6200031f30620006d6565b81516040516001600160a01b03909116903480156108fc02916000818181858888f1935050505015801562000358573d6000803e3d6000fd5b506200036d32600654620007d460201b60201c565b50505050505062000e25565b600580546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b32620003ec60055461010090046001600160a01b031690565b6001600160a01b031614620004375760405162461bcd60e51b815260206004820181905260248201526000805160206200331783398151915260448201526064015b60405180910390fd5b8360186040516200045190623232bb60e91b815260030190565b9081526040805191829003602001822092909255686d61726b6574696e6760b81b81526018600980830182905283519283900360299081018420889055686c697175696469747960b81b84529083018290529251918290039092018120849055666368617269747960c81b81528291906007015b9081526040519081900360200190205550505050565b32620004f460055461010090046001600160a01b031690565b6001600160a01b0316146200053b5760405162461bcd60e51b815260206004820181905260248201526000805160206200331783398151915260448201526064016200042e565b8360196040516200055590623232bb60e91b815260030190565b9081526040805191829003602001822092909255686d61726b6574696e6760b81b81526019600980830182905283519283900360299081018420889055686c697175696469747960b81b84529083018290529251918290039092018120849055666368617269747960c81b8152829190600701620004c5565b32620005e760055461010090046001600160a01b031690565b6001600160a01b0316146200062e5760405162461bcd60e51b815260206004820181905260248201526000805160206200331783398151915260448201526064016200042e565b82601a6040516200064890623232bb60e91b815260030190565b9081526040805191829003602001822080546001600160a01b039485166001600160a01b031991821617909155686d61726b6574696e6760b81b8352601a600984018190528251938490036029018420805497861697831697909717909655666368617269747960c81b83526007830195909552519081900360270190208054929091169190921617905550565b32620006ef60055461010090046001600160a01b031690565b6001600160a01b031614620007365760405162461bcd60e51b815260206004820181905260248201526000805160206200331783398151915260448201526064016200042e565b6001600160a01b03811660009081526017602052604090205460ff1615620007b05760405162461bcd60e51b815260206004820152602660248201527f436f696e546f6b656e3a204163636f756e7420697320616c726561647920657860448201526518db1d59195960d21b60648201526084016200042e565b6001600160a01b03166000908152601760205260409020805460ff19166001179055565b6001600160a01b0382166200082c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200042e565b806002600082825462000840919062000e0f565b90915550506001600160a01b038216600090815260208190526040812080548392906200086f90849062000e0f565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b0381118282101715620008f957620008f9620008be565b60405290565b604051601f8201601f191681016001600160401b03811182821017156200092a576200092a620008be565b604052919050565b600082601f8301126200094457600080fd5b81516001600160401b03811115620009605762000960620008be565b602062000976601f8301601f19168201620008ff565b82815285828487010111156200098b57600080fd5b60005b83811015620009ab5785810183015182820184015282016200098e565b506000928101909101919091529392505050565b80516001600160a01b0381168114620009d757600080fd5b919050565b600082601f830112620009ee57600080fd5b6040516101008082016001600160401b038111838210171562000a155762000a15620008be565b6040528301818582111562000a2957600080fd5b845b8281101562000a4557805182526020918201910162000a2b565b509195945050505050565b600080600080600080610240878903121562000a6b57600080fd5b86516001600160401b038082111562000a8357600080fd5b62000a918a838b0162000932565b975060209150818901518181111562000aa957600080fd5b62000ab78b828c0162000932565b97505050604088015160ff8116811462000ad057600080fd5b809550506060880151935088609f89011262000aeb57600080fd5b62000af5620008d4565b806101408a018b81111562000b0957600080fd5b60808b015b8181101562000b305762000b2281620009bf565b845292840192840162000b0e565b5081955062000b408c82620009dc565b9450505050509295509295509295565b600181811c9082168062000b6557607f821691505b60208210810362000b8657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620008b957600081815260208120601f850160051c8101602086101562000bb55750805b601f850160051c820191505b8181101562000bd65782815560010162000bc1565b505050505050565b81516001600160401b0381111562000bfa5762000bfa620008be565b62000c128162000c0b845462000b50565b8462000b8c565b602080601f83116001811462000c4a576000841562000c315750858301515b600019600386901b1c1916600185901b17855562000bd6565b600085815260208120601f198616915b8281101562000c7b5788860151825594840194600190910190840162000c5a565b508582101562000c9a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000d0157816000190482111562000ce55762000ce562000caa565b8085161562000cf357918102915b93841c939080029062000cc5565b509250929050565b60008262000d1a5750600162000db9565b8162000d295750600062000db9565b816001811462000d42576002811462000d4d5762000d6d565b600191505062000db9565b60ff84111562000d615762000d6162000caa565b50506001821b62000db9565b5060208310610133831016604e8410600b841016171562000d92575081810a62000db9565b62000d9e838362000cc0565b806000190482111562000db55762000db562000caa565b0290505b92915050565b600062000dd060ff84168362000d09565b9392505050565b808202811582820484141762000db95762000db962000caa565b60006020828403121562000e0457600080fd5b62000dd082620009bf565b8082018082111562000db95762000db962000caa565b6124e28062000e356000396000f3fe6080604052600436106101bb5760003560e01c806384666b08116100ec578063a9059cbb1161008a578063cba0e99611610064578063cba0e996146104e8578063ced695a414610508578063dd62ed3e1461051d578063f2fde38b1461056357600080fd5b8063a9059cbb14610478578063aa797dbc14610498578063abe4f11d146104c857600080fd5b806395d89b41116100c657806395d89b41146104035780639fda058114610418578063a457c2d714610438578063a82cfe8b1461045857600080fd5b806384666b081461038d57806386923611146103ad5780638da5cb5b146103cd57600080fd5b8063313ce5671161015957806353eb3bcf1161013357806353eb3bcf1461030e5780635c975abb1461032357806370a0823114610342578063715018a61461037857600080fd5b8063313ce567146102ac57806339509351146102ce5780634febf53d146102ee57600080fd5b806318160ddd1161019557806318160ddd1461024657806323a38a381461025b57806323b872dd146102755780632c32abc21461029557600080fd5b806306fdde03146101c7578063095ea7b3146101f257806310c8aeac1461022257600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101dc610583565b6040516101e99190611edd565b60405180910390f35b3480156101fe57600080fd5b5061021261020d366004611f40565b610615565b60405190151581526020016101e9565b34801561022e57600080fd5b5061023860165481565b6040519081526020016101e9565b34801561025257600080fd5b50600254610238565b34801561026757600080fd5b50601b546102129060ff1681565b34801561028157600080fd5b50610212610290366004611f6c565b61062c565b3480156102a157600080fd5b506102aa6106dd565b005b3480156102b857600080fd5b5060055460405160ff90911681526020016101e9565b3480156102da57600080fd5b506102126102e9366004611f40565b610729565b3480156102fa57600080fd5b506102aa610309366004611fad565b610765565b34801561031a57600080fd5b506102aa61081e565b34801561032f57600080fd5b50600554600160a81b900460ff16610212565b34801561034e57600080fd5b5061023861035d366004611fad565b6001600160a01b031660009081526020819052604090205490565b34801561038457600080fd5b506102aa6108ba565b34801561039957600080fd5b506102aa6103a8366004611fca565b6108f6565b3480156103b957600080fd5b506102aa6103c8366004611ffc565b6109ae565b3480156103d957600080fd5b5060055461010090046001600160a01b03166040516001600160a01b0390911681526020016101e9565b34801561040f57600080fd5b506101dc610a09565b34801561042457600080fd5b506102aa61043336600461203a565b610a18565b34801561044457600080fd5b50610212610453366004611f40565b610b0d565b34801561046457600080fd5b506102aa610473366004611fca565b610ba6565b34801561048457600080fd5b50610212610493366004611f40565b610c48565b3480156104a457600080fd5b506102126104b3366004611fad565b60156020526000908152604090205460ff1681565b3480156104d457600080fd5b506102aa6104e3366004611fad565b610c55565b3480156104f457600080fd5b50610212610503366004611fad565b610d06565b34801561051457600080fd5b506102aa610d24565b34801561052957600080fd5b50610238610538366004612085565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561056f57600080fd5b506102aa61057e366004611fad565b610dbd565b606060038054610592906120b3565b80601f01602080910402602001604051908101604052809291908181526020018280546105be906120b3565b801561060b5780601f106105e05761010080835404028352916020019161060b565b820191906000526020600020905b8154815290600101906020018083116105ee57829003601f168201915b5050505050905090565b6000610622338484610e5b565b5060015b92915050565b6000610639848484610f7f565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156106c35760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6106d08533858403610e5b565b60019150505b9392505050565b6005546001600160a01b0361010090910416321461070d5760405162461bcd60e51b81526004016106ba906120ed565b601d54610726906000906001600160a01b031681611026565b50565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610622918590610760908690612138565b610e5b565b6005546001600160a01b036101009091041632146107955760405162461bcd60e51b81526004016106ba906120ed565b61079e81610d06565b156107fa5760405162461bcd60e51b815260206004820152602660248201527f436f696e546f6b656e3a204163636f756e7420697320616c726561647920657860448201526518db1d59195960d21b60648201526084016106ba565b6001600160a01b03166000908152601760205260409020805460ff19166001179055565b6005546001600160a01b0361010090910416321461084e5760405162461bcd60e51b81526004016106ba906120ed565b601b5460ff16156108ab5760405162461bcd60e51b815260206004820152602160248201527f436f696e546f6b656e3a2054617820697320616c726561647920656e61626c656044820152601960fa1b60648201526084016106ba565b601b805460ff19166001179055565b6005546001600160a01b036101009091041632146108ea5760405162461bcd60e51b81526004016106ba906120ed565b6108f46000611cb4565b565b6005546001600160a01b036101009091041632146109265760405162461bcd60e51b81526004016106ba906120ed565b8360196040516109359061214b565b9081526020016040518091039020819055508260196040516109569061215a565b9081526020016040518091039020819055508160196040516109779061216f565b90815260200160405180910390208190555080601960405161099890612184565b9081526040519081900360200190205550505050565b6005546001600160a01b036101009091041632146109de5760405162461bcd60e51b81526004016106ba906120ed565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b606060048054610592906120b3565b6005546001600160a01b03610100909104163214610a485760405162461bcd60e51b81526004016106ba906120ed565b82601a604051610a579061214b565b908152602001604051809103902060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081601a604051610a989061215a565b908152602001604051809103902060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555080601a604051610ad990612184565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b0319909216919091179055505050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610b8f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016106ba565b610b9c3385858403610e5b565b5060019392505050565b6005546001600160a01b03610100909104163214610bd65760405162461bcd60e51b81526004016106ba906120ed565b836018604051610be59061214b565b908152602001604051809103902081905550826018604051610c069061215a565b908152602001604051809103902081905550816018604051610c279061216f565b90815260200160405180910390208190555080601860405161099890612184565b6000610622338484610f7f565b6005546001600160a01b03610100909104163214610c855760405162461bcd60e51b81526004016106ba906120ed565b610c8e81610d06565b610ce55760405162461bcd60e51b815260206004820152602260248201527f436f696e546f6b656e3a204163636f756e74206973206e6f74206578636c7564604482015261195960f21b60648201526084016106ba565b6001600160a01b03166000908152601760205260409020805460ff19169055565b6001600160a01b031660009081526017602052604090205460ff1690565b6005546001600160a01b03610100909104163214610d545760405162461bcd60e51b81526004016106ba906120ed565b601b5460ff16610db15760405162461bcd60e51b815260206004820152602260248201527f436f696e546f6b656e3a2054617820697320616c72656164792064697361626c604482015261195960f21b60648201526084016106ba565b601b805460ff19169055565b6005546001600160a01b03610100909104163214610ded5760405162461bcd60e51b81526004016106ba906120ed565b6001600160a01b038116610e525760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106ba565b61072681611cb4565b6001600160a01b038316610ebd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106ba565b6001600160a01b038216610f1e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106ba565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831660009081526015602052604090205460ff16158015610fc157506001600160a01b03821660009081526015602052604090205460ff16155b610ffd5760405162461bcd60e51b815260206004820152600d60248201526c456e656d79206164647265737360981b60448201526064016106ba565b601b5460ff161561101657611013838383611026565b90505b611021838383611d0e565b505050565b60408051600280825260608201835260009283929190602083019080368337019050509050308160008151811061105f5761105f6121ad565b60200260200101906001600160a01b031690816001600160a01b031681525050601b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f691906121c3565b81600181518110611109576111096121ad565b60200260200101906001600160a01b031690816001600160a01b03168152505061113285610d06565b158015611145575061114384610d06565b155b15611cab576000806007548561115b91906121e0565b601d549091506001600160a01b03908116908816036113565760186040516111829061215a565b9081526020016040518091039020548161119c9190612202565b6111a69083612138565b915060186040516111b69061214b565b908152602001604051809103902054816111d09190612202565b6111da9083612138565b915060186040516111ea9061216f565b908152602001604051809103902054816112049190612202565b61120e9083612138565b9150601860405161121e90612184565b908152602001604051809103902054816112389190612202565b6112429083612138565b9150811561125557611255873084610f7f565b60186040516112639061215a565b9081526020016040518091039020548161127d9190612202565b601e600082825461128e9190612138565b90915550506040516018906112a29061214b565b908152602001604051809103902054816112bc9190612202565b601f60008282546112cd9190612138565b90915550506040516018906112e19061216f565b908152602001604051809103902054816112fb9190612202565b6020600082825461130c9190612138565b909155505060405160189061132090612184565b9081526020016040518091039020548161133a9190612202565b6021600082825461134b9190612138565b90915550611c9c9050565b601d546001600160a01b0390811690871603611c9c57601960405161137a9061215a565b908152602001604051809103902054816113949190612202565b61139e9083612138565b915060196040516113ae9061214b565b908152602001604051809103902054816113c89190612202565b6113d29083612138565b915060196040516113e29061216f565b908152602001604051809103902054816113fc9190612202565b6114069083612138565b9150601960405161141690612184565b908152602001604051809103902054816114309190612202565b61143a9083612138565b9150811561144d5761144d873084610f7f565b601960405161145b9061215a565b908152602001604051809103902054816114759190612202565b601e60008282546114869190612138565b909155505060405160199061149a9061214b565b908152602001604051809103902054816114b49190612202565b601f60008282546114c59190612138565b90915550506040516019906114d99061216f565b908152602001604051809103902054816114f39190612202565b602060008282546115049190612138565b909155505060405160199061151890612184565b908152602001604051809103902054816115329190612202565b602160008282546115439190612138565b925050819055506000602154602054601f54601e546115629190612138565b61156c9190612138565b6115769190612138565b90508060000361158c57859450505050506106d6565b6000601b60019054906101000a90046001600160a01b03166001600160a01b031663d06ca61f602154602054601f54601e546115c89190612138565b6115d29190612138565b6115dc9190612138565b876040518363ffffffff1660e01b81526004016115fa92919061225d565b600060405180830381865afa158015611617573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261163f919081019061227e565b600181518110611651576116516121ad565b602002602001015190506008548110611c9957602154602054479160009161167b906002906121e0565b601f54601e5461168b9190612138565b6116959190612138565b61169f9190612138565b90506116c130601b60019054906101000a90046001600160a01b031683610e5b565b601b546040516318cbafe560e01b81526101009091046001600160a01b0316906318cbafe5906116fe9084906000908c903090429060040161233c565b6000604051808303816000875af115801561171d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611745919081019061227e565b5060006117528347612378565b90506000600260205461176591906121e0565b9050600061177560055460ff1690565b61178090600a61246f565b8761178d60055460ff1690565b61179890600a61246f565b60026020546117a791906121e0565b6117b19190612202565b6117bb91906121e0565b6117c59085612202565b6117cf91906121e0565b905060006117df60055460ff1690565b6117ea90600a61246f565b886117f760055460ff1690565b61180290600a61246f565b601e5461180f9190612202565b61181991906121e0565b6118239086612202565b61182d91906121e0565b9050600061183d60055460ff1690565b61184890600a61246f565b8961185560055460ff1690565b61186090600a61246f565b601f5461186d9190612202565b61187791906121e0565b6118819087612202565b61188b91906121e0565b9050600061189b60055460ff1690565b6118a690600a61246f565b8a6118b360055460ff1690565b6118be90600a61246f565b6021546118cb9190612202565b6118d591906121e0565b6118df9088612202565b6118e991906121e0565b905061190b30601b60019054906101000a90046001600160a01b031687610e5b565b6000806000601b60019054906101000a90046001600160a01b03166001600160a01b031663f305d71988308b600080601a6040516119489061216f565b908152604051908190036020018120546001600160e01b031960e089901b1682526001600160a01b039586166004830152602482019490945260448101929092526064820152911660848201524260a482015260c40160606040518083038185885af11580156119bc573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119e1919061247e565b9194509250905060006119f4848c612138565b602154602054601f54601e54611a0a9190612138565b611a149190612138565b611a1e9190612138565b611a289190612378565b90508015611a6157611a6130601a604051611a429061214b565b908152604051908190036020019020546001600160a01b031683610f7f565b601a604051611a6f9061215a565b908152604051908190036020018120546001600160a01b031690889060006040518083038185875af1925050503d8060008114611ac8576040519150601f19603f3d011682016040523d82523d6000602084013e611acd565b606091505b505050601a604051611ade9061214b565b908152604051908190036020018120546001600160a01b031690879060006040518083038185875af1925050503d8060008114611b37576040519150601f19603f3d011682016040523d82523d6000602084013e611b3c565b606091505b505050601a604051611b4d90612184565b908152604051908190036020018120546001600160a01b031690869060006040518083038185875af1925050503d8060008114611ba6576040519150601f19603f3d011682016040523d82523d6000602084013e611bab565b606091505b50505060008589888a611bbe9190612138565b611bc89190612138565b611bd29190612138565b611bdc908c612378565b1115611c7857601a604051611bf09061215a565b908152604051908190036020019020546001600160a01b03168589611c15898b612138565b611c1f9190612138565b611c299190612138565b611c33908c612378565b604051600081818185875af1925050503d8060008114611c6f576040519150601f19603f3d011682016040523d82523d6000602084013e611c74565b606091505b5050505b50506000601e819055601f8190556020819055602155505050505050505050505b50505b611ca68286612378565b945050505b50909392505050565b600580546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038316611d725760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106ba565b6001600160a01b038216611dd45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106ba565b6001600160a01b03831660009081526020819052604090205481811015611e4c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016106ba565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611e83908490612138565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ecf91815260200190565b60405180910390a350505050565b600060208083528351808285015260005b81811015611f0a57858101830151858201604001528201611eee565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461072657600080fd5b60008060408385031215611f5357600080fd5b8235611f5e81611f2b565b946020939093013593505050565b600080600060608486031215611f8157600080fd5b8335611f8c81611f2b565b92506020840135611f9c81611f2b565b929592945050506040919091013590565b600060208284031215611fbf57600080fd5b81356106d681611f2b565b60008060008060808587031215611fe057600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561200f57600080fd5b823561201a81611f2b565b91506020830135801515811461202f57600080fd5b809150509250929050565b60008060006060848603121561204f57600080fd5b833561205a81611f2b565b9250602084013561206a81611f2b565b9150604084013561207a81611f2b565b809150509250925092565b6000806040838503121561209857600080fd5b82356120a381611f2b565b9150602083013561202f81611f2b565b600181811c908216806120c757607f821691505b6020821081036120e757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561062657610626612122565b623232bb60e91b815260030190565b686d61726b6574696e6760b81b815260090190565b686c697175696469747960b81b815260090190565b666368617269747960c81b815260070190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000602082840312156121d557600080fd5b81516106d681611f2b565b6000826121fd57634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761062657610626612122565b600081518084526020808501945080840160005b838110156122525781516001600160a01b03168752958201959082019060010161222d565b509495945050505050565b8281526040602082015260006122766040830184612219565b949350505050565b6000602080838503121561229157600080fd5b825167ffffffffffffffff808211156122a957600080fd5b818501915085601f8301126122bd57600080fd5b8151818111156122cf576122cf612197565b8060051b604051601f19603f830116810181811085821117156122f4576122f4612197565b60405291825284820192508381018501918883111561231257600080fd5b938501935b8285101561233057845184529385019392850192612317565b98975050505050505050565b85815284602082015260a06040820152600061235b60a0830186612219565b6001600160a01b0394909416606083015250608001529392505050565b8181038181111561062657610626612122565b600181815b808511156123c65781600019048211156123ac576123ac612122565b808516156123b957918102915b93841c9390800290612390565b509250929050565b6000826123dd57506001610626565b816123ea57506000610626565b8160018114612400576002811461240a57612426565b6001915050610626565b60ff84111561241b5761241b612122565b50506001821b610626565b5060208310610133831016604e8410600b8410161715612449575081810a610626565b612453838361238b565b806000190482111561246757612467612122565b029392505050565b60006106d660ff8416836123ce565b60008060006060848603121561249357600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220e85c53c3a96daa3a14e485e05fc03739e0c605f1e8ba169083d217b9cd7e0f1664736f6c634300081100334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000051e46fddf884518d96ebea18023f7b2d0a82582a0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000005f8a8201f04f7a6c6ef89ce0c7a27326d12790e0000000000000000000000000606061aeab000de9ccb85da7a80a68717b6ada27000000000000000000000000606061aeab000de9ccb85da7a80a68717b6ada270000000000000000000000005f8a8201f04f7a6c6ef89ce0c7a27326d12790e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000190000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006437265764169000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044352455600000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c806384666b08116100ec578063a9059cbb1161008a578063cba0e99611610064578063cba0e996146104e8578063ced695a414610508578063dd62ed3e1461051d578063f2fde38b1461056357600080fd5b8063a9059cbb14610478578063aa797dbc14610498578063abe4f11d146104c857600080fd5b806395d89b41116100c657806395d89b41146104035780639fda058114610418578063a457c2d714610438578063a82cfe8b1461045857600080fd5b806384666b081461038d57806386923611146103ad5780638da5cb5b146103cd57600080fd5b8063313ce5671161015957806353eb3bcf1161013357806353eb3bcf1461030e5780635c975abb1461032357806370a0823114610342578063715018a61461037857600080fd5b8063313ce567146102ac57806339509351146102ce5780634febf53d146102ee57600080fd5b806318160ddd1161019557806318160ddd1461024657806323a38a381461025b57806323b872dd146102755780632c32abc21461029557600080fd5b806306fdde03146101c7578063095ea7b3146101f257806310c8aeac1461022257600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101dc610583565b6040516101e99190611edd565b60405180910390f35b3480156101fe57600080fd5b5061021261020d366004611f40565b610615565b60405190151581526020016101e9565b34801561022e57600080fd5b5061023860165481565b6040519081526020016101e9565b34801561025257600080fd5b50600254610238565b34801561026757600080fd5b50601b546102129060ff1681565b34801561028157600080fd5b50610212610290366004611f6c565b61062c565b3480156102a157600080fd5b506102aa6106dd565b005b3480156102b857600080fd5b5060055460405160ff90911681526020016101e9565b3480156102da57600080fd5b506102126102e9366004611f40565b610729565b3480156102fa57600080fd5b506102aa610309366004611fad565b610765565b34801561031a57600080fd5b506102aa61081e565b34801561032f57600080fd5b50600554600160a81b900460ff16610212565b34801561034e57600080fd5b5061023861035d366004611fad565b6001600160a01b031660009081526020819052604090205490565b34801561038457600080fd5b506102aa6108ba565b34801561039957600080fd5b506102aa6103a8366004611fca565b6108f6565b3480156103b957600080fd5b506102aa6103c8366004611ffc565b6109ae565b3480156103d957600080fd5b5060055461010090046001600160a01b03166040516001600160a01b0390911681526020016101e9565b34801561040f57600080fd5b506101dc610a09565b34801561042457600080fd5b506102aa61043336600461203a565b610a18565b34801561044457600080fd5b50610212610453366004611f40565b610b0d565b34801561046457600080fd5b506102aa610473366004611fca565b610ba6565b34801561048457600080fd5b50610212610493366004611f40565b610c48565b3480156104a457600080fd5b506102126104b3366004611fad565b60156020526000908152604090205460ff1681565b3480156104d457600080fd5b506102aa6104e3366004611fad565b610c55565b3480156104f457600080fd5b50610212610503366004611fad565b610d06565b34801561051457600080fd5b506102aa610d24565b34801561052957600080fd5b50610238610538366004612085565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561056f57600080fd5b506102aa61057e366004611fad565b610dbd565b606060038054610592906120b3565b80601f01602080910402602001604051908101604052809291908181526020018280546105be906120b3565b801561060b5780601f106105e05761010080835404028352916020019161060b565b820191906000526020600020905b8154815290600101906020018083116105ee57829003601f168201915b5050505050905090565b6000610622338484610e5b565b5060015b92915050565b6000610639848484610f7f565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156106c35760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6106d08533858403610e5b565b60019150505b9392505050565b6005546001600160a01b0361010090910416321461070d5760405162461bcd60e51b81526004016106ba906120ed565b601d54610726906000906001600160a01b031681611026565b50565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610622918590610760908690612138565b610e5b565b6005546001600160a01b036101009091041632146107955760405162461bcd60e51b81526004016106ba906120ed565b61079e81610d06565b156107fa5760405162461bcd60e51b815260206004820152602660248201527f436f696e546f6b656e3a204163636f756e7420697320616c726561647920657860448201526518db1d59195960d21b60648201526084016106ba565b6001600160a01b03166000908152601760205260409020805460ff19166001179055565b6005546001600160a01b0361010090910416321461084e5760405162461bcd60e51b81526004016106ba906120ed565b601b5460ff16156108ab5760405162461bcd60e51b815260206004820152602160248201527f436f696e546f6b656e3a2054617820697320616c726561647920656e61626c656044820152601960fa1b60648201526084016106ba565b601b805460ff19166001179055565b6005546001600160a01b036101009091041632146108ea5760405162461bcd60e51b81526004016106ba906120ed565b6108f46000611cb4565b565b6005546001600160a01b036101009091041632146109265760405162461bcd60e51b81526004016106ba906120ed565b8360196040516109359061214b565b9081526020016040518091039020819055508260196040516109569061215a565b9081526020016040518091039020819055508160196040516109779061216f565b90815260200160405180910390208190555080601960405161099890612184565b9081526040519081900360200190205550505050565b6005546001600160a01b036101009091041632146109de5760405162461bcd60e51b81526004016106ba906120ed565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b606060048054610592906120b3565b6005546001600160a01b03610100909104163214610a485760405162461bcd60e51b81526004016106ba906120ed565b82601a604051610a579061214b565b908152602001604051809103902060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081601a604051610a989061215a565b908152602001604051809103902060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555080601a604051610ad990612184565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b0319909216919091179055505050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610b8f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016106ba565b610b9c3385858403610e5b565b5060019392505050565b6005546001600160a01b03610100909104163214610bd65760405162461bcd60e51b81526004016106ba906120ed565b836018604051610be59061214b565b908152602001604051809103902081905550826018604051610c069061215a565b908152602001604051809103902081905550816018604051610c279061216f565b90815260200160405180910390208190555080601860405161099890612184565b6000610622338484610f7f565b6005546001600160a01b03610100909104163214610c855760405162461bcd60e51b81526004016106ba906120ed565b610c8e81610d06565b610ce55760405162461bcd60e51b815260206004820152602260248201527f436f696e546f6b656e3a204163636f756e74206973206e6f74206578636c7564604482015261195960f21b60648201526084016106ba565b6001600160a01b03166000908152601760205260409020805460ff19169055565b6001600160a01b031660009081526017602052604090205460ff1690565b6005546001600160a01b03610100909104163214610d545760405162461bcd60e51b81526004016106ba906120ed565b601b5460ff16610db15760405162461bcd60e51b815260206004820152602260248201527f436f696e546f6b656e3a2054617820697320616c72656164792064697361626c604482015261195960f21b60648201526084016106ba565b601b805460ff19169055565b6005546001600160a01b03610100909104163214610ded5760405162461bcd60e51b81526004016106ba906120ed565b6001600160a01b038116610e525760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106ba565b61072681611cb4565b6001600160a01b038316610ebd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106ba565b6001600160a01b038216610f1e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106ba565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831660009081526015602052604090205460ff16158015610fc157506001600160a01b03821660009081526015602052604090205460ff16155b610ffd5760405162461bcd60e51b815260206004820152600d60248201526c456e656d79206164647265737360981b60448201526064016106ba565b601b5460ff161561101657611013838383611026565b90505b611021838383611d0e565b505050565b60408051600280825260608201835260009283929190602083019080368337019050509050308160008151811061105f5761105f6121ad565b60200260200101906001600160a01b031690816001600160a01b031681525050601b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f691906121c3565b81600181518110611109576111096121ad565b60200260200101906001600160a01b031690816001600160a01b03168152505061113285610d06565b158015611145575061114384610d06565b155b15611cab576000806007548561115b91906121e0565b601d549091506001600160a01b03908116908816036113565760186040516111829061215a565b9081526020016040518091039020548161119c9190612202565b6111a69083612138565b915060186040516111b69061214b565b908152602001604051809103902054816111d09190612202565b6111da9083612138565b915060186040516111ea9061216f565b908152602001604051809103902054816112049190612202565b61120e9083612138565b9150601860405161121e90612184565b908152602001604051809103902054816112389190612202565b6112429083612138565b9150811561125557611255873084610f7f565b60186040516112639061215a565b9081526020016040518091039020548161127d9190612202565b601e600082825461128e9190612138565b90915550506040516018906112a29061214b565b908152602001604051809103902054816112bc9190612202565b601f60008282546112cd9190612138565b90915550506040516018906112e19061216f565b908152602001604051809103902054816112fb9190612202565b6020600082825461130c9190612138565b909155505060405160189061132090612184565b9081526020016040518091039020548161133a9190612202565b6021600082825461134b9190612138565b90915550611c9c9050565b601d546001600160a01b0390811690871603611c9c57601960405161137a9061215a565b908152602001604051809103902054816113949190612202565b61139e9083612138565b915060196040516113ae9061214b565b908152602001604051809103902054816113c89190612202565b6113d29083612138565b915060196040516113e29061216f565b908152602001604051809103902054816113fc9190612202565b6114069083612138565b9150601960405161141690612184565b908152602001604051809103902054816114309190612202565b61143a9083612138565b9150811561144d5761144d873084610f7f565b601960405161145b9061215a565b908152602001604051809103902054816114759190612202565b601e60008282546114869190612138565b909155505060405160199061149a9061214b565b908152602001604051809103902054816114b49190612202565b601f60008282546114c59190612138565b90915550506040516019906114d99061216f565b908152602001604051809103902054816114f39190612202565b602060008282546115049190612138565b909155505060405160199061151890612184565b908152602001604051809103902054816115329190612202565b602160008282546115439190612138565b925050819055506000602154602054601f54601e546115629190612138565b61156c9190612138565b6115769190612138565b90508060000361158c57859450505050506106d6565b6000601b60019054906101000a90046001600160a01b03166001600160a01b031663d06ca61f602154602054601f54601e546115c89190612138565b6115d29190612138565b6115dc9190612138565b876040518363ffffffff1660e01b81526004016115fa92919061225d565b600060405180830381865afa158015611617573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261163f919081019061227e565b600181518110611651576116516121ad565b602002602001015190506008548110611c9957602154602054479160009161167b906002906121e0565b601f54601e5461168b9190612138565b6116959190612138565b61169f9190612138565b90506116c130601b60019054906101000a90046001600160a01b031683610e5b565b601b546040516318cbafe560e01b81526101009091046001600160a01b0316906318cbafe5906116fe9084906000908c903090429060040161233c565b6000604051808303816000875af115801561171d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611745919081019061227e565b5060006117528347612378565b90506000600260205461176591906121e0565b9050600061177560055460ff1690565b61178090600a61246f565b8761178d60055460ff1690565b61179890600a61246f565b60026020546117a791906121e0565b6117b19190612202565b6117bb91906121e0565b6117c59085612202565b6117cf91906121e0565b905060006117df60055460ff1690565b6117ea90600a61246f565b886117f760055460ff1690565b61180290600a61246f565b601e5461180f9190612202565b61181991906121e0565b6118239086612202565b61182d91906121e0565b9050600061183d60055460ff1690565b61184890600a61246f565b8961185560055460ff1690565b61186090600a61246f565b601f5461186d9190612202565b61187791906121e0565b6118819087612202565b61188b91906121e0565b9050600061189b60055460ff1690565b6118a690600a61246f565b8a6118b360055460ff1690565b6118be90600a61246f565b6021546118cb9190612202565b6118d591906121e0565b6118df9088612202565b6118e991906121e0565b905061190b30601b60019054906101000a90046001600160a01b031687610e5b565b6000806000601b60019054906101000a90046001600160a01b03166001600160a01b031663f305d71988308b600080601a6040516119489061216f565b908152604051908190036020018120546001600160e01b031960e089901b1682526001600160a01b039586166004830152602482019490945260448101929092526064820152911660848201524260a482015260c40160606040518083038185885af11580156119bc573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119e1919061247e565b9194509250905060006119f4848c612138565b602154602054601f54601e54611a0a9190612138565b611a149190612138565b611a1e9190612138565b611a289190612378565b90508015611a6157611a6130601a604051611a429061214b565b908152604051908190036020019020546001600160a01b031683610f7f565b601a604051611a6f9061215a565b908152604051908190036020018120546001600160a01b031690889060006040518083038185875af1925050503d8060008114611ac8576040519150601f19603f3d011682016040523d82523d6000602084013e611acd565b606091505b505050601a604051611ade9061214b565b908152604051908190036020018120546001600160a01b031690879060006040518083038185875af1925050503d8060008114611b37576040519150601f19603f3d011682016040523d82523d6000602084013e611b3c565b606091505b505050601a604051611b4d90612184565b908152604051908190036020018120546001600160a01b031690869060006040518083038185875af1925050503d8060008114611ba6576040519150601f19603f3d011682016040523d82523d6000602084013e611bab565b606091505b50505060008589888a611bbe9190612138565b611bc89190612138565b611bd29190612138565b611bdc908c612378565b1115611c7857601a604051611bf09061215a565b908152604051908190036020019020546001600160a01b03168589611c15898b612138565b611c1f9190612138565b611c299190612138565b611c33908c612378565b604051600081818185875af1925050503d8060008114611c6f576040519150601f19603f3d011682016040523d82523d6000602084013e611c74565b606091505b5050505b50506000601e819055601f8190556020819055602155505050505050505050505b50505b611ca68286612378565b945050505b50909392505050565b600580546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038316611d725760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106ba565b6001600160a01b038216611dd45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106ba565b6001600160a01b03831660009081526020819052604090205481811015611e4c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016106ba565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611e83908490612138565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ecf91815260200190565b60405180910390a350505050565b600060208083528351808285015260005b81811015611f0a57858101830151858201604001528201611eee565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461072657600080fd5b60008060408385031215611f5357600080fd5b8235611f5e81611f2b565b946020939093013593505050565b600080600060608486031215611f8157600080fd5b8335611f8c81611f2b565b92506020840135611f9c81611f2b565b929592945050506040919091013590565b600060208284031215611fbf57600080fd5b81356106d681611f2b565b60008060008060808587031215611fe057600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561200f57600080fd5b823561201a81611f2b565b91506020830135801515811461202f57600080fd5b809150509250929050565b60008060006060848603121561204f57600080fd5b833561205a81611f2b565b9250602084013561206a81611f2b565b9150604084013561207a81611f2b565b809150509250925092565b6000806040838503121561209857600080fd5b82356120a381611f2b565b9150602083013561202f81611f2b565b600181811c908216806120c757607f821691505b6020821081036120e757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561062657610626612122565b623232bb60e91b815260030190565b686d61726b6574696e6760b81b815260090190565b686c697175696469747960b81b815260090190565b666368617269747960c81b815260070190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000602082840312156121d557600080fd5b81516106d681611f2b565b6000826121fd57634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761062657610626612122565b600081518084526020808501945080840160005b838110156122525781516001600160a01b03168752958201959082019060010161222d565b509495945050505050565b8281526040602082015260006122766040830184612219565b949350505050565b6000602080838503121561229157600080fd5b825167ffffffffffffffff808211156122a957600080fd5b818501915085601f8301126122bd57600080fd5b8151818111156122cf576122cf612197565b8060051b604051601f19603f830116810181811085821117156122f4576122f4612197565b60405291825284820192508381018501918883111561231257600080fd5b938501935b8285101561233057845184529385019392850192612317565b98975050505050505050565b85815284602082015260a06040820152600061235b60a0830186612219565b6001600160a01b0394909416606083015250608001529392505050565b8181038181111561062657610626612122565b600181815b808511156123c65781600019048211156123ac576123ac612122565b808516156123b957918102915b93841c9390800290612390565b509250929050565b6000826123dd57506001610626565b816123ea57506000610626565b8160018114612400576002811461240a57612426565b6001915050610626565b60ff84111561241b5761241b612122565b50506001821b610626565b5060208310610133831016604e8410600b8410161715612449575081810a610626565b612453838361238b565b806000190482111561246757612467612122565b029392505050565b60006106d660ff8416836123ce565b60008060006060848603121561249357600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220e85c53c3a96daa3a14e485e05fc03739e0c605f1e8ba169083d217b9cd7e0f1664736f6c63430008110033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000051e46fddf884518d96ebea18023f7b2d0a82582a0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000005f8a8201f04f7a6c6ef89ce0c7a27326d12790e0000000000000000000000000606061aeab000de9ccb85da7a80a68717b6ada27000000000000000000000000606061aeab000de9ccb85da7a80a68717b6ada270000000000000000000000005f8a8201f04f7a6c6ef89ce0c7a27326d12790e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000190000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006437265764169000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044352455600000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _tokenName (string): CrevAi
Arg [1] : _tokenSymbol (string): CREV
Arg [2] : _Decimals (uint8): 18
Arg [3] : _supply (uint256): 1000000000
Arg [4] : _addr (address[6]): 0x51e46fDDF884518d96EbeA18023f7B2d0A82582a,0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D,0x5f8A8201F04F7a6c6ef89cE0c7a27326d12790E0,0x606061AEAb000dE9CcB85Da7a80A68717b6aDA27,0x606061AEAb000dE9CcB85Da7a80A68717b6aDA27,0x5f8A8201F04F7a6c6ef89cE0c7a27326d12790E0
Arg [5] : _value (uint256[8]): 0,25,0,0,0,25,0,0

-----Encoded View---------------
22 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000240
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000280
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 000000000000000000000000000000000000000000000000000000003b9aca00
Arg [4] : 00000000000000000000000051e46fddf884518d96ebea18023f7b2d0a82582a
Arg [5] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [6] : 0000000000000000000000005f8a8201f04f7a6c6ef89ce0c7a27326d12790e0
Arg [7] : 000000000000000000000000606061aeab000de9ccb85da7a80a68717b6ada27
Arg [8] : 000000000000000000000000606061aeab000de9ccb85da7a80a68717b6ada27
Arg [9] : 0000000000000000000000005f8a8201f04f7a6c6ef89ce0c7a27326d12790e0
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000019
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [14] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [15] : 0000000000000000000000000000000000000000000000000000000000000019
Arg [16] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [17] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [18] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [19] : 4372657641690000000000000000000000000000000000000000000000000000
Arg [20] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [21] : 4352455600000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

30061:11125:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6503:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8817:175;;;;;;;;;;-1:-1:-1;8817:175:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8817:175:0;1023:187:1;30979:63:0;;;;;;;;;;;;;;;;;;;1361:25:1;;;1349:2;1334:18;30979:63:0;1215:177:1;7694:112:0;;;;;;;;;;-1:-1:-1;7784:12:0;;7694:112;;31283:28;;;;;;;;;;-1:-1:-1;31283:28:0;;;;;;;;9504:520;;;;;;;;;;-1:-1:-1;9504:520:0;;;;;:::i;:::-;;:::i;38602:110::-;;;;;;;;;;;;;:::i;:::-;;7515:104;;;;;;;;;;-1:-1:-1;7600:9:0;;7515:104;;7600:9;;;;2000:36:1;;1988:2;1973:18;7515:104:0;1858:184:1;10461:221:0;;;;;;;;;;-1:-1:-1;10461:221:0;;;;;:::i;:::-;;:::i;38974:185::-;;;;;;;;;;-1:-1:-1;38974:185:0;;;;;:::i;:::-;;:::i;40537:146::-;;;;;;;;;;;;;:::i;20402:90::-;;;;;;;;;;-1:-1:-1;20475:7:0;;-1:-1:-1;;;20475:7:0;;;;20402:90;;7879:131;;;;;;;;;;-1:-1:-1;7879:131:0;;;;;:::i;:::-;-1:-1:-1;;;;;7982:18:0;7953:7;7982:18;;;;;;;;;;;;7879:131;18685:98;;;;;;;;;;;;;:::i;39867:291::-;;;;;;;;;;-1:-1:-1;39867:291:0;;;;;:::i;:::-;;:::i;38739:121::-;;;;;;;;;;-1:-1:-1;38739:121:0;;;;;:::i;:::-;;:::i;17991:91::-;;;;;;;;;;-1:-1:-1;18066:6:0;;;;;-1:-1:-1;;;;;18066:6:0;17991:91;;-1:-1:-1;;;;;3274:32:1;;;3256:51;;3244:2;3229:18;17991:91:0;3110:203:1;6738:108:0;;;;;;;;;;;;;:::i;40235:227::-;;;;;;;;;;-1:-1:-1;40235:227:0;;;;;:::i;:::-;;:::i;11217:429::-;;;;;;;;;;-1:-1:-1;11217:429:0;;;;;:::i;:::-;;:::i;39512:282::-;;;;;;;;;;-1:-1:-1;39512:282:0;;;;;:::i;:::-;;:::i;8243:181::-;;;;;;;;;;-1:-1:-1;8243:181:0;;;;;:::i;:::-;;:::i;30918:40::-;;;;;;;;;;-1:-1:-1;30918:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;39253:187;;;;;;;;;;-1:-1:-1;39253:187:0;;;;;:::i;:::-;;:::i;41022:114::-;;;;;;;;;;-1:-1:-1;41022:114:0;;;;;:::i;:::-;;:::i;40759:148::-;;;;;;;;;;;;;:::i;8497:155::-;;;;;;;;;;-1:-1:-1;8497:155:0;;;;;:::i;:::-;-1:-1:-1;;;;;8615:18:0;;;8586:7;8615:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8497:155;18950:198;;;;;;;;;;-1:-1:-1;18950:198:0;;;;;:::i;:::-;;:::i;6503:104::-;6557:13;6592:5;6585:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6503:104;:::o;8817:175::-;8900:4;8919:39;4202:10;8942:7;8951:6;8919:8;:39::i;:::-;-1:-1:-1;8978:4:0;8817:175;;;;;:::o;9504:520::-;9652:4;9671:36;9681:6;9689:9;9700:6;9671:9;:36::i;:::-;-1:-1:-1;;;;;9751:19:0;;9724:24;9751:19;;;:11;:19;;;;;;;;4202:10;9751:33;;;;;;;;9805:26;;;;9797:79;;;;-1:-1:-1;;;9797:79:0;;4832:2:1;9797:79:0;;;4814:21:1;4871:2;4851:18;;;4844:30;4910:34;4890:18;;;4883:62;-1:-1:-1;;;4961:18:1;;;4954:38;5009:19;;9797:79:0;;;;;;;;;9916:57;9925:6;4202:10;9966:6;9947:16;:25;9916:8;:57::i;:::-;10010:4;10003:11;;;9504:520;;;;;;:::o;38602:110::-;18066:6;;-1:-1:-1;;;;;18066:6:0;;;;;18238:9;18227:20;18219:65;;;;-1:-1:-1;;;18219:65:0;;;;;;;:::i;:::-;38684:13:::1;::::0;38654:48:::1;::::0;38672:1:::1;::::0;-1:-1:-1;;;;;38684:13:0::1;38672:1:::0;38654:9:::1;:48::i;:::-;;38602:110::o:0;10461:221::-;4202:10;10549:4;10600:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10600:34:0;;;;;;;;;;10549:4;;10568:80;;10591:7;;10600:47;;10637:10;;10600:47;:::i;:::-;10568:8;:80::i;38974:185::-;18066:6;;-1:-1:-1;;;;;18066:6:0;;;;;18238:9;18227:20;18219:65;;;;-1:-1:-1;;;18219:65:0;;;;;;;:::i;:::-;39047:19:::1;39058:7;39047:10;:19::i;:::-;39046:20;39038:71;;;::::0;-1:-1:-1;;;39038:71:0;;5864:2:1;39038:71:0::1;::::0;::::1;5846:21:1::0;5903:2;5883:18;;;5876:30;5942:34;5922:18;;;5915:62;-1:-1:-1;;;5993:18:1;;;5986:36;6039:19;;39038:71:0::1;5662:402:1::0;39038:71:0::1;-1:-1:-1::0;;;;;39122:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;39122:27:0::1;39145:4;39122:27;::::0;;38974:185::o;40537:146::-;18066:6;;-1:-1:-1;;;;;18066:6:0;;;;;18238:9;18227:20;18219:65;;;;-1:-1:-1;;;18219:65:0;;;;;;;:::i;:::-;40597:9:::1;::::0;::::1;;40596:10;40588:56;;;::::0;-1:-1:-1;;;40588:56:0;;6271:2:1;40588:56:0::1;::::0;::::1;6253:21:1::0;6310:2;6290:18;;;6283:30;6349:34;6329:18;;;6322:62;-1:-1:-1;;;6400:18:1;;;6393:31;6441:19;;40588:56:0::1;6069:397:1::0;40588:56:0::1;40657:9;:16:::0;;-1:-1:-1;;40657:16:0::1;40669:4;40657:16;::::0;;40537:146::o;18685:98::-;18066:6;;-1:-1:-1;;;;;18066:6:0;;;;;18238:9;18227:20;18219:65;;;;-1:-1:-1;;;18219:65:0;;;;;;;:::i;:::-;18752:21:::1;18770:1;18752:9;:21::i;:::-;18685:98::o:0;39867:291::-;18066:6;;-1:-1:-1;;;;;18066:6:0;;;;;18238:9;18227:20;18219:65;;;;-1:-1:-1;;;18219:65:0;;;;;;;:::i;:::-;40008:3:::1;39989:9;:16;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;;40049:9;40024;:22;;;;;:::i;:::-;;;;;;;;;;;;;:34;;;;40096:9;40071;:22;;;;;:::i;:::-;;;;;;;;;;;;;:34;;;;40141:7;40118:9;:20;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:30;-1:-1:-1;;;;39867:291:0:o;38739:121::-;18066:6;;-1:-1:-1;;;;;18066:6:0;;;;;18238:9;18227:20;18219:65;;;;-1:-1:-1;;;18219:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38823:17:0;;;::::1;;::::0;;;:8:::1;:17;::::0;;;;:25;;-1:-1:-1;;38823:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;38739:121::o;6738:108::-;6794:13;6829:7;6822:14;;;;;:::i;40235:227::-;18066:6;;-1:-1:-1;;;;;18066:6:0;;;;;18238:9;18227:20;18219:65;;;;-1:-1:-1;;;18219:65:0;;;;;;;:::i;:::-;40357:3:::1;40337:10;:17;;;;;:::i;:::-;;;;;;;;;;;;;;:23;;;;;-1:-1:-1::0;;;;;40337:23:0::1;;;;;-1:-1:-1::0;;;;;40337:23:0::1;;;;;;40399:9;40373:10;:23;;;;;:::i;:::-;;;;;;;;;;;;;;:35;;;;;-1:-1:-1::0;;;;;40373:35:0::1;;;;;-1:-1:-1::0;;;;;40373:35:0::1;;;;;;40445:7;40421:10;:21;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:31;;-1:-1:-1;;;;;40421:31:0;;;::::1;-1:-1:-1::0;;;;;;40421:31:0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;40235:227:0:o;11217:429::-;4202:10;11310:4;11356:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11356:34:0;;;;;;;;;;11411:35;;;;11403:85;;;;-1:-1:-1;;;11403:85:0;;7721:2:1;11403:85:0;;;7703:21:1;7760:2;7740:18;;;7733:30;7799:34;7779:18;;;7772:62;-1:-1:-1;;;7850:18:1;;;7843:35;7895:19;;11403:85:0;7519:401:1;11403:85:0;11528:67;4202:10;11551:7;11579:15;11560:16;:34;11528:8;:67::i;:::-;-1:-1:-1;11632:4:0;;11217:429;-1:-1:-1;;;11217:429:0:o;39512:282::-;18066:6;;-1:-1:-1;;;;;18066:6:0;;;;;18238:9;18227:20;18219:65;;;;-1:-1:-1;;;18219:65:0;;;;;;;:::i;:::-;39647:3:::1;39629:8;:15;;;;;:::i;:::-;;;;;;;;;;;;;:21;;;;39687:9;39663:8;:21;;;;;:::i;:::-;;;;;;;;;;;;;:33;;;;39733:9;39709:8;:21;;;;;:::i;:::-;;;;;;;;;;;;;:33;;;;39777:7;39755:8;:19;;;;;:::i;8243:181::-:0;8329:4;8348:42;4202:10;8372:9;8383:6;8348:9;:42::i;39253:187::-;18066:6;;-1:-1:-1;;;;;18066:6:0;;;;;18238:9;18227:20;18219:65;;;;-1:-1:-1;;;18219:65:0;;;;;;;:::i;:::-;39331:19:::1;39342:7;39331:10;:19::i;:::-;39323:66;;;::::0;-1:-1:-1;;;39323:66:0;;8127:2:1;39323:66:0::1;::::0;::::1;8109:21:1::0;8166:2;8146:18;;;8139:30;8205:34;8185:18;;;8178:62;-1:-1:-1;;;8256:18:1;;;8249:32;8298:19;;39323:66:0::1;7925:398:1::0;39323:66:0::1;-1:-1:-1::0;;;;;39402:20:0::1;39425:5;39402:20:::0;;;:11:::1;:20;::::0;;;;:28;;-1:-1:-1;;39402:28:0::1;::::0;;39253:187::o;41022:114::-;-1:-1:-1;;;;;41106:20:0;41080:4;41106:20;;;:11;:20;;;;;;;;;41022:114::o;40759:148::-;18066:6;;-1:-1:-1;;;;;18066:6:0;;;;;18238:9;18227:20;18219:65;;;;-1:-1:-1;;;18219:65:0;;;;;;;:::i;:::-;40819:9:::1;::::0;::::1;;40811:56;;;::::0;-1:-1:-1;;;40811:56:0;;8530:2:1;40811:56:0::1;::::0;::::1;8512:21:1::0;8569:2;8549:18;;;8542:30;8608:34;8588:18;;;8581:62;-1:-1:-1;;;8659:18:1;;;8652:32;8701:19;;40811:56:0::1;8328:398:1::0;40811:56:0::1;40880:9;:17:::0;;-1:-1:-1;;40880:17:0::1;::::0;;40759:148::o;18950:198::-;18066:6;;-1:-1:-1;;;;;18066:6:0;;;;;18238:9;18227:20;18219:65;;;;-1:-1:-1;;;18219:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19041:22:0;::::1;19033:73;;;::::0;-1:-1:-1;;;19033:73:0;;8933:2:1;19033:73:0::1;::::0;::::1;8915:21:1::0;8972:2;8952:18;;;8945:30;9011:34;8991:18;;;8984:62;-1:-1:-1;;;9062:18:1;;;9055:36;9108:19;;19033:73:0::1;8731:402:1::0;19033:73:0::1;19119:19;19129:8;19119:9;:19::i;15117:400::-:0;-1:-1:-1;;;;;15263:19:0;;15255:68;;;;-1:-1:-1;;;15255:68:0;;9340:2:1;15255:68:0;;;9322:21:1;9379:2;9359:18;;;9352:30;9418:34;9398:18;;;9391:62;-1:-1:-1;;;9469:18:1;;;9462:34;9513:19;;15255:68:0;9138:400:1;15255:68:0;-1:-1:-1;;;;;15344:21:0;;15336:68;;;;-1:-1:-1;;;15336:68:0;;9745:2:1;15336:68:0;;;9727:21:1;9784:2;9764:18;;;9757:30;9823:34;9803:18;;;9796:62;-1:-1:-1;;;9874:18:1;;;9867:32;9916:19;;15336:68:0;9543:398:1;15336:68:0;-1:-1:-1;;;;;15421:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15475:32;;1361:25:1;;;15475:32:0;;1334:18:1;15475:32:0;;;;;;;15117:400;;;:::o;38089:420::-;-1:-1:-1;;;;;38257:16:0;;;;;;:8;:16;;;;;;;;38256:17;:41;;;;-1:-1:-1;;;;;;38278:19:0;;;;;;:8;:19;;;;;;;;38277:20;38256:41;38248:67;;;;-1:-1:-1;;;38248:67:0;;10148:2:1;38248:67:0;;;10130:21:1;10187:2;10167:18;;;10160:30;-1:-1:-1;;;10206:18:1;;;10199:43;10259:18;;38248:67:0;9946:337:1;38248:67:0;38343:9;;;;38340:93;;;38380:36;38390:6;38398:9;38409:6;38380:9;:36::i;:::-;38371:45;;38340:93;38457:42;38473:6;38481:9;38492:6;38457:15;:42::i;:::-;38089:420;;;:::o;32769:5304::-;32897:16;;;32911:1;32897:16;;;;;;;;32847:7;;;;32897:16;32911:1;32897:16;;;;;;;;;;-1:-1:-1;32897:16:0;32869:44;;32948:4;32926:8;32935:1;32926:11;;;;;;;;:::i;:::-;;;;;;:27;-1:-1:-1;;;;;32926:27:0;;;-1:-1:-1;;;;;32926:27:0;;;;;32980:17;;;;;;;;;-1:-1:-1;;;;;32980:17:0;-1:-1:-1;;;;;32980:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32966:8;32975:1;32966:11;;;;;;;;:::i;:::-;;;;;;:38;-1:-1:-1;;;;;32966:38:0;;;-1:-1:-1;;;;;32966:38:0;;;;;33033:16;33044:4;33033:10;:16::i;:::-;33032:17;:36;;;;;33054:14;33065:2;33054:10;:14::i;:::-;33053:15;33032:36;33029:4997;;;33087:11;33115:16;33143:11;;33134:6;:20;;;;:::i;:::-;33190:13;;33115:39;;-1:-1:-1;;;;;;33190:13:0;;;33174:30;;;;33171:4796;;33245:8;:21;;;;;:::i;:::-;;;;;;;;;;;;;;33234:8;:32;;;;:::i;:::-;33227:39;;;;:::i;:::-;;;33305:8;:15;;;;;:::i;:::-;;;;;;;;;;;;;;33294:8;:26;;;;:::i;:::-;33287:33;;;;:::i;:::-;;;33359:8;:21;;;;;:::i;:::-;;;;;;;;;;;;;;33348:8;:32;;;;:::i;:::-;33341:39;;;;:::i;:::-;;;33419:8;:19;;;;;:::i;:::-;;;;;;;;;;;;;;33408:8;:30;;;;:::i;:::-;33401:37;;;;:::i;:::-;;-1:-1:-1;33482:7:0;;33479:97;;33516:35;33526:4;33540;33547:3;33516:9;:35::i;:::-;33646:8;:21;;;;;:::i;:::-;;;;;;;;;;;;;;33635:8;:32;;;;:::i;:::-;33616:15;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;;33712:15:0;;:8;;:15;;;:::i;:::-;;;;;;;;;;;;;;33701:8;:26;;;;:::i;:::-;33688:9;;:39;;;;;;;:::i;:::-;;;;-1:-1:-1;;33778:21:0;;:8;;:21;;;:::i;:::-;;;;;;;;;;;;;;33767:8;:32;;;;:::i;:::-;33748:15;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;;33848:19:0;;:8;;:19;;;:::i;:::-;;;;;;;;;;;;;;33837:8;:30;;;;:::i;:::-;33820:13;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;33171:4796:0;;-1:-1:-1;33171:4796:0;;33908:13;;-1:-1:-1;;;;;33908:13:0;;;33894:28;;;;33891:4076;;33963:9;:22;;;;;:::i;:::-;;;;;;;;;;;;;;33952:8;:33;;;;:::i;:::-;33945:40;;;;:::i;:::-;;;34024:9;:16;;;;;:::i;:::-;;;;;;;;;;;;;;34013:8;:27;;;;:::i;:::-;34006:34;;;;:::i;:::-;;;34079:9;:22;;;;;:::i;:::-;;;;;;;;;;;;;;34068:8;:33;;;;:::i;:::-;34061:40;;;;:::i;:::-;;;34140:9;:20;;;;;:::i;:::-;;;;;;;;;;;;;;34129:8;:31;;;;:::i;:::-;34122:38;;;;:::i;:::-;;-1:-1:-1;34204:7:0;;34201:97;;34238:35;34248:4;34262;34269:3;34238:9;:35::i;:::-;34368:9;:22;;;;;:::i;:::-;;;;;;;;;;;;;;34357:8;:33;;;;:::i;:::-;34338:15;;:52;;;;;;;:::i;:::-;;;;-1:-1:-1;;34435:16:0;;:9;;:16;;;:::i;:::-;;;;;;;;;;;;;;34424:8;:27;;;;:::i;:::-;34411:9;;:40;;;;;;;:::i;:::-;;;;-1:-1:-1;;34502:22:0;;:9;;:22;;;:::i;:::-;;;;;;;;;;;;;;34491:8;:33;;;;:::i;:::-;34472:15;;:52;;;;;;;:::i;:::-;;;;-1:-1:-1;;34573:20:0;;:9;;:20;;;:::i;:::-;;;;;;;;;;;;;;34562:8;:31;;;;:::i;:::-;34545:13;;:48;;;;;;;:::i;:::-;;;;;;;;34634:14;34699:13;;34681:15;;34669:9;;34651:15;;:27;;;;:::i;:::-;:45;;;;:::i;:::-;:61;;;;:::i;:::-;34634:78;;34756:6;34766:1;34756:11;34753:29;;34776:6;34769:13;;;;;;;;34753:29;34823:16;34842:17;;;;;;;;;-1:-1:-1;;;;;34842:17:0;-1:-1:-1;;;;;34842:31:0;;34922:13;;34904:15;;34892:9;;34874:15;;:27;;;;:::i;:::-;:45;;;;:::i;:::-;:61;;;;:::i;:::-;34937:8;34842:104;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;34842:104:0;;;;;;;;;;;;:::i;:::-;34947:1;34842:107;;;;;;;;:::i;:::-;;;;;;;34823:126;;35005:13;;34993:8;:25;34990:2940;;35187:13;;35165:15;;35068:21;;35045:20;;35165:19;;35183:1;;35165:19;:::i;:::-;35153:9;;35135:15;;:27;;;;:::i;:::-;:49;;;;:::i;:::-;:65;;;;:::i;:::-;35118:82;;35249:59;35266:4;35281:17;;;;;;;;;-1:-1:-1;;;;;35281:17:0;35301:6;35249:8;:59::i;:::-;35349:17;;:252;;-1:-1:-1;;;35349:252:0;;:17;;;;-1:-1:-1;;;;;35349:17:0;;:39;;:252;;35417:6;;35452:1;;35482:8;;35527:4;;35561:15;;35349:252;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;35349:252:0;;;;;;;;;;;;:::i;:::-;-1:-1:-1;35650:17:0;35670:36;35694:12;35670:21;:36;:::i;:::-;35650:56;;35755:22;35798:1;35780:15;;:19;;;;:::i;:::-;35755:44;;35824:20;35917:10;7600:9;;;;;7515:104;35917:10;35913:14;;:2;:14;:::i;:::-;35902:6;35888:10;7600:9;;;;;7515:104;35888:10;35884:14;;:2;:14;:::i;:::-;35880:1;35862:15;;:19;;;;:::i;:::-;:36;;;;:::i;:::-;35861:47;;;;:::i;:::-;35848:61;;:9;:61;:::i;:::-;35847:80;;;;:::i;:::-;35824:103;;35976:20;36065:10;7600:9;;;;;7515:104;36065:10;36061:14;;:2;:14;:::i;:::-;36050:6;36036:10;7600:9;;;;;7515:104;36036:10;36032:14;;:2;:14;:::i;:::-;36014:15;;:32;;;;:::i;:::-;36013:43;;;;:::i;:::-;36000:57;;:9;:57;:::i;:::-;35999:76;;;;:::i;:::-;35976:99;;36100:14;36177:10;7600:9;;;;;7515:104;36177:10;36173:14;;:2;:14;:::i;:::-;36162:6;36148:10;7600:9;;;;;7515:104;36148:10;36144:14;;:2;:14;:::i;:::-;36132:9;;:26;;;;:::i;:::-;36131:37;;;;:::i;:::-;36118:51;;:9;:51;:::i;:::-;36117:70;;;;:::i;:::-;36100:87;;36212:18;36297:10;7600:9;;;;;7515:104;36297:10;36293:14;;:2;:14;:::i;:::-;36282:6;36268:10;7600:9;;;;;7515:104;36268:10;36264:14;;:2;:14;:::i;:::-;36248:13;;:30;;;;:::i;:::-;36247:41;;;;:::i;:::-;36234:55;;:9;:55;:::i;:::-;36233:74;;;;:::i;:::-;36212:95;;36356:67;36373:4;36388:17;;;;;;;;;-1:-1:-1;;;;;36388:17:0;36408:14;36356:8;:67::i;:::-;36473:16;36491:14;36507;36525:17;;;;;;;;;-1:-1:-1;;;;;36525:17:0;-1:-1:-1;;;;;36525:33:0;;36566:12;36616:4;36650:14;36693:1;36723;36753:10;:23;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;;36525:320:0;;;;;;;-1:-1:-1;;;;;15578:15:1;;;36525:320:0;;;15560:34:1;15610:18;;;15603:34;;;;15653:18;;;15646:34;;;;15696:18;;;15689:34;36753:23:0;;15739:19:1;;;15732:44;36805:15:0;15792:19:1;;;15785:35;15494:19;;36525:320:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36472:373;;-1:-1:-1;36472:373:0;-1:-1:-1;36472:373:0;-1:-1:-1;36894:23:0;36987:20;36472:373;36987:6;:20;:::i;:::-;36969:13;;36951:15;;36939:9;;36921:15;;:27;;;;:::i;:::-;:45;;;;:::i;:::-;:61;;;;:::i;:::-;36920:88;;;;:::i;:::-;36894:114;-1:-1:-1;37060:19:0;;37057:139;;37110:60;37128:4;37135:10;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;37135:17:0;37154:15;37110:9;:60::i;:::-;37244:10;:23;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;37244:23:0;;37280:12;;37244:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37322:10;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;37322:17:0;;37352:6;;37322:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37388:10;:21;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;37388:21:0;;37422:10;;37388:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37555:1;37541:10;37526:12;37517:6;37502:12;:21;;;;:::i;:::-;:36;;;;:::i;:::-;:49;;;;:::i;:::-;37489:63;;:9;:63;:::i;:::-;:67;37486:231;;;37587:10;:23;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;37587:23:0;37675:10;37660:12;37636:21;37651:6;37636:12;:21;:::i;:::-;:36;;;;:::i;:::-;:49;;;;:::i;:::-;37623:63;;:9;:63;:::i;:::-;37587:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37486:231;-1:-1:-1;;37783:1:0;37765:15;:19;;;37809:9;:13;;;37847:15;:19;;;37891:13;:17;-1:-1:-1;;;;;;;;;;34990:2940:0;33924:4043;;33891:4076;37999:13;38009:3;37999:13;;:::i;:::-;;;33070:4956;;33029:4997;-1:-1:-1;38057:6:0;;32769:5304;-1:-1:-1;;;32769:5304:0:o;19160:182::-;19238:6;;;-1:-1:-1;;;;;19257:17:0;;;19238:6;19257:17;;;-1:-1:-1;;;;;;19257:17:0;;;;;;19292:40;;19238:6;;;;;;;;19292:40;;19219:16;;19292:40;19206:136;19160:182;:::o;12168:773::-;-1:-1:-1;;;;;12318:20:0;;12310:70;;;;-1:-1:-1;;;12310:70:0;;16554:2:1;12310:70:0;;;16536:21:1;16593:2;16573:18;;;16566:30;16632:34;16612:18;;;16605:62;-1:-1:-1;;;16683:18:1;;;16676:35;16728:19;;12310:70:0;16352:401:1;12310:70:0;-1:-1:-1;;;;;12401:23:0;;12393:71;;;;-1:-1:-1;;;12393:71:0;;16960:2:1;12393:71:0;;;16942:21:1;16999:2;16979:18;;;16972:30;17038:34;17018:18;;;17011:62;-1:-1:-1;;;17089:18:1;;;17082:33;17132:19;;12393:71:0;16758:399:1;12393:71:0;-1:-1:-1;;;;;12569:17:0;;12545:21;12569:17;;;;;;;;;;;12607:23;;;;12599:74;;;;-1:-1:-1;;;12599:74:0;;17364:2:1;12599:74:0;;;17346:21:1;17403:2;17383:18;;;17376:30;17442:34;17422:18;;;17415:62;-1:-1:-1;;;17493:18:1;;;17486:36;17539:19;;12599:74:0;17162:402:1;12599:74:0;-1:-1:-1;;;;;12713:17:0;;;:9;:17;;;;;;;;;;;12733:22;;;12713:42;;12781:20;;;;;;;;:30;;12749:6;;12713:9;12781:30;;12749:6;;12781:30;:::i;:::-;;;;;;;;12850:9;-1:-1:-1;;;;;12833:35:0;12842:6;-1:-1:-1;;;;;12833:35:0;;12861:6;12833:35;;;;1361:25:1;;1349:2;1334:18;;1215:177;12833:35:0;;;;;;;;12297:644;12168:773;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2299:385::-;2385:6;2393;2401;2409;2462:3;2450:9;2441:7;2437:23;2433:33;2430:53;;;2479:1;2476;2469:12;2430:53;-1:-1:-1;;2502:23:1;;;2572:2;2557:18;;2544:32;;-1:-1:-1;2623:2:1;2608:18;;2595:32;;2674:2;2659:18;2646:32;;-1:-1:-1;2299:385:1;-1:-1:-1;2299:385:1:o;2689:416::-;2754:6;2762;2815:2;2803:9;2794:7;2790:23;2786:32;2783:52;;;2831:1;2828;2821:12;2783:52;2870:9;2857:23;2889:31;2914:5;2889:31;:::i;:::-;2939:5;-1:-1:-1;2996:2:1;2981:18;;2968:32;3038:15;;3031:23;3019:36;;3009:64;;3069:1;3066;3059:12;3009:64;3092:7;3082:17;;;2689:416;;;;;:::o;3318:529::-;3395:6;3403;3411;3464:2;3452:9;3443:7;3439:23;3435:32;3432:52;;;3480:1;3477;3470:12;3432:52;3519:9;3506:23;3538:31;3563:5;3538:31;:::i;:::-;3588:5;-1:-1:-1;3645:2:1;3630:18;;3617:32;3658:33;3617:32;3658:33;:::i;:::-;3710:7;-1:-1:-1;3769:2:1;3754:18;;3741:32;3782:33;3741:32;3782:33;:::i;:::-;3834:7;3824:17;;;3318:529;;;;;:::o;3852:388::-;3920:6;3928;3981:2;3969:9;3960:7;3956:23;3952:32;3949:52;;;3997:1;3994;3987:12;3949:52;4036:9;4023:23;4055:31;4080:5;4055:31;:::i;:::-;4105:5;-1:-1:-1;4162:2:1;4147:18;;4134:32;4175:33;4134:32;4175:33;:::i;4245:380::-;4324:1;4320:12;;;;4367;;;4388:61;;4442:4;4434:6;4430:17;4420:27;;4388:61;4495:2;4487:6;4484:14;4464:18;4461:38;4458:161;;4541:10;4536:3;4532:20;4529:1;4522:31;4576:4;4573:1;4566:15;4604:4;4601:1;4594:15;4458:161;;4245:380;;;:::o;5039:356::-;5241:2;5223:21;;;5260:18;;;5253:30;5319:34;5314:2;5299:18;;5292:62;5386:2;5371:18;;5039:356::o;5400:127::-;5461:10;5456:3;5452:20;5449:1;5442:31;5492:4;5489:1;5482:15;5516:4;5513:1;5506:15;5532:125;5597:9;;;5618:10;;;5615:36;;;5631:18;;:::i;6471:253::-;-1:-1:-1;;;6673:18:1;;6716:1;6707:11;;6471:253::o;6729:259::-;-1:-1:-1;;;6931:24:1;;6980:1;6971:11;;6729:259::o;6993:::-;-1:-1:-1;;;7195:24:1;;7244:1;7235:11;;6993:259::o;7257:257::-;-1:-1:-1;;;7459:22:1;;7506:1;7497:11;;7257:257::o;10288:127::-;10349:10;10344:3;10340:20;10337:1;10330:31;10380:4;10377:1;10370:15;10404:4;10401:1;10394:15;10420:127;10481:10;10476:3;10472:20;10469:1;10462:31;10512:4;10509:1;10502:15;10536:4;10533:1;10526:15;10552:251;10622:6;10675:2;10663:9;10654:7;10650:23;10646:32;10643:52;;;10691:1;10688;10681:12;10643:52;10723:9;10717:16;10742:31;10767:5;10742:31;:::i;10808:217::-;10848:1;10874;10864:132;;10918:10;10913:3;10909:20;10906:1;10899:31;10953:4;10950:1;10943:15;10981:4;10978:1;10971:15;10864:132;-1:-1:-1;11010:9:1;;10808:217::o;11030:168::-;11103:9;;;11134;;11151:15;;;11145:22;;11131:37;11121:71;;11172:18;;:::i;11203:461::-;11256:3;11294:5;11288:12;11321:6;11316:3;11309:19;11347:4;11376:2;11371:3;11367:12;11360:19;;11413:2;11406:5;11402:14;11434:1;11444:195;11458:6;11455:1;11452:13;11444:195;;;11523:13;;-1:-1:-1;;;;;11519:39:1;11507:52;;11579:12;;;;11614:15;;;;11555:1;11473:9;11444:195;;;-1:-1:-1;11655:3:1;;11203:461;-1:-1:-1;;;;;11203:461:1:o;11669:332::-;11876:6;11865:9;11858:25;11919:2;11914;11903:9;11899:18;11892:30;11839:4;11939:56;11991:2;11980:9;11976:18;11968:6;11939:56;:::i;:::-;11931:64;11669:332;-1:-1:-1;;;;11669:332:1:o;12006:1105::-;12101:6;12132:2;12175;12163:9;12154:7;12150:23;12146:32;12143:52;;;12191:1;12188;12181:12;12143:52;12224:9;12218:16;12253:18;12294:2;12286:6;12283:14;12280:34;;;12310:1;12307;12300:12;12280:34;12348:6;12337:9;12333:22;12323:32;;12393:7;12386:4;12382:2;12378:13;12374:27;12364:55;;12415:1;12412;12405:12;12364:55;12444:2;12438:9;12466:2;12462;12459:10;12456:36;;;12472:18;;:::i;:::-;12518:2;12515:1;12511:10;12550:2;12544:9;12613:2;12609:7;12604:2;12600;12596:11;12592:25;12584:6;12580:38;12668:6;12656:10;12653:22;12648:2;12636:10;12633:18;12630:46;12627:72;;;12679:18;;:::i;:::-;12715:2;12708:22;12765:18;;;12799:15;;;;-1:-1:-1;12841:11:1;;;12837:20;;;12869:19;;;12866:39;;;12901:1;12898;12891:12;12866:39;12925:11;;;;12945:135;12961:6;12956:3;12953:15;12945:135;;;13027:10;;13015:23;;12978:12;;;;13058;;;;12945:135;;;13099:6;12006:1105;-1:-1:-1;;;;;;;;12006:1105:1:o;13116:582::-;13415:6;13404:9;13397:25;13458:6;13453:2;13442:9;13438:18;13431:34;13501:3;13496:2;13485:9;13481:18;13474:31;13378:4;13522:57;13574:3;13563:9;13559:19;13551:6;13522:57;:::i;:::-;-1:-1:-1;;;;;13615:32:1;;;;13610:2;13595:18;;13588:60;-1:-1:-1;13679:3:1;13664:19;13657:35;13514:65;13116:582;-1:-1:-1;;;13116:582:1:o;13703:128::-;13770:9;;;13791:11;;;13788:37;;;13805:18;;:::i;13836:422::-;13925:1;13968:5;13925:1;13982:270;14003:7;13993:8;13990:21;13982:270;;;14062:4;14058:1;14054:6;14050:17;14044:4;14041:27;14038:53;;;14071:18;;:::i;:::-;14121:7;14111:8;14107:22;14104:55;;;14141:16;;;;14104:55;14220:22;;;;14180:15;;;;13982:270;;;13986:3;13836:422;;;;;:::o;14263:806::-;14312:5;14342:8;14332:80;;-1:-1:-1;14383:1:1;14397:5;;14332:80;14431:4;14421:76;;-1:-1:-1;14468:1:1;14482:5;;14421:76;14513:4;14531:1;14526:59;;;;14599:1;14594:130;;;;14506:218;;14526:59;14556:1;14547:10;;14570:5;;;14594:130;14631:3;14621:8;14618:17;14615:43;;;14638:18;;:::i;:::-;-1:-1:-1;;14694:1:1;14680:16;;14709:5;;14506:218;;14808:2;14798:8;14795:16;14789:3;14783:4;14780:13;14776:36;14770:2;14760:8;14757:16;14752:2;14746:4;14743:12;14739:35;14736:77;14733:159;;;-1:-1:-1;14845:19:1;;;14877:5;;14733:159;14924:34;14949:8;14943:4;14924:34;:::i;:::-;14994:6;14990:1;14986:6;14982:19;14973:7;14970:32;14967:58;;;15005:18;;:::i;:::-;15043:20;;14263:806;-1:-1:-1;;;14263:806:1:o;15074:140::-;15132:5;15161:47;15202:4;15192:8;15188:19;15182:4;15161:47;:::i;15831:306::-;15919:6;15927;15935;15988:2;15976:9;15967:7;15963:23;15959:32;15956:52;;;16004:1;16001;15994:12;15956:52;16033:9;16027:16;16017:26;;16083:2;16072:9;16068:18;16062:25;16052:35;;16127:2;16116:9;16112:18;16106:25;16096:35;;15831:306;;;;;:::o

Swarm Source

ipfs://e85c53c3a96daa3a14e485e05fc03739e0c605f1e8ba169083d217b9cd7e0f16
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.