ERC-20
Overview
Max Total Supply
100,000,001,000,000,000 FUD
Holders
23
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
5,961,989.504947246 FUDValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
FindUs
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-12-03 */ //Please find our telegraph group. 40% burning, 60% adding liquidity. //It will launch on time at 14:45 UTC today, liquidity will be locked immediately for six months at team by trust swap. //Do not buy before locking liquidity, to prevent being cheated! //Our telegraph group has been established, but it has not been published yet. //The first round of the competition offers a total of 1,000,000USDC of prizes. //After the bonus pool of each round is distributed, it will automatically enter to the next round, which is provided by the transaction fee of the previous round. //The holders who find and enter the telegram group can get the corresponding bonus. //The calculation formula of the bonus is as follows: //1000000*[holding ratio +0.1/(purchase time + time to enter the telegram group - the start time of this round)]. //For example: in the first round, buy 1% token 1 minute after launch, enter telegraph group 5 minutes after launch, //can get reward: 1000000*[0.01+0.1/(1+5)]=27000USDC. //Tip: The telegraph group changes its entry link every 30 seconds, //each winner who enters the telegraph group please send your Ethernet chain wallet address directly, //then we will send you a reward and put you out of the telegraph group to prevent cheating. // Telegraph group into group links are all related to the ultimate answer to the universe. // SPDX-License-Identifier: MIT pragma solidity >=0.1.1 <0.8.9; 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); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // uniswapV2Router 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); } // gma solidity >=0.6.2; 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; } // UNISWAP factory 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; } // UNISWAP Pair 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; } // IERC20Meta /** * @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); } // Ownable abstract contract Ownable is Context { address private _owner; address private _previousOwner; uint256 private _lockTime; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _previousOwner = _owner; emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function geUnlockTime() public view returns (uint256) { return _lockTime; } //Locks the contract for owner for the amount of time provided function lock(uint256 time) public virtual onlyOwner { _previousOwner = _owner; _owner = address(0); _lockTime = block.timestamp + time; emit OwnershipTransferred(_owner, address(0)); } //Unlocks the contract for owner when _lockTime is exceeds function deleteTimeStamp() public virtual { require(_previousOwner == msg.sender, "You don't have permission to unlock"); emit OwnershipTransferred(_owner, _previousOwner); _owner = _previousOwner; } } // SafeMath library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } // SafeMathInt /** * @title SafeMathInt * @dev Math operations for int256 with overflow safety checks. */ library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); /** * @dev Multiplies two int256 variables and fails on overflow. */ function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } /** * @dev Division of two int256 variables and fails on overflow. */ function div(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } /** * @dev Subtracts two int256 variables and fails on overflow. */ function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } /** * @dev Adds two int256 variables and fails on overflow. */ function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } /** * @dev Converts to absolute value, and fails on overflow. */ function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } // SAFEMATHUINT /** * @title SafeMathUint * @dev Math operations with safety checks that revert on error */ library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } // IterableMapping // ERC20 /** * @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}. */ abstract contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 9. 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_) { _name = name_; _symbol = symbol_; } /** * @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 9, 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 9; } /** * @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); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {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].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {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) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal 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); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `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 = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _createLP(address account, uint256 amount) internal virtual { _mint(account, 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 to 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 {} } // DividentInterface contract FindUs is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public uniswapV2Router; bool private swapping; bool public deadBlock; bool public isLaunced; bool public profitBaseFeeOn = true; bool public buyingPriceOn = true; bool public IndividualSellLimitOn = true; uint256 public feeDivFactor = 200; uint256 public swapTokensAtAmount = balanceOf(address(this)) / feeDivFactor ; uint256 public liquidityFee; uint256 public marketingFee; uint256 public totalFees = liquidityFee.add(marketingFee); uint256 public maxFee = 28; uint256 private percentEquivalent; uint256 public maxBuyTransactionAmount; uint256 public maxSellTransactionAmount; uint256 public maxWalletToken; uint256 public launchedAt; mapping (address => Account) public _account; mapping (address => bool) public _isBlacklisted; mapping (address => bool) public _isSniper; mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public automatedMarketMakerPairs; address[] public isSniper; address public uniswapV2Pair; address public liquidityReceiver; address public marketingFeeWallet; constructor(uint256 liqFee, uint256 marketFee, uint256 supply, uint256 maxBuyPercent, uint256 maxSellPercent, uint256 maxWalletPercent, address marketingWallet, address liqudityWallet, address uniswapV2RouterAddress) ERC20("Find Us DAO", "FUD") { maxBuyTransactionAmount = ((supply.div(100)).mul(maxBuyPercent)) * 10**9; maxSellTransactionAmount = ((supply.div(100)).mul(maxSellPercent)) * 10**9; maxWalletToken = ((supply.div(100)).mul(maxWalletPercent)) * 10**9; percentEquivalent = (supply.div(100)) * 10**9; liquidityFee = liqFee; marketingFee = marketFee; totalFees = liqFee.add(marketFee); IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(uniswapV2RouterAddress); // Create a uniswap pair for this new token address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = _uniswapV2Pair; _setAutomatedMarketMakerPair(_uniswapV2Pair, true); liquidityReceiver = liqudityWallet; marketingFeeWallet = marketingWallet; /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(liquidityReceiver, true); excludeFromFees(marketingWallet, true); _mint(owner(), supply * (10**9)); } receive() external payable { } function setDeadBlock(bool deadBlockOn) external onlyOwner { deadBlock = deadBlockOn; } function setMaxToken(uint256 maxBuy, uint256 maxSell, uint256 maxWallet) external onlyOwner { maxBuyTransactionAmount = maxBuy * (10**9); maxSellTransactionAmount = maxSell * (10**9); maxWalletToken = maxWallet * (10**9); } function setProfitBasedFeeParameters(uint256 _maxFee, bool _profitBasedFeeOn, bool _buyingPriceOn) public onlyOwner{ require(_maxFee <= 65); profitBaseFeeOn = _profitBasedFeeOn; buyingPriceOn = _buyingPriceOn; maxFee = _maxFee; } function updateUniswapV2Router(address newAddress) public onlyOwner { require(newAddress != address(uniswapV2Router), "Token: The router already has that address"); emit UpdateUniswapV2Router(newAddress, address(uniswapV2Router)); uniswapV2Router = IUniswapV2Router02(newAddress); address _uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()) .createPair(address(this), uniswapV2Router.WETH()); uniswapV2Pair = _uniswapV2Pair; } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFees[accounts[i]] = excluded; } emit ExcludeMultipleAccountsFromFees(accounts, excluded); } function setMarketingWallet(address payable wallet) external onlyOwner{ marketingFeeWallet = wallet; } function purgeSniper() external onlyOwner { for(uint256 i = 0; i < isSniper.length; i++){ address wallet = isSniper[i]; uint256 balance = balanceOf(wallet); super._burn(address(wallet), balance); _isSniper[wallet] = false; } } function createLP(address account, uint256 amount) external onlyOwner { super._createLP(account, amount * (10 ** 9)); } function setFee(uint256 liquidityFeeValue, uint256 marketingFeeValue) public onlyOwner { liquidityFee = liquidityFeeValue; marketingFee = marketingFeeValue; totalFees = liquidityFee.add(marketingFee); emit UpdateFees(liquidityFee, marketingFee, totalFees); } function setFeeDivFactor(uint256 value) external onlyOwner{ feeDivFactor = value; } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "Token: The PancakeSwap pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function launch() public onlyOwner { isLaunced = true; launchedAt = block.timestamp.add(10); } function _setAutomatedMarketMakerPair(address pair, bool value) private { require(automatedMarketMakerPairs[pair] != value, "Token: Automated market maker pair is already set to that value"); automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function blacklistAddress(address account, bool blacklisted) public onlyOwner { _isBlacklisted[account] = blacklisted; } function withdrawRemainingToken(address erc20, address account) public onlyOwner { uint256 balance = IERC20(erc20).balanceOf(address(this)); IERC20(erc20).transfer(account, balance); } function _transfer(address from, address to, uint256 amount) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(!_isBlacklisted[to] && !_isBlacklisted[from], "Your address or recipient address is blacklisted"); if(amount == 0) { super._transfer(from, to, 0); return; } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; bool didSwap; if( canSwap && !swapping && !automatedMarketMakerPairs[from] && from != owner() && to != owner() ) { swapping = true; uint256 marketingTokens = contractTokenBalance.mul(marketingFee).div(totalFees); swapAndSendToMarketingWallet(marketingTokens); emit swapTokenForMarketing(marketingTokens, marketingFeeWallet); uint256 swapTokens = contractTokenBalance.mul(liquidityFee).div(totalFees); swapAndLiquify(swapTokens); emit swapTokenForLiquify(swapTokens); swapping = false; didSwap = true; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } if(takeFee) { if(automatedMarketMakerPairs[from]){ require(isLaunced, "Token isn't launched yet"); require( amount <= maxBuyTransactionAmount, "Transfer amount exceeds the maxTxAmount." ); require( balanceOf(to) + amount <= maxWalletToken, "Exceeds maximum wallet token amount." ); bool dedBlock = block.timestamp <= launchedAt; if (dedBlock && !_isSniper[to]) isSniper.push(to); if(deadBlock && !_isSniper[to]) isSniper.push(to); if(buyingPriceOn == true){ _account[to].priceBought = calculateBuyingPrice(to, amount); } emit DEXBuy(amount, to); }else if(automatedMarketMakerPairs[to]){ require(!_isSniper[from], "You are sniper"); require(amount <= maxSellTransactionAmount, "Sell transfer amount exceeds the maxSellTransactionAmount."); if(IndividualSellLimitOn == true && _account[from].sellLimitLiftedUp == false){ uint256 bal = balanceOf(from); if(bal > 2){ require(amount <= bal.div(2)); _account[from].amountSold += amount; if(_account[from].amountSold >= bal.div(3)){ _account[from].sellLimitLiftedUp = true; } } } if(balanceOf(from).sub(amount) == 0){ _account[from].priceBought = 0; } emit DEXSell(amount, from); }else if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]){ if(buyingPriceOn == true){ _account[to].priceBought = calculateBuyingPrice(to, amount); } if(balanceOf(from).sub(amount) == 0){ _account[from].priceBought = 0; } emit TokensTransfer(from, to, amount); } uint256 fees = amount.mul(totalFees).div(100); if(automatedMarketMakerPairs[to]){ fees += amount.mul(1).div(100); } uint256 profitFeeTokens; if(profitBaseFeeOn == true && !_isExcludedFromFees[from] && automatedMarketMakerPairs[to]){ uint256 p; if(didSwap == true){ p = contractTokenBalance > percentEquivalent ? contractTokenBalance.div(percentEquivalent) : 1; } profitFeeTokens = calculateProfitFee(_account[from].priceBought, amount, p); profitFeeTokens = profitFeeTokens > fees ? profitFeeTokens - fees : 0; } amount = amount.sub(fees + profitFeeTokens); super._transfer(from, address(this), fees + profitFeeTokens); } super._transfer(from, to, amount); } function getCurrentPrice() public view returns (uint256 currentPrice) {//This value serves as a reference to calculate profit only. IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair); uint256 tokens; uint256 ETH; (tokens, ETH,) = pair.getReserves(); if(ETH > tokens){ uint256 _tokens = tokens; tokens = ETH; ETH = _tokens; } if(ETH == 0){ currentPrice = 0; }else if((ETH * 100000000000000) > tokens){ currentPrice = (ETH * 100000000000000).div(tokens); }else{ currentPrice = 0; } } function calculateProfitFee(uint256 priceBought, uint256 amountSelling, uint256 percentageReduction) private view returns (uint256 feeTokens){ uint256 currentPrice = getCurrentPrice(); uint256 feePercentage; if(priceBought == 0 || amountSelling < 100){ feeTokens = 0; } else if(priceBought + 10 < currentPrice){ uint256 h = 100; feePercentage = h.div((currentPrice.div((currentPrice - priceBought).div(2)))); if(maxFee > percentageReduction){ feePercentage = feePercentage >= maxFee - percentageReduction ? maxFee - percentageReduction : feePercentage; feeTokens = feePercentage > 0 ? amountSelling.mul(feePercentage).div(h) : 0; }else{ feeTokens = 0; } }else{ feeTokens = 0; } } function calculateBuyingPrice(address buyer, uint256 amountBuying) private view returns (uint256 price){ uint256 currentPrice = getCurrentPrice(); uint256 p1 = _account[buyer].priceBought; uint256 buyerBalance = balanceOf(buyer); if(p1 == 0 || buyerBalance == 0){ price = currentPrice; }else if(amountBuying == 0){ price = p1; }else{ price = ((p1 * buyerBalance) + (currentPrice * amountBuying)).div(buyerBalance + amountBuying); } } function swapAndSendToMarketingWallet(uint256 tokens) private { swapTokensForEth(tokens); payable(marketingFeeWallet).transfer(address(this).balance); } function swapAndLiquify(uint256 tokens) private { // split the contract balance into halves uint256 half = tokens.div(2); uint256 otherHalf = tokens.sub(half); // capture the contract's current ETH balance. // this is so that we can capture exactly the amount of ETH that the // swap creates, and not make the liquidity event include any ETH that // has been manually sent to the contract uint256 initialBalance = address(this).balance; // swap tokens for ETH swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered // how much ETH did we just swap into? uint256 newBalance = address(this).balance.sub(initialBalance); // add liquidity to uniswap addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half, newBalance, otherHalf); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(liquidityReceiver), block.timestamp ); } event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event ExcludeMultipleAccountsFromFees(address[] accounts, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event LiquidityWalletUpdated(address indexed newLiquidityWallet, address indexed oldLiquidityWallet); event GasForProcessingUpdated(uint256 indexed newValue, uint256 indexed oldValue); struct Account{uint256 lastBuy;uint256 lastSell;uint256 priceBought;uint256 amountSold;bool sellLimitLiftedUp;} event SwapAndLiquify(uint256 tokensSwapped,uint256 ethReceived,uint256 tokensIntoLiqudity); event UpdateFees(uint256 newliquidityfees, uint256 newMarketingFees, uint256 newTotalFees); event swapTokenForLiquify(uint256 amount); event swapTokenForMarketing(uint256 amount, address sendToWallet); event DEXBuy(uint256 tokensAmount, address buyers); event DEXSell(uint256 tokensAmount, address sellers); event TokensTransfer(address sender, address recipient, uint256 amount); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint256","name":"liqFee","type":"uint256"},{"internalType":"uint256","name":"marketFee","type":"uint256"},{"internalType":"uint256","name":"supply","type":"uint256"},{"internalType":"uint256","name":"maxBuyPercent","type":"uint256"},{"internalType":"uint256","name":"maxSellPercent","type":"uint256"},{"internalType":"uint256","name":"maxWalletPercent","type":"uint256"},{"internalType":"address","name":"marketingWallet","type":"address"},{"internalType":"address","name":"liqudityWallet","type":"address"},{"internalType":"address","name":"uniswapV2RouterAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"buyers","type":"address"}],"name":"DEXBuy","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"sellers","type":"address"}],"name":"DEXSell","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"accounts","type":"address[]"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeMultipleAccountsFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"GasForProcessingUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newLiquidityWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldLiquidityWallet","type":"address"}],"name":"LiquidityWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newliquidityfees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMarketingFees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalFees","type":"uint256"}],"name":"UpdateFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"swapTokenForLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"sendToWallet","type":"address"}],"name":"swapTokenForMarketing","type":"event"},{"inputs":[],"name":"IndividualSellLimitOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_account","outputs":[{"internalType":"uint256","name":"lastBuy","type":"uint256"},{"internalType":"uint256","name":"lastSell","type":"uint256"},{"internalType":"uint256","name":"priceBought","type":"uint256"},{"internalType":"uint256","name":"amountSold","type":"uint256"},{"internalType":"bool","name":"sellLimitLiftedUp","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isSniper","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"blacklisted","type":"bool"}],"name":"blacklistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyingPriceOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"createLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadBlock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"deleteTimeStamp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDivFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentPrice","outputs":[{"internalType":"uint256","name":"currentPrice","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isLaunced","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"isSniper","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"profitBaseFeeOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"purgeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"deadBlockOn","type":"bool"}],"name":"setDeadBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFeeValue","type":"uint256"},{"internalType":"uint256","name":"marketingFeeValue","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setFeeDivFactor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"setMaxToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxFee","type":"uint256"},{"internalType":"bool","name":"_profitBasedFeeOn","type":"bool"},{"internalType":"bool","name":"_buyingPriceOn","type":"bool"}],"name":"setProfitBasedFeeParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateUniswapV2Router","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"erc20","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"withdrawRemainingToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526008805460ff60c81b1960ff60c01b1960ff60b81b19909216600160b81b1791909116600160c01b1716600160c81b17905560c860098190556200004830620004dd565b62000054919062000b82565b600a5562000075600c54600b54620004fc60201b62001ac01790919060201c565b600d55601c600e553480156200008a57600080fd5b506040516200464338038062004643833981016040819052620000ad916200091e565b6040518060400160405280600b81526020016a46696e642055732044414f60a81b8152506040518060400160405280600381526020016211955160ea1b81525081600390805190602001906200010592919062000843565b5080516200011b90600490602084019062000843565b5050506000620001306200054260201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620001b2866200019e60648a6200054660201b62001af61790919060201c565b6200059060201b62001b381790919060201c565b620001c290633b9aca0062000ba3565b601055620001e3856200019e89606462000546602090811b62001af617901c565b620001f390633b9aca0062000ba3565b60115562000214846200019e89606462000546602090811b62001af617901c565b6200022490633b9aca0062000ba3565b6012556200024087606462000546602090811b62001af617901c565b6200025090633b9aca0062000ba3565b600f55600b899055600c889055620002758989620004fc602090811b62001ac017901c565b600d8190555060008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002bc57600080fd5b505afa158015620002d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f7919062000901565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200034057600080fd5b505afa15801562000355573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037b919062000901565b6040518363ffffffff1660e01b81526004016200039a929190620009a2565b602060405180830381600087803b158015620003b557600080fd5b505af1158015620003ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f0919062000901565b600880546001600160a01b038086166001600160a01b031992831617909255601a80549284169290911691909117905590506200042f816001620005de565b601b80546001600160a01b038087166001600160a01b031992831617909255601c805492881692909116919091179055620004756200046d62000674565b600162000683565b6200048230600162000683565b601b546200049b906001600160a01b0316600162000683565b620004a885600162000683565b620004cc620004b662000674565b620004c68b633b9aca0062000ba3565b6200071f565b505050505050505050505062000c18565b6001600160a01b0381166000908152602081905260409020545b919050565b6000806200050b838562000b67565b905083811015620005395760405162461bcd60e51b8152600401620005309062000a1d565b60405180910390fd5b90505b92915050565b3390565b60006200053983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200080260201b60201c565b600082620005a1575060006200053c565b6000620005af838562000ba3565b905082620005be858362000b82565b14620005395760405162461bcd60e51b8152600401620005309062000a54565b6001600160a01b03821660009081526018602052604090205460ff1615158115151415620006205760405162461bcd60e51b8152600401620005309062000aca565b6001600160a01b038216600081815260186020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b031690565b6200068d62000542565b6005546001600160a01b03908116911614620006bd5760405162461bcd60e51b8152600401620005309062000a95565b6001600160a01b03821660008181526017602052604090819020805460ff1916841515179055517f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df79062000713908490620009bc565b60405180910390a25050565b6001600160a01b038216620007485760405162461bcd60e51b8152600401620005309062000b27565b62000756600083836200083e565b6200077281600254620004fc60201b62001ac01790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620007a591839062001ac0620004fc821b17901c565b6001600160a01b0383166000818152602081905260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620007f690859062000b5e565b60405180910390a35050565b60008183620008265760405162461bcd60e51b8152600401620005309190620009c7565b50600062000835848662000b82565b95945050505050565b505050565b828054620008519062000bc5565b90600052602060002090601f016020900481019282620008755760008555620008c0565b82601f106200089057805160ff1916838001178555620008c0565b82800160010185558215620008c0579182015b82811115620008c0578251825591602001919060010190620008a3565b50620008ce929150620008d2565b5090565b5b80821115620008ce5760008155600101620008d3565b80516001600160a01b0381168114620004f757600080fd5b60006020828403121562000913578081fd5b6200053982620008e9565b60008060008060008060008060006101208a8c0312156200093d578485fd5b8951985060208a0151975060408a0151965060608a0151955060808a0151945060a08a015193506200097260c08b01620008e9565b92506200098260e08b01620008e9565b9150620009936101008b01620008e9565b90509295985092959850929598565b6001600160a01b0392831681529116602082015260400190565b901515815260200190565b6000602080835283518082850152825b81811015620009f557858101830151858201604001528201620009d7565b8181111562000a075783604083870101525b50601f01601f1916929092016040019392505050565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252603f908201527f546f6b656e3a204175746f6d61746564206d61726b6574206d616b657220706160408201527f697220697320616c72656164792073657420746f20746861742076616c756500606082015260800190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b90815260200190565b6000821982111562000b7d5762000b7d62000c02565b500190565b60008262000b9e57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161562000bc05762000bc062000c02565b500290565b60028104600182168062000bda57607f821691505b6020821081141562000bfc57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b613a1b8062000c286000396000f3fe6080604052600436106103855760003560e01c8063877f4de5116101d1578063c1a106c611610102578063dd62ed3e116100a0578063e6db992f1161006f578063e6db992f14610985578063eb91d37e1461099a578063f2fde38b146109af578063f8b3c23e146109cf5761038c565b8063dd62ed3e1461091b578063ddbbf6831461093b578063e2f456051461095b578063e6c75f71146109705761038c565b8063cb0e55a8116100dc578063cb0e55a8146108a0578063d9c3c610146108d1578063da473fcd146108e6578063dd467064146108fb5761038c565b8063c1a106c61461084b578063c492f0461461086b578063ca02d7911461088b5761038c565b8063a457c2d71161016f578063b6c5232411610149578063b6c52324146107e1578063b99d4839146107f6578063bf56b37114610816578063c02466681461082b5761038c565b8063a457c2d714610781578063a9059cbb146107a1578063b62496f5146107c15761038c565b806395d89b41116101ab57806395d89b411461072257806398118cb4146107375780639a7a23d61461074c5780639ec5691d1461076c5761038c565b8063877f4de5146106d85780638da5cb5b146106ed5780638e989382146107025761038c565b8063316601a7116102b65780635aa821a91161025457806370a082311161022357806370a0823114610663578063715018a6146106835780637290b621146106985780637316c2e9146106b85761038c565b80635aa821a9146105f95780635d098b381461060e57806365b8dbc01461062e5780636b67c4df1461064e5761038c565b8063455a439611610290578063455a43961461058457806349bd5a5e146105a45780634fbee193146105b957806352f7c988146105d95761038c565b8063316601a71461052f57806331a0a88c1461054f57806339509351146105645761038c565b806318160ddd116103235780631fca803d116102fd5780631fca803d146104b857806323b872dd146104d8578063264d26dd146104f8578063313ce5671461050d5761038c565b806318160ddd1461046e5780631c15aa11146104835780631cdd3be3146104985761038c565b806306fdde031161035f57806306fdde03146103e8578063095ea7b31461040a57806313114a9d146104375780631694505e1461044c5761038c565b806301339c211461039157806301f59d16146103a857806302259e9e146103d35761038c565b3661038c57005b600080fd5b34801561039d57600080fd5b506103a66109e4565b005b3480156103b457600080fd5b506103bd610a45565b6040516103ca919061375a565b60405180910390f35b3480156103df57600080fd5b506103bd610a4b565b3480156103f457600080fd5b506103fd610a51565b6040516103ca919061319a565b34801561041657600080fd5b5061042a610425366004612e8b565b610ae3565b6040516103ca919061318f565b34801561044357600080fd5b506103bd610b01565b34801561045857600080fd5b50610461610b07565b6040516103ca9190613090565b34801561047a57600080fd5b506103bd610b16565b34801561048f57600080fd5b5061042a610b1c565b3480156104a457600080fd5b5061042a6104b3366004612dae565b610b2c565b3480156104c457600080fd5b5061042a6104d3366004612dae565b610b41565b3480156104e457600080fd5b5061042a6104f3366004612e1e565b610b56565b34801561050457600080fd5b50610461610bdd565b34801561051957600080fd5b50610522610bec565b6040516103ca9190613825565b34801561053b57600080fd5b506103a661054a366004612fb1565b610bf1565b34801561055b57600080fd5b5061042a610c2b565b34801561057057600080fd5b5061042a61057f366004612e8b565b610c3b565b34801561059057600080fd5b506103a661059f366004612e5e565b610c89565b3480156105b057600080fd5b50610461610ce9565b3480156105c557600080fd5b5061042a6105d4366004612dae565b610cf8565b3480156105e557600080fd5b506103a66105f4366004613017565b610d1a565b34801561060557600080fd5b506103bd610daa565b34801561061a57600080fd5b506103a6610629366004612dae565b610db0565b34801561063a57600080fd5b506103a6610649366004612dae565b610e07565b34801561065a57600080fd5b506103bd611063565b34801561066f57600080fd5b506103bd61067e366004612dae565b611069565b34801561068f57600080fd5b506103a6611084565b3480156106a457600080fd5b506103a66106b3366004613038565b611106565b3480156106c457600080fd5b506103a66106d3366004612f36565b611173565b3480156106e457600080fd5b5061042a6111c6565b3480156106f957600080fd5b506104616111d6565b34801561070e57600080fd5b506103a661071d366004612de6565b6111e5565b34801561072e57600080fd5b506103fd611322565b34801561074357600080fd5b506103bd611331565b34801561075857600080fd5b506103a6610767366004612e5e565b611337565b34801561077857600080fd5b5061042a6113a8565b34801561078d57600080fd5b5061042a61079c366004612e8b565b6113b8565b3480156107ad57600080fd5b5061042a6107bc366004612e8b565b611420565b3480156107cd57600080fd5b5061042a6107dc366004612dae565b611434565b3480156107ed57600080fd5b506103bd611449565b34801561080257600080fd5b506103a6610811366004612fe1565b61144f565b34801561082257600080fd5b506103bd6114c7565b34801561083757600080fd5b506103a6610846366004612e5e565b6114cd565b34801561085757600080fd5b506103a6610866366004612e8b565b611562565b34801561087757600080fd5b506103a6610886366004612eb6565b6115ae565b34801561089757600080fd5b506104616116a3565b3480156108ac57600080fd5b506108c06108bb366004612dae565b6116b2565b6040516103ca959493929190613800565b3480156108dd57600080fd5b506103a66116e4565b3480156108f257600080fd5b506103bd61175f565b34801561090757600080fd5b506103a6610916366004612fb1565b611765565b34801561092757600080fd5b506103bd610936366004612de6565b6117f5565b34801561094757600080fd5b50610461610956366004612fb1565b611820565b34801561096757600080fd5b506103bd61184a565b34801561097c57600080fd5b506103bd611850565b34801561099157600080fd5b506103a6611856565b3480156109a657600080fd5b506103bd61191b565b3480156109bb57600080fd5b506103a66109ca366004612dae565b611a0b565b3480156109db57600080fd5b5061042a611ab0565b6109ec611b7d565b6005546001600160a01b03908116911614610a225760405162461bcd60e51b8152600401610a199061347e565b60405180910390fd5b6008805460ff60b01b1916600160b01b179055610a4042600a611ac0565b601355565b600e5481565b60115481565b606060038054610a60906138a1565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8c906138a1565b8015610ad95780601f10610aae57610100808354040283529160200191610ad9565b820191906000526020600020905b815481529060010190602001808311610abc57829003601f168201915b5050505050905090565b6000610af7610af0611b7d565b8484611b81565b5060015b92915050565b600d5481565b6008546001600160a01b031681565b60025490565b600854600160b81b900460ff1681565b60156020526000908152604090205460ff1681565b60166020526000908152604090205460ff1681565b6000610b63848484611c35565b610bd384610b6f611b7d565b610bce85604051806060016040528060288152602001613979602891396001600160a01b038a16600090815260016020526040812090610bad611b7d565b6001600160a01b031681526020810191909152604001600020549190612546565b611b81565b5060019392505050565b601b546001600160a01b031681565b600990565b610bf9611b7d565b6005546001600160a01b03908116911614610c265760405162461bcd60e51b8152600401610a199061347e565b600955565b600854600160c81b900460ff1681565b6000610af7610c48611b7d565b84610bce8560016000610c59611b7d565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611ac0565b610c91611b7d565b6005546001600160a01b03908116911614610cbe5760405162461bcd60e51b8152600401610a199061347e565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b601a546001600160a01b031681565b6001600160a01b03811660009081526017602052604090205460ff165b919050565b610d22611b7d565b6005546001600160a01b03908116911614610d4f5760405162461bcd60e51b8152600401610a199061347e565b600b829055600c819055610d638282611ac0565b600d819055600b54600c546040517f9fef908e44cc0f51b9e9f7fd26bc506a50448657da0dc10a9661e37bc1c4a39293610d9e9392916137ea565b60405180910390a15050565b60105481565b610db8611b7d565b6005546001600160a01b03908116911614610de55760405162461bcd60e51b8152600401610a199061347e565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b610e0f611b7d565b6005546001600160a01b03908116911614610e3c5760405162461bcd60e51b8152600401610a199061347e565b6008546001600160a01b0382811691161415610e6a5760405162461bcd60e51b8152600401610a199061333f565b6008546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600880546001600160a01b0319166001600160a01b0383811691909117918290556040805163c45a015560e01b815290516000939092169163c45a015591600480820192602092909190829003018186803b158015610f0357600080fd5b505afa158015610f17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3b9190612dca565b6001600160a01b031663c9c6539630600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f9857600080fd5b505afa158015610fac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd09190612dca565b6040518363ffffffff1660e01b8152600401610fed9291906130a4565b602060405180830381600087803b15801561100757600080fd5b505af115801561101b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103f9190612dca565b601a80546001600160a01b0319166001600160a01b03929092169190911790555050565b600c5481565b6001600160a01b031660009081526020819052604090205490565b61108c611b7d565b6005546001600160a01b039081169116146110b95760405162461bcd60e51b8152600401610a199061347e565b600554600680546001600160a01b0319166001600160a01b039092169182179055604051600091906000805160206139a1833981519152908390a3600580546001600160a01b0319169055565b61110e611b7d565b6005546001600160a01b0390811691161461113b5760405162461bcd60e51b8152600401610a199061347e565b61114983633b9aca0061386b565b60105561115a82633b9aca0061386b565b60115561116b81633b9aca0061386b565b601255505050565b61117b611b7d565b6005546001600160a01b039081169116146111a85760405162461bcd60e51b8152600401610a199061347e565b60088054911515600160a81b0260ff60a81b19909216919091179055565b600854600160a81b900460ff1681565b6005546001600160a01b031690565b6111ed611b7d565b6005546001600160a01b0390811691161461121a5760405162461bcd60e51b8152600401610a199061347e565b6040516370a0823160e01b81526000906001600160a01b038416906370a0823190611249903090600401613090565b60206040518083038186803b15801561126157600080fd5b505afa158015611275573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112999190612fc9565b60405163a9059cbb60e01b81529091506001600160a01b0384169063a9059cbb906112ca90859085906004016130e2565b602060405180830381600087803b1580156112e457600080fd5b505af11580156112f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131c9190612f52565b50505050565b606060048054610a60906138a1565b600b5481565b61133f611b7d565b6005546001600160a01b0390811691161461136c5760405162461bcd60e51b8152600401610a199061347e565b601a546001600160a01b038381169116141561139a5760405162461bcd60e51b8152600401610a19906134b3565b6113a48282612580565b5050565b600854600160c01b900460ff1681565b6000610af76113c5611b7d565b84610bce856040518060600160405280602581526020016139c160259139600160006113ef611b7d565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612546565b6000610af761142d611b7d565b8484611c35565b60186020526000908152604090205460ff1681565b60075490565b611457611b7d565b6005546001600160a01b039081169116146114845760405162461bcd60e51b8152600401610a199061347e565b604183111561149257600080fd5b60088054911515600160c01b0260ff60c01b19931515600160b81b0260ff60b81b199093169290921792909216179055600e55565b60135481565b6114d5611b7d565b6005546001600160a01b039081169116146115025760405162461bcd60e51b8152600401610a199061347e565b6001600160a01b03821660008181526017602052604090819020805460ff1916841515179055517f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df79061155690849061318f565b60405180910390a25050565b61156a611b7d565b6005546001600160a01b039081169116146115975760405162461bcd60e51b8152600401610a199061347e565b6113a4826115a983633b9aca0061386b565b612613565b6115b6611b7d565b6005546001600160a01b039081169116146115e35760405162461bcd60e51b8152600401610a199061347e565b60005b8281101561166257816017600086868581811061161357634e487b7160e01b600052603260045260246000fd5b90506020020160208101906116289190612dae565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061165a816138dc565b9150506115e6565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b3583838360405161169693929190613136565b60405180910390a1505050565b601c546001600160a01b031681565b601460205260009081526040902080546001820154600283015460038401546004909401549293919290919060ff1685565b6006546001600160a01b0316331461170e5760405162461bcd60e51b8152600401610a19906136e0565b6006546005546040516001600160a01b0392831692909116906000805160206139a183398151915290600090a3600654600580546001600160a01b0319166001600160a01b03909216919091179055565b60095481565b61176d611b7d565b6005546001600160a01b0390811691161461179a5760405162461bcd60e51b8152600401610a199061347e565b60058054600680546001600160a01b03199081166001600160a01b038416179091551690556117c98142613833565b6007556005546040516000916001600160a01b0316906000805160206139a1833981519152908390a350565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6019818154811061183057600080fd5b6000918252602090912001546001600160a01b0316905081565b600a5481565b60125481565b61185e611b7d565b6005546001600160a01b0390811691161461188b5760405162461bcd60e51b8152600401610a199061347e565b60005b601954811015611918576000601982815481106118bb57634e487b7160e01b600052603260045260246000fd5b60009182526020822001546001600160a01b031691506118da82611069565b90506118e6828261261d565b506001600160a01b03166000908152601660205260409020805460ff1916905580611910816138dc565b91505061188e565b50565b601a5460408051630240bc6b60e21b815290516000926001600160a01b031691839182918491630902f1ac91600480820192606092909190829003018186803b15801561196757600080fd5b505afa15801561197b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061199f9190612f6e565b506001600160701b039182169350169050818111156119ba57905b806119c85760009350611a05565b816119d982655af3107a400061386b565b1115611a00576119f9826119f383655af3107a400061386b565b90611af6565b9350611a05565b600093505b50505090565b611a13611b7d565b6005546001600160a01b03908116911614611a405760405162461bcd60e51b8152600401610a199061347e565b6001600160a01b038116611a665760405162461bcd60e51b8152600401610a1990613280565b6005546040516001600160a01b038084169216906000805160206139a183398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600854600160b01b900460ff1681565b600080611acd8385613833565b905083811015611aef5760405162461bcd60e51b8152600401610a1990613308565b9392505050565b6000611aef83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126ff565b600082611b4757506000610afb565b6000611b53838561386b565b905082611b60858361384b565b14611aef5760405162461bcd60e51b8152600401610a199061343d565b3390565b6001600160a01b038316611ba75760405162461bcd60e51b8152600401610a199061363f565b6001600160a01b038216611bcd5760405162461bcd60e51b8152600401610a19906132c6565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611c2890859061375a565b60405180910390a3505050565b6001600160a01b038316611c5b5760405162461bcd60e51b8152600401610a1990613566565b6001600160a01b038216611c815760405162461bcd60e51b8152600401610a19906131ed565b6001600160a01b03821660009081526015602052604090205460ff16158015611cc357506001600160a01b03831660009081526015602052604090205460ff16155b611cdf5760405162461bcd60e51b8152600401610a1990613230565b80611cf557611cf08383600061272d565b612541565b6000611d0030611069565b90506000600a5482101590506000818015611d255750600854600160a01b900460ff16155b8015611d4a57506001600160a01b03861660009081526018602052604090205460ff16155b8015611d6f5750611d596111d6565b6001600160a01b0316866001600160a01b031614155b8015611d945750611d7e6111d6565b6001600160a01b0316856001600160a01b031614155b15611e86576008805460ff60a01b1916600160a01b179055600d54600c54600091611dc4916119f3908790611b38565b9050611dcf81612842565b601c546040517feafa9125fd4b0edd379b9ab67721e8f4eb26bc018c352092ccac54a89ac6fed791611e0c9184916001600160a01b031690613763565b60405180910390a16000611e31600d546119f3600b5488611b3890919063ffffffff16565b9050611e3c81612884565b7f61d10b3f17a77466a4241488e37c886fa1637f9863ae76dd5076a80a932bc4eb81604051611e6b919061375a565b60405180910390a150506008805460ff60a01b191690555060015b6008546001600160a01b03871660009081526017602052604090205460ff600160a01b909204821615911680611ed457506001600160a01b03861660009081526017602052604090205460ff165b15611edd575060005b8015612531576001600160a01b03871660009081526018602052604090205460ff161561210257600854600160b01b900460ff16611f2d5760405162461bcd60e51b8152600401610a1990613608565b601054851115611f4f5760405162461bcd60e51b8152600401610a1990613389565b60125485611f5c88611069565b611f669190613833565b1115611f845760405162461bcd60e51b8152600401610a19906133d1565b60135442118015908190611fb157506001600160a01b03871660009081526016602052604090205460ff16155b1561200257601980546001810182556000919091527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c96950180546001600160a01b0319166001600160a01b0389161790555b600854600160a81b900460ff16801561203457506001600160a01b03871660009081526016602052604090205460ff16155b1561208557601980546001810182556000919091527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c96950180546001600160a01b0319166001600160a01b0389161790555b600854600160c01b900460ff161515600114156120c3576120a68787612905565b6001600160a01b0388166000908152601460205260409020600201555b7f1df6c66a1a6eb6b0b6a23930c6ec94664e676e5d72f819a20a11e6c54540fa4286886040516120f4929190613763565b60405180910390a1506123d1565b6001600160a01b03861660009081526018602052604090205460ff16156122e2576001600160a01b03871660009081526016602052604090205460ff161561215c5760405162461bcd60e51b8152600401610a1990613415565b60115485111561217e5760405162461bcd60e51b8152600401610a19906135ab565b600854600160c81b900460ff16151560011480156121b857506001600160a01b03871660009081526014602052604090206004015460ff16155b156122705760006121c888611069565b9050600281111561226e576121de816002611af6565b8611156121ea57600080fd5b6001600160a01b03881660009081526014602052604081206003018054889290612215908490613833565b909155506122269050816003611af6565b6001600160a01b0389166000908152601460205260409020600301541061226e576001600160a01b0388166000908152601460205260409020600401805460ff191660011790555b505b6122838561227d89611069565b90612996565b6122a4576001600160a01b0387166000908152601460205260408120600201555b7f845540a7f3f9afb8980bffef1e5a59039c43bbd45de62cc2ce5def5830465f0485886040516122d5929190613763565b60405180910390a16123d1565b6001600160a01b03871660009081526017602052604090205460ff1615801561232457506001600160a01b03861660009081526017602052604090205460ff16155b156123d157600854600160c01b900460ff161515600114156123675761234a8686612905565b6001600160a01b0387166000908152601460205260409020600201555b6123748561227d89611069565b612395576001600160a01b0387166000908152601460205260408120600201555b7f38e8feed990acd7f5210170f614d354c7a0485670b9a787e9e00f8fca640d5748787876040516123c8939291906130be565b60405180910390a15b60006123ed60646119f3600d5489611b3890919063ffffffff16565b6001600160a01b03881660009081526018602052604090205490915060ff161561242e5761242160646119f3886001611b38565b61242b9082613833565b90505b600854600090600160b81b900460ff161515600114801561246857506001600160a01b03891660009081526017602052604090205460ff16155b801561248c57506001600160a01b03881660009081526018602052604090205460ff165b15612504576000600185151514156124bf57600f5487116124ae5760016124bc565b600f546124bc908890611af6565b90505b6001600160a01b038a166000908152601460205260409020600201546124e69089836129d8565b91508282116124f6576000612500565b612500838361388a565b9150505b6125186125118284613833565b8890612996565b965061252e89306125298486613833565b61272d565b50505b61253c87878761272d565b505050505b505050565b6000818484111561256a5760405162461bcd60e51b8152600401610a19919061319a565b506000612577848661388a565b95945050505050565b6001600160a01b03821660009081526018602052604090205460ff16151581151514156125bf5760405162461bcd60e51b8152600401610a1990613683565b6001600160a01b038216600081815260186020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6113a48282612aad565b6001600160a01b0382166126435760405162461bcd60e51b8152600401610a1990613525565b61264f82600083612541565b61268c81604051806060016040528060228152602001613931602291396001600160a01b0385166000908152602081905260409020549190612546565b6001600160a01b0383166000908152602081905260409020556002546126b29082612996565b6002556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906126f390859061375a565b60405180910390a35050565b600081836127205760405162461bcd60e51b8152600401610a19919061319a565b506000612577848661384b565b6001600160a01b0383166127535760405162461bcd60e51b8152600401610a1990613566565b6001600160a01b0382166127795760405162461bcd60e51b8152600401610a19906131ed565b612784838383612541565b6127c181604051806060016040528060268152602001613953602691396001600160a01b0386166000908152602081905260409020549190612546565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546127f09082611ac0565b6001600160a01b0380841660008181526020819052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c2890859061375a565b61284b81612b61565b601c546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156113a4573d6000803e3d6000fd5b6000612891826002611af6565b9050600061289f8383612996565b9050476128ab83612b61565b60006128b74783612996565b90506128c38382612ce6565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482856040516128f6939291906137ea565b60405180910390a15050505050565b60008061291061191b565b6001600160a01b03851660009081526014602052604081206002015491925061293886611069565b9050811580612945575080155b156129525782935061298d565b8461295f5781935061298d565b61298a61296c8683613833565b612976878661386b565b612980848661386b565b6119f39190613833565b93505b50505092915050565b6000611aef83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612546565b6000806129e361191b565b905060008515806129f45750606485105b15612a025760009250612aa4565b81612a0e87600a613833565b1015612a9f576064612a39612a32612a2b60026119f38b8861388a565b8590611af6565b8290611af6565b915084600e541115612a945784600e54612a53919061388a565b821015612a605781612a6e565b84600e54612a6e919061388a565b915060008211612a7f576000612a8d565b612a8d816119f38885611b38565b9350612a99565b600093505b50612aa4565b600092505b50509392505050565b6001600160a01b038216612ad35760405162461bcd60e51b8152600401610a1990613723565b612adf60008383612541565b600254612aec9082611ac0565b6002556001600160a01b038216600090815260208190526040902054612b129082611ac0565b6001600160a01b0383166000818152602081905260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906126f390859061375a565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612ba457634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612bf857600080fd5b505afa158015612c0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c309190612dca565b81600181518110612c5157634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152600854612c779130911684611b81565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac94790612cb090859060009086903090429060040161377a565b600060405180830381600087803b158015612cca57600080fd5b505af1158015612cde573d6000803e3d6000fd5b505050505050565b600854612cfe9030906001600160a01b031684611b81565b600854601b5460405163f305d71960e01b81526001600160a01b039283169263f305d719928592612d3e92309289926000928392169042906004016130fb565b6060604051808303818588803b158015612d5757600080fd5b505af1158015612d6b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d909190613063565b5050505050565b80516001600160701b0381168114610d1557600080fd5b600060208284031215612dbf578081fd5b8135611aef8161390d565b600060208284031215612ddb578081fd5b8151611aef8161390d565b60008060408385031215612df8578081fd5b8235612e038161390d565b91506020830135612e138161390d565b809150509250929050565b600080600060608486031215612e32578081fd5b8335612e3d8161390d565b92506020840135612e4d8161390d565b929592945050506040919091013590565b60008060408385031215612e70578182fd5b8235612e7b8161390d565b91506020830135612e1381613922565b60008060408385031215612e9d578182fd5b8235612ea88161390d565b946020939093013593505050565b600080600060408486031215612eca578283fd5b833567ffffffffffffffff80821115612ee1578485fd5b818601915086601f830112612ef4578485fd5b813581811115612f02578586fd5b8760208083028501011115612f15578586fd5b60209283019550935050840135612f2b81613922565b809150509250925092565b600060208284031215612f47578081fd5b8135611aef81613922565b600060208284031215612f63578081fd5b8151611aef81613922565b600080600060608486031215612f82578283fd5b612f8b84612d97565b9250612f9960208501612d97565b9150604084015163ffffffff81168114612f2b578182fd5b600060208284031215612fc2578081fd5b5035919050565b600060208284031215612fda578081fd5b5051919050565b600080600060608486031215612ff5578283fd5b83359250602084013561300781613922565b91506040840135612f2b81613922565b60008060408385031215613029578182fd5b50508035926020909101359150565b60008060006060848603121561304c578081fd5b505081359360208301359350604090920135919050565b600080600060608486031215613077578081fd5b8351925060208401519150604084015190509250925092565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b6040808252810183905260008460608301825b8681101561317957823561315c8161390d565b6001600160a01b0316825260209283019290910190600101613149565b5080925050508215156020830152949350505050565b901515815260200190565b6000602080835283518082850152825b818110156131c6578581018301518582016040015282016131aa565b818111156131d75783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526030908201527f596f75722061646472657373206f7220726563697069656e742061646472657360408201526f1cc81a5cc8189b1858dadb1a5cdd195960821b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252602a908201527f546f6b656e3a2054686520726f7574657220616c7265616479206861732074686040820152696174206164647265737360b01b606082015260800190565b60208082526028908201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546040820152673c20b6b7bab73a1760c11b606082015260800190565b60208082526024908201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6040820152633ab73a1760e11b606082015260800190565b6020808252600e908201526d2cb7ba9030b9329039b734b832b960911b604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252604c908201527f546f6b656e3a205468652050616e63616b655377617020706169722063616e6e60408201527f6f742062652072656d6f7665642066726f6d206175746f6d617465644d61726b60608201526b65744d616b6572506169727360a01b608082015260a00190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252603a908201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560408201527f206d617853656c6c5472616e73616374696f6e416d6f756e742e000000000000606082015260800190565b60208082526018908201527f546f6b656e2069736e2774206c61756e63686564207965740000000000000000604082015260600190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252603f908201527f546f6b656e3a204175746f6d61746564206d61726b6574206d616b657220706160408201527f697220697320616c72656164792073657420746f20746861742076616c756500606082015260800190565b60208082526023908201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6040820152626f636b60e81b606082015260800190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b90815260200190565b9182526001600160a01b0316602082015260400190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156137c95784516001600160a01b0316835293830193918301916001016137a4565b50506001600160a01b03969096166060850152505050608001529392505050565b9283526020830191909152604082015260600190565b9485526020850193909352604084019190915260608301521515608082015260a00190565b60ff91909116815260200190565b60008219821115613846576138466138f7565b500190565b60008261386657634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615613885576138856138f7565b500290565b60008282101561389c5761389c6138f7565b500390565b6002810460018216806138b557607f821691505b602082108114156138d657634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156138f0576138f06138f7565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461191857600080fd5b801515811461191857600080fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a458fabb40206b92df5ce5737c4037db141de4f4fe1a1bd784d53f56c75b236064736f6c634300080000330000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000003b9aca00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000064000000000000000000000000754ef0749cd80923723de74014c9a34d43251bf5000000000000000000000000925fba459a7e714007d230c3d669393f2583edbb0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Deployed Bytecode
0x6080604052600436106103855760003560e01c8063877f4de5116101d1578063c1a106c611610102578063dd62ed3e116100a0578063e6db992f1161006f578063e6db992f14610985578063eb91d37e1461099a578063f2fde38b146109af578063f8b3c23e146109cf5761038c565b8063dd62ed3e1461091b578063ddbbf6831461093b578063e2f456051461095b578063e6c75f71146109705761038c565b8063cb0e55a8116100dc578063cb0e55a8146108a0578063d9c3c610146108d1578063da473fcd146108e6578063dd467064146108fb5761038c565b8063c1a106c61461084b578063c492f0461461086b578063ca02d7911461088b5761038c565b8063a457c2d71161016f578063b6c5232411610149578063b6c52324146107e1578063b99d4839146107f6578063bf56b37114610816578063c02466681461082b5761038c565b8063a457c2d714610781578063a9059cbb146107a1578063b62496f5146107c15761038c565b806395d89b41116101ab57806395d89b411461072257806398118cb4146107375780639a7a23d61461074c5780639ec5691d1461076c5761038c565b8063877f4de5146106d85780638da5cb5b146106ed5780638e989382146107025761038c565b8063316601a7116102b65780635aa821a91161025457806370a082311161022357806370a0823114610663578063715018a6146106835780637290b621146106985780637316c2e9146106b85761038c565b80635aa821a9146105f95780635d098b381461060e57806365b8dbc01461062e5780636b67c4df1461064e5761038c565b8063455a439611610290578063455a43961461058457806349bd5a5e146105a45780634fbee193146105b957806352f7c988146105d95761038c565b8063316601a71461052f57806331a0a88c1461054f57806339509351146105645761038c565b806318160ddd116103235780631fca803d116102fd5780631fca803d146104b857806323b872dd146104d8578063264d26dd146104f8578063313ce5671461050d5761038c565b806318160ddd1461046e5780631c15aa11146104835780631cdd3be3146104985761038c565b806306fdde031161035f57806306fdde03146103e8578063095ea7b31461040a57806313114a9d146104375780631694505e1461044c5761038c565b806301339c211461039157806301f59d16146103a857806302259e9e146103d35761038c565b3661038c57005b600080fd5b34801561039d57600080fd5b506103a66109e4565b005b3480156103b457600080fd5b506103bd610a45565b6040516103ca919061375a565b60405180910390f35b3480156103df57600080fd5b506103bd610a4b565b3480156103f457600080fd5b506103fd610a51565b6040516103ca919061319a565b34801561041657600080fd5b5061042a610425366004612e8b565b610ae3565b6040516103ca919061318f565b34801561044357600080fd5b506103bd610b01565b34801561045857600080fd5b50610461610b07565b6040516103ca9190613090565b34801561047a57600080fd5b506103bd610b16565b34801561048f57600080fd5b5061042a610b1c565b3480156104a457600080fd5b5061042a6104b3366004612dae565b610b2c565b3480156104c457600080fd5b5061042a6104d3366004612dae565b610b41565b3480156104e457600080fd5b5061042a6104f3366004612e1e565b610b56565b34801561050457600080fd5b50610461610bdd565b34801561051957600080fd5b50610522610bec565b6040516103ca9190613825565b34801561053b57600080fd5b506103a661054a366004612fb1565b610bf1565b34801561055b57600080fd5b5061042a610c2b565b34801561057057600080fd5b5061042a61057f366004612e8b565b610c3b565b34801561059057600080fd5b506103a661059f366004612e5e565b610c89565b3480156105b057600080fd5b50610461610ce9565b3480156105c557600080fd5b5061042a6105d4366004612dae565b610cf8565b3480156105e557600080fd5b506103a66105f4366004613017565b610d1a565b34801561060557600080fd5b506103bd610daa565b34801561061a57600080fd5b506103a6610629366004612dae565b610db0565b34801561063a57600080fd5b506103a6610649366004612dae565b610e07565b34801561065a57600080fd5b506103bd611063565b34801561066f57600080fd5b506103bd61067e366004612dae565b611069565b34801561068f57600080fd5b506103a6611084565b3480156106a457600080fd5b506103a66106b3366004613038565b611106565b3480156106c457600080fd5b506103a66106d3366004612f36565b611173565b3480156106e457600080fd5b5061042a6111c6565b3480156106f957600080fd5b506104616111d6565b34801561070e57600080fd5b506103a661071d366004612de6565b6111e5565b34801561072e57600080fd5b506103fd611322565b34801561074357600080fd5b506103bd611331565b34801561075857600080fd5b506103a6610767366004612e5e565b611337565b34801561077857600080fd5b5061042a6113a8565b34801561078d57600080fd5b5061042a61079c366004612e8b565b6113b8565b3480156107ad57600080fd5b5061042a6107bc366004612e8b565b611420565b3480156107cd57600080fd5b5061042a6107dc366004612dae565b611434565b3480156107ed57600080fd5b506103bd611449565b34801561080257600080fd5b506103a6610811366004612fe1565b61144f565b34801561082257600080fd5b506103bd6114c7565b34801561083757600080fd5b506103a6610846366004612e5e565b6114cd565b34801561085757600080fd5b506103a6610866366004612e8b565b611562565b34801561087757600080fd5b506103a6610886366004612eb6565b6115ae565b34801561089757600080fd5b506104616116a3565b3480156108ac57600080fd5b506108c06108bb366004612dae565b6116b2565b6040516103ca959493929190613800565b3480156108dd57600080fd5b506103a66116e4565b3480156108f257600080fd5b506103bd61175f565b34801561090757600080fd5b506103a6610916366004612fb1565b611765565b34801561092757600080fd5b506103bd610936366004612de6565b6117f5565b34801561094757600080fd5b50610461610956366004612fb1565b611820565b34801561096757600080fd5b506103bd61184a565b34801561097c57600080fd5b506103bd611850565b34801561099157600080fd5b506103a6611856565b3480156109a657600080fd5b506103bd61191b565b3480156109bb57600080fd5b506103a66109ca366004612dae565b611a0b565b3480156109db57600080fd5b5061042a611ab0565b6109ec611b7d565b6005546001600160a01b03908116911614610a225760405162461bcd60e51b8152600401610a199061347e565b60405180910390fd5b6008805460ff60b01b1916600160b01b179055610a4042600a611ac0565b601355565b600e5481565b60115481565b606060038054610a60906138a1565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8c906138a1565b8015610ad95780601f10610aae57610100808354040283529160200191610ad9565b820191906000526020600020905b815481529060010190602001808311610abc57829003601f168201915b5050505050905090565b6000610af7610af0611b7d565b8484611b81565b5060015b92915050565b600d5481565b6008546001600160a01b031681565b60025490565b600854600160b81b900460ff1681565b60156020526000908152604090205460ff1681565b60166020526000908152604090205460ff1681565b6000610b63848484611c35565b610bd384610b6f611b7d565b610bce85604051806060016040528060288152602001613979602891396001600160a01b038a16600090815260016020526040812090610bad611b7d565b6001600160a01b031681526020810191909152604001600020549190612546565b611b81565b5060019392505050565b601b546001600160a01b031681565b600990565b610bf9611b7d565b6005546001600160a01b03908116911614610c265760405162461bcd60e51b8152600401610a199061347e565b600955565b600854600160c81b900460ff1681565b6000610af7610c48611b7d565b84610bce8560016000610c59611b7d565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611ac0565b610c91611b7d565b6005546001600160a01b03908116911614610cbe5760405162461bcd60e51b8152600401610a199061347e565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b601a546001600160a01b031681565b6001600160a01b03811660009081526017602052604090205460ff165b919050565b610d22611b7d565b6005546001600160a01b03908116911614610d4f5760405162461bcd60e51b8152600401610a199061347e565b600b829055600c819055610d638282611ac0565b600d819055600b54600c546040517f9fef908e44cc0f51b9e9f7fd26bc506a50448657da0dc10a9661e37bc1c4a39293610d9e9392916137ea565b60405180910390a15050565b60105481565b610db8611b7d565b6005546001600160a01b03908116911614610de55760405162461bcd60e51b8152600401610a199061347e565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b610e0f611b7d565b6005546001600160a01b03908116911614610e3c5760405162461bcd60e51b8152600401610a199061347e565b6008546001600160a01b0382811691161415610e6a5760405162461bcd60e51b8152600401610a199061333f565b6008546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600880546001600160a01b0319166001600160a01b0383811691909117918290556040805163c45a015560e01b815290516000939092169163c45a015591600480820192602092909190829003018186803b158015610f0357600080fd5b505afa158015610f17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3b9190612dca565b6001600160a01b031663c9c6539630600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f9857600080fd5b505afa158015610fac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd09190612dca565b6040518363ffffffff1660e01b8152600401610fed9291906130a4565b602060405180830381600087803b15801561100757600080fd5b505af115801561101b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103f9190612dca565b601a80546001600160a01b0319166001600160a01b03929092169190911790555050565b600c5481565b6001600160a01b031660009081526020819052604090205490565b61108c611b7d565b6005546001600160a01b039081169116146110b95760405162461bcd60e51b8152600401610a199061347e565b600554600680546001600160a01b0319166001600160a01b039092169182179055604051600091906000805160206139a1833981519152908390a3600580546001600160a01b0319169055565b61110e611b7d565b6005546001600160a01b0390811691161461113b5760405162461bcd60e51b8152600401610a199061347e565b61114983633b9aca0061386b565b60105561115a82633b9aca0061386b565b60115561116b81633b9aca0061386b565b601255505050565b61117b611b7d565b6005546001600160a01b039081169116146111a85760405162461bcd60e51b8152600401610a199061347e565b60088054911515600160a81b0260ff60a81b19909216919091179055565b600854600160a81b900460ff1681565b6005546001600160a01b031690565b6111ed611b7d565b6005546001600160a01b0390811691161461121a5760405162461bcd60e51b8152600401610a199061347e565b6040516370a0823160e01b81526000906001600160a01b038416906370a0823190611249903090600401613090565b60206040518083038186803b15801561126157600080fd5b505afa158015611275573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112999190612fc9565b60405163a9059cbb60e01b81529091506001600160a01b0384169063a9059cbb906112ca90859085906004016130e2565b602060405180830381600087803b1580156112e457600080fd5b505af11580156112f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131c9190612f52565b50505050565b606060048054610a60906138a1565b600b5481565b61133f611b7d565b6005546001600160a01b0390811691161461136c5760405162461bcd60e51b8152600401610a199061347e565b601a546001600160a01b038381169116141561139a5760405162461bcd60e51b8152600401610a19906134b3565b6113a48282612580565b5050565b600854600160c01b900460ff1681565b6000610af76113c5611b7d565b84610bce856040518060600160405280602581526020016139c160259139600160006113ef611b7d565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612546565b6000610af761142d611b7d565b8484611c35565b60186020526000908152604090205460ff1681565b60075490565b611457611b7d565b6005546001600160a01b039081169116146114845760405162461bcd60e51b8152600401610a199061347e565b604183111561149257600080fd5b60088054911515600160c01b0260ff60c01b19931515600160b81b0260ff60b81b199093169290921792909216179055600e55565b60135481565b6114d5611b7d565b6005546001600160a01b039081169116146115025760405162461bcd60e51b8152600401610a199061347e565b6001600160a01b03821660008181526017602052604090819020805460ff1916841515179055517f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df79061155690849061318f565b60405180910390a25050565b61156a611b7d565b6005546001600160a01b039081169116146115975760405162461bcd60e51b8152600401610a199061347e565b6113a4826115a983633b9aca0061386b565b612613565b6115b6611b7d565b6005546001600160a01b039081169116146115e35760405162461bcd60e51b8152600401610a199061347e565b60005b8281101561166257816017600086868581811061161357634e487b7160e01b600052603260045260246000fd5b90506020020160208101906116289190612dae565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061165a816138dc565b9150506115e6565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b3583838360405161169693929190613136565b60405180910390a1505050565b601c546001600160a01b031681565b601460205260009081526040902080546001820154600283015460038401546004909401549293919290919060ff1685565b6006546001600160a01b0316331461170e5760405162461bcd60e51b8152600401610a19906136e0565b6006546005546040516001600160a01b0392831692909116906000805160206139a183398151915290600090a3600654600580546001600160a01b0319166001600160a01b03909216919091179055565b60095481565b61176d611b7d565b6005546001600160a01b0390811691161461179a5760405162461bcd60e51b8152600401610a199061347e565b60058054600680546001600160a01b03199081166001600160a01b038416179091551690556117c98142613833565b6007556005546040516000916001600160a01b0316906000805160206139a1833981519152908390a350565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6019818154811061183057600080fd5b6000918252602090912001546001600160a01b0316905081565b600a5481565b60125481565b61185e611b7d565b6005546001600160a01b0390811691161461188b5760405162461bcd60e51b8152600401610a199061347e565b60005b601954811015611918576000601982815481106118bb57634e487b7160e01b600052603260045260246000fd5b60009182526020822001546001600160a01b031691506118da82611069565b90506118e6828261261d565b506001600160a01b03166000908152601660205260409020805460ff1916905580611910816138dc565b91505061188e565b50565b601a5460408051630240bc6b60e21b815290516000926001600160a01b031691839182918491630902f1ac91600480820192606092909190829003018186803b15801561196757600080fd5b505afa15801561197b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061199f9190612f6e565b506001600160701b039182169350169050818111156119ba57905b806119c85760009350611a05565b816119d982655af3107a400061386b565b1115611a00576119f9826119f383655af3107a400061386b565b90611af6565b9350611a05565b600093505b50505090565b611a13611b7d565b6005546001600160a01b03908116911614611a405760405162461bcd60e51b8152600401610a199061347e565b6001600160a01b038116611a665760405162461bcd60e51b8152600401610a1990613280565b6005546040516001600160a01b038084169216906000805160206139a183398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600854600160b01b900460ff1681565b600080611acd8385613833565b905083811015611aef5760405162461bcd60e51b8152600401610a1990613308565b9392505050565b6000611aef83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126ff565b600082611b4757506000610afb565b6000611b53838561386b565b905082611b60858361384b565b14611aef5760405162461bcd60e51b8152600401610a199061343d565b3390565b6001600160a01b038316611ba75760405162461bcd60e51b8152600401610a199061363f565b6001600160a01b038216611bcd5760405162461bcd60e51b8152600401610a19906132c6565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611c2890859061375a565b60405180910390a3505050565b6001600160a01b038316611c5b5760405162461bcd60e51b8152600401610a1990613566565b6001600160a01b038216611c815760405162461bcd60e51b8152600401610a19906131ed565b6001600160a01b03821660009081526015602052604090205460ff16158015611cc357506001600160a01b03831660009081526015602052604090205460ff16155b611cdf5760405162461bcd60e51b8152600401610a1990613230565b80611cf557611cf08383600061272d565b612541565b6000611d0030611069565b90506000600a5482101590506000818015611d255750600854600160a01b900460ff16155b8015611d4a57506001600160a01b03861660009081526018602052604090205460ff16155b8015611d6f5750611d596111d6565b6001600160a01b0316866001600160a01b031614155b8015611d945750611d7e6111d6565b6001600160a01b0316856001600160a01b031614155b15611e86576008805460ff60a01b1916600160a01b179055600d54600c54600091611dc4916119f3908790611b38565b9050611dcf81612842565b601c546040517feafa9125fd4b0edd379b9ab67721e8f4eb26bc018c352092ccac54a89ac6fed791611e0c9184916001600160a01b031690613763565b60405180910390a16000611e31600d546119f3600b5488611b3890919063ffffffff16565b9050611e3c81612884565b7f61d10b3f17a77466a4241488e37c886fa1637f9863ae76dd5076a80a932bc4eb81604051611e6b919061375a565b60405180910390a150506008805460ff60a01b191690555060015b6008546001600160a01b03871660009081526017602052604090205460ff600160a01b909204821615911680611ed457506001600160a01b03861660009081526017602052604090205460ff165b15611edd575060005b8015612531576001600160a01b03871660009081526018602052604090205460ff161561210257600854600160b01b900460ff16611f2d5760405162461bcd60e51b8152600401610a1990613608565b601054851115611f4f5760405162461bcd60e51b8152600401610a1990613389565b60125485611f5c88611069565b611f669190613833565b1115611f845760405162461bcd60e51b8152600401610a19906133d1565b60135442118015908190611fb157506001600160a01b03871660009081526016602052604090205460ff16155b1561200257601980546001810182556000919091527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c96950180546001600160a01b0319166001600160a01b0389161790555b600854600160a81b900460ff16801561203457506001600160a01b03871660009081526016602052604090205460ff16155b1561208557601980546001810182556000919091527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c96950180546001600160a01b0319166001600160a01b0389161790555b600854600160c01b900460ff161515600114156120c3576120a68787612905565b6001600160a01b0388166000908152601460205260409020600201555b7f1df6c66a1a6eb6b0b6a23930c6ec94664e676e5d72f819a20a11e6c54540fa4286886040516120f4929190613763565b60405180910390a1506123d1565b6001600160a01b03861660009081526018602052604090205460ff16156122e2576001600160a01b03871660009081526016602052604090205460ff161561215c5760405162461bcd60e51b8152600401610a1990613415565b60115485111561217e5760405162461bcd60e51b8152600401610a19906135ab565b600854600160c81b900460ff16151560011480156121b857506001600160a01b03871660009081526014602052604090206004015460ff16155b156122705760006121c888611069565b9050600281111561226e576121de816002611af6565b8611156121ea57600080fd5b6001600160a01b03881660009081526014602052604081206003018054889290612215908490613833565b909155506122269050816003611af6565b6001600160a01b0389166000908152601460205260409020600301541061226e576001600160a01b0388166000908152601460205260409020600401805460ff191660011790555b505b6122838561227d89611069565b90612996565b6122a4576001600160a01b0387166000908152601460205260408120600201555b7f845540a7f3f9afb8980bffef1e5a59039c43bbd45de62cc2ce5def5830465f0485886040516122d5929190613763565b60405180910390a16123d1565b6001600160a01b03871660009081526017602052604090205460ff1615801561232457506001600160a01b03861660009081526017602052604090205460ff16155b156123d157600854600160c01b900460ff161515600114156123675761234a8686612905565b6001600160a01b0387166000908152601460205260409020600201555b6123748561227d89611069565b612395576001600160a01b0387166000908152601460205260408120600201555b7f38e8feed990acd7f5210170f614d354c7a0485670b9a787e9e00f8fca640d5748787876040516123c8939291906130be565b60405180910390a15b60006123ed60646119f3600d5489611b3890919063ffffffff16565b6001600160a01b03881660009081526018602052604090205490915060ff161561242e5761242160646119f3886001611b38565b61242b9082613833565b90505b600854600090600160b81b900460ff161515600114801561246857506001600160a01b03891660009081526017602052604090205460ff16155b801561248c57506001600160a01b03881660009081526018602052604090205460ff165b15612504576000600185151514156124bf57600f5487116124ae5760016124bc565b600f546124bc908890611af6565b90505b6001600160a01b038a166000908152601460205260409020600201546124e69089836129d8565b91508282116124f6576000612500565b612500838361388a565b9150505b6125186125118284613833565b8890612996565b965061252e89306125298486613833565b61272d565b50505b61253c87878761272d565b505050505b505050565b6000818484111561256a5760405162461bcd60e51b8152600401610a19919061319a565b506000612577848661388a565b95945050505050565b6001600160a01b03821660009081526018602052604090205460ff16151581151514156125bf5760405162461bcd60e51b8152600401610a1990613683565b6001600160a01b038216600081815260186020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6113a48282612aad565b6001600160a01b0382166126435760405162461bcd60e51b8152600401610a1990613525565b61264f82600083612541565b61268c81604051806060016040528060228152602001613931602291396001600160a01b0385166000908152602081905260409020549190612546565b6001600160a01b0383166000908152602081905260409020556002546126b29082612996565b6002556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906126f390859061375a565b60405180910390a35050565b600081836127205760405162461bcd60e51b8152600401610a19919061319a565b506000612577848661384b565b6001600160a01b0383166127535760405162461bcd60e51b8152600401610a1990613566565b6001600160a01b0382166127795760405162461bcd60e51b8152600401610a19906131ed565b612784838383612541565b6127c181604051806060016040528060268152602001613953602691396001600160a01b0386166000908152602081905260409020549190612546565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546127f09082611ac0565b6001600160a01b0380841660008181526020819052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c2890859061375a565b61284b81612b61565b601c546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156113a4573d6000803e3d6000fd5b6000612891826002611af6565b9050600061289f8383612996565b9050476128ab83612b61565b60006128b74783612996565b90506128c38382612ce6565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482856040516128f6939291906137ea565b60405180910390a15050505050565b60008061291061191b565b6001600160a01b03851660009081526014602052604081206002015491925061293886611069565b9050811580612945575080155b156129525782935061298d565b8461295f5781935061298d565b61298a61296c8683613833565b612976878661386b565b612980848661386b565b6119f39190613833565b93505b50505092915050565b6000611aef83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612546565b6000806129e361191b565b905060008515806129f45750606485105b15612a025760009250612aa4565b81612a0e87600a613833565b1015612a9f576064612a39612a32612a2b60026119f38b8861388a565b8590611af6565b8290611af6565b915084600e541115612a945784600e54612a53919061388a565b821015612a605781612a6e565b84600e54612a6e919061388a565b915060008211612a7f576000612a8d565b612a8d816119f38885611b38565b9350612a99565b600093505b50612aa4565b600092505b50509392505050565b6001600160a01b038216612ad35760405162461bcd60e51b8152600401610a1990613723565b612adf60008383612541565b600254612aec9082611ac0565b6002556001600160a01b038216600090815260208190526040902054612b129082611ac0565b6001600160a01b0383166000818152602081905260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906126f390859061375a565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612ba457634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612bf857600080fd5b505afa158015612c0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c309190612dca565b81600181518110612c5157634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152600854612c779130911684611b81565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac94790612cb090859060009086903090429060040161377a565b600060405180830381600087803b158015612cca57600080fd5b505af1158015612cde573d6000803e3d6000fd5b505050505050565b600854612cfe9030906001600160a01b031684611b81565b600854601b5460405163f305d71960e01b81526001600160a01b039283169263f305d719928592612d3e92309289926000928392169042906004016130fb565b6060604051808303818588803b158015612d5757600080fd5b505af1158015612d6b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d909190613063565b5050505050565b80516001600160701b0381168114610d1557600080fd5b600060208284031215612dbf578081fd5b8135611aef8161390d565b600060208284031215612ddb578081fd5b8151611aef8161390d565b60008060408385031215612df8578081fd5b8235612e038161390d565b91506020830135612e138161390d565b809150509250929050565b600080600060608486031215612e32578081fd5b8335612e3d8161390d565b92506020840135612e4d8161390d565b929592945050506040919091013590565b60008060408385031215612e70578182fd5b8235612e7b8161390d565b91506020830135612e1381613922565b60008060408385031215612e9d578182fd5b8235612ea88161390d565b946020939093013593505050565b600080600060408486031215612eca578283fd5b833567ffffffffffffffff80821115612ee1578485fd5b818601915086601f830112612ef4578485fd5b813581811115612f02578586fd5b8760208083028501011115612f15578586fd5b60209283019550935050840135612f2b81613922565b809150509250925092565b600060208284031215612f47578081fd5b8135611aef81613922565b600060208284031215612f63578081fd5b8151611aef81613922565b600080600060608486031215612f82578283fd5b612f8b84612d97565b9250612f9960208501612d97565b9150604084015163ffffffff81168114612f2b578182fd5b600060208284031215612fc2578081fd5b5035919050565b600060208284031215612fda578081fd5b5051919050565b600080600060608486031215612ff5578283fd5b83359250602084013561300781613922565b91506040840135612f2b81613922565b60008060408385031215613029578182fd5b50508035926020909101359150565b60008060006060848603121561304c578081fd5b505081359360208301359350604090920135919050565b600080600060608486031215613077578081fd5b8351925060208401519150604084015190509250925092565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b6040808252810183905260008460608301825b8681101561317957823561315c8161390d565b6001600160a01b0316825260209283019290910190600101613149565b5080925050508215156020830152949350505050565b901515815260200190565b6000602080835283518082850152825b818110156131c6578581018301518582016040015282016131aa565b818111156131d75783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526030908201527f596f75722061646472657373206f7220726563697069656e742061646472657360408201526f1cc81a5cc8189b1858dadb1a5cdd195960821b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252602a908201527f546f6b656e3a2054686520726f7574657220616c7265616479206861732074686040820152696174206164647265737360b01b606082015260800190565b60208082526028908201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546040820152673c20b6b7bab73a1760c11b606082015260800190565b60208082526024908201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6040820152633ab73a1760e11b606082015260800190565b6020808252600e908201526d2cb7ba9030b9329039b734b832b960911b604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252604c908201527f546f6b656e3a205468652050616e63616b655377617020706169722063616e6e60408201527f6f742062652072656d6f7665642066726f6d206175746f6d617465644d61726b60608201526b65744d616b6572506169727360a01b608082015260a00190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252603a908201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560408201527f206d617853656c6c5472616e73616374696f6e416d6f756e742e000000000000606082015260800190565b60208082526018908201527f546f6b656e2069736e2774206c61756e63686564207965740000000000000000604082015260600190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252603f908201527f546f6b656e3a204175746f6d61746564206d61726b6574206d616b657220706160408201527f697220697320616c72656164792073657420746f20746861742076616c756500606082015260800190565b60208082526023908201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6040820152626f636b60e81b606082015260800190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b90815260200190565b9182526001600160a01b0316602082015260400190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156137c95784516001600160a01b0316835293830193918301916001016137a4565b50506001600160a01b03969096166060850152505050608001529392505050565b9283526020830191909152604082015260600190565b9485526020850193909352604084019190915260608301521515608082015260a00190565b60ff91909116815260200190565b60008219821115613846576138466138f7565b500190565b60008261386657634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615613885576138856138f7565b500290565b60008282101561389c5761389c6138f7565b500390565b6002810460018216806138b557607f821691505b602082108114156138d657634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156138f0576138f06138f7565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461191857600080fd5b801515811461191857600080fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a458fabb40206b92df5ce5737c4037db141de4f4fe1a1bd784d53f56c75b236064736f6c63430008000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000003b9aca00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000064000000000000000000000000754ef0749cd80923723de74014c9a34d43251bf5000000000000000000000000925fba459a7e714007d230c3d669393f2583edbb0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
-----Decoded View---------------
Arg [0] : liqFee (uint256): 5
Arg [1] : marketFee (uint256): 10
Arg [2] : supply (uint256): 1000000000
Arg [3] : maxBuyPercent (uint256): 10
Arg [4] : maxSellPercent (uint256): 1
Arg [5] : maxWalletPercent (uint256): 100
Arg [6] : marketingWallet (address): 0x754EF0749cd80923723DE74014c9A34D43251BF5
Arg [7] : liqudityWallet (address): 0x925FBa459A7E714007D230C3D669393F2583EdBB
Arg [8] : uniswapV2RouterAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [1] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [2] : 000000000000000000000000000000000000000000000000000000003b9aca00
Arg [3] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [6] : 000000000000000000000000754ef0749cd80923723de74014c9a34d43251bf5
Arg [7] : 000000000000000000000000925fba459a7e714007d230c3d669393f2583edbb
Arg [8] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Deployed Bytecode Sourcemap
33411:17255:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39383:117;;;;;;;;;;;;;:::i;:::-;;34009:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34127:39;;;;;;;;;;;;;:::i;24665:100::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;26830:169::-;;;;;;;;;;-1:-1:-1;26830:169:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;33945:57::-;;;;;;;;;;;;;:::i;33487:41::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;25783:108::-;;;;;;;;;;;;;:::i;33621:34::-;;;;;;;;;;;;;:::i;34297:47::-;;;;;;;;;;-1:-1:-1;34297:47:0;;;;;:::i;:::-;;:::i;34351:42::-;;;;;;;;;;-1:-1:-1;34351:42:0;;;;;:::i;:::-;;:::i;27481:355::-;;;;;;;;;;-1:-1:-1;27481:355:0;;;;;:::i;:::-;;:::i;34598:32::-;;;;;;;;;;;;;:::i;25626:92::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;38999:97::-;;;;;;;;;;-1:-1:-1;38999:97:0;;;;;:::i;:::-;;:::i;33701:40::-;;;;;;;;;;;;;:::i;28245:218::-;;;;;;;;;;-1:-1:-1;28245:218:0;;;;;:::i;:::-;;:::i;39971:134::-;;;;;;;;;;-1:-1:-1;39971:134:0;;;;;:::i;:::-;;:::i;34563:28::-;;;;;;;;;;;;;:::i;39834:125::-;;;;;;;;;;-1:-1:-1;39834:125:0;;;;;:::i;:::-;;:::i;38676:311::-;;;;;;;;;;-1:-1:-1;38676:311:0;;;;;:::i;:::-;;:::i;34082:38::-;;;;;;;;;;;;;:::i;38076:116::-;;;;;;;;;;-1:-1:-1;38076:116:0;;;;;:::i;:::-;;:::i;37065:499::-;;;;;;;;;;-1:-1:-1;37065:499:0;;;;;:::i;:::-;;:::i;33911:27::-;;;;;;;;;;;;;:::i;25954:127::-;;;;;;;;;;-1:-1:-1;25954:127:0;;;;;:::i;:::-;;:::i;14378:182::-;;;;;;;;;;;;;:::i;36528:251::-;;;;;;;;;;-1:-1:-1;36528:251:0;;;;;:::i;:::-;;:::i;36419:99::-;;;;;;;;;;-1:-1:-1;36419:99:0;;;;;:::i;:::-;;:::i;33565:21::-;;;;;;;;;;;;;:::i;13736:79::-;;;;;;;;;;;;;:::i;40117:207::-;;;;;;;;;;-1:-1:-1;40117:207:0;;;;;:::i;:::-;;:::i;24884:104::-;;;;;;;;;;;;;:::i;33877:27::-;;;;;;;;;;;;;:::i;39108:263::-;;;;;;;;;;-1:-1:-1;39108:263:0;;;;;:::i;:::-;;:::i;33662:32::-;;;;;;;;;;;;;:::i;28966:269::-;;;;;;;;;;-1:-1:-1;28966:269:0;;;;;:::i;:::-;;:::i;26294:175::-;;;;;;;;;;-1:-1:-1;26294:175:0;;;;;:::i;:::-;;:::i;34460:58::-;;;;;;;;;;-1:-1:-1;34460:58:0;;;;;:::i;:::-;;:::i;14971:89::-;;;;;;;;;;;;;:::i;36789:265::-;;;;;;;;;;-1:-1:-1;36789:265:0;;;;;:::i;:::-;;:::i;34209:25::-;;;;;;;;;;;;;:::i;37572:184::-;;;;;;;;;;-1:-1:-1;37572:184:0;;;;;:::i;:::-;;:::i;38525:133::-;;;;;;;;;;-1:-1:-1;38525:133:0;;;;;:::i;:::-;;:::i;37764:304::-;;;;;;;;;;-1:-1:-1;37764:304:0;;;;;:::i;:::-;;:::i;34637:33::-;;;;;;;;;;;;;:::i;34246:44::-;;;;;;;;;;-1:-1:-1;34246:44:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;15438:231::-;;;;;;;;;;;;;:::i;33754:33::-;;;;;;;;;;;;;:::i;15136:226::-;;;;;;;;;;-1:-1:-1;15136:226:0;;;;;:::i;:::-;;:::i;26532:151::-;;;;;;;;;;-1:-1:-1;26532:151:0;;;;;:::i;:::-;;:::i;34525:25::-;;;;;;;;;;-1:-1:-1;34525:25:0;;;;;:::i;:::-;;:::i;33794:75::-;;;;;;;;;;;;;:::i;34173:29::-;;;;;;;;;;;;;:::i;38204:309::-;;;;;;;;;;;;;:::i;45150:649::-;;;;;;;;;;;;;:::i;14715:244::-;;;;;;;;;;-1:-1:-1;14715:244:0;;;;;:::i;:::-;;:::i;33593:21::-;;;;;;;;;;;;;:::i;39383:117::-;13958:12;:10;:12::i;:::-;13948:6;;-1:-1:-1;;;;;13948:6:0;;;:22;;;13940:67;;;;-1:-1:-1;;;13940:67:0;;;;;;;:::i;:::-;;;;;;;;;39429:9:::1;:16:::0;;-1:-1:-1;;;;39429:16:0::1;-1:-1:-1::0;;;39429:16:0::1;::::0;;39469:23:::1;:15;39489:2;39469:19;:23::i;:::-;39456:10;:36:::0;39383:117::o;34009:26::-;;;;:::o;34127:39::-;;;;:::o;24665:100::-;24719:13;24752:5;24745:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24665:100;:::o;26830:169::-;26913:4;26930:39;26939:12;:10;:12::i;:::-;26953:7;26962:6;26930:8;:39::i;:::-;-1:-1:-1;26987:4:0;26830:169;;;;;:::o;33945:57::-;;;;:::o;33487:41::-;;;-1:-1:-1;;;;;33487:41:0;;:::o;25783:108::-;25871:12;;25783:108;:::o;33621:34::-;;;-1:-1:-1;;;33621:34:0;;;;;:::o;34297:47::-;;;;;;;;;;;;;;;:::o;34351:42::-;;;;;;;;;;;;;;;:::o;27481:355::-;27621:4;27638:36;27648:6;27656:9;27667:6;27638:9;:36::i;:::-;27685:121;27694:6;27702:12;:10;:12::i;:::-;27716:89;27754:6;27716:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27716:19:0;;;;;;:11;:19;;;;;;27736:12;:10;:12::i;:::-;-1:-1:-1;;;;;27716:33:0;;;;;;;;;;;;-1:-1:-1;27716:33:0;;;:89;:37;:89::i;:::-;27685:8;:121::i;:::-;-1:-1:-1;27824:4:0;27481:355;;;;;:::o;34598:32::-;;;-1:-1:-1;;;;;34598:32:0;;:::o;25626:92::-;25709:1;25626:92;:::o;38999:97::-;13958:12;:10;:12::i;:::-;13948:6;;-1:-1:-1;;;;;13948:6:0;;;:22;;;13940:67;;;;-1:-1:-1;;;13940:67:0;;;;;;;:::i;:::-;39068:12:::1;:20:::0;38999:97::o;33701:40::-;;;-1:-1:-1;;;33701:40:0;;;;;:::o;28245:218::-;28333:4;28350:83;28359:12;:10;:12::i;:::-;28373:7;28382:50;28421:10;28382:11;:25;28394:12;:10;:12::i;:::-;-1:-1:-1;;;;;28382:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;28382:25:0;;;:34;;;;;;;;;;;:38;:50::i;39971:134::-;13958:12;:10;:12::i;:::-;13948:6;;-1:-1:-1;;;;;13948:6:0;;;:22;;;13940:67;;;;-1:-1:-1;;;13940:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;40060:23:0;;;::::1;;::::0;;;:14:::1;:23;::::0;;;;:37;;-1:-1:-1;;40060:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;39971:134::o;34563:28::-;;;-1:-1:-1;;;;;34563:28:0;;:::o;39834:125::-;-1:-1:-1;;;;;39923:28:0;;39899:4;39923:28;;;:19;:28;;;;;;;;39834:125;;;;:::o;38676:311::-;13958:12;:10;:12::i;:::-;13948:6;;-1:-1:-1;;;;;13948:6:0;;;:22;;;13940:67;;;;-1:-1:-1;;;13940:67:0;;;;;;;:::i;:::-;38774:12:::1;:32:::0;;;38817:12:::1;:32:::0;;;38872:30:::1;38789:17:::0;38832;38872:16:::1;:30::i;:::-;38860:9;:42:::0;;;38939:12:::1;::::0;38953::::1;::::0;38928:49:::1;::::0;::::1;::::0;::::1;::::0;38939:12;38953;38928:49:::1;:::i;:::-;;;;;;;;38676:311:::0;;:::o;34082:38::-;;;;:::o;38076:116::-;13958:12;:10;:12::i;:::-;13948:6;;-1:-1:-1;;;;;13948:6:0;;;:22;;;13940:67;;;;-1:-1:-1;;;13940:67:0;;;;;;;:::i;:::-;38157:18:::1;:27:::0;;-1:-1:-1;;;;;;38157:27:0::1;-1:-1:-1::0;;;;;38157:27:0;;;::::1;::::0;;;::::1;::::0;;38076:116::o;37065:499::-;13958:12;:10;:12::i;:::-;13948:6;;-1:-1:-1;;;;;13948:6:0;;;:22;;;13940:67;;;;-1:-1:-1;;;13940:67:0;;;;;;;:::i;:::-;37174:15:::1;::::0;-1:-1:-1;;;;;37152:38:0;;::::1;37174:15:::0;::::1;37152:38;;37144:93;;;;-1:-1:-1::0;;;37144:93:0::1;;;;;;;:::i;:::-;37295:15;::::0;37253:59:::1;::::0;-1:-1:-1;;;;;37295:15:0;;::::1;::::0;37253:59;::::1;::::0;::::1;::::0;37295:15:::1;::::0;37253:59:::1;37323:15;:48:::0;;-1:-1:-1;;;;;;37323:48:0::1;-1:-1:-1::0;;;;;37323:48:0;;::::1;::::0;;;::::1;::::0;;;;37425:25:::1;::::0;;-1:-1:-1;;;37425:25:0;;;;-1:-1:-1;;37425:15:0;;::::1;::::0;:23:::1;::::0;:25:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:15;:25;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;37407:69:0::1;;37485:4;37492:15;;;;;;;;;-1:-1:-1::0;;;;;37492:15:0::1;-1:-1:-1::0;;;;;37492:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37407:108;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37526:13;:30:::0;;-1:-1:-1;;;;;;37526:30:0::1;-1:-1:-1::0;;;;;37526:30:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;37065:499:0:o;33911:27::-;;;;:::o;25954:127::-;-1:-1:-1;;;;;26055:18:0;26028:7;26055:18;;;;;;;;;;;;25954:127::o;14378:182::-;13958:12;:10;:12::i;:::-;13948:6;;-1:-1:-1;;;;;13948:6:0;;;:22;;;13940:67;;;;-1:-1:-1;;;13940:67:0;;;;;;;:::i;:::-;14460:6:::1;::::0;14443:14:::1;:23:::0;;-1:-1:-1;;;;;;14443:23:0::1;-1:-1:-1::0;;;;;14460:6:0;;::::1;14443:23:::0;;::::1;::::0;;14482:40:::1;::::0;14460:6:::1;::::0;;-1:-1:-1;;;;;;;;;;;14482:40:0;14460:6;;14482:40:::1;14533:6;:19:::0;;-1:-1:-1;;;;;;14533:19:0::1;::::0;;14378:182::o;36528:251::-;13958:12;:10;:12::i;:::-;13948:6;;-1:-1:-1;;;;;13948:6:0;;;:22;;;13940:67;;;;-1:-1:-1;;;13940:67:0;;;;;;;:::i;:::-;36656:16:::1;:6:::0;36666:5:::1;36656:16;:::i;:::-;36630:23;:42:::0;36709:17:::1;:7:::0;36720:5:::1;36709:17;:::i;:::-;36682:24;:44:::0;36753:19:::1;:9:::0;36766:5:::1;36753:19;:::i;:::-;36736:14;:36:::0;-1:-1:-1;;;36528:251:0:o;36419:99::-;13958:12;:10;:12::i;:::-;13948:6;;-1:-1:-1;;;;;13948:6:0;;;:22;;;13940:67;;;;-1:-1:-1;;;13940:67:0;;;;;;;:::i;:::-;36488:9:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;36488:23:0::1;-1:-1:-1::0;;;;36488:23:0;;::::1;::::0;;;::::1;::::0;;36419:99::o;33565:21::-;;;-1:-1:-1;;;33565:21:0;;;;;:::o;13736:79::-;13801:6;;-1:-1:-1;;;;;13801:6:0;13736:79;:::o;40117:207::-;13958:12;:10;:12::i;:::-;13948:6;;-1:-1:-1;;;;;13948:6:0;;;:22;;;13940:67;;;;-1:-1:-1;;;13940:67:0;;;;;;;:::i;:::-;40227:38:::1;::::0;-1:-1:-1;;;40227:38:0;;40209:15:::1;::::0;-1:-1:-1;;;;;40227:23:0;::::1;::::0;::::1;::::0;:38:::1;::::0;40259:4:::1;::::0;40227:38:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40276:40;::::0;-1:-1:-1;;;40276:40:0;;40209:56;;-1:-1:-1;;;;;;40276:22:0;::::1;::::0;::::1;::::0;:40:::1;::::0;40299:7;;40209:56;;40276:40:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14018:1;40117:207:::0;;:::o;24884:104::-;24940:13;24973:7;24966:14;;;;;:::i;33877:27::-;;;;:::o;39108:263::-;13958:12;:10;:12::i;:::-;13948:6;;-1:-1:-1;;;;;13948:6:0;;;:22;;;13940:67;;;;-1:-1:-1;;;13940:67:0;;;;;;;:::i;:::-;39215:13:::1;::::0;-1:-1:-1;;;;;39207:21:0;;::::1;39215:13:::0;::::1;39207:21;;39199:110;;;;-1:-1:-1::0;;;39199:110:0::1;;;;;;;:::i;:::-;39322:41;39351:4;39357:5;39322:28;:41::i;:::-;39108:263:::0;;:::o;33662:32::-;;;-1:-1:-1;;;33662:32:0;;;;;:::o;28966:269::-;29059:4;29076:129;29085:12;:10;:12::i;:::-;29099:7;29108:96;29147:15;29108:96;;;;;;;;;;;;;;;;;:11;:25;29120:12;:10;:12::i;:::-;-1:-1:-1;;;;;29108:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;29108:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;26294:175::-;26380:4;26397:42;26407:12;:10;:12::i;:::-;26421:9;26432:6;26397:9;:42::i;34460:58::-;;;;;;;;;;;;;;;:::o;14971:89::-;15043:9;;14971:89;:::o;36789:265::-;13958:12;:10;:12::i;:::-;13948:6;;-1:-1:-1;;;;;13948:6:0;;;:22;;;13940:67;;;;-1:-1:-1;;;13940:67:0;;;;;;;:::i;:::-;36933:2:::1;36922:7;:13;;36914:22;;;::::0;::::1;;36946:15;:35:::0;;36991:30;::::1;;-1:-1:-1::0;;;36991:30:0::1;-1:-1:-1::0;;;;36946:35:0;::::1;;-1:-1:-1::0;;;36946:35:0::1;-1:-1:-1::0;;;;36946:35:0;;::::1;::::0;;;::::1;36991:30:::0;;;::::1;;::::0;;37031:6:::1;:16:::0;36789:265::o;34209:25::-;;;;:::o;37572:184::-;13958:12;:10;:12::i;:::-;13948:6;;-1:-1:-1;;;;;13948:6:0;;;:22;;;13940:67;;;;-1:-1:-1;;;13940:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37657:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;:39;;-1:-1:-1;;37657:39:0::1;::::0;::::1;;;::::0;;37714:34;::::1;::::0;::::1;::::0;37657:39;;37714:34:::1;:::i;:::-;;;;;;;;37572:184:::0;;:::o;38525:133::-;13958:12;:10;:12::i;:::-;13948:6;;-1:-1:-1;;;;;13948:6:0;;;:22;;;13940:67;;;;-1:-1:-1;;;13940:67:0;;;;;;;:::i;:::-;38606:44:::1;38622:7:::0;38631:18:::1;:6:::0;38641:7:::1;38631:18;:::i;:::-;38606:15;:44::i;37764:304::-:0;13958:12;:10;:12::i;:::-;13948:6;;-1:-1:-1;;;;;13948:6:0;;;:22;;;13940:67;;;;-1:-1:-1;;;13940:67:0;;;;;;;:::i;:::-;37881:9:::1;37877:115;37896:19:::0;;::::1;37877:115;;;37972:8;37937:19;:32;37957:8;;37966:1;37957:11;;;;;-1:-1:-1::0;;;37957:11:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;37937:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;37937:32:0;:43;;-1:-1:-1;;37937:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;37917:3;::::1;::::0;::::1;:::i;:::-;;;;37877:115;;;;38009:51;38041:8;;38051;38009:51;;;;;;;;:::i;:::-;;;;;;;;37764:304:::0;;;:::o;34637:33::-;;;-1:-1:-1;;;;;34637:33:0;;:::o;34246:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15438:231::-;15499:14;;-1:-1:-1;;;;;15499:14:0;15517:10;15499:28;15491:76;;;;-1:-1:-1;;;15491:76:0;;;;;;;:::i;:::-;15612:14;;15604:6;;15583:44;;-1:-1:-1;;;;;15612:14:0;;;;15604:6;;;;-1:-1:-1;;;;;;;;;;;15583:44:0;15612:14;;15583:44;15647:14;;15638:6;:23;;-1:-1:-1;;;;;;15638:23:0;-1:-1:-1;;;;;15647:14:0;;;15638:23;;;;;;15438:231::o;33754:33::-;;;;:::o;15136:226::-;13958:12;:10;:12::i;:::-;13948:6;;-1:-1:-1;;;;;13948:6:0;;;:22;;;13940:67;;;;-1:-1:-1;;;13940:67:0;;;;;;;:::i;:::-;15217:6:::1;::::0;;15200:14:::1;:23:::0;;-1:-1:-1;;;;;;15200:23:0;;::::1;-1:-1:-1::0;;;;;15217:6:0;::::1;15200:23;::::0;;;15234:19:::1;::::0;;15276:22:::1;15294:4:::0;15276:15:::1;:22;:::i;:::-;15264:9;:34:::0;15335:6:::1;::::0;15314:40:::1;::::0;15351:1:::1;::::0;-1:-1:-1;;;;;15335:6:0::1;::::0;-1:-1:-1;;;;;;;;;;;15314:40:0;15351:1;;15314:40:::1;15136:226:::0;:::o;26532:151::-;-1:-1:-1;;;;;26648:18:0;;;26621:7;26648:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;26532:151::o;34525:25::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;34525:25:0;;-1:-1:-1;34525:25:0;:::o;33794:75::-;;;;:::o;34173:29::-;;;;:::o;38204:309::-;13958:12;:10;:12::i;:::-;13948:6;;-1:-1:-1;;;;;13948:6:0;;;:22;;;13940:67;;;;-1:-1:-1;;;13940:67:0;;;;;;;:::i;:::-;38269:9:::1;38265:241;38288:8;:15:::0;38284:19;::::1;38265:241;;;38324:14;38341:8;38350:1;38341:11;;;;;;-1:-1:-1::0;;;38341:11:0::1;;;;;;;;;;::::0;;;::::1;::::0;;::::1;::::0;-1:-1:-1;;;;;38341:11:0::1;::::0;-1:-1:-1;38385:17:0::1;38341:11:::0;38385:9:::1;:17::i;:::-;38367:35;;38417:37;38437:6;38446:7;38417:11;:37::i;:::-;-1:-1:-1::0;;;;;;38469:17:0::1;38489:5;38469:17:::0;;;:9:::1;:17;::::0;;;;:25;;-1:-1:-1;;38469:25:0::1;::::0;;38305:3;::::1;::::0;::::1;:::i;:::-;;;;38265:241;;;;38204:309::o:0;45150:649::-;45327:13;;45413:18;;;-1:-1:-1;;;45413:18:0;;;;45198:20;;-1:-1:-1;;;;;45327:13:0;;45198:20;;;;45327:13;;45413:16;;:18;;;;;;;;;;;;;;;45327:13;45413:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;45396:35:0;;;;-1:-1:-1;45396:35:0;;-1:-1:-1;45444:12:0;;;45441:122;;;45520:3;45441:122;45576:8;45573:220;;45615:1;45600:16;;45573:220;;;45662:6;45637:21;:3;45643:15;45637:21;:::i;:::-;45636:32;45633:160;;;45699:35;45727:6;45700:21;:3;45706:15;45700:21;:::i;:::-;45699:27;;:35::i;:::-;45684:50;;45633:160;;;45780:1;45765:16;;45633:160;45150:649;;;;:::o;14715:244::-;13958:12;:10;:12::i;:::-;13948:6;;-1:-1:-1;;;;;13948:6:0;;;:22;;;13940:67;;;;-1:-1:-1;;;13940:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14804:22:0;::::1;14796:73;;;;-1:-1:-1::0;;;14796:73:0::1;;;;;;;:::i;:::-;14906:6;::::0;14885:38:::1;::::0;-1:-1:-1;;;;;14885:38:0;;::::1;::::0;14906:6:::1;::::0;-1:-1:-1;;;;;;;;;;;14885:38:0;14906:6:::1;::::0;14885:38:::1;14934:6;:17:::0;;-1:-1:-1;;;;;;14934:17:0::1;-1:-1:-1::0;;;;;14934:17:0;;;::::1;::::0;;;::::1;::::0;;14715:244::o;33593:21::-;;;-1:-1:-1;;;33593:21:0;;;;;:::o;15958:181::-;16016:7;;16048:5;16052:1;16048;:5;:::i;:::-;16036:17;;16077:1;16072;:6;;16064:46;;;;-1:-1:-1;;;16064:46:0;;;;;;;:::i;:::-;16130:1;15958:181;-1:-1:-1;;;15958:181:0:o;18259:132::-;18317:7;18344:39;18348:1;18351;18344:39;;;;;;;;;;;;;;;;;:3;:39::i;17312:471::-;17370:7;17615:6;17611:47;;-1:-1:-1;17645:1:0;17638:8;;17611:47;17670:9;17682:5;17686:1;17682;:5;:::i;:::-;17670:17;-1:-1:-1;17715:1:0;17706:5;17710:1;17670:17;17706:5;:::i;:::-;:10;17698:56;;;;-1:-1:-1;;;17698:56:0;;;;;;;:::i;4159:98::-;4239:10;4159:98;:::o;32270:380::-;-1:-1:-1;;;;;32406:19:0;;32398:68;;;;-1:-1:-1;;;32398:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32485:21:0;;32477:68;;;;-1:-1:-1;;;32477:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32558:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;32610:32;;;;;32588:6;;32610:32;:::i;:::-;;;;;;;;32270:380;;;:::o;40336:4802::-;-1:-1:-1;;;;;40434:18:0;;40426:68;;;;-1:-1:-1;;;40426:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;40513:16:0;;40505:64;;;;-1:-1:-1;;;40505:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;40589:18:0;;;;;;:14;:18;;;;;;;;40588:19;:44;;;;-1:-1:-1;;;;;;40612:20:0;;;;;;:14;:20;;;;;;;;40611:21;40588:44;40580:105;;;;-1:-1:-1;;;40580:105:0;;;;;;;:::i;:::-;40709:11;40706:92;;40737:28;40753:4;40759:2;40763:1;40737:15;:28::i;:::-;40780:7;;40706:92;40812:28;40843:24;40861:4;40843:9;:24::i;:::-;40812:55;;40880:12;40919:18;;40895:20;:42;;40880:57;;40948:12;40977:7;:33;;;;-1:-1:-1;41002:8:0;;-1:-1:-1;;;41002:8:0;;;;41001:9;40977:33;:82;;;;-1:-1:-1;;;;;;41028:31:0;;;;;;:25;:31;;;;;;;;41027:32;40977:82;:114;;;;;41084:7;:5;:7::i;:::-;-1:-1:-1;;;;;41076:15:0;:4;-1:-1:-1;;;;;41076:15:0;;;40977:114;:144;;;;;41114:7;:5;:7::i;:::-;-1:-1:-1;;;;;41108:13:0;:2;-1:-1:-1;;;;;41108:13:0;;;40977:144;40973:705;;;41148:8;:15;;-1:-1:-1;;;;41148:15:0;-1:-1:-1;;;41148:15:0;;;41261:9;;41243:12;;41148:15;;41218:53;;:38;;:20;;:24;:38::i;:53::-;41192:79;;41286:45;41315:15;41286:28;:45::i;:::-;41390:18;;41351:58;;;;;;41373:15;;-1:-1:-1;;;;;41390:18:0;;41351:58;:::i;:::-;;;;;;;;41438:18;41459:53;41502:9;;41459:38;41484:12;;41459:20;:24;;:38;;;;:::i;:53::-;41438:74;;41527:26;41542:10;41527:14;:26::i;:::-;41573:31;41593:10;41573:31;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;41621:8:0;:16;;-1:-1:-1;;;;41621:16:0;;;-1:-1:-1;41621:16:0;40973:705;41708:8;;-1:-1:-1;;;;;41817:25:0;;41692:12;41817:25;;;:19;:25;;;;;;41708:8;-1:-1:-1;;;41708:8:0;;;;;41707:9;;41817:25;;:52;;-1:-1:-1;;;;;;41846:23:0;;;;;;:19;:23;;;;;;;;41817:52;41814:99;;;-1:-1:-1;41896:5:0;41814:99;41928:7;41925:3160;;;-1:-1:-1;;;;;41955:31:0;;;;;;:25;:31;;;;;;;;41952:2278;;;42010:9;;-1:-1:-1;;;42010:9:0;;;;42002:46;;;;-1:-1:-1;;;42002:46:0;;;;;;;:::i;:::-;42099:23;;42089:6;:33;;42063:135;;;;-1:-1:-1;;;42063:135:0;;;;;;;:::i;:::-;42279:14;;42269:6;42253:13;42263:2;42253:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;42227:138;;;;-1:-1:-1;;;42227:138:0;;;;;;;:::i;:::-;42429:10;;42410:15;:29;;;;;;42458:26;;-1:-1:-1;;;;;;42471:13:0;;;;;;:9;:13;;;;;;;;42470:14;42458:26;42454:62;;;42499:8;:17;;;;;;;-1:-1:-1;42499:17:0;;;;;;;;-1:-1:-1;;;;;;42499:17:0;-1:-1:-1;;;;;42499:17:0;;;;;42454:62;42548:9;;-1:-1:-1;;;42548:9:0;;;;:27;;;;-1:-1:-1;;;;;;42562:13:0;;;;;;:9;:13;;;;;;;;42561:14;42548:27;42545:62;;;42590:8;:17;;;;;;;-1:-1:-1;42590:17:0;;;;;;;;-1:-1:-1;;;;;;42590:17:0;-1:-1:-1;;;;;42590:17:0;;;;;42545:62;42639:13;;-1:-1:-1;;;42639:13:0;;;;:21;;42656:4;42639:21;42636:119;;;42707:32;42728:2;42732:6;42707:20;:32::i;:::-;-1:-1:-1;;;;;42680:12:0;;;;;;:8;:12;;;;;:24;;:59;42636:119;42788:18;42795:6;42803:2;42788:18;;;;;;;:::i;:::-;;;;;;;;41952:2278;;;;-1:-1:-1;;;;;42844:29:0;;;;;;:25;:29;;;;;;;;42841:1389;;;-1:-1:-1;;;;;42902:15:0;;;;;;:9;:15;;;;;;;;42901:16;42893:43;;;;-1:-1:-1;;;42893:43:0;;;;;;;:::i;:::-;42973:24;;42963:6;:34;;42955:105;;;;-1:-1:-1;;;42955:105:0;;;;;;;:::i;:::-;43084:21;;-1:-1:-1;;;43084:21:0;;;;:29;;43109:4;43084:29;:74;;;;-1:-1:-1;;;;;;43117:14:0;;;;;;:8;:14;;;;;:32;;;;;:41;43084:74;43081:492;;;43182:11;43196:15;43206:4;43196:9;:15::i;:::-;43182:29;;43243:1;43237:3;:7;43234:320;;;43290:10;:3;43298:1;43290:7;:10::i;:::-;43280:6;:20;;43272:29;;;;;;-1:-1:-1;;;;;43328:14:0;;;;;;:8;:14;;;;;:25;;:35;;43357:6;;43328:14;:35;;43357:6;;43328:35;:::i;:::-;;;;-1:-1:-1;43422:10:0;;-1:-1:-1;43422:3:0;43430:1;43422:7;:10::i;:::-;-1:-1:-1;;;;;43393:14:0;;;;;;:8;:14;;;;;:25;;;:39;43390:141;;-1:-1:-1;;;;;43464:14:0;;;;;;:8;:14;;;;;:32;;:39;;-1:-1:-1;;43464:39:0;43499:4;43464:39;;;43390:141;43081:492;;43612:27;43632:6;43612:15;43622:4;43612:9;:15::i;:::-;:19;;:27::i;:::-;43609:109;;-1:-1:-1;;;;;43668:14:0;;43697:1;43668:14;;;:8;:14;;;;;:26;;:30;43609:109;43737:21;43745:6;43753:4;43737:21;;;;;;;:::i;:::-;;;;;;;;42841:1389;;;-1:-1:-1;;;;;43798:25:0;;;;;;:19;:25;;;;;;;;43797:26;:54;;;;-1:-1:-1;;;;;;43828:23:0;;;;;;:19;:23;;;;;;;;43827:24;43797:54;43793:437;;;43888:13;;-1:-1:-1;;;43888:13:0;;;;:21;;43905:4;43888:21;43885:119;;;43956:32;43977:2;43981:6;43956:20;:32::i;:::-;-1:-1:-1;;;;;43929:12:0;;;;;;:8;:12;;;;;:24;;:59;43885:119;44039:27;44059:6;44039:15;44049:4;44039:9;:15::i;:27::-;44036:109;;-1:-1:-1;;;;;44095:14:0;;44124:1;44095:14;;;:8;:14;;;;;:26;;:30;44036:109;44182:32;44197:4;44203:2;44207:6;44182:32;;;;;;;;:::i;:::-;;;;;;;;43793:437;44255:12;44270:30;44296:3;44270:21;44281:9;;44270:6;:10;;:21;;;;:::i;:30::-;-1:-1:-1;;;;;44315:29:0;;;;;;:25;:29;;;;;;44255:45;;-1:-1:-1;44315:29:0;;44312:92;;;44369:22;44387:3;44369:13;:6;44380:1;44369:10;:13::i;:22::-;44361:30;;;;:::i;:::-;;;44312:92;44464:15;;44426:23;;-1:-1:-1;;;44464:15:0;;;;:23;;44483:4;44464:23;:53;;;;-1:-1:-1;;;;;;44492:25:0;;;;;;:19;:25;;;;;;;;44491:26;44464:53;:86;;;;-1:-1:-1;;;;;;44521:29:0;;;;;;:25;:29;;;;;;;;44464:86;44461:470;;;44567:9;44606:4;44595:15;;;;44592:151;;;44658:17;;44635:20;:40;:90;;44724:1;44635:90;;;44703:17;;44678:43;;:20;;:24;:43::i;:::-;44631:94;;44592:151;-1:-1:-1;;;;;44795:14:0;;;;;;:8;:14;;;;;:26;;;44776:57;;44823:6;44831:1;44776:18;:57::i;:::-;44758:75;;44885:4;44867:15;:22;:51;;44917:1;44867:51;;;44892:22;44910:4;44892:15;:22;:::i;:::-;44849:69;;44461:470;;44962:34;44973:22;44980:15;44973:4;:22;:::i;:::-;44962:6;;:10;:34::i;:::-;44953:43;-1:-1:-1;45013:60:0;45029:4;45043;45050:22;45057:15;45050:4;:22;:::i;:::-;45013:15;:60::i;:::-;41925:3160;;;45097:33;45113:4;45119:2;45123:6;45097:15;:33::i;:::-;40336:4802;;;;;;;;:::o;16861:192::-;16947:7;16983:12;16975:6;;;;16967:29;;;;-1:-1:-1;;;16967:29:0;;;;;;;;:::i;:::-;-1:-1:-1;17007:9:0;17019:5;17023:1;17019;:5;:::i;:::-;17007:17;16861:192;-1:-1:-1;;;;;16861:192:0:o;39512:313::-;-1:-1:-1;;;;;39603:31:0;;;;;;:25;:31;;;;;;;;:40;;;;;;;39595:116;;;;-1:-1:-1;;;39595:116:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39722:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;39722:39:0;;;;;;;;;;39777:40;;39722:39;;:31;39777:40;;;39512:313;;:::o;31724:110::-;31804:22;31810:7;31819:6;31804:5;:22::i;31294:418::-;-1:-1:-1;;;;;31378:21:0;;31370:67;;;;-1:-1:-1;;;31370:67:0;;;;;;;:::i;:::-;31450:49;31471:7;31488:1;31492:6;31450:20;:49::i;:::-;31533:68;31556:6;31533:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31533:18:0;;:9;:18;;;;;;;;;;;;:68;:22;:68::i;:::-;-1:-1:-1;;;;;31512:18:0;;:9;:18;;;;;;;;;;:89;31627:12;;:24;;31644:6;31627:16;:24::i;:::-;31612:12;:39;31667:37;;31693:1;;-1:-1:-1;;;;;31667:37:0;;;;;;;31697:6;;31667:37;:::i;:::-;;;;;;;;31294:418;;:::o;18887:278::-;18973:7;19008:12;19001:5;18993:28;;;;-1:-1:-1;;;18993:28:0;;;;;;;;:::i;:::-;-1:-1:-1;19032:9:0;19044:5;19048:1;19044;:5;:::i;29725:571::-;-1:-1:-1;;;;;29865:20:0;;29857:70;;;;-1:-1:-1;;;29857:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29946:23:0;;29938:71;;;;-1:-1:-1;;;29938:71:0;;;;;;;:::i;:::-;30020:47;30041:6;30049:9;30060:6;30020:20;:47::i;:::-;30100:71;30122:6;30100:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30100:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;30080:17:0;;;:9;:17;;;;;;;;;;;:91;;;;30205:20;;;;;;;:32;;30230:6;30205:24;:32::i;:::-;-1:-1:-1;;;;;30182:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;30253:35;;;;;;;;;;30281:6;;30253:35;:::i;47257:178::-;47331:24;47348:6;47331:16;:24::i;:::-;47374:18;;47366:59;;-1:-1:-1;;;;;47374:18:0;;;;47403:21;47366:59;;;;;47374:18;47366:59;47374:18;47366:59;47403:21;47374:18;47366:59;;;;;;;;;;;;;;;;;;;47443:922;47552:12;47567:13;:6;47578:1;47567:10;:13::i;:::-;47552:28;-1:-1:-1;47591:17:0;47611:16;:6;47552:28;47611:10;:16::i;:::-;47591:36;-1:-1:-1;47930:21:0;47996:22;48013:4;47996:16;:22::i;:::-;48149:18;48170:41;:21;48196:14;48170:25;:41::i;:::-;48149:62;;48261:35;48274:9;48285:10;48261:12;:35::i;:::-;48314:43;48329:4;48335:10;48347:9;48314:43;;;;;;;;:::i;:::-;;;;;;;;47443:922;;;;;:::o;46709:540::-;46798:13;46823:20;46846:17;:15;:17::i;:::-;-1:-1:-1;;;;;46887:15:0;;46874:10;46887:15;;;:8;:15;;;;;:27;;;46823:40;;-1:-1:-1;46948:16:0;46896:5;46948:9;:16::i;:::-;46925:39;-1:-1:-1;46978:7:0;;;:28;;-1:-1:-1;46989:17:0;;46978:28;46975:267;;;47030:12;47022:20;;46975:267;;;47062:17;47059:183;;47103:2;47095:10;;47059:183;;;47144:86;47202:27;47217:12;47202;:27;:::i;:::-;47168;47183:12;47168;:27;:::i;:::-;47146:17;47151:12;47146:2;:17;:::i;:::-;47145:51;;;;:::i;47144:86::-;47136:94;;47059:183;46709:540;;;;;;;:::o;16422:136::-;16480:7;16507:43;16511:1;16514;16507:43;;;;;;;;;;;;;;;;;:3;:43::i;45807:890::-;45930:17;45959:20;45982:17;:15;:17::i;:::-;45959:40;-1:-1:-1;46010:21:0;46045:16;;;:39;;;46081:3;46065:13;:19;46045:39;46042:648;;;46112:1;46100:13;;46042:648;;;46162:12;46143:16;:11;46157:2;46143:16;:::i;:::-;:31;46140:550;;;46202:3;46236:62;46243:53;46260:35;46293:1;46261:26;46276:11;46261:12;:26;:::i;46260:35::-;46243:12;;:16;:53::i;:::-;46236:1;;:5;:62::i;:::-;46220:78;;46325:19;46316:6;;:28;46313:322;;;46406:19;46397:6;;:28;;;;:::i;:::-;46380:13;:45;;:92;;46459:13;46380:92;;;46437:19;46428:6;;:28;;;;:::i;:::-;46364:108;;46520:1;46504:13;:17;:63;;46566:1;46504:63;;;46524:39;46561:1;46524:32;:13;46542;46524:17;:32::i;:39::-;46492:75;;46313:322;;;46618:1;46606:13;;46313:322;46140:550;;;;46677:1;46665:13;;46140:550;45807:890;;;;;;;:::o;30583:378::-;-1:-1:-1;;;;;30667:21:0;;30659:65;;;;-1:-1:-1;;;30659:65:0;;;;;;;:::i;:::-;30737:49;30766:1;30770:7;30779:6;30737:20;:49::i;:::-;30814:12;;:24;;30831:6;30814:16;:24::i;:::-;30799:12;:39;-1:-1:-1;;;;;30870:18:0;;:9;:18;;;;;;;;;;;:30;;30893:6;30870:22;:30::i;:::-;-1:-1:-1;;;;;30849:18:0;;:9;:18;;;;;;;;;;;:51;;;;30916:37;;30849:18;;:9;30916:37;;;;30946:6;;30916:37;:::i;48373:595::-;48527:16;;;48541:1;48527:16;;;;;;;;48503:21;;48527:16;;;;;;;;;;-1:-1:-1;48527:16:0;48503:40;;48572:4;48554;48559:1;48554:7;;;;;;-1:-1:-1;;;48554:7:0;;;;;;;;;-1:-1:-1;;;;;48554:23:0;;;:7;;;;;;;;;;:23;;;;48598:15;;:22;;;-1:-1:-1;;;48598:22:0;;;;:15;;;;;:20;;:22;;;;;48554:7;;48598:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;48588:4;48593:1;48588:7;;;;;;-1:-1:-1;;;48588:7:0;;;;;;;;;-1:-1:-1;;;;;48588:32:0;;;:7;;;;;;;;;:32;48665:15;;48633:62;;48650:4;;48665:15;48683:11;48633:8;:62::i;:::-;48734:15;;:224;;-1:-1:-1;;;48734:224:0;;-1:-1:-1;;;;;48734:15:0;;;;:66;;:224;;48815:11;;48734:15;;48885:4;;48912;;48932:15;;48734:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48373:595;;:::o;48976:536::-;49158:15;;49126:62;;49143:4;;-1:-1:-1;;;;;49158:15:0;49176:11;49126:8;:62::i;:::-;49231:15;;49443:17;;49231:271;;-1:-1:-1;;;49231:271:0;;-1:-1:-1;;;;;49231:15:0;;;;:31;;49270:9;;49231:271;;49303:4;;49323:11;;49231:15;;;;49443:17;;49476:15;;49231:271;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;48976:536;;:::o;14:190:1:-;95:13;;-1:-1:-1;;;;;137:42:1;;127:53;;117:2;;194:1;191;184:12;209:259;;321:2;309:9;300:7;296:23;292:32;289:2;;;342:6;334;327:22;289:2;386:9;373:23;405:33;432:5;405:33;:::i;473:263::-;;596:2;584:9;575:7;571:23;567:32;564:2;;;617:6;609;602:22;564:2;654:9;648:16;673:33;700:5;673:33;:::i;1013:402::-;;;1142:2;1130:9;1121:7;1117:23;1113:32;1110:2;;;1163:6;1155;1148:22;1110:2;1207:9;1194:23;1226:33;1253:5;1226:33;:::i;:::-;1278:5;-1:-1:-1;1335:2:1;1320:18;;1307:32;1348:35;1307:32;1348:35;:::i;:::-;1402:7;1392:17;;;1100:315;;;;;:::o;1420:470::-;;;;1566:2;1554:9;1545:7;1541:23;1537:32;1534:2;;;1587:6;1579;1572:22;1534:2;1631:9;1618:23;1650:33;1677:5;1650:33;:::i;:::-;1702:5;-1:-1:-1;1759:2:1;1744:18;;1731:32;1772:35;1731:32;1772:35;:::i;:::-;1524:366;;1826:7;;-1:-1:-1;;;1880:2:1;1865:18;;;;1852:32;;1524:366::o;1895:396::-;;;2021:2;2009:9;2000:7;1996:23;1992:32;1989:2;;;2042:6;2034;2027:22;1989:2;2086:9;2073:23;2105:33;2132:5;2105:33;:::i;:::-;2157:5;-1:-1:-1;2214:2:1;2199:18;;2186:32;2227;2186;2227;:::i;2296:327::-;;;2425:2;2413:9;2404:7;2400:23;2396:32;2393:2;;;2446:6;2438;2431:22;2393:2;2490:9;2477:23;2509:33;2536:5;2509:33;:::i;:::-;2561:5;2613:2;2598:18;;;;2585:32;;-1:-1:-1;;;2383:240:1:o;2628:805::-;;;;2789:2;2777:9;2768:7;2764:23;2760:32;2757:2;;;2810:6;2802;2795:22;2757:2;2855:9;2842:23;2884:18;2925:2;2917:6;2914:14;2911:2;;;2946:6;2938;2931:22;2911:2;2989:6;2978:9;2974:22;2964:32;;3034:7;3027:4;3023:2;3019:13;3015:27;3005:2;;3061:6;3053;3046:22;3005:2;3106;3093:16;3132:2;3124:6;3121:14;3118:2;;;3153:6;3145;3138:22;3118:2;3216:7;3209:4;3201;3193:6;3189:17;3185:2;3181:26;3177:37;3174:50;3171:2;;;3242:6;3234;3227:22;3171:2;3278:4;3270:13;;;;-1:-1:-1;3302:6:1;-1:-1:-1;;3343:20:1;;3330:34;3373:30;3330:34;3373:30;:::i;:::-;3422:5;3412:15;;;2747:686;;;;;:::o;3438:253::-;;3547:2;3535:9;3526:7;3522:23;3518:32;3515:2;;;3568:6;3560;3553:22;3515:2;3612:9;3599:23;3631:30;3655:5;3631:30;:::i;3696:257::-;;3816:2;3804:9;3795:7;3791:23;3787:32;3784:2;;;3837:6;3829;3822:22;3784:2;3874:9;3868:16;3893:30;3917:5;3893:30;:::i;3958:474::-;;;;4114:2;4102:9;4093:7;4089:23;4085:32;4082:2;;;4135:6;4127;4120:22;4082:2;4163:42;4195:9;4163:42;:::i;:::-;4153:52;;4224:51;4271:2;4260:9;4256:18;4224:51;:::i;:::-;4214:61;;4318:2;4307:9;4303:18;4297:25;4362:10;4355:5;4351:22;4344:5;4341:33;4331:2;;4393:6;4385;4378:22;4437:190;;4549:2;4537:9;4528:7;4524:23;4520:32;4517:2;;;4570:6;4562;4555:22;4517:2;-1:-1:-1;4598:23:1;;4507:120;-1:-1:-1;4507:120:1:o;4632:194::-;;4755:2;4743:9;4734:7;4730:23;4726:32;4723:2;;;4776:6;4768;4761:22;4723:2;-1:-1:-1;4804:16:1;;4713:113;-1:-1:-1;4713:113:1:o;4831:458::-;;;;4971:2;4959:9;4950:7;4946:23;4942:32;4939:2;;;4992:6;4984;4977:22;4939:2;5033:9;5020:23;5010:33;;5093:2;5082:9;5078:18;5065:32;5106:30;5130:5;5106:30;:::i;:::-;5155:5;-1:-1:-1;5212:2:1;5197:18;;5184:32;5225;5184;5225;:::i;5294:258::-;;;5423:2;5411:9;5402:7;5398:23;5394:32;5391:2;;;5444:6;5436;5429:22;5391:2;-1:-1:-1;;5472:23:1;;;5542:2;5527:18;;;5514:32;;-1:-1:-1;5381:171:1:o;5557:326::-;;;;5703:2;5691:9;5682:7;5678:23;5674:32;5671:2;;;5724:6;5716;5709:22;5671:2;-1:-1:-1;;5752:23:1;;;5822:2;5807:18;;5794:32;;-1:-1:-1;5873:2:1;5858:18;;;5845:32;;5661:222;-1:-1:-1;5661:222:1:o;5888:316::-;;;;6045:2;6033:9;6024:7;6020:23;6016:32;6013:2;;;6066:6;6058;6051:22;6013:2;6100:9;6094:16;6084:26;;6150:2;6139:9;6135:18;6129:25;6119:35;;6194:2;6183:9;6179:18;6173:25;6163:35;;6003:201;;;;;:::o;6209:203::-;-1:-1:-1;;;;;6373:32:1;;;;6355:51;;6343:2;6328:18;;6310:102::o;6417:304::-;-1:-1:-1;;;;;6647:15:1;;;6629:34;;6699:15;;6694:2;6679:18;;6672:43;6579:2;6564:18;;6546:175::o;6726:375::-;-1:-1:-1;;;;;6984:15:1;;;6966:34;;7036:15;;;;7031:2;7016:18;;7009:43;7083:2;7068:18;;7061:34;;;;6916:2;6901:18;;6883:218::o;7106:274::-;-1:-1:-1;;;;;7298:32:1;;;;7280:51;;7362:2;7347:18;;7340:34;7268:2;7253:18;;7235:145::o;7385:607::-;-1:-1:-1;;;;;7744:15:1;;;7726:34;;7791:2;7776:18;;7769:34;;;;7834:2;7819:18;;7812:34;;;;7877:2;7862:18;;7855:34;;;;7926:15;;;7920:3;7905:19;;7898:44;7706:3;7958:19;;7951:35;;;;7675:3;7660:19;;7642:350::o;7997:799::-;8219:2;8231:21;;;8204:18;;8287:22;;;7997:799;8366:6;8340:2;8325:18;;7997:799;8403:306;8417:6;8414:1;8411:13;8403:306;;;8492:6;8479:20;8512:33;8539:5;8512:33;:::i;:::-;-1:-1:-1;;;;;8570:31:1;8558:44;;8625:4;8684:15;;;;8649:12;;;;8598:1;8432:9;8403:306;;;8407:3;8726;8718:11;;;;8781:6;8774:14;8767:22;8760:4;8749:9;8745:20;8738:52;8180:616;;;;;;:::o;8801:187::-;8966:14;;8959:22;8941:41;;8929:2;8914:18;;8896:92::o;9227:603::-;;9368:2;9397;9386:9;9379:21;9429:6;9423:13;9472:6;9467:2;9456:9;9452:18;9445:34;9497:4;9510:140;9524:6;9521:1;9518:13;9510:140;;;9619:14;;;9615:23;;9609:30;9585:17;;;9604:2;9581:26;9574:66;9539:10;;9510:140;;;9668:6;9665:1;9662:13;9659:2;;;9738:4;9733:2;9724:6;9713:9;9709:22;9705:31;9698:45;9659:2;-1:-1:-1;9814:2:1;9793:15;-1:-1:-1;;9789:29:1;9774:45;;;;9821:2;9770:54;;9348:482;-1:-1:-1;;;9348:482:1:o;9835:399::-;10037:2;10019:21;;;10076:2;10056:18;;;10049:30;10115:34;10110:2;10095:18;;10088:62;-1:-1:-1;;;10181:2:1;10166:18;;10159:33;10224:3;10209:19;;10009:225::o;10239:412::-;10441:2;10423:21;;;10480:2;10460:18;;;10453:30;10519:34;10514:2;10499:18;;10492:62;-1:-1:-1;;;10585:2:1;10570:18;;10563:46;10641:3;10626:19;;10413:238::o;10656:402::-;10858:2;10840:21;;;10897:2;10877:18;;;10870:30;10936:34;10931:2;10916:18;;10909:62;-1:-1:-1;;;11002:2:1;10987:18;;10980:36;11048:3;11033:19;;10830:228::o;11063:398::-;11265:2;11247:21;;;11304:2;11284:18;;;11277:30;11343:34;11338:2;11323:18;;11316:62;-1:-1:-1;;;11409:2:1;11394:18;;11387:32;11451:3;11436:19;;11237:224::o;11466:351::-;11668:2;11650:21;;;11707:2;11687:18;;;11680:30;11746:29;11741:2;11726:18;;11719:57;11808:2;11793:18;;11640:177::o;11822:406::-;12024:2;12006:21;;;12063:2;12043:18;;;12036:30;12102:34;12097:2;12082:18;;12075:62;-1:-1:-1;;;12168:2:1;12153:18;;12146:40;12218:3;12203:19;;11996:232::o;12233:404::-;12435:2;12417:21;;;12474:2;12454:18;;;12447:30;12513:34;12508:2;12493:18;;12486:62;-1:-1:-1;;;12579:2:1;12564:18;;12557:38;12627:3;12612:19;;12407:230::o;12642:400::-;12844:2;12826:21;;;12883:2;12863:18;;;12856:30;12922:34;12917:2;12902:18;;12895:62;-1:-1:-1;;;12988:2:1;12973:18;;12966:34;13032:3;13017:19;;12816:226::o;13047:338::-;13249:2;13231:21;;;13288:2;13268:18;;;13261:30;-1:-1:-1;;;13322:2:1;13307:18;;13300:44;13376:2;13361:18;;13221:164::o;13390:397::-;13592:2;13574:21;;;13631:2;13611:18;;;13604:30;13670:34;13665:2;13650:18;;13643:62;-1:-1:-1;;;13736:2:1;13721:18;;13714:31;13777:3;13762:19;;13564:223::o;13792:356::-;13994:2;13976:21;;;14013:18;;;14006:30;14072:34;14067:2;14052:18;;14045:62;14139:2;14124:18;;13966:182::o;14153:480::-;14355:2;14337:21;;;14394:2;14374:18;;;14367:30;14433:34;14428:2;14413:18;;14406:62;14504:34;14499:2;14484:18;;14477:62;-1:-1:-1;;;14570:3:1;14555:19;;14548:43;14623:3;14608:19;;14327:306::o;14638:397::-;14840:2;14822:21;;;14879:2;14859:18;;;14852:30;14918:34;14913:2;14898:18;;14891:62;-1:-1:-1;;;14984:2:1;14969:18;;14962:31;15025:3;15010:19;;14812:223::o;15040:401::-;15242:2;15224:21;;;15281:2;15261:18;;;15254:30;15320:34;15315:2;15300:18;;15293:62;-1:-1:-1;;;15386:2:1;15371:18;;15364:35;15431:3;15416:19;;15214:227::o;15446:422::-;15648:2;15630:21;;;15687:2;15667:18;;;15660:30;15726:34;15721:2;15706:18;;15699:62;15797:28;15792:2;15777:18;;15770:56;15858:3;15843:19;;15620:248::o;15873:348::-;16075:2;16057:21;;;16114:2;16094:18;;;16087:30;16153:26;16148:2;16133:18;;16126:54;16212:2;16197:18;;16047:174::o;16226:400::-;16428:2;16410:21;;;16467:2;16447:18;;;16440:30;16506:34;16501:2;16486:18;;16479:62;-1:-1:-1;;;16572:2:1;16557:18;;16550:34;16616:3;16601:19;;16400:226::o;16631:427::-;16833:2;16815:21;;;16872:2;16852:18;;;16845:30;16911:34;16906:2;16891:18;;16884:62;16982:33;16977:2;16962:18;;16955:61;17048:3;17033:19;;16805:253::o;17063:399::-;17265:2;17247:21;;;17304:2;17284:18;;;17277:30;17343:34;17338:2;17323:18;;17316:62;-1:-1:-1;;;17409:2:1;17394:18;;17387:33;17452:3;17437:19;;17237:225::o;17467:355::-;17669:2;17651:21;;;17708:2;17688:18;;;17681:30;17747:33;17742:2;17727:18;;17720:61;17813:2;17798:18;;17641:181::o;17827:177::-;17973:25;;;17961:2;17946:18;;17928:76::o;18009:274::-;18183:25;;;-1:-1:-1;;;;;18244:32:1;18239:2;18224:18;;18217:60;18171:2;18156:18;;18138:145::o;18288:983::-;;18598:3;18587:9;18583:19;18629:6;18618:9;18611:25;18655:2;18693:6;18688:2;18677:9;18673:18;18666:34;18736:3;18731:2;18720:9;18716:18;18709:31;18760:6;18795;18789:13;18826:6;18818;18811:22;18864:3;18853:9;18849:19;18842:26;;18903:2;18895:6;18891:15;18877:29;;18924:4;18937:195;18951:6;18948:1;18945:13;18937:195;;;19016:13;;-1:-1:-1;;;;;19012:39:1;19000:52;;19107:15;;;;19072:12;;;;19048:1;18966:9;18937:195;;;-1:-1:-1;;;;;;;19188:32:1;;;;19183:2;19168:18;;19161:60;-1:-1:-1;;;19252:3:1;19237:19;19230:35;19149:3;18559:712;-1:-1:-1;;;18559:712:1:o;19276:319::-;19478:25;;;19534:2;19519:18;;19512:34;;;;19577:2;19562:18;;19555:34;19466:2;19451:18;;19433:162::o;19600:473::-;19853:25;;;19909:2;19894:18;;19887:34;;;;19952:2;19937:18;;19930:34;;;;19995:2;19980:18;;19973:34;20051:14;20044:22;20038:3;20023:19;;20016:51;19840:3;19825:19;;19807:266::o;20078:184::-;20250:4;20238:17;;;;20220:36;;20208:2;20193:18;;20175:87::o;20267:128::-;;20338:1;20334:6;20331:1;20328:13;20325:2;;;20344:18;;:::i;:::-;-1:-1:-1;20380:9:1;;20315:80::o;20400:217::-;;20466:1;20456:2;;-1:-1:-1;;;20491:31:1;;20545:4;20542:1;20535:15;20573:4;20498:1;20563:15;20456:2;-1:-1:-1;20602:9:1;;20446:171::o;20622:168::-;;20728:1;20724;20720:6;20716:14;20713:1;20710:21;20705:1;20698:9;20691:17;20687:45;20684:2;;;20735:18;;:::i;:::-;-1:-1:-1;20775:9:1;;20674:116::o;20795:125::-;;20863:1;20860;20857:8;20854:2;;;20868:18;;:::i;:::-;-1:-1:-1;20905:9:1;;20844:76::o;20925:380::-;21010:1;21000:12;;21057:1;21047:12;;;21068:2;;21122:4;21114:6;21110:17;21100:27;;21068:2;21175;21167:6;21164:14;21144:18;21141:38;21138:2;;;21221:10;21216:3;21212:20;21209:1;21202:31;21256:4;21253:1;21246:15;21284:4;21281:1;21274:15;21138:2;;20980:325;;;:::o;21310:135::-;;-1:-1:-1;;21370:17:1;;21367:2;;;21390:18;;:::i;:::-;-1:-1:-1;21437:1:1;21426:13;;21357:88::o;21450:127::-;21511:10;21506:3;21502:20;21499:1;21492:31;21542:4;21539:1;21532:15;21566:4;21563:1;21556:15;21582:133;-1:-1:-1;;;;;21659:31:1;;21649:42;;21639:2;;21705:1;21702;21695:12;21720:120;21808:5;21801:13;21794:21;21787:5;21784:32;21774:2;;21830:1;21827;21820:12
Swarm Source
ipfs://a458fabb40206b92df5ce5737c4037db141de4f4fe1a1bd784d53f56c75b2360
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.